{"report_id":"0211063f-2bef-4b9f-97e6-b9acea711d34","version":0,"status":"done","tags":[],"date":"2026-07-27T05:28:40Z","url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"final":{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"title":"Dream Spinfluence","dom":{"size":170213,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (9837)","md5":"dc3ea3108fd32b1720c71cf9304ca6fc","sha1":"2a0411cd85726b8c0a43af79d42576e72cad1094","sha256":"a4a23700a767901ca91175c7333c3660651f4daaa43eac812348dd3fb9ed6d0f","sha512":"805762bef0a5a87eb2337e9c8408a1caeda46d7e16403e63231462fdc65a59eb2189b759da57ee45004c816ca255f3fb9547c0c4bbf29348b7731ae21d61afd7","ssdeep":"1536:1ap7nMbk+2IQl6Z1ZrII1pIIwNII73IIyqCzAYEgKQscknRMbFfQLubxm5k+bY4s:kZ+cl6Z1Zxi98zAYEgKQUTr7o","tlshash":"26f3b52079f35027209f31ca9123271d2ae6d387c24597e4b5bc42f45fbaca9beb3558","dom_hash":"domhash39c8690227741d8f913672bb89bbc461","first_seen":"2026-07-27T04:11:05.596404Z","last_seen":"2026-07-27T05:30:59.781175Z","times_seen":3,"resource_available":false,"data":null}},"submit":{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T05:28:40Z","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":0}},"detection":{"ids":null,"analyzer":null,"urlquery":null},"summary":[{"fqdn":"www.google.com","ip":{"addr":"142.251.151.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"1997-09-15","domain_rank":22,"first_seen":"2015-05-10T13:11:19Z","last_seen":"2026-07-26T22:51:17.688286Z","alert_count":0,"request_count":1,"received_data":717,"sent_data":552,"comment":"","tags":null,"fingerprints":null},{"fqdn":"translate.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":6317,"first_seen":"2012-05-31T07:21:21Z","last_seen":"2026-07-20T14:48:05.930258Z","alert_count":0,"request_count":6,"received_data":201253,"sent_data":3589,"comment":"","tags":null,"fingerprints":null},{"fqdn":"code.jquery.com","ip":{"addr":"151.101.193.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":3,"received_data":277300,"sent_data":1411,"comment":"","tags":null,"fingerprints":[{"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"]},{"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"]}]},{"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":1619,"sent_data":543,"comment":"","tags":null,"fingerprints":null},{"fqdn":"fonts.googleapis.com","ip":{"addr":"142.250.178.74","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":22041,"sent_data":690,"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":"www.smartsuppchat.com","ip":{"addr":"185.76.9.11","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":18547,"sent_data":467,"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":"dreamspinfluence.com","ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2024-11-28","domain_rank":0,"first_seen":"2026-07-27T04:10:55.783457Z","last_seen":"2026-07-27T04:10:55.783457Z","alert_count":0,"request_count":70,"received_data":4225276,"sent_data":40214,"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"WordPress","description":"WordPress is a free and open-source content management system written in PHP and paired with a MySQL or MariaDB database. Features include a plugin architecture and a template system.","website":"https://wordpress.org","common_platform_enumeration":"cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:*","icon":"WordPress.svg","categories":["CMS","Blogs"]},{"name":"MySQL","description":"MySQL is an open-source relational database management system.","website":"https://mysql.com","common_platform_enumeration":"cpe:2.3:a:mysql:mysql:*:*:*:*:*:*:*:*","icon":"MySQL.svg","categories":["Databases"]},{"name":"jQuery:3.6.4","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":"PHP","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":"Font Awesome","description":"Font Awesome is a font and icon toolkit based on CSS and Less.","website":"https://fontawesome.com/","common_platform_enumeration":"","icon":"Font Awesome.svg","categories":["Font scripts"]},{"name":"jQuery Migrate:3.4.1","description":"Query Migrate is a javascript library that allows you to preserve the compatibility of your jQuery code developed for versions of jQuery older than 1.9.","website":"https://github.com/jquery/jquery-migrate","common_platform_enumeration":"","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"Elementor","description":"Elementor is a website builder platform for professionals on WordPress.","website":"https://elementor.com","common_platform_enumeration":"","icon":"Elementor.svg","categories":["Page builders","WordPress plugins"]}]},{"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":329031,"sent_data":1895,"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":"www.gstatic.com","ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":146047,"first_seen":"2012-05-29T15:36:17Z","last_seen":"2026-07-26T23:06:30.068608Z","alert_count":0,"request_count":5,"received_data":48622,"sent_data":3097,"comment":"","tags":null,"fingerprints":null},{"fqdn":"translate-pa.googleapis.com","ip":{"addr":"172.217.118.4","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2005-01-25","domain_rank":8472,"first_seen":"2021-11-04T06:37:42Z","last_seen":"2026-07-21T21:38:43.172366Z","alert_count":0,"request_count":1,"received_data":32351,"sent_data":576,"comment":"","tags":null,"fingerprints":null},{"fqdn":"translations.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":560346,"first_seen":"2022-11-04T22:28:35Z","last_seen":"2026-07-24T15:28:31.911258Z","alert_count":0,"request_count":1,"received_data":7732,"sent_data":525,"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":"translate.google.com","ip":{"addr":"142.250.178.78","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"1997-09-15","domain_rank":609,"first_seen":"2012-05-30T01:30:32Z","last_seen":"2026-07-20T21:58:05.03314Z","alert_count":0,"request_count":2,"received_data":77722,"sent_data":1113,"comment":"","tags":null,"fingerprints":null},{"fqdn":"elementor.uptechies.com","ip":{"addr":"139.59.14.105","port":443,"asn":14061,"as":"DIGITALOCEAN-ASN","country":"India","country_code":"IN"},"domain_registered":"2020-07-22","domain_rank":0,"first_seen":"2026-07-27T04:10:55.79481Z","last_seen":"2026-07-27T04:10:55.79481Z","alert_count":0,"request_count":1,"received_data":179,"sent_data":551,"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"]}]},{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.178.99","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":211579,"sent_data":2823,"comment":"","tags":null,"fingerprints":null},{"fqdn":"websocket-visitors.smartsupp.com","ip":{"addr":"18.195.200.162","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":635,"comment":"","tags":null,"fingerprints":null}],"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":"www.smartsuppchat.com/loader.js?","fqdn":"www.smartsuppchat.com","domain":"smartsuppchat.com","tld":"com"},"ip":{"addr":"185.76.9.11","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-02T16:37:23.831149Z","times_seen":7923,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"1d6dae7fe5617d9a7cef583039033804","sha1":"6267c462e74865b877d159d83f40642acb58cd03","sha256":"261bd4fe31b6ef4e89e5c02a202840220841b4e6b68b05e8438f62a20c63051f","sha512":"4b45dd01acc33cf3abdd28a47419ab6bcd962aa2b522ed2fbf63d3f31589677ca7ce936aca4b02d63c508859bb42a41d384e4ccd92a60f2daf6eefc7f7825501","ssdeep":"384:5vjxzRDFKvtShyQlmCHFSPoj/0rK977tq23MUGhJ11X:JNKvQhyIUPowy7pqcMUGV1X","tlshash":"2e82962eb5f626319567f1b8e52fcd5a7276048f168d9e00784c81b51f0d838a3b9fe8","size":18713,"data":"","first_seen":"2023-11-09T22:36:28Z","last_seen":"2026-07-27T05:30:59.832639Z","times_seen":57,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.jquery.com/jquery-latest.min.js","fqdn":"code.jquery.com","domain":"jquery.com","tld":"com"},"ip":{"addr":"151.101.193.155","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"8101d596b2b8fa35fe3a634ea342d7c3","sha1":"d6c1f41972de07b09bfa63d2e50f9ab41ec372bd","sha256":"540bc6dec1dd4b92ea4d3fb903f69eabf6d919afd48f4e312b163c28cff0f441","sha512":"9e1634eb02ab6acdfd95bf6544eefa278dfdec21f55e94522df2c949fb537a8dfeab6bcfecf69e6c82c7f53a87f864699ce85f0068ee60c56655339927eebcdb","ssdeep":"1536:/PEkjP+iADIOr/NEe876nmBu3HvF38sEeLHFoqqhJ7SerN5wVI+xcBmPv7E+nzm6:ENMyqhJvN32cBC7M6Whca98HrB","tlshash":"b293c8d9b6d27162977730b850bf510bb13a98eab80c4c60f1a4d8e47d78e89507bf2d","size":95786,"data":"","first_seen":"2023-03-07T01:02:02Z","last_seen":"2026-08-02T16:20:16.363146Z","times_seen":55622,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/metform/public/assets/js/htm.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"fdfac163c1e50619e8e32536bd185cdc","sha1":"e951d6d40b6fece1ecbd306dc0011e66f7fdc8eb","sha256":"cc7b1bdc9f993592735bf965c9a0fa2c513e101535e1f601f0164120bfe3df11","sha512":"b49aca17ab4f8185c5ccc980a91d769c47b3a7aa261f2a460de04332db71369b4c7df12433f83fa051d11c2cf0a4e2fb567611ff81d716195bb2e27a36c67c87","ssdeep":"","tlshash":"9341f1e193e62138915fe072563a8c01b1bc1c59628cf80d7e2c12d5cf168654ffced5","size":2050,"data":"","first_seen":"2026-07-27T03:56:42.509207Z","last_seen":"2026-07-27T05:30:59.832109Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/vendor/wp-polyfill.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"78d592f45c3156d06f02eb64fbba7c24","sha1":"087336e7b9852a1511c21b72b08861307003f566","sha256":"9cf50f241c6056086005b2db74e52c01ac219dc4f3b681396b1ecfaf505b4bb4","sha512":"ce81cbaa09d25a02f5c439622677d68ef7ebf37cef5eb53dd5822a2f079213aeeefe56befeeb04952f6245c67d2f375ed5b2b585fe11a32e16d54f4f5ada5512","ssdeep":"6144:lTcDZtxCb7TJN3piehF2VSwmomo2WAEvYH3HWnUs2AGlEDQCV2MX3sqo0P:l0kdyef3wmLo2WAEvYH3HWnUs2AGlEDX","tlshash":"3c34ad4aaaf13171a243f039866f8909736a548b5d8efd067d0ca2905f5983cc7b9fdc","size":245400,"data":"","first_seen":"2026-07-27T03:56:42.485278Z","last_seen":"2026-07-27T05:30:59.796071Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/vendor/react-dom.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"dc2b81ee6bacc67f973178dbeb145ae8","sha1":"1aa12d5e9992f569c72fb5c85bafe649cb52d588","sha256":"565f4eb5bd4db38acdb1f488f55afc427440aa881719f97f2e49073c4df9d2d6","sha512":"ed9bffeb4a596baa91927496e856e37eaae2709985f5a446390ddbb77ab8a73ecae942cad8cc7e8773a4edb60614fa3daff2a45fd0384ff45a6a9edc9d5af19e","ssdeep":"1536:uyodIzCvwBBYWxwL4QZifagtZvKDEv7ucuUCgnNV1kEF3Ujqf3vL3MTJRXc1:uajXn2qZvXrd38c1","tlshash":"8f4452996ae226719213f13e0eafd8947339a80b074cdc523a0ce5645f5553c87bafec","size":270492,"data":"","first_seen":"2026-07-27T03:56:42.510275Z","last_seen":"2026-07-27T05:30:59.816769Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"widget-v3.smartsuppcdn.com/assets/main-t6WxLABA.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":"9253d4d9d6ea32e484f0be9a0320a7a7","sha1":"762fb8fdf15626507c1c26a66aa7fe399d39e803","sha256":"1fb0b8e426f707feea50785bc24016fe14a76fb763d5eca3bc9b1d265bf77fa2","sha512":"5a1592fc87a402c636315def22f3c60dd7eeda34701b08005a192ae060acbe7ed8ae8aa709cc1664c3d9489c641e1ada60e79c66f13073ab61e6ba5bd86f524d","ssdeep":"384:9rgi5RFMkSjJOE/0BW2rkZZ795P6zrnBOVmPCRkXQbpaIF2K:9EizlSjJOEiWYoR5P6nnBOVmycQbpaId","tlshash":"0272d7742700783f711f489e16ade546b232c29dd693892d9b6fec0976c5cc0a8b37b9","size":16281,"data":"","first_seen":"2026-07-07T11:50:17.711459Z","last_seen":"2026-07-27T07:27:47.896741Z","times_seen":1890,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.min.js?ver=3.19.1","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"367bd7a1a69c01509da43a50349e8788","sha1":"18e7ac3fbf31ff1f4cee6f5811844090404f04a6","sha256":"cb734b189032cb314fc8d3d34c1314d64c7a7698acfcba00e52050fdae9adb93","sha512":"c5190f86721797f0adc75f0e7147b1f685b954ad79f1535487f75a54272d8bbc51f17ac22548cfd378e92a02c19ffcda2409d8bc80a3af1aa4ccd9231bb00fb0","ssdeep":"192:bP6z6AN8i4/5VTcJ7QlnV8fPj0Al/+vLxoUi1hoFWYWlZyVL9J79hFmDzULK+Qo5:OZexqpQlVEjjN+viUhu0LKymvv64e","tlshash":"8ea2963ef5104da300815b19646419c57f4ac103bfaeb42a79bc6f9a2f8e42d93bd63d","size":22429,"data":"","first_seen":"2023-07-01T15:13:09Z","last_seen":"2026-07-27T10:21:19.624341Z","times_seen":28,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"81fd21e95304c7fd1b7ce5641187b71a","sha1":"68fe7dce99cdffcfadd698ddbc9933e92bec9034","sha256":"1314f8d65a17e9dab1fc0584d6ff79fc2378fa3508d72a18048aebd2512a8aef","sha512":"8df479d0912e87797870346f77a91e3894f6c3110b94f30b353f7017a83d18b895d2b81373afd2d1c52ce5f766fb54ca7cc9471d7dff0883dde3fa1f2c051823","ssdeep":"","tlshash":"7ed0120bf430111f049ab125e39159cd75788609053e4d28364290cf3db3f9c130d1b4","size":199,"data":"","first_seen":"2026-05-25T20:34:17.740558Z","last_seen":"2026-08-01T06:17:31.549261Z","times_seen":76,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"c02ce5ac31c4a81b3b6cb0febda33f7c","sha1":"cb61fd63fbbfc8d85062fa78d67fc5b4f02d5ec7","sha256":"6bacc1906e8deccb631a8d59e5d54d91446f2a534337e69201e12cd21850ab52","sha512":"369dfa9d58bd5b9ac68a3b5f159e0948e90e543f184567b4e81522ca77a1cc1715e4beb12027e05a5da8ae19653ffdc57e6d8e91d18bfef79bd83047d39f3b42","ssdeep":"","tlshash":"1ce0a23e2c3180a417a202b8c2a7e2283a1b30608084c95798de88292cf0bcaae02884","size":416,"data":"","first_seen":"2026-07-27T04:11:05.757609Z","last_seen":"2026-07-27T05:30:59.835255Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"779e959f3fa8dc190e3fc3d5bcce5efd","sha1":"f4da9020a2ba9cbfd5de4260853086c5d89b6902","sha256":"24b3d4aa0a5174ae546ab101ec9e0992c48729e1bae88394c0ad3c4618caa731","sha512":"0ec970146aaa4814d5b2c0237a846fc88429cdc8f8f2a760c641474bc068c1d7111579631afceb7babe3e643f13cae891446d0bd0121228d2ec7f9996c3ef093","ssdeep":"","tlshash":"b001592ae58628764953a055cbae6244387600bf7245c211319d6e0b1f538118abfef1","size":677,"data":"","first_seen":"2026-07-27T03:56:42.615202Z","last_seen":"2026-07-27T05:30:59.835805Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"3c3fb20e347e281d76740fde32bf4e21","sha1":"58e69aeae655ad536c90180db4aae9c0e7ba4303","sha256":"d0be477a022dc4e617b6e63541375fb56ab0643c16ebbe3d7978f91e14f34cbf","sha512":"cfd9cfd8f237125bc2a37a804dea02ec3ea969172f790415ace18ccc5b48260c4c07a168d005959c88196210d3acd70ff1c98d707d9addc39465f7dd7881aa58","ssdeep":"","tlshash":"0f416756bccf0170aaaab657bfe9011871b8a1472082fc40fcde64385fc1a118cf9ee5","size":1889,"data":"","first_seen":"2026-07-27T04:11:05.759708Z","last_seen":"2026-07-27T05:30:59.836307Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"dfa76c4d2aa2128e08ddd3723ef5255e","sha1":"f345427566a33faeed63bf123ac5221fa7631058","sha256":"ff54bd2fdbf6db711e4fa24a42a40010331a27c0e2cc222787f7aabd5fd93528","sha512":"6ef8c3027b106032e75a5a5934c1a22cab6e422a8e65a53115b7f7a121738a20311478303c674521241e477f5c41f95cc7a689324402d530264d81571c1baf83","ssdeep":"","tlshash":"f431af1868b210f9049ba067ce6df24ab872013b000acb413cacc9734ff9564a85aa9a","size":1558,"data":"","first_seen":"2026-07-27T03:56:42.617424Z","last_seen":"2026-07-27T05:30:59.836872Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"16e8d5f7fe05639481bdafe60773a65f","sha1":"15a7c3d149cdd7d2555201d97ccf912c9d986d22","sha256":"2384efb45d6e1613a35877cd9e578deb2424e05f6f41796bb377fd03fd42b058","sha512":"e438fcf756f565530bccfa24bd9248fcf831bbf2d7b29cc4e8aabdff1fb60a063f01d83ef51f2bc028577c76e68e78685c4e24958aafcb79ff3b75ceeac43df1","ssdeep":"","tlshash":"0bd09b1ff0de7453407775594f3f91043d12740f3a48f4003d4c64d50f64014451366d","size":207,"data":"","first_seen":"2026-07-27T03:56:42.618308Z","last_seen":"2026-07-27T05:30:59.83736Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"2468e40995bafaf890eb04e96bc23d1c","sha1":"27287c08b8267dbaa2444882d00b4381276ea26c","sha256":"915f1f42f159c9705a5d09fb75d9ac63b5ad19ecb9fa4d1c92ac62860d849ecc","sha512":"0b9ba2dfd10170a1de2b7bae2fb47c9051bba8ace3ea7b721881fd19ee01952fdd4f358540554603df64f7530f32a9167485264cb4a96521b38e5a81e05504ef","ssdeep":"","tlshash":"df11320a2cf43149b90b31226eaed801063a534fec29bc857d4d56507f2d20f22f6798","size":907,"data":"","first_seen":"2026-07-27T03:56:42.619161Z","last_seen":"2026-07-27T05:30:59.83786Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"c4e31f72d8ccfb6b08a978bc5056f90e","sha1":"2e4f27622e49844262f73125fa97f379c257866a","sha256":"dde52b1155f03f8c6f25beb2fd8b068264782836e4df95e074eccbe6bbe3afff","sha512":"c753fc9a15c9fc9086ce5128572b28b22e785a528a5d664322deb24ca01c7020d56996c6727644b729908369306e7bf1e90411251d11983ca8260ca98acd66e6","ssdeep":"","tlshash":"eb11150a1cb42245692731a06eaed0000639534ff819bc857d4d1a502f2e10f33f7788","size":908,"data":"","first_seen":"2026-07-27T03:56:42.620076Z","last_seen":"2026-07-27T05:30:59.838427Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"95b769c361722141648c4ece4e0db588","sha1":"9f55889faeed345d24c164b17ef84e38e53b484e","sha256":"e6d99b96960da2f3a80eac3d2017d3c57afc499697739e11b287f8ad54cb0c9e","sha512":"e0838547dab36e7afd35cfaaa332d72c7c34abd92fb2a771588c5310dcb648a4d306c82981694c8ff73100f2ff6fc826db76c1473d45e5f00719cf9e050a89c3","ssdeep":"","tlshash":"08111e0a1cb43255a92771a06eaed400063a534fe82abc857d4d1a902f2e20f23f7788","size":910,"data":"","first_seen":"2026-07-27T03:56:42.620901Z","last_seen":"2026-07-27T05:30:59.838853Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"f28ce3b8605bbb610b813f1c92a77422","sha1":"c65acca330f0622aa461e01e6cb0e1c577cc26a9","sha256":"07013b079719bad256c6dbd7bb2b40281fdcb4ca4e1acd544b9bcfebbba3405f","sha512":"ad54c5b267d689527021ba55a65dd6085f68b31c6f95613e7ae28f8769cb774dadb7c3e4b7349e20de20fb020b1aca3f8e16594aadcab6f4a3af6dd6c63a5d54","ssdeep":"","tlshash":"a8111e0a1cb42245692732a06eaed000063a534ff829bc857d5d1a507f2e10f33f7788","size":908,"data":"","first_seen":"2026-07-27T03:56:42.621994Z","last_seen":"2026-07-27T05:30:59.839342Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"b68fa07d8534e9451437b38c73f9acce","sha1":"25707aa39b58616fb7c50415de0541cfe5cee55d","sha256":"a2910191ec8ae06fb789ed55ade0d9774fb4811af1a89d21bf2beddf10d112cb","sha512":"55437e7d9f02e74f6b4765377b45c6e69db9368560b3f38c604272e8c352826cf44af263b94b09bfed3e3b0dd295ef19563964007af527d3f3ffba7c2e64639a","ssdeep":"","tlshash":"5ce0c20f66c15de80b4e23043c5f326c78bd1c9450e9f2c072bc24986e1bcb49149211","size":297,"data":"","first_seen":"2026-07-27T03:56:42.629959Z","last_seen":"2026-07-27T05:30:59.839886Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"ee92253de10b33ffdcf613e282f855f4","sha1":"429225fb6e33f9b0b8d7e585e3f3c95a780cd0e3","sha256":"5a8809f82f214fd8e29fc9633b622b75306624141637173a2179877753e0305a","sha512":"97023b7a59c29c7199c491ffbf2c94d13a53fdf239bde1a8de721759a3074652915cc904511ed711c7065c2273820b944e53d3b105f1c5e0c24282d54b4239b4","ssdeep":"","tlshash":"415182347549ad7f83e397957917ba126a6c05244040bdf8f0fc886d14b6a34230be4b","size":2583,"data":"","first_seen":"2026-07-27T03:56:42.631261Z","last_seen":"2026-07-27T05:30:59.840467Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"5cf2bc573399132f305b416b0fdde7e9","sha1":"6fe566559a74eb7d4df10bb82b9b962cd4ec2824","sha256":"9d27d19567c68ec6e71734c6f6aefb7b3855d087dff4b549cc14e9c11bc0ab3c","sha512":"a2fe36e158255bca94daa92c07abf7f75fa2a6ef0cfbef8fc76cf19bf8e289c12a6a0aa8fcb0f62bf54532070fb2efd5159c1f6027863a6a48af0d859cb2424f","ssdeep":"","tlshash":"d971733ceb214437c4f9a4a9b4c31b46f3184212d414941fb9af095d4f4fca8e29677d","size":3759,"data":"","first_seen":"2026-06-08T02:43:52.300968Z","last_seen":"2026-08-01T06:17:31.553429Z","times_seen":27,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"9e8f56e8e1806253ba01a95cfc3d392c","sha1":"a8af90d7482e1e99d03de6bf88fed2315c5dd728","sha256":"2595496fe48df6fcf9b1bc57c29a744c121eb4dd11566466bc13d2e52e6bbcc8","sha512":"63f0f6f94fbabadc3f774ccaa6a401696e8a7651a074bc077d214f91da080b36714fd799eb40fed64154972008e34fc733d6ee314ac675727b37b58ffbebebee","ssdeep":"","tlshash":"6021d5743a18107e226a0133e56f66cee1f23715fd17e440408ad89566e4fe5063fed9","size":1239,"data":"","first_seen":"2023-03-07T01:02:00Z","last_seen":"2026-08-02T16:45:07.115722Z","times_seen":413221,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.jquery.com/jquery-3.6.4.min.js","fqdn":"code.jquery.com","domain":"jquery.com","tld":"com"},"ip":{"addr":"151.101.193.155","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"641dd14370106e992d352166f5a07e99","sha1":"eda46747c71d38a880bee44f9a439c3858bb8f99","sha256":"a0fe8723dcf55da64d06b25446d0a8513e52527c45afcb37073465f9c6f352af","sha512":"a6e981b23351186aa43f32879dd64c6801be6e2af7ef8b0e472cccdeeba52d5d7894de4bcb292a364f1e11e525524077534338140a72687ada4fae62849843a5","ssdeep":"1536:IjjxXUHunxDjoXEZxkMV4PYDt0zxxf6gP3f8cApoEGOzZTBqUsuy8WnKdXwhLQvg:IeeIygP3fulzhsz8jlvaDioQ47GKH","tlshash":"d193f8ddb2c6702247a770ba007f510bf236199d684d8450f269d8e9bc78a4e827bf7d","size":89795,"data":"","first_seen":"2023-03-26T04:59:07Z","last_seen":"2026-08-02T16:48:15.331127Z","times_seen":27029,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/header-footer-elementor/inc/js/frontend.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"3795fe978ac942853382ac785c65ce0c","sha1":"e91c9e696ce04456b44d04065c87cc5482b147f3","sha256":"5259252aa576fa67ab78c1b54a39c090391f5f96998d14fd4767d25210b341eb","sha512":"c1670f7293d1f7cb7c02884404e36307cc7fe3086358747afac9a69a01556213753650a4c0d818e60e20415536b3a4d88d570f7384177a8f81ecd27e0ff2c6da","ssdeep":"192:85w33nAI6LNlyurLDvQaNZLVnnEhIHTEUBGESCuy6rJRvCAd7UQXN10dnNiYGUf9:dAK8FFnfed4QXN81eEL","tlshash":"8ae2008935e71031603f3a6fa6ebc09c73164067c5169a5cbdac45e85fe0a1473f2eba","size":32902,"data":"","first_seen":"2025-07-04T20:26:13.202425Z","last_seen":"2026-07-27T05:30:59.809236Z","times_seen":7,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/vendor/wp-polyfill-inert.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"e7bb072e5c9f94f7dd9a7686d4d0dc5a","sha1":"bfb7c763fcbd602bfeb0570bb7c0d9a44b6253c0","sha256":"ddf37c3974cda57aa02d32ad37cdce803142ccbc67f10dc998460839ec93e060","sha512":"13630015589f2daeab75f123efef94a800a56f2b8038f77f95aa028741904591a6051d878b4f9687e8e92cf417e1aca7a5ce2b689ae1c15d25eeda9adb9ec5d5","ssdeep":"192:iGRJNP5E3yHTh8OxJeqr7/+CGbUBCmhpIDNbKJbSi0dGdQsaGFHvnrOLCfLsf5qu:imNlvJhqF3KhM","tlshash":"a332426ea7e429335987b0656d7e8a427636402b044f4d283f1c84ee4f5c93806f2ff8","size":11832,"data":"","first_seen":"2025-09-01T05:50:55.055439Z","last_seen":"2026-07-27T05:30:59.791484Z","times_seen":11,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"c74d093d7da01f0ee1489adf9bc0dc08","sha1":"0f7accf8d67e9eb52a591bb45bb99a756c8c605c","sha256":"64ee74703c236cd54d6b86df1d3323e8a6578fe213905f3cb6f22a1221d2497a","sha512":"424d5ac557df5369071b6d201758b02c4483e42f75db819e81caa3c049297ea3ca8a22d756ce0fcf3c78a6911f6b72c1032d4aa2b1b77938335d8135897d8cea","ssdeep":"192:Fn0UlU2z4PCgCCsBVyktR9BUAaHQ4xPUMxfkXRgSWfpgDriJ9UsNaSaaNiHvnNWE:SqzcPChVbjpeu6kXRkE69aagl","tlshash":"39f1f0451ad26c372563b4f9961aaa30622ec4132d09fc81fd5c9da88fd58348bf9af0","size":8119,"data":"","first_seen":"2026-07-27T04:11:05.719334Z","last_seen":"2026-07-27T05:30:59.824957Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/themes/hello-elementor/assets/js/hello-frontend.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"f84c03076112dbf6b5eff97b11a38188","sha1":"3394bec63bddd933513570fc21ef72f764e1e038","sha256":"6c40ba651502891d2444bcfe5c62e8abe1f6d57fd015b9a1960cf86ec806c5b5","sha512":"02181a6ccfbcf08f447eee69c3ed43d33ec1e025dcf0a666fd9c258fa8e8695b0e66c1ce814d5a817ab524f7dac13b516bcaceaef8adcb5023aaba1ac04eda68","ssdeep":"","tlshash":"2d519d0ab29259fa913f20637f0b991e7126809f74056a78356cb3cd4f54ca07bf2b75","size":2543,"data":"","first_seen":"2026-07-27T03:56:42.490535Z","last_seen":"2026-07-27T05:30:59.82332Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/js/frontend-modules.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"7e25b7796ac981c38bebe069a30ee42e","sha1":"5ee20daf7ade107cfadc92eae1c1fd8b42076447","sha256":"c97728ffd1021d64c2d755ec0c0f1395c159e1975eefe22343f8ae8523652d47","sha512":"52288a6a73c662822683535b8dfd4758c6c5660068ee93181df7281c3d6405cf78eaa93ba1663944167bd148446b865bc4f52d6efe000f5520ececd8fe12ce0d","ssdeep":"1536:Voyhu6PRC+4zwCyshWEPbUn18GoYXHgO8i56uOHupJWZUNpr8+WAqqzVctERfjDB:bDSUESRfB","tlshash":"28a3700a76f264668247f07a1a1fe906b231845b280dfd1d3d1c42a99f6583d47faff8","size":107003,"data":"","first_seen":"2026-07-27T04:11:05.705747Z","last_seen":"2026-07-27T05:30:59.820416Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"6bf2d21e9bdb4d04e40b5f9decc60314","sha1":"1f16da2e4fd4d2c9db5fce1e101c3a44be54dd89","sha256":"02f83fb268599737a5a5c8e1db12d562bdaa9ae73cb906c4f63c7b871eeecdb4","sha512":"c23497a91d4221d642363cdf3f47b1a867ab0dca284df0029fd1277848585f119df5268816158889bb15991d477b1e94214ae0eca3d1e26adf7e99ecf53b8fad","ssdeep":"384:ZDCVFGE8Psl1GbOdoEMTGT6Gt7w50xioyTQTflUw4OSIU/3P:5/0JTHlh45IU/3P","tlshash":"de72df096ebb20126f9f7069fd0b55857237402b54899c2778dcd7d80fe24386eb6fa8","size":16048,"data":"","first_seen":"2023-03-12T11:49:12Z","last_seen":"2026-07-27T10:21:19.575257Z","times_seen":64,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"widget-v3.smartsuppcdn.com/assets/shared-CgMCAfor.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":"06c5668b0e6d3383e096c45abdbedf9d","sha1":"8d64309e8ec50da59f799336c11685ca7fd15ecc","sha256":"2724b50edb69a23cc951a77f775727b960c857d18d58cfa9a47fe5c094d9b99a","sha512":"c4a86d25f4e86be36db19539b4e3efc70500a48b9664349043d76a1451f8536c8bed7fe22f8ca790fb3ac7e26fa7efbfc37e0c927687966dc08a02442e15f85c","ssdeep":"6144:mLjnOEIL18ad2jJKaQo+tRkYcuBaay+moJG:iOEIZRd29lqj4n+moY","tlshash":"53443ad53294b035439b51e6906f1106f33e5c58580d812cf269ede678baec8a2f7fb8","size":272133,"data":"","first_seen":"2026-07-07T11:50:17.748529Z","last_seen":"2026-07-27T07:27:47.884385Z","times_seen":1867,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/jquery/jquery.min.js?ver=3.7.1","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"2c726692c3463b9200455bb5a63fc060","sha1":"6a8ce9449ad65e13b1b78e9fbac9cd2c99573253","sha256":"e3e9faf8caf4564d4952e8bc09836d41aea7b90a5d46d99f6eaef6c113619aeb","sha512":"763f49f482605cdb5c8f89af146785d90c075f95c24407ff55b5607130f97ed06b8633163ce0c64fff5a626eab4754a385348bbb8d8ab1606fd5fa0a7338248a","ssdeep":"3072:csBiP9TCt/sUp7Pi26wJC1+mvXmQ4apO1ah:hBidCt/sUp7Pl6wJC1+KmeO18","tlshash":"ebe3529a7afa21319207f03a8d6fcc08b276544f1a8ded04790c52a55f1583c97fafe9","size":147109,"data":"","first_seen":"2025-06-28T20:39:24.10035Z","last_seen":"2026-07-27T05:30:59.80116Z","times_seen":52,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/_/translate_http/_/js/k=translate_http.tr.no.scrnY6Q2_yw.O/am=BIAABw/d=1/rs=AN8SPfq1KlUFqeiFvBMudduzGtb39QWXuw/m=el_conf","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"6c25051498fe2146ffb7bf30b37fabba","sha1":"9634b50dd2401b5ab4c0953e0b6b617619a2ddeb","sha256":"1282813f4d381b5ec2278d3f5bc5a3ca4fdb0ff0a086dabdad2b7e4db35c8928","sha512":"dac02c44fc6a98ee4a6f4016f8ed9d0c8af57c736d3138f03f0dac1963f1163dec2295accd5fe081e4819e58d5b05865716c660159831c66334d8d7a208d125a","ssdeep":"1536:XWjLpxIZnZzYOwRUSfl26KKZkXtmqR6Y06ECiPwNWF0:XDD4U6KKZgtBgtCi90","tlshash":"9a73b88cb6a5b4658363f4b5412f000eb23b58adf8484cadb288d8e1adf5949453bf7d","size":75428,"data":"","first_seen":"2026-07-27T05:01:06.091819Z","last_seen":"2026-07-27T06:00:36.81411Z","times_seen":116,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/_/translate_http/_/js/k=translate_http.tr.no.scrnY6Q2_yw.O/am=BIAABw/d=1/exm=el_conf/ed=1/rs=AN8SPfq1KlUFqeiFvBMudduzGtb39QWXuw/m=el_main","fqdn":"translate.googleapis.com","domain":"translate.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"cdf9309b56a4ff330627409baead2538","sha1":"e98eac16441e99c9512052eb0087f535b9a609b9","sha256":"310629c4e47d7960e5a89cbd6a9c1d24a4e4d7c5e18346a69a67d92355cf2cd4","sha512":"cafd13a201e26b9f94f9a636ca1f7c191ec3a9fc3f297d35ee51b1304962383e7147509932a759bd903e27e53fb251600ad6942739e472161f5a09367c3776c1","ssdeep":"3072:kjsNxt45eITHt28KRu9gKavNuBDHK0QppB0/I:osb0muBzg","tlshash":"dd14e8d9b26270679263f4a5403f004eb53b68a5f9484dacb28de8e26df4d19017bf7c","size":194344,"data":"","first_seen":"2026-07-22T18:30:16.180779Z","last_seen":"2026-07-27T19:37:31.609707Z","times_seen":2601,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/vendor/regenerator-runtime.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"c294b19e3844545e75dac1706034baf7","sha1":"115025b3d4626dae8e5b61f5c5aa7e68aa56de68","sha256":"748e03bdccb80f74991934498360e2308d2601610334c89c10a8f7e7b8e53f14","sha512":"fc3e63085737165b84a1f5159baa0d46a971429664ad3cc9e346ff313f698b95c5c0941ea6f03b8594cda4ccb4fd7c33f205673c8f1e9caed0b65de227ec72e7","ssdeep":"192:qUhEbLnXG8NgStOggaq60Nl6LGkUyiAt+EOnjM9c9rdEQc+0+KiLyEqMULrQdb1r:qwEbLpX3D+c+0+KD5wrf6+cWKs1X","tlshash":"7832dd89baf7b0619303f138896f9408b235945f564ddd097e0ca6b0af91438d7b9fe8","size":11195,"data":"","first_seen":"2025-09-13T14:09:05.182292Z","last_seen":"2026-07-27T05:30:59.786787Z","times_seen":10,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/escape-html.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"294bc84cb3f98ab80432ece83c986b1e","sha1":"67e8ae3654d1c5a239fc1a9d9fb330f3a59f38f0","sha256":"14866c1ad29241fe3acec49aedbdf86ab557747c036fdd5849d5783cc0839098","sha512":"12c4bf0025a50bcdc3bc02f1a16e7a76e3bb11870d3cae6faedb0e9041672de7afb8b29fbd5dc7049cf061480c185ba5bb2a4bea55dbcf34c0198c0de84bf8ce","ssdeep":"","tlshash":"ea41368dbcf270505207f179841f9419b23d869b18ad6e50be4c62a26f3243d42f5bde","size":1877,"data":"","first_seen":"2026-07-27T04:11:05.743683Z","last_seen":"2026-07-27T05:30:59.78272Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/element.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"9e414da9a59d14ccb2d0d80972bb9a18","sha1":"216532fed7a75d05b461bf01ea0d50c7f67c3236","sha256":"42eae30cf3fc974e933c55a54c82f2abbe14ab7374e7dd324ac519861773f96b","sha512":"3a1fb35733a27004a4bcbe7c18b502683eaf0157cf3a6c3e3c65a0d6cfe1acdb39cfcdddb7cfebdf14d7ef9bcee428f92e690bafc0fa6f4c719a13fa82355bbc","ssdeep":"192:jit81bMjT+RDsPomVvivym+pMhuyGnZGWPUAfvEDk4atSxp/NpKD+sF1Vbel9v1o:/Sb59i6uh8rKHCY0bKIySVHka6jUZGM","tlshash":"13a25f9db8f265278243f07d95afc008b135540b255dad987a0c81b86f9e83c86f7bec","size":21505,"data":"","first_seen":"2026-07-27T04:11:05.701664Z","last_seen":"2026-07-27T05:30:59.803311Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/jquery/ui/core.min.js?ver=1.13.2","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"e4e8257fe9cfc06e18f707b383fd50c0","sha1":"9238d42f5923a8aad6c139a3c03a0f8c878a63e9","sha256":"7ad8695538b51ac6ae56a87b8261f2d2e3f89d1b654626db93b54c5f57d3798a","sha512":"402f763a9e76e6a2c4f1197f69bdfc50c1a0b8f16b0f91cb637c684c1b0a160c880ec959d7b857f8886601bf90862cb669cc02ee1d7b65cf0f1bdb055211bfc1","ssdeep":"384:CrkpFRdCeNLzKjluPjhC0tc0+hq3fWWsx+aWJ43bv7K39AUb4s3iVpmnoC/jMbtx:BGjyd2Px+Xr9Tb4sMMoC/jw","tlshash":"a1e2650d67e12525d697f03a5c2f8949f232a09f2749ac4cbd5c82e44f1a83882f7fb5","size":33783,"data":"","first_seen":"2023-11-16T04:44:13Z","last_seen":"2026-07-27T05:30:59.785775Z","times_seen":11,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/vendor/react.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"d1ac981b533da21d8dd0bbddab4c4ea6","sha1":"1b22173e0a2e7dc804ea65197c96a478efe1191c","sha256":"de89a10d5366dbb89e64dfc3a578f3510faf14225adc0a91e68dd1e7d23a2c84","sha512":"af4b8d6ca81fe48b6f1229c0759d10bab30b6b2afdf11e7a5f9031e4cd09c15659a98c4004a9f11a2e0af18e24c5f00eec9f386ce2049bd6d073ad8ec9ce225c","ssdeep":"192:nqK9+9ZeDrG9COQlleS6eYgy+ISCgAvqvs0kCU4Cv3ty4KrYOM6Qoyi0Mb+RDI6K:nqK9qYEQ7ShaM6mHQSYTxzP","tlshash":"09922e58b9f230309613f03a8a5fe8587236a54f1a4ced10390c96a16f5a57cd3bafdd","size":20760,"data":"","first_seen":"2026-07-27T03:56:42.494648Z","last_seen":"2026-07-27T05:30:59.816064Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/metform/public/assets/js/app.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"45b38c664f4eceae60f948b577d64b30","sha1":"097970d830b7c318afdf247c1eda1c28e8597218","sha256":"0a0029f06010e781e569a6589c109666120c365f6b0eaf1d019349077d21b3ee","sha512":"fb70565fb1c476a4f1450555781a7e871e4f68d696ac0976c4cb5e477ec4b6702b0b2e8e6ec678162cb2f4f9578fec6a35cc553a7d720bc42fd7ff1f18ee6020","ssdeep":"24576:lK+fXlNuudu3D9dM1biVOBN/8jpPxJRUU+iPy4kSYOqu23F5rMmZZ1veUvjNk9k2:lK+fXlNuudu3D9dM1biVOBN/8jpPxJRn","tlshash":"a755814dbaf264718253f0394a6f8804b236941f598ced007e4c95a45f6d83da7fafe8","size":1359753,"data":"","first_seen":"2026-07-27T03:56:42.637294Z","last_seen":"2026-07-27T05:30:59.841676Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/js/frontend.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"6ff7fd47dcff05bb3e78b0aeb5c276fc","sha1":"92e921cc26c3f79f131cb8660d1f759ea2aabe48","sha256":"2fe277aa48724cd372c3dac2c309221c539e13c276fb84a5289634993a594733","sha512":"70bb7a8c2fe0b02a2531e8d004421ca10143b0859256506afef0b704e799c478fa8a1bf8f3c2b95207b1a756adae0ad913f9db37e0783f363833c11d7f3c1047","ssdeep":"1536:VXXhpYpyZv480MLt5Req4CbpUxvGsXodQrQdkilAxLSW1ZdSTYVcT1vkNZAqPHvh:B+OO","tlshash":"4673820a3af254658217f43b2d2ba118b235444f6c0abd1d3e2c06a49f68d3d6bf1bf5","size":73985,"data":"","first_seen":"2026-07-27T04:11:05.682517Z","last_seen":"2026-07-27T05:30:59.787482Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":[{"level":"log","text":"JQMIGRATE: Migrate is installed, version 3.4.1","filename":"https://dreamspinfluence.com/assets/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1","line_number":28,"column_number":227},{"level":"warn","text":"jQuery.Deferred exception: $(...).owlCarousel is not a function@https://dreamspinfluence.com/:1275:33\ne@https://code.jquery.com/jquery-3.6.4.min.js:2:30158\nDeferred/then/l/\u003c/t\u003c@https://code.jquery.com/jquery-3.6.4.min.js:2:30460\nsetTimeout handler*Deferred/then/l/\u003c@https://code.jquery.com/jquery-3.6.4.min.js:2:30669\nc@https://code.jquery.com/jquery-3.6.4.min.js:2:28447\nfireWith@https://code.jquery.com/jquery-3.6.4.min.js:2:29192\nfire@https://code.jquery.com/jquery-3.6.4.min.js:2:29228\nc@https://code.jquery.com/jquery-3.6.4.min.js:2:28447\nfireWith@https://code.jquery.com/jquery-3.6.4.min.js:2:29192\nready@https://code.jquery.com/jquery-3.6.4.min.js:2:32165\n$@https://code.jquery.com/jquery-3.6.4.min.js:2:31944\nEventListener.handleEvent*@https://code.jquery.com/jquery-3.6.4.min.js:2:32313\n@https://code.jquery.com/jquery-3.6.4.min.js:2:220\n@https://code.jquery.com/jquery-3.6.4.min.js:2:225\nmap[type:undefined]","filename":"https://code.jquery.com/jquery-3.6.4.min.js","line_number":2,"column_number":31713},{"level":"warn","text":"jQuery.Deferred exception: $(...).owlCarousel is not a function@https://dreamspinfluence.com/:1311:34\ne@https://code.jquery.com/jquery-3.6.4.min.js:2:30158\nDeferred/then/l/\u003c/t\u003c@https://code.jquery.com/jquery-3.6.4.min.js:2:30460\nsetTimeout handler*Deferred/then/l/\u003c@https://code.jquery.com/jquery-3.6.4.min.js:2:30669\nc@https://code.jquery.com/jquery-3.6.4.min.js:2:28447\nfireWith@https://code.jquery.com/jquery-3.6.4.min.js:2:29192\nfire@https://code.jquery.com/jquery-3.6.4.min.js:2:29228\nc@https://code.jquery.com/jquery-3.6.4.min.js:2:28447\nfireWith@https://code.jquery.com/jquery-3.6.4.min.js:2:29192\nready@https://code.jquery.com/jquery-3.6.4.min.js:2:32165\n$@https://code.jquery.com/jquery-3.6.4.min.js:2:31944\nEventListener.handleEvent*@https://code.jquery.com/jquery-3.6.4.min.js:2:32313\n@https://code.jquery.com/jquery-3.6.4.min.js:2:220\n@https://code.jquery.com/jquery-3.6.4.min.js:2:225\nmap[type:undefined]","filename":"https://code.jquery.com/jquery-3.6.4.min.js","line_number":2,"column_number":31713},{"level":"warn","text":"jQuery.Deferred exception: $(...).owlCarousel is not a function@https://dreamspinfluence.com/:1347:36\ne@https://code.jquery.com/jquery-3.6.4.min.js:2:30158\nDeferred/then/l/\u003c/t\u003c@https://code.jquery.com/jquery-3.6.4.min.js:2:30460\nsetTimeout handler*Deferred/then/l/\u003c@https://code.jquery.com/jquery-3.6.4.min.js:2:30669\nc@https://code.jquery.com/jquery-3.6.4.min.js:2:28447\nfireWith@https://code.jquery.com/jquery-3.6.4.min.js:2:29192\nfire@https://code.jquery.com/jquery-3.6.4.min.js:2:29228\nc@https://code.jquery.com/jquery-3.6.4.min.js:2:28447\nfireWith@https://code.jquery.com/jquery-3.6.4.min.js:2:29192\nready@https://code.jquery.com/jquery-3.6.4.min.js:2:32165\n$@https://code.jquery.com/jquery-3.6.4.min.js:2:31944\nEventListener.handleEvent*@https://code.jquery.com/jquery-3.6.4.min.js:2:32313\n@https://code.jquery.com/jquery-3.6.4.min.js:2:220\n@https://code.jquery.com/jquery-3.6.4.min.js:2:225\nmap[type:undefined]","filename":"https://code.jquery.com/jquery-3.6.4.min.js","line_number":2,"column_number":31713},{"level":"warn","text":"jQuery.Deferred exception: $(...).owlCarousel is not a function@https://dreamspinfluence.com/:1383:34\ne@https://code.jquery.com/jquery-3.6.4.min.js:2:30158\nDeferred/then/l/\u003c/t\u003c@https://code.jquery.com/jquery-3.6.4.min.js:2:30460\nsetTimeout handler*Deferred/then/l/\u003c@https://code.jquery.com/jquery-3.6.4.min.js:2:30669\nc@https://code.jquery.com/jquery-3.6.4.min.js:2:28447\nfireWith@https://code.jquery.com/jquery-3.6.4.min.js:2:29192\nfire@https://code.jquery.com/jquery-3.6.4.min.js:2:29228\nc@https://code.jquery.com/jquery-3.6.4.min.js:2:28447\nfireWith@https://code.jquery.com/jquery-3.6.4.min.js:2:29192\nready@https://code.jquery.com/jquery-3.6.4.min.js:2:32165\n$@https://code.jquery.com/jquery-3.6.4.min.js:2:31944\nEventListener.handleEvent*@https://code.jquery.com/jquery-3.6.4.min.js:2:32313\n@https://code.jquery.com/jquery-3.6.4.min.js:2:220\n@https://code.jquery.com/jquery-3.6.4.min.js:2:225\nmap[type:undefined]","filename":"https://code.jquery.com/jquery-3.6.4.min.js","line_number":2,"column_number":31713}]},"http":[{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/themes/hello-elementor/style.min.css?ver=2.9.0","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.995Z","timestamp":1785130089995,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/themes/hello-elementor/style.min.css?ver=2.9.0 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=NIbPNKKiN2jk%2BUk2nRlQUpJKHjKGMgiRSijpCFBQrUq9OIS72Uqjqv8oke3q59pfse%2FCWGZc1SnRhps8d2QoRRy3hORAFzr5fC3YrtNigqWz5aIJkhV2cbtJy8SOaM373X1VW8%2FY%2Fw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d367e35120a-OSL\r\ncontent-length: 1873\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":7412,"size_decoded":2687,"mime_type":"text/css","magic":"ASCII text","md5":"f527a2446b61eaa14abc67f7ed7a82d8","sha1":"da2583f2947fe4df4dacf1b88916629d2adeeb5f","sha256":"9559c0a0771f90a6b12f797dc342dd29533024c7feeb0159dc5c90a4dccd262c","sha512":"f93acf8dc1081b84fa0e95a0993b01bdab430c0086519850f9460ee3ed35b3fcb491b0e372b30f60c5d377622ddba53309c6930095dd4561d43cfce2f23ea802","ssdeep":"192:hT1/CkXuCJfU1h+DhGfwcCmktAScExgUPWS/5aH6zCUm3x2O:j/CkXWn+DCeu","tlshash":"bde14255c6723ac1651389283b9b7f50772001034c1efdb4bf8ee3a88f8e53195a57ae","first_seen":"2025-07-04T20:26:13.204442Z","last_seen":"2026-07-27T05:30:59.818076Z","times_seen":12,"resource_available":false,"data":"aHRtbCB7CiAgICBsaW5lLWhlaWdodDogMS4xNTsKICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJQp9CgoqLAo6YWZ0ZXIsCjpiZWZvcmUgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveAp9Cgpib2R5IHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFNlZ29lIFVJLCBSb2JvdG8sIEhlbHZldGljYSBOZXVlLCBBcmlhbCwgTm90byBTYW5zLCBzYW5zLXNlcmlmLCBBcHBsZSBDb2xvciBFbW9qaSwgU2Vnb2UgVUkgRW1vamksIFNlZ29lIFVJIFN5bWJvbCwgTm90byBDb2xvciBFbW9qaTsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgY29sb3I6ICMzMzM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlCn0KCmgxLApoMiwKaDMsCmg0LApoNSwKaDYgewogICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAuNXJlbTsKICAgIG1hcmdpbi1ibG9jay1lbmQ6IDFyZW07CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBsaW5lLWhlaWdodDogMS4yOwogICAgY29sb3I6IGluaGVyaXQKfQoKaDEgewogICAgZm9udC1zaXplOiAyLjVyZW0KfQoKaDIgewogICAgZm9udC1zaXplOiAycmVtCn0KCmgzIHsKICAgIGZvbnQtc2l6ZTogMS43NXJlbQp9CgpoNCB7CiAgICBmb250LXNpemU6IDEuNXJlbQp9CgpoNSB7CiAgICBmb250LXNpemU6IDEuMjVyZW0KfQoKaDYgewogICAgZm9udC1zaXplOiAxcmVtCn0KCnAgewogICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAwOwogICAgbWFyZ2luLWJsb2NrLWVuZDogLjlyZW0KfQoKaHIgewogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBoZWlnaHQ6IDA7CiAgICBvdmVyZmxvdzogdmlzaWJsZQp9CgpwcmUgewogICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOwogICAgZm9udC1zaXplOiAxZW07CiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAKfQoKYSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGNvbG9yOiAjYzM2Cn0KCmE6YWN0aXZlLAphOmhvdmVyIHsKICAgIGNvbG9yOiAjMzM2Cn0KCmE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pLAphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cywKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6aG92ZXIgewogICAgY29sb3I6IGluaGVyaXQ7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6Zm9jdXMgewogICAgb3V0bGluZTogMAp9CgphYmJyW3RpdGxlXSB7CiAgICBib3JkZXItYmxvY2stZW5kOiBub25lOwogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQKfQoKYiwKc3Ryb25nIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkZXIKfQoKY29kZSwKa2JkLApzYW1wIHsKICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTogMWVtCn0KCnNtYWxsIHsKICAgIGZvbnQtc2l6ZTogODAlCn0KCnN1YiwKc3VwIHsKICAgIGZvbnQtc2l6ZTogNzUlOwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUKfQoKc3ViIHsKICAgIGJvdHRvbTogLS4yNWVtCn0KCnN1cCB7CiAgICB0b3A6IC0uNWVtCn0KCmltZyB7CiAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXgtd2lkdGg6IDEwMCUKfQoKZGV0YWlscyB7CiAgICBkaXNwbGF5OiBibG9jawp9CgpzdW1tYXJ5IHsKICAgIGRpc3BsYXk6IGxpc3QtaXRlbQp9CgpmaWdjYXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGNvbG9yOiAjMzMzOwogICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKW2hpZGRlbl0sCnRlbXBsYXRlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKQG1lZGlhIHByaW50IHsKICAgICosCiAgICA6YWZ0ZXIsCiAgICA6YmVmb3JlIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgICAgIGNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQKICAgIH0KICAgIGEsCiAgICBhOnZpc2l0ZWQgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lCiAgICB9CiAgICBhW2hyZWZdOmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiICgiIGF0dHIoaHJlZikgIikiCiAgICB9CiAgICBhYmJyW3RpdGxlXTphZnRlciB7CiAgICAgICAgY29udGVudDogIiAoIiBhdHRyKHRpdGxlKSAiKSIKICAgIH0KICAgIGFbaHJlZl49IiMiXTphZnRlciwKICAgIGFbaHJlZl49ImphdmFzY3JpcHQ6Il06YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICIiCiAgICB9CiAgICBwcmUgewogICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcCAhaW1wb3J0YW50CiAgICB9CiAgICBibG9ja3F1b3RlLAogICAgcHJlIHsKICAgICAgICAtbW96LWNvbHVtbi1icmVhay1pbnNpZGU6IGF2b2lkOwogICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2NjYwogICAgfQogICAgdGhlYWQgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cAogICAgfQogICAgaW1nLAogICAgdHIgewogICAgICAgIC1tb3otY29sdW1uLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZAogICAgfQogICAgaDIsCiAgICBoMywKICAgIHAgewogICAgICAgIG9ycGhhbnM6IDM7CiAgICAgICAgd2lkb3dzOiAzCiAgICB9CiAgICBoMiwKICAgIGgzIHsKICAgICAgICAtbW96LWNvbHVtbi1icmVhay1hZnRlcjogYXZvaWQ7CiAgICAgICAgYnJlYWstYWZ0ZXI6IGF2b2lkCiAgICB9Cn0KCmxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgpidXR0b24sCmlucHV0LApvcHRncm91cCwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBtYXJnaW46IDAKfQoKaW5wdXRbdHlwZT1kYXRlXSwKaW5wdXRbdHlwZT1lbWFpbF0sCmlucHV0W3R5cGU9bnVtYmVyXSwKaW5wdXRbdHlwZT1wYXNzd29yZF0sCmlucHV0W3R5cGU9c2VhcmNoXSwKaW5wdXRbdHlwZT10ZWxdLAppbnB1dFt0eXBlPXRleHRdLAppbnB1dFt0eXBlPXVybF0sCnNlbGVjdCwKdGV4dGFyZWEgewogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjNjY2OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgcGFkZGluZzogLjVyZW0gMXJlbTsKICAgIHRyYW5zaXRpb246IGFsbCAuM3MKfQoKaW5wdXRbdHlwZT1kYXRlXTpmb2N1cywKaW5wdXRbdHlwZT1lbWFpbF06Zm9jdXMsCmlucHV0W3R5cGU9bnVtYmVyXTpmb2N1cywKaW5wdXRbdHlwZT1wYXNzd29yZF06Zm9jdXMsCmlucHV0W3R5cGU9c2VhcmNoXTpmb2N1cywKaW5wdXRbdHlwZT10ZWxdOmZvY3VzLAppbnB1dFt0eXBlPXRleHRdOmZvY3VzLAppbnB1dFt0eXBlPXVybF06Zm9jdXMsCnNlbGVjdDpmb2N1cywKdGV4dGFyZWE6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjMzMzCn0KCmJ1dHRvbiwKaW5wdXQgewogICAgb3ZlcmZsb3c6IHZpc2libGUKfQoKYnV0dG9uLApzZWxlY3QgewogICAgdGV4dC10cmFuc2Zvcm06IG5vbmUKfQoKW3R5cGU9YnV0dG9uXSwKW3R5cGU9cmVzZXRdLApbdHlwZT1zdWJtaXRdLApidXR0b24gewogICAgd2lkdGg6IGF1dG87CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbgp9CgpbdHlwZT1idXR0b25dOjotbW96LWZvY3VzLWlubmVyLApbdHlwZT1yZXNldF06Oi1tb3otZm9jdXMtaW5uZXIsClt0eXBlPXN1Ym1pdF06Oi1tb3otZm9jdXMtaW5uZXIsCmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7CiAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwCn0KClt0eXBlPWJ1dHRvbl06LW1vei1mb2N1c3JpbmcsClt0eXBlPXJlc2V0XTotbW96LWZvY3VzcmluZywKW3R5cGU9c3VibWl0XTotbW96LWZvY3VzcmluZywKYnV0dG9uOi1tb3otZm9jdXNyaW5nIHsKICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dAp9CgpbdHlwZT1idXR0b25dLApbdHlwZT1zdWJtaXRdLApidXR0b24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGNvbG9yOiAjYzM2OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMzY7CiAgICBwYWRkaW5nOiAuNXJlbSAxcmVtOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgdHJhbnNpdGlvbjogYWxsIC4zcwp9CgpbdHlwZT1idXR0b25dOmZvY3VzLApbdHlwZT1zdWJtaXRdOmZvY3VzLApidXR0b246Zm9jdXMgewogICAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yCn0KClt0eXBlPWJ1dHRvbl06Zm9jdXMsClt0eXBlPWJ1dHRvbl06aG92ZXIsClt0eXBlPXN1Ym1pdF06Zm9jdXMsClt0eXBlPXN1Ym1pdF06aG92ZXIsCmJ1dHRvbjpmb2N1cywKYnV0dG9uOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2MzNjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZQp9CgpbdHlwZT1idXR0b25dOm5vdCg6ZGlzYWJsZWQpLApbdHlwZT1zdWJtaXRdOm5vdCg6ZGlzYWJsZWQpLApidXR0b246bm90KDpkaXNhYmxlZCkgewogICAgY3Vyc29yOiBwb2ludGVyCn0KCmZpZWxkc2V0IHsKICAgIHBhZGRpbmc6IC4zNWVtIC43NWVtIC42MjVlbQp9CgpsZWdlbmQgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgZGlzcGxheTogdGFibGU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAwOwogICAgd2hpdGUtc3BhY2U6IG5vcm1hbAp9Cgpwcm9ncmVzcyB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUKfQoKdGV4dGFyZWEgewogICAgb3ZlcmZsb3c6IGF1dG87CiAgICByZXNpemU6IHZlcnRpY2FsCn0KClt0eXBlPWNoZWNrYm94XSwKW3R5cGU9cmFkaW9dIHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBwYWRkaW5nOiAwCn0KClt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sClt0eXBlPW51bWJlcl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24gewogICAgaGVpZ2h0OiBhdXRvCn0KClt0eXBlPXNlYXJjaF0gewogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7CiAgICBvdXRsaW5lLW9mZnNldDogLTJweAp9CgpbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZQp9Cgo6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwogICAgZm9udDogaW5oZXJpdAp9CgpzZWxlY3QgewogICAgZGlzcGxheTogYmxvY2sKfQoKdGFibGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbi1ibG9jay1lbmQ6IDE1cHg7CiAgICBmb250LXNpemU6IC45ZW07CiAgICBib3JkZXItc3BhY2luZzogMDsKICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UKfQoKdGFibGUgdGQsCnRhYmxlIHRoIHsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIGhzbGEoMCwgMCUsIDUwLjIlLCAuNTAxOTYwNzg0MykKfQoKdGFibGUgdGggewogICAgZm9udC13ZWlnaHQ6IDcwMAp9Cgp0YWJsZSB0Zm9vdCB0aCwKdGFibGUgdGhlYWQgdGggewogICAgZm9udC1zaXplOiAxZW0KfQoKdGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZCwKdGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aCwKdGFibGUgY29sZ3JvdXArdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGQsCnRhYmxlIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoLAp0YWJsZSB0aGVhZDpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0ZCwKdGFibGUgdGhlYWQ6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGggewogICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiAxcHggc29saWQgaHNsYSgwLCAwJSwgNTAuMiUsIC41MDE5NjA3ODQzKQp9Cgp0YWJsZSB0Ym9keT50cjpudGgtY2hpbGQob2RkKT50ZCwKdGFibGUgdGJvZHk+dHI6bnRoLWNoaWxkKG9kZCk+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgwLCAwJSwgNTAuMiUsIC4wNzA1ODgyMzUzKQp9Cgp0YWJsZSB0Ym9keSB0cjpob3Zlcj50ZCwKdGFibGUgdGJvZHkgdHI6aG92ZXI+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgwLCAwJSwgNTAuMiUsIC4xMDE5NjA3ODQzKQp9Cgp0YWJsZSB0Ym9keSt0Ym9keSB7CiAgICBib3JkZXItYmxvY2stc3RhcnQ6IDJweCBzb2xpZCBoc2xhKDAsIDAlLCA1MC4yJSwgLjUwMTk2MDc4NDMpCn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICB0YWJsZSB0YWJsZSB7CiAgICAgICAgZm9udC1zaXplOiAuOGVtCiAgICB9CiAgICB0YWJsZSB0YWJsZSB0ZCwKICAgIHRhYmxlIHRhYmxlIHRoIHsKICAgICAgICBwYWRkaW5nOiA3cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMwogICAgfQogICAgdGFibGUgdGFibGUgdGggewogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDAKICAgIH0KfQoKZGQsCmRsLApkdCwKbGksCm9sLAp1bCB7CiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IDA7CiAgICBtYXJnaW4tYmxvY2stZW5kOiAwOwogICAgYm9yZGVyOiAwOwogICAgb3V0bGluZTogMDsKICAgIGZvbnQtc2l6ZTogMTAwJTsKICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Cn0="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/favicon-150x150.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:11.688Z","timestamp":1785130091688,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/favicon-150x150.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:11 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:21 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=rXmLfAUGpDdFSQIkmXVAsoagM7IUK%2BDiJLFVaUhxSsSpVq0ggr3URlXpKr1ItTM0rhD3704OyT8i1kajAXxQJuOhRSdaV92IlPqt0VB%2B5aUnexCIcMoay00RWbbbIAEhgyrF2U80FA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=6,i=?0\r\ncf-ray: a2193d410f52120a-OSL\r\ncontent-length: 16654\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":16654,"size_decoded":17421,"mime_type":"image/png","magic":"PNG image data, 386 x 405, 8-bit/color RGBA, non-interlaced","md5":"ba9d69850685bad1093ca040e89a459c","sha1":"9f5861a18d4b2f27b22b875c5e45c39167038158","sha256":"2ffd5a64e61cd55abc9d556a3a483ebb5608ddfbef10d53d15764befe2bdd727","sha512":"84c76c85143733fac38ce103ce793e8ad785007520d9e9ff95ffb921cbbbf5529e0ca655ca342560505c8ef735287d563816c4d3c3a77fb73a550af351d71bef","ssdeep":"384:xygHTpuUR1dhlln3fz/obN+F0XdgumYMuQHHjfAtSUu82MMF:x/Vj3f8bB6fdnjfKZZ2MG","tlshash":"c072c0c1b1850bf10c23dd3aef1975d94949d1492b372d60e8f65fb1eaf8ea184860c9","first_seen":"2026-07-27T04:11:05.602182Z","last_seen":"2026-07-27T05:30:59.794077Z","times_seen":3,"resource_available":false,"data":"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"}},"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":"fonts.gstatic.com/s/i/productlogos/translate/v14/24px.svg","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:11.829Z","timestamp":1785130091829,"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/i/productlogos/translate/v14/24px.svg 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: 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://dreamspinfluence.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, 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\naccept-ranges: bytes\r\ncontent-encoding: gzip\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\ncontent-length: 3340\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 10:10:10 GMT\r\nexpires: Fri, 23 Jul 2027 10:10:10 GMT\r\ncache-control: public, max-age=31536000\r\nage: 328682\r\nlast-modified: Wed, 20 Apr 2022 14:24:23 GMT\r\ncontent-type: image/svg+xml\r\nvary: Accept-Encoding\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":6225,"size_decoded":4178,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"2bd5c073a88b83ed74db88282a56ddfb","sha1":"d0ebfc376f8c6a44a8d4cd216817dcd7d0c33650","sha256":"ab5c23a05e39deed14d9d8262b0dce9f024f86105a27196cad37d14a3f516e09","sha512":"5c6c4a92e93fc0f6a675658cc84f6187fdebd3eee94efd07e24658736cba598f3bc7156b19834b13fb44c1d43fcb7df9fcca7f0a453037e30da76ba8f4b23b89","ssdeep":"96:+R2K3Z4n7tyVwip82hezk6227gLFoXhu1XuE20ot+pVY3YptWDzOzgXK3Zx:ql3KnxyGGMzb7noR20NTww33","tlshash":"c1d1e6f19309d815cd6a83d8cd9b8002aa1f25ddd50ac6cc7639fb3bd1a50eb1d2d7a4","first_seen":"2023-04-06T21:34:37Z","last_seen":"2026-08-02T16:42:24.494269Z","times_seen":78585,"resource_available":false,"data":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxkZWZzPjxwYXRoIGQ9Ik0yMS41IDVoLTkuMTdMMTEgMUgyLjVDMS42OCAxIDEgMS42OCAxIDIuNXYxNWMwIC44My42OCAxLjUgMS41IDEuNWg5LjE3TDEzIDIzaDguNWMuODIgMCAxLjUtLjY4IDEuNS0xLjV2LTE1YzAtLjgzLS42OC0xLjUtMS41LTEuNXoiIGlkPSJhIi8+PC9kZWZzPjxjbGlwUGF0aCBpZD0iYiI+PHVzZSBvdmVyZmxvdz0idmlzaWJsZSIgeGxpbms6aHJlZj0iI2EiLz48L2NsaXBQYXRoPjxnIGNsaXAtcGF0aD0idXJsKCNiKSI+PGltYWdlIGhlaWdodD0iMzEiIG9wYWNpdHk9Ii4yIiBvdmVyZmxvdz0idmlzaWJsZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMyAxKSIgd2lkdGg9IjI5IiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUIwQUFBQWZDQVlBQUFBYlc4WUVBQUFBQ1hCSVdYTUFBQXNTQUFBTEVnSFMzWDc4QUFBQSBHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCUUJKUkVGVWVOcThWOHR1MjBZVXZYZG0rTENrIFJLaU13STFURkVYaFZaSmQxZ1c2Nnhla3Y5RFBxUHN2WGRVL1VhRHJvSnNrS3krQ0luQ2NHcEt0RnkyU00vZjJERVhaaWEwb2R0S1cgQWtGSjh6aHp6bjNTMFljdnBzKzc5RU1EYmozWWZndjRFTStYVE4vZkVPYjNaZzNBWG1xN2o2NEQ1L2UveC9FZnpaTW5YNWp4K0xGWiBMTHlwNnlORE96c2tZYjZSdWJGZHBiZHZLVWwySmMrZDlQdlA1ZG16VXlINlRWb1lYUU9xK0g1Zzl2YitjT05zTzltYUxwSXl5WlBVIGtaTkFwcG1oOVZwZzVrU1h3Q1NWSjUvVmkvcjhUbDczeTJGOWVQaWRKM29hZ2ErQjR2a1VnRis2RVcxbmR6MTFndk5kRGRMMWJETnIgeUtrQ1dPMTZ0aHlVR1dJSWVhZTJaR3ZuMW9mNXhGRXhvR0Y1ZUhnTTRBTlpzVzAzMlRmMDVNamVXK3htTktlZWRlV0FnOXRteXdQTSA2ckdZek9BUEJTZlE1U3MwTmY0cEFtUnJTbUJQMWVoSXhRNkRweEYxYVhhU0g1WDBiRGNBUjFhT3hMUlB0UGRyWnJ3bmQ1NVN4M2d6IElNTzcyT3dCcTlrbW94MFJTa0hIUk54clJKV0ZEYlFYS3BSMXhONGVPZngwTnFuTWRGSHVsWS9ydy8xUkFFNWNyRXZ2ZmZHQ3ZYL0UgVlVvT0MzTW0yNGVhTzZUeU5aamVCNUUrc0RMTXQydENxWkVXOGxjZ1BTVTJ4MEloS2xBWW9UUDR4VVR1ZVVNdkh2Skszb3VROGZmSCBIUDYySnBHZWcvVlNZY2lxTkFEYkhReHZZNWV0ZHI2NXloTlhsRzJCNXhqemdXZkhKb1NlWjVPbGJ1YXErY3pReVlTdnhhbDcwMWRKIFNXb2lnUk5xWEl0ak9SaHNDK3g3NE5mRHRQUTZhR1BrZ0FVbEdST3BUS0JRUjRnYkIxeDZmanozL0RLOEdzb0hqL1NWRzZwSkFDaSsgTmhRZEFwc1FKRlBDZWxpWUtJbWdlRUpteWxjM1h6dzV5cDl4bklNWU1rWnQ5SGpWaEsvR2VIdHFaSTUrS1VWSlh0U1ZRY3djWURQbyBGSTkzamhXK0RXU2p6WnJHdHMwTlFTd09aVEZvTWFNQmFseTZDVEZaRzJLWFV0M1oxYVF6QzM2cktyRkowY2dVYjZhWlJudVJ3anRJIGxvN0VxM0NMV1N5YTRlSjdhK1ROMmV1ZHZDbGJrMTdJdEZlcG9RTHJweVF5eGtaVGpCWUlpd3FuWHdGLzFtWGVyUWl2dHUrSG9ocDcgdGY3Y1dKbkNUZ0JsZUNRM2JCRWFQaWFDVFJYa05xQkx1OTU1bzJrditOeklJb2dEa0dsQUVmdXdMNTFEWWg5ejNzZEsxeTFBTHlYMiBGeEpMSzNGajMzOU5Zbk8xNlA0ZkVsOEo5SFVTYXl0eFRIRlJZcXJobko2MEFaVTJsTnBETk9VTGFaSDFGcUJYSlM0TGhOOEVDZW9zIE1nYkxXVXgzQUsreHY0K1pLTjZBQ3h4bFp3MHhEemRaS2o3WjZFMUFMeVErOTFXTmNsd2dJVTZ3d1JsaTd4VGt6akE4QlFDU0J4ZkwgK01VaGxuR01ETVlsZnNQdVdzZFNGNEdaYTIyNmlvMU1XNG56UHZrUWJXZ0RuSWxHWUhTQ1RVK1FiT0k5Qk50VFRCN2h4bUVJaCtGVCBLREpHWm9pVnBrQTZLbU5SajkwRTBkdVBObWFOeEoyOVFWaDBSeFdzT01OUmgwSnlESWs3TEJLMWl3NjJCVjFjTEthWHBZMm4rSFdzIEdrWmlkT1pFeXNwM2ZESzRLM1R2SzkwRWlzR2Y2YkQvazZDVHFEcEJadDZFb1RXY1NYUVU1bWhYMUZ2Tm0vWFJpeVFpYXcwWEttRGkgRVhMOWtkVjZGTU11OWt2cHlVRG9CM1NJQjV1WXhwMitmU3I5UDdOYTdJT2lwc1VweFo1QnFJU05UdzFyRnk2YkdyS29JakFiUzl1dSBFS29UMk5vd3FpV0o3Y3FNMEtEOWxUOFgydCtsS3ozUzJsNFovZTR2OXB0WHpjRnluOVpkOG5sSEhjalhhTlpzYUN2S3FsVzZkV1AyIElicjdzZEUyZTY4SDlzeStUdk41SjZud3lkTFV2dHVXZm1vTHVnSDRaZzM0SnpiYkh3Ty93YXZHKzY4VmRKUFhpaHVDL3pjdlVKKzAgMFcydWZ3UVlBR0hLSzJDRk1JcnpBQUFBQUVsRlRrU3VRbUNDIi8+PHJhZGlhbEdyYWRpZW50IGN4PSI3LjM5NCIgY3k9IjUuNDM3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9ImMiIHI9IjIzLjQxNiI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjRUVFIi8+PHN0b3Agb2Zmc2V0PSIuNDMyIiBzdG9wLWNvbG9yPSIjRTZFNkU2Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRTFFMUUxIi8+PC9yYWRpYWxHcmFkaWVudD48cGF0aCBkPSJNMTMgMjNoOC41Yy44MiAwIDEuNS0uNjggMS41LTEuNXYtMTVjMC0uODMtLjY4LTEuNS0xLjUtMS41SDdsNiAxOHoiIGZpbGw9InVybCgjYykiLz48L2c+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJNMTggMTF2LTFoLTF2MWgtMy43NXYxaDUuMzJjLS4yLjQ5LS42IDEuMy0xLjMyIDIuMTQtLjUxLS42LS44Ni0xLjE4LTEuMS0xLjY0aC0xLjExYy4zNi44NC45IDEuNjYgMS41MiAyLjM4bC0yLjYgMi41OC43MS43MSAyLjU4LTIuNTggMi41OCAyLjU4LjcxLS43MS0yLjYtMi41OGMuNzQtLjg2IDEuMzMtMS44NSAxLjY4LTIuODhIMjF2LTFoLTN6IiBmaWxsPSIjNjA3RDhCIi8+PGxpbmVhckdyYWRpZW50IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBpZD0iZCIgeDE9IjEyLjMzMyIgeDI9IjIzIiB5MT0iMTQiIHkyPSIxNCI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMjEyMTIxIiBzdG9wLW9wYWNpdHk9Ii4xIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjEyMTIxIiBzdG9wLW9wYWNpdHk9Ii4wMiIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJNMTIuMzMgNUwyMyAxNS42N1YyM0gxMyIgZmlsbD0idXJsKCNkKSIvPjxnIGNsaXAtcGF0aD0idXJsKCNiKSI+PGltYWdlIGhlaWdodD0iOCIgb3BhY2l0eT0iLjEiIG92ZXJmbG93PSJ2aXNpYmxlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC41IDE3LjUpIiB3aWR0aD0iOSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBb0FBQUFKQ0FZQUFBQUxwcjBUQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUEgR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU9GSlJFRlVlTnAwVUQxTEEwRVVuTGU3SnNKaCBDaUZwTFZOWWFTMzQxMUw3Wi9JblVwZ21xUklSTEd4RU9FVlFzb1JjYm5lY3U2QUdUQjRNNzJ2ZXZqZHIrRFBEZitOdnMzODU4cTdhIEZwNG9ET1pCSjVkSk1DVkR6SjJUK0xZWXBlQXlUajM5VU1OWGhBMDBIQUJYS3k4OWJZNlVscXJGb01IbTVRSzBhL21iWFl4U3l5Wm0gZUNCVGU1S3I2OCtOR3ErS3Y0UXpvU004cTNaUDhpbWpYamRFdi82WXNuZCtxNmE3VU40WEZzS1lsaWZiVUpYdmozZnR5dEFxTTF2SiB6NlVnR3ZnaUliTjkwZzhSVmRkRktaL3B6cVgrWTVORHRkb25IVEk3MXZnV1lBRHpXbWR4LzRmcG1RQUFBQUJKUlU1RXJrSmdnZz09Ii8+PHBhdGggZD0iTTE3IDE5bC00IDQtMS4zMy00IiBmaWxsPSIjM0Y1MUI1Ii8+PC9nPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTIxLjUgNUg3bC4wNC4xMkgyMS41Yy44MiAwIDEuNS42NyAxLjUgMS41VjYuNWMwLS44My0uNjgtMS41LTEuNS0xLjV6IiBmaWxsPSIjMjEyMTIxIiBmaWxsLW9wYWNpdHk9Ii4wMiIvPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTIxLjUgMjIuODhIMTNMMTEuNzEgMTloLS4wNEwxMyAyM2g4LjVjLjgyIDAgMS41LS42OCAxLjUtMS41di0uMTJjMCAuODItLjY4IDEuNS0xLjUgMS41eiIgZmlsbD0iIzIxMjEyMSIgZmlsbC1vcGFjaXR5PSIuMSIvPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTEyLjk3IDIyLjkxTDEzIDIzbDQtNGgtLjEyIiBmaWxsPSIjMUEyMzdFIiBmaWxsLW9wYWNpdHk9Ii4yIi8+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJNMTEuNjcgMTkuMTJoNS4yMUwxNyAxOWgtNS4zMyIgZmlsbD0iIzFBMjM3RSIgZmlsbC1vcGFjaXR5PSIuMSIvPjxnIGNsaXAtcGF0aD0idXJsKCNiKSI+PGltYWdlIGhlaWdodD0iMjIiIG9wYWNpdHk9Ii4yIiBvdmVyZmxvdz0idmlzaWJsZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLS41IC0uNSkiIHdpZHRoPSIyMCIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCVUFBQUFYQ0FZQUFBRGszd1NkQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUEgR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVVwSlJFRlVlTnFzbGJGT3d6QVFRTy9zUUNSYyBzcUFPbFJnck1qQ1ZyK0VyK0laK0F4L1dUQ3dWZXlWUWw5SU9RWTJQYzJxaE5Gd2NHc2RTckhOc1A1MmZwVFBDZVVQNFg2UFFaQTJaIFBpNDFscVhScENZS3RBNXRzRkJWRmRvOXBlbmg4MjFaU1dzUzExMlgxaEJkUFhHNDRCU3lRTWFFb0hjSjZRSkx1K0x4cmd1S1FEUUIgVUF1T24zbmZMQVRscWMwcHNtdnV2eVFWaWJmQVJ5YVhvUVBlaDZIazlNdzR1TDJidjN4czMxK1A3VVdxNVJkN0xzdk44YWtnNXpCUCBLVFBTSWdXWE4zT0NRbzZBUmtwaUNOUWQzNm1hZWdWNkRHZ2pXMWxCSkZSV01CUWFWREFVR2xRd0F2U3ZnaGhvcDRJWWFLZUNrYURuIENtS2hvb0pZcUtoQXRhbzU5VlYxb2Qzdzk5QlU0RXNmY1FWWHJ1QnVQQk12Z0pJdjFzZG1QU1ZBM0hPaEx2eS9iQ0MwcURrOHJqUDkgVHRXQjM2Z1Z2MUhydmplcTc5MlNqb2tSRi9aN0Z6OENEQUM4RW1XREtWR0RMZ0FBQUFCSlJVNUVya0pnZ2c9PSIvPjxwYXRoIGQ9Ik0xMSAxSDIuNUMxLjY4IDEgMSAxLjY4IDEgMi41djE1YzAgLjgzLjY4IDEuNSAxLjUgMS41SDE3TDExIDF6IiBmaWxsPSIjNDI4NUY0Ii8+PC9nPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTIuNSAxQzEuNjggMSAxIDEuNjggMSAyLjV2LjEyYzAtLjgyLjY4LTEuNSAxLjUtMS41SDExVjFIMi41eiIgZmlsbD0iI0ZGRiIgZmlsbC1vcGFjaXR5PSIuMDIiLz48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGQ9Ik0xMSAxdi4xMmw1LjkyIDE3Ljc1SDIuNWMtLjgyIDAtMS41LS42Ny0xLjUtMS41di4xMmMwIC44NC42OCAxLjUxIDEuNSAxLjUxSDE3TDExIDF6IiBmaWxsPSIjMjEyMTIxIiBmaWxsLW9wYWNpdHk9Ii4xIi8+PGcgY2xpcC1wYXRoPSJ1cmwoI2IpIj48cGF0aCBkPSJNNy41IDEwdjEuMmgxLjk4Yy0uMDguNTItLjYgMS41MS0xLjk4IDEuNTEtMS4yIDAtMi4xNy0uOTktMi4xNy0yLjIxUzYuMyA4LjI5IDcuNSA4LjI5Yy42OCAwIDEuMTMuMjkgMS4zOS41NGwuOTUtLjkyQzkuMjQgNy4zNSA4LjQ0IDcgNy41IDcgNS41NyA3IDQgOC41NyA0IDEwLjVTNS41NyAxNCA3LjUgMTRjMi4wMiAwIDMuMzYtMS40MiAzLjM2LTMuNDIgMC0uMjMtLjAyLS40MS0uMDYtLjU4SDcuNXoiIGZpbGw9IiNFRUUiLz48cGF0aCBkPSJNNCA3aDd2N0g0eiIgZmlsbD0ibm9uZSIvPjwvZz48cmFkaWFsR3JhZGllbnQgY3g9IjEuNDU3IiBjeT0iMS40MiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGlkPSJlIiByPSIyOS43OTIiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0ZGRiIgc3RvcC1vcGFjaXR5PSIuMSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGRiIgc3RvcC1vcGFjaXR5PSIwIi8+PC9yYWRpYWxHcmFkaWVudD48cGF0aCBkPSJNMjEuNSA1aC05LjE3TDExIDFIMi41QzEuNjggMSAxIDEuNjggMSAyLjV2MTVjMCAuODMuNjggMS41IDEuNSAxLjVoOS4xN0wxMyAyM2g4LjVjLjgyIDAgMS41LS42OCAxLjUtMS41di0xNWMwLS44My0uNjgtMS41LTEuNS0xLjV6IiBmaWxsPSJ1cmwoI2UpIi8+PC9zdmc+"}},"time_used":17,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":17,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.323Z","timestamp":1785130090323,"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/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.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://dreamspinfluence.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: 50316\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 04:26:34 GMT\r\nexpires: Fri, 23 Jul 2027 04:26:34 GMT\r\ncache-control: public, max-age=31536000\r\nage: 349296\r\nlast-modified: Wed, 10 Sep 2025 16:23:20 GMT\r\ncontent-type: font/woff2\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":50316,"size_decoded":51129,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 50316, version 1.0","md5":"97b33529e13b04b2205144e28a17a1d6","sha1":"9eaf3fe571af16f72a84dbadc1fce0128dff4486","sha256":"1dd49afc07fb2231b2ff686cbf007725fb2742271bb1f28ebd98f22a0d817343","sha512":"ce731a26fac8fd5583137450138d71fc36a9a0c4b79257a5af74be21cc2773b6e3a1ead61055411ec1c2cc857b8b0e6cbc94971f5f0b51820b458d9146af89bf","ssdeep":"768:etWz8e4bJ7xYqUBOYPc1NmWL7TDGrAZrIzcbWomWEjoyW6Md/AE1wBje34U:eZdhUQN5ToAZrIz7uEjR7udw5e34U","tlshash":"a33301e2882ca65cfe1ba7f8c422cc65e3336044f63d461d5766ff6ee470605e83a016","first_seen":"2025-09-12T00:12:40.161531Z","last_seen":"2026-08-02T16:46:21.571857Z","times_seen":23285,"resource_available":false,"data":"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"}},"time_used":95,"timings":{"blocked":33,"dns":0,"connect":0,"send":0,"wait":22,"receive":40,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/images/tab_img3.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.085Z","timestamp":1785130090085,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/images/tab_img3.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=LTjWlKPxh%2Fb3U4OVFAjlrzWJwJTcz6%2BhJiwV%2BiWvIBTJ8JQWryp1KNfuPeNQFM5Eh2gJzsbscfKkuo7qVzl7DjFxDDbid2y1w6yWiCdUf%2BdRD75JWsCE1dmMDF3cAjvVyFKnpF0fXg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d370e66120a-OSL\r\ncontent-length: 4232\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":4232,"size_decoded":4999,"mime_type":"image/png","magic":"PNG image data, 20 x 21, 8-bit/color RGBA, non-interlaced","md5":"5096c8739fd65aeddf0fd85e81a49d40","sha1":"191a36c632246e90ca94d7a2554a0d650f126c1b","sha256":"ae1f57cb866935fb7ac26684b6146c712eeaab9d81b23fae9861171c1166432e","sha512":"1ae3356c28989000f78017660bad32a4ab2ce672479ab55bb43d88957218f2ad293ab87586a9eb227a97a8192ed47da1be17e15ee3954e35feb43b383479fa7c","ssdeep":"96:/llcHitlIxv9vk7C1+I4wWHLihk/xEFYuLb65bvD:kIIHUCD4way+5rD","tlshash":"4c915c49f8805956140d46f635f7850b4a2b9fc08284fe48eedfc10f9a10cb56daaadb","first_seen":"2026-07-27T04:11:05.694997Z","last_seen":"2026-07-27T05:30:59.792997Z","times_seen":3,"resource_available":false,"data":"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UmVhZHlxyWU8AAADfWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuZGFiYWNiYiwgMjAyMS8wNC8xNC0wMDozOTo0NCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5QzkwNDI1QTc5NkRFOTExQjkyNkY0QUYxMUQxRTNEQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3RUZFMUUyRjhGNDYxMUVFQjVGNTkzNjEwODE1MkY5NCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3RUZFMUUyRThGNDYxMUVFQjVGNTkzNjEwODE1MkY5NCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU4ZDQ5ZmVjLTVkNWUtNmU0NC1hNDVlLWZlZDA0ZjU0MjRhZiIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhkMjk5NDE5LTNjNmYtZmU0MS05ZWE1LTZmZmRmMDBlODU0NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Phsb4wMAAAJSSURBVHjapNXNSxVRGMfxmavea2VaoZVohSGRC0FCs5S4m/6AIgixFrVoESK9LgpyoxCB1EqtcNvSEF+QQiTCVS1aaGnkyoKIohctU9Ocvg/9po6n66oDH7gzZ3jmPM95ztwwiqLAGftxB0+xakLD7n3DCjZiOxqw9PcJAkodenAfSee+7yhOYAu6kO/OJxS3FhflNTYEa48a3EMd5vxM4oC3texmFOjBTCONzbiEWeT8W5TfS+1GMUqR46SQq9Tsdxq9ei6eb0fKTTlbcT/isAreq3u56EQh+jR/Fu80X4Yn2IVX8QLjgKECLOt6He6iHy9xGTcULAtt2uUp1KuO1/A94bXEApLowjB68Byn1B6FCv4BrWqbm5jEFXeFNn5iE9ox4uzkbv22DdiBcpxBN45gPc6rfwN3hdasJRhSgEAvsBrtVDns+pPmxjCjrGy89wNaqhN4iOu6Z+2Tj9O6fottetZqnqdaBnrpqpQj59oeOoatWNRcQt0wqN1v0yZZeTow6geM62hjHtVKc9k5DXnaKEu1Sc19TlkN+ClbsCJU6dQsOi+IS2L3D2CPammn6ovSTfsrtJXs1eSCejN0juiYUmxR8K+6b+VJ4SAeJ7yUbad/OIHc+r5Q79VrVZ+1yjf6oMxlquGSAkbOCYp/N6qG/VpZSieqEld1ov4EjHSk9imgP6a1wyt6NqmXWeBinMQj+w7EAa3bH+itYYaAE2qLCtzCuHY4S4fANue4BQz1F2Db/kztkmlkq5HtfB/SB9j9Zqa06guh95/y3+OXAAMA9yoKzkxUfb4AAAAASUVORK5CYII="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/vendor/wp-polyfill-inert.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.026Z","timestamp":1785130090026,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-includes/js/dist/vendor/wp-polyfill-inert.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=3ZFiJdw2nkiOttP4XTce6pjvBSWjqTsybG0p3MoyjI%2FegvbGMsGiR6zCHAciu7Zjnt0ydP0qIrhlmFoSYRxq88jW7zsidGXAleELPDoLxWO66pw%2BJP7c2eL%2B6oFakoAT7uFbIVQmxA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ae47120a-OSL\r\ncontent-length: 2630\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":11832,"size_decoded":3456,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (462)","md5":"e7bb072e5c9f94f7dd9a7686d4d0dc5a","sha1":"bfb7c763fcbd602bfeb0570bb7c0d9a44b6253c0","sha256":"ddf37c3974cda57aa02d32ad37cdce803142ccbc67f10dc998460839ec93e060","sha512":"13630015589f2daeab75f123efef94a800a56f2b8038f77f95aa028741904591a6051d878b4f9687e8e92cf417e1aca7a5ce2b689ae1c15d25eeda9adb9ec5d5","ssdeep":"192:iGRJNP5E3yHTh8OxJeqr7/+CGbUBCmhpIDNbKJbSi0dGdQsaGFHvnrOLCfLsf5qu:imNlvJhqF3KhM","tlshash":"a332426ea7e429335987b0656d7e8a427636402b044f4d283f1c84ee4f5c93806f2ff8","first_seen":"2025-09-01T05:50:55.055439Z","last_seen":"2026-07-27T05:30:59.791484Z","times_seen":11,"resource_available":true,"data":"ISBmdW5jdGlvbihlKSB7CiAgICAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbW9kdWxlIHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIGRlZmluZSB8fCAhZGVmaW5lLmFtZCA/IGUoKSA6IGRlZmluZSgiaW5lcnQiLCBlKQp9KChmdW5jdGlvbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBlLCB0LCBuLCBpLCBvLCByLCBzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHJldHVybiB0ICYmIGEoZS5wcm90b3R5cGUsIHQpLCBuICYmIGEoZSwgbiksIGUKICAgIH07CgogICAgZnVuY3Rpb24gYShlLCB0KSB7CiAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgIHZhciBpID0gdFtuXTsKICAgICAgICAgICAgaS5lbnVtZXJhYmxlID0gaS5lbnVtZXJhYmxlIHx8ICExLCBpLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIGkgJiYgKGkud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBpLmtleSwgaSkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZChlLCB0KSB7CiAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgfQoKICAgIGZ1bmN0aW9uIHUoZSwgdCkgewogICAgICAgIGQodGhpcywgdSksIHRoaXMuX2luZXJ0TWFuYWdlciA9IHQsIHRoaXMuX3Jvb3RFbGVtZW50ID0gZSwgdGhpcy5fbWFuYWdlZE5vZGVzID0gbmV3IFNldCwgdGhpcy5fcm9vdEVsZW1lbnQuaGFzQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpID8gdGhpcy5fc2F2ZWRBcmlhSGlkZGVuID0gdGhpcy5fcm9vdEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpIDogdGhpcy5fc2F2ZWRBcmlhSGlkZGVuID0gbnVsbCwgdGhpcy5fcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsICJ0cnVlIiksIHRoaXMuX21ha2VTdWJ0cmVlVW5mb2N1c2FibGUodGhpcy5fcm9vdEVsZW1lbnQpLCB0aGlzLl9vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMuX29uTXV0YXRpb24uYmluZCh0aGlzKSksIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5fcm9vdEVsZW1lbnQsIHsKICAgICAgICAgICAgYXR0cmlidXRlczogITAsCiAgICAgICAgICAgIGNoaWxkTGlzdDogITAsCiAgICAgICAgICAgIHN1YnRyZWU6ICEwCiAgICAgICAgfSkKICAgIH0KCiAgICBmdW5jdGlvbiBoKGUsIHQpIHsKICAgICAgICBkKHRoaXMsIGgpLCB0aGlzLl9ub2RlID0gZSwgdGhpcy5fb3ZlcnJvZGVGb2N1c01ldGhvZCA9ICExLCB0aGlzLl9pbmVydFJvb3RzID0gbmV3IFNldChbdF0pLCB0aGlzLl9zYXZlZFRhYkluZGV4ID0gbnVsbCwgdGhpcy5fZGVzdHJveWVkID0gITEsIHRoaXMuZW5zdXJlVW50YWJiYWJsZSgpCiAgICB9CgogICAgZnVuY3Rpb24gbChlKSB7CiAgICAgICAgaWYgKGQodGhpcywgbCksICFlKSB0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQ7IEluZXJ0TWFuYWdlciBuZWVkcyB0byB3cmFwIGEgZG9jdW1lbnQuIik7CiAgICAgICAgdGhpcy5fZG9jdW1lbnQgPSBlLCB0aGlzLl9tYW5hZ2VkTm9kZXMgPSBuZXcgTWFwLCB0aGlzLl9pbmVydFJvb3RzID0gbmV3IE1hcCwgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLl93YXRjaEZvckluZXJ0LmJpbmQodGhpcykpLCBfKGUuaGVhZCB8fCBlLmJvZHkgfHwgZS5kb2N1bWVudEVsZW1lbnQpLCAibG9hZGluZyIgPT09IGUucmVhZHlTdGF0ZSA/IGUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHRoaXMuX29uRG9jdW1lbnRMb2FkZWQuYmluZCh0aGlzKSkgOiB0aGlzLl9vbkRvY3VtZW50TG9hZGVkKCkKICAgIH0KCiAgICBmdW5jdGlvbiBjKGUsIHQsIG4pIHsKICAgICAgICBpZiAoZS5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkgewogICAgICAgICAgICB2YXIgaSA9IGU7CiAgICAgICAgICAgIGlmIChzID0gKHQgJiYgdChpKSwgaS5zaGFkb3dSb290KSkgcmV0dXJuIHZvaWQgYyhzLCB0LCBzKTsKICAgICAgICAgICAgaWYgKCJjb250ZW50IiA9PSBpLmxvY2FsTmFtZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IChzID0gaSkuZ2V0RGlzdHJpYnV0ZWROb2RlcyA/IHMuZ2V0RGlzdHJpYnV0ZWROb2RlcygpIDogW10sIHIgPSAwOyByIDwgby5sZW5ndGg7IHIrKykgYyhvW3JdLCB0LCBuKTsKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgic2xvdCIgPT0gaS5sb2NhbE5hbWUpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHMsIGEgPSAocyA9IGkpLmFzc2lnbmVkTm9kZXMgPyBzLmFzc2lnbmVkTm9kZXMoewogICAgICAgICAgICAgICAgICAgICAgICBmbGF0dGVuOiAhMAogICAgICAgICAgICAgICAgICAgIH0pIDogW10sIGQgPSAwOyBkIDwgYS5sZW5ndGg7IGQrKykgYyhhW2RdLCB0LCBuKTsKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAodmFyIHUgPSBlLmZpcnN0Q2hpbGQ7IG51bGwgIT0gdTspIGModSwgdCwgbiksIHUgPSB1Lm5leHRTaWJsaW5nCiAgICB9CgogICAgZnVuY3Rpb24gXyhlKSB7CiAgICAgICAgdmFyIHQ7CiAgICAgICAgZS5xdWVyeVNlbGVjdG9yKCJzdHlsZSNpbmVydC1zdHlsZSwgbGluayNpbmVydC1zdHlsZSIpIHx8ICgodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIikpLnNldEF0dHJpYnV0ZSgiaWQiLCAiaW5lcnQtc3R5bGUiKSwgdC50ZXh0Q29udGVudCA9ICJcbltpbmVydF0ge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG5baW5lcnRdLCBbaW5lcnRdICoge1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuIiwgZS5hcHBlbmRDaGlsZCh0KSkKICAgIH0KICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgJiYgKGUgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UsIHQgPSBFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzIHx8IEVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yLCBuID0gWyJhW2hyZWZdIiwgImFyZWFbaHJlZl0iLCAiaW5wdXQ6bm90KFtkaXNhYmxlZF0pIiwgInNlbGVjdDpub3QoW2Rpc2FibGVkXSkiLCAidGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pIiwgImJ1dHRvbjpub3QoW2Rpc2FibGVkXSkiLCAiZGV0YWlscyIsICJzdW1tYXJ5IiwgImlmcmFtZSIsICJvYmplY3QiLCAiZW1iZWQiLCAiW2NvbnRlbnRlZGl0YWJsZV0iXS5qb2luKCIsIiksIHModSwgW3sKICAgICAgICBrZXk6ICJkZXN0cnVjdG9yIiwKICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKSwgdGhpcy5fcm9vdEVsZW1lbnQgJiYgKG51bGwgIT09IHRoaXMuX3NhdmVkQXJpYUhpZGRlbiA/IHRoaXMuX3Jvb3RFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCB0aGlzLl9zYXZlZEFyaWFIaWRkZW4pIDogdGhpcy5fcm9vdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpKSwgdGhpcy5fbWFuYWdlZE5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3VubWFuYWdlTm9kZShlLm5vZGUpCiAgICAgICAgICAgIH0pLCB0aGlzKSwgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsLCB0aGlzLl9yb290RWxlbWVudCA9IG51bGwsIHRoaXMuX21hbmFnZWROb2RlcyA9IG51bGwsIHRoaXMuX2luZXJ0TWFuYWdlciA9IG51bGwKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiX21ha2VTdWJ0cmVlVW5mb2N1c2FibGUiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgIG4gPSAoYyhlLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0Ll92aXNpdE5vZGUoZSkKICAgICAgICAgICAgICAgIH0pKSwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7CiAgICAgICAgICAgIGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyhlKSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGUsIG8gPSB2b2lkIDA7IGk7KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgewogICAgICAgICAgICAgICAgICAgICAgICBvID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaSA9IGkucGFyZW50Tm9kZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbyAmJiAobiA9IG8uYWN0aXZlRWxlbWVudCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlLmNvbnRhaW5zKG4pICYmIChuLmJsdXIoKSwgbiA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1bWVudC5ib2R5LmZvY3VzKCkpCiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogIl92aXNpdE5vZGUiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIChlICE9PSB0aGlzLl9yb290RWxlbWVudCAmJiBlLmhhc0F0dHJpYnV0ZSgiaW5lcnQiKSAmJiB0aGlzLl9hZG9wdEluZXJ0Um9vdChlKSwgKHQuY2FsbChlLCBuKSB8fCBlLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKSkgJiYgdGhpcy5fbWFuYWdlTm9kZShlKSkKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiX21hbmFnZU5vZGUiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUgPSB0aGlzLl9pbmVydE1hbmFnZXIucmVnaXN0ZXIoZSwgdGhpcyksIHRoaXMuX21hbmFnZWROb2Rlcy5hZGQoZSkKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiX3VubWFuYWdlTm9kZSIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgKGUgPSB0aGlzLl9pbmVydE1hbmFnZXIuZGVyZWdpc3RlcihlLCB0aGlzKSkgJiYgdGhpcy5fbWFuYWdlZE5vZGVzLmRlbGV0ZShlKQogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJfdW5tYW5hZ2VTdWJ0cmVlIiwKICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgIGMoZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0Ll91bm1hbmFnZU5vZGUoZSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogIl9hZG9wdEluZXJ0Um9vdCIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9pbmVydE1hbmFnZXIuZ2V0SW5lcnRSb290KGUpOwogICAgICAgICAgICB0IHx8ICh0aGlzLl9pbmVydE1hbmFnZXIuc2V0SW5lcnQoZSwgITApLCB0ID0gdGhpcy5faW5lcnRNYW5hZ2VyLmdldEluZXJ0Um9vdChlKSksIHQubWFuYWdlZE5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuX21hbmFnZU5vZGUoZS5ub2RlKQogICAgICAgICAgICB9KSwgdGhpcykKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiX29uTXV0YXRpb24iLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgIHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIG4sIGkgPSB0LnRhcmdldDsKICAgICAgICAgICAgICAgICJjaGlsZExpc3QiID09PSB0LnR5cGUgPyAoZS5jYWxsKHQuYWRkZWROb2RlcykuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX21ha2VTdWJ0cmVlVW5mb2N1c2FibGUoZSkKICAgICAgICAgICAgICAgIH0pLCB0aGlzKSwgZS5jYWxsKHQucmVtb3ZlZE5vZGVzKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdW5tYW5hZ2VTdWJ0cmVlKGUpCiAgICAgICAgICAgICAgICB9KSwgdGhpcykpIDogImF0dHJpYnV0ZXMiID09PSB0LnR5cGUgJiYgKCJ0YWJpbmRleCIgPT09IHQuYXR0cmlidXRlTmFtZSA/IHRoaXMuX21hbmFnZU5vZGUoaSkgOiBpICE9PSB0aGlzLl9yb290RWxlbWVudCAmJiAiaW5lcnQiID09PSB0LmF0dHJpYnV0ZU5hbWUgJiYgaS5oYXNBdHRyaWJ1dGUoImluZXJ0IikgJiYgKHRoaXMuX2Fkb3B0SW5lcnRSb290KGkpLCBuID0gdGhpcy5faW5lcnRNYW5hZ2VyLmdldEluZXJ0Um9vdChpKSwgdGhpcy5fbWFuYWdlZE5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpLmNvbnRhaW5zKGUubm9kZSkgJiYgbi5fbWFuYWdlTm9kZShlLm5vZGUpCiAgICAgICAgICAgICAgICB9KSkpKQogICAgICAgICAgICB9KSwgdGhpcykKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAibWFuYWdlZE5vZGVzIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gbmV3IFNldCh0aGlzLl9tYW5hZ2VkTm9kZXMpCiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogImhhc1NhdmVkQXJpYUhpZGRlbiIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IHRoaXMuX3NhdmVkQXJpYUhpZGRlbgogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJzYXZlZEFyaWFIaWRkZW4iLAogICAgICAgIHNldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0aGlzLl9zYXZlZEFyaWFIaWRkZW4gPSBlCiAgICAgICAgfSwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZWRBcmlhSGlkZGVuCiAgICAgICAgfQogICAgfV0pLCBpID0gdSwgcyhoLCBbewogICAgICAgIGtleTogImRlc3RydWN0b3IiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIHRoaXMuX3Rocm93SWZEZXN0cm95ZWQoKSwgdGhpcy5fbm9kZSAmJiB0aGlzLl9ub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAoZSA9IHRoaXMuX25vZGUsIG51bGwgIT09IHRoaXMuX3NhdmVkVGFiSW5kZXggPyBlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCB0aGlzLl9zYXZlZFRhYkluZGV4KSA6IGUucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpLCB0aGlzLl9vdmVycm9kZUZvY3VzTWV0aG9kICYmIGRlbGV0ZSBlLmZvY3VzKSwgdGhpcy5fbm9kZSA9IG51bGwsIHRoaXMuX2luZXJ0Um9vdHMgPSBudWxsLCB0aGlzLl9kZXN0cm95ZWQgPSAhMAogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJfdGhyb3dJZkRlc3Ryb3llZCIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHRocm93IG5ldyBFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBkZXN0cm95ZWQgSW5lcnROb2RlIikKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiZW5zdXJlVW50YWJiYWJsZSIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAoZSA9IHRoaXMubm9kZSwgdC5jYWxsKGUsIG4pID8gLTEgPT09IGUudGFiSW5kZXggJiYgdGhpcy5oYXNTYXZlZFRhYkluZGV4IHx8IChlLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKSAmJiAodGhpcy5fc2F2ZWRUYWJJbmRleCA9IGUudGFiSW5kZXgpLCBlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCAiLTEiKSwgZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgKGUuZm9jdXMgPSBmdW5jdGlvbigpIHt9LCB0aGlzLl9vdmVycm9kZUZvY3VzTWV0aG9kID0gITApKSA6IGUuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpICYmICh0aGlzLl9zYXZlZFRhYkluZGV4ID0gZS50YWJJbmRleCwgZS5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4IikpKQogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJhZGRJbmVydFJvb3QiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRoaXMuX3Rocm93SWZEZXN0cm95ZWQoKSwgdGhpcy5faW5lcnRSb290cy5hZGQoZSkKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAicmVtb3ZlSW5lcnRSb290IiwKICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0aGlzLl90aHJvd0lmRGVzdHJveWVkKCksIHRoaXMuX2luZXJ0Um9vdHMuZGVsZXRlKGUpLCAwID09PSB0aGlzLl9pbmVydFJvb3RzLnNpemUgJiYgdGhpcy5kZXN0cnVjdG9yKCkKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiZGVzdHJveWVkIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVzdHJveWVkCiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogImhhc1NhdmVkVGFiSW5kZXgiLAogICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsICE9PSB0aGlzLl9zYXZlZFRhYkluZGV4CiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogIm5vZGUiLAogICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90aHJvd0lmRGVzdHJveWVkKCksIHRoaXMuX25vZGUKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAic2F2ZWRUYWJJbmRleCIsCiAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRoaXMuX3Rocm93SWZEZXN0cm95ZWQoKSwgdGhpcy5fc2F2ZWRUYWJJbmRleCA9IGUKICAgICAgICB9LAogICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90aHJvd0lmRGVzdHJveWVkKCksIHRoaXMuX3NhdmVkVGFiSW5kZXgKICAgICAgICB9CiAgICB9XSksIG8gPSBoLCBzKGwsIFt7CiAgICAgICAga2V5OiAic2V0SW5lcnQiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2luZXJ0Um9vdHMuaGFzKGUpICYmICh0ID0gbmV3IGkoZSwgdGhpcyksIGUuc2V0QXR0cmlidXRlKCJpbmVydCIsICIiKSwgdGhpcy5faW5lcnRSb290cy5zZXQoZSwgdCksICF0aGlzLl9kb2N1bWVudC5ib2R5LmNvbnRhaW5zKGUpKSkKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gZS5wYXJlbnROb2RlOyBuOykgMTEgPT09IG4ubm9kZVR5cGUgJiYgXyhuKSwgbiA9IG4ucGFyZW50Tm9kZQogICAgICAgICAgICB9IGVsc2UgdGhpcy5faW5lcnRSb290cy5oYXMoZSkgJiYgKHRoaXMuX2luZXJ0Um9vdHMuZ2V0KGUpLmRlc3RydWN0b3IoKSwgdGhpcy5faW5lcnRSb290cy5kZWxldGUoZSksIGUucmVtb3ZlQXR0cmlidXRlKCJpbmVydCIpKQogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJnZXRJbmVydFJvb3QiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbmVydFJvb3RzLmdldChlKQogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJyZWdpc3RlciIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9tYW5hZ2VkTm9kZXMuZ2V0KGUpOwogICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBuID8gbi5hZGRJbmVydFJvb3QodCkgOiBuID0gbmV3IG8oZSwgdCksIHRoaXMuX21hbmFnZWROb2Rlcy5zZXQoZSwgbiksIG4KICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiZGVyZWdpc3RlciIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9tYW5hZ2VkTm9kZXMuZ2V0KGUpOwogICAgICAgICAgICByZXR1cm4gbiA/IChuLnJlbW92ZUluZXJ0Um9vdCh0KSwgbi5kZXN0cm95ZWQgJiYgdGhpcy5fbWFuYWdlZE5vZGVzLmRlbGV0ZShlKSwgbikgOiBudWxsCiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogIl9vbkRvY3VtZW50TG9hZGVkIiwKICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGUuY2FsbCh0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbaW5lcnRdIikpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5lcnQoZSwgITApCiAgICAgICAgICAgIH0pLCB0aGlzKSwgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9kb2N1bWVudC5ib2R5IHx8IHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgewogICAgICAgICAgICAgICAgYXR0cmlidXRlczogITAsCiAgICAgICAgICAgICAgICBzdWJ0cmVlOiAhMCwKICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogITAKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiX3dhdGNoRm9ySW5lcnQiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihuLCBpKSB7CiAgICAgICAgICAgIHZhciBvID0gdGhpczsKICAgICAgICAgICAgbi5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKG4udHlwZSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgImNoaWxkTGlzdCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUuY2FsbChuLmFkZGVkTm9kZXMpLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgKGkgPSBlLmNhbGwobi5xdWVyeVNlbGVjdG9yQWxsKCJbaW5lcnRdIikpLCB0LmNhbGwobiwgIltpbmVydF0iKSAmJiBpLnVuc2hpZnQobiksIGkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5lcnQoZSwgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbykpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYXR0cmlidXRlcyI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiaW5lcnQiICE9PSBuLmF0dHJpYnV0ZU5hbWUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmhhc0F0dHJpYnV0ZSgiaW5lcnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgby5zZXRJbmVydChpLCByKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgdGhpcykKICAgICAgICB9CiAgICB9XSksIHMgPSBsLCBIVE1MRWxlbWVudC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoImluZXJ0IikgfHwgKHIgPSBuZXcgcyhkb2N1bWVudCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVE1MRWxlbWVudC5wcm90b3R5cGUsICJpbmVydCIsIHsKICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNBdHRyaWJ1dGUoImluZXJ0IikKICAgICAgICB9LAogICAgICAgIHNldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByLnNldEluZXJ0KHRoaXMsIGUpCiAgICAgICAgfQogICAgfSkpKQp9KSk7"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/vendor/regenerator-runtime.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.027Z","timestamp":1785130090027,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-includes/js/dist/vendor/regenerator-runtime.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=H4PQP7CtnpoacAgxqb0q%2Bx3Dtd9Ke6ewfiuFvsqusZJLParkZ%2ByL6HC%2FXiQy0pJy2ok%2FpwUxAT0v%2Br3ZmpGYvAg6V%2FnbKA0Eu5MB%2F3X%2Blgt0isiMayiM5VaAgXV1PuzGQULghfzrKQ%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ae48120a-OSL\r\ncontent-length: 2879\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":11195,"size_decoded":3715,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (658)","md5":"c294b19e3844545e75dac1706034baf7","sha1":"115025b3d4626dae8e5b61f5c5aa7e68aa56de68","sha256":"748e03bdccb80f74991934498360e2308d2601610334c89c10a8f7e7b8e53f14","sha512":"fc3e63085737165b84a1f5159baa0d46a971429664ad3cc9e346ff313f698b95c5c0941ea6f03b8594cda4ccb4fd7c33f205673c8f1e9caed0b65de227ec72e7","ssdeep":"192:qUhEbLnXG8NgStOggaq60Nl6LGkUyiAt+EOnjM9c9rdEQc+0+KiLyEqMULrQdb1r:qwEbLpX3D+c+0+KD5wrf6+cWKs1X","tlshash":"7832dd89baf7b0619303f138896f9408b235945f564ddd097e0ca6b0af91438d7b9fe8","first_seen":"2025-09-13T14:09:05.182292Z","last_seen":"2026-07-27T05:30:59.786787Z","times_seen":10,"resource_available":true,"data":"dmFyIHJ1bnRpbWUgPSBmdW5jdGlvbih0KSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgZSwgciA9IE9iamVjdC5wcm90b3R5cGUsCiAgICAgICAgbiA9IHIuaGFzT3duUHJvcGVydHksCiAgICAgICAgbyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB8fCBmdW5jdGlvbih0LCBlLCByKSB7CiAgICAgICAgICAgIHRbZV0gPSByLnZhbHVlCiAgICAgICAgfSwKICAgICAgICBpID0gKHcgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSkuaXRlcmF0b3IgfHwgIkBAaXRlcmF0b3IiLAogICAgICAgIGEgPSB3LmFzeW5jSXRlcmF0b3IgfHwgIkBAYXN5bmNJdGVyYXRvciIsCiAgICAgICAgYyA9IHcudG9TdHJpbmdUYWcgfHwgIkBAdG9TdHJpbmdUYWciOwoKICAgIGZ1bmN0aW9uIHUodCwgZSwgcikgewogICAgICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwgewogICAgICAgICAgICB2YWx1ZTogciwKICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIHdyaXRhYmxlOiAhMAogICAgICAgIH0pLCB0W2VdCiAgICB9CiAgICB0cnkgewogICAgICAgIHUoe30sICIiKQogICAgfSBjYXRjaCAocikgewogICAgICAgIHUgPSBmdW5jdGlvbih0LCBlLCByKSB7CiAgICAgICAgICAgIHJldHVybiB0W2VdID0gcgogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBoKHQsIHIsIG4sIGkpIHsKICAgICAgICB2YXIgYSwgYywgdSwgaDsKICAgICAgICByID0gciAmJiByLnByb3RvdHlwZSBpbnN0YW5jZW9mIHYgPyByIDogdiwgciA9IE9iamVjdC5jcmVhdGUoci5wcm90b3R5cGUpLCBpID0gbmV3IE8oaSB8fCBbXSk7CiAgICAgICAgcmV0dXJuIG8ociwgIl9pbnZva2UiLCB7CiAgICAgICAgICAgIHZhbHVlOiAoYSA9IHQsIGMgPSBuLCB1ID0gaSwgaCA9IGYsIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIGlmIChoID09PSBwKSB0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTsKICAgICAgICAgICAgICAgIGlmIChoID09PSB5KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJ0aHJvdyIgPT09IHQpIHRocm93IHI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmU6ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICh1Lm1ldGhvZCA9IHQsIHUuYXJnID0gcjs7KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB1LmRlbGVnYXRlOwogICAgICAgICAgICAgICAgICAgIGlmIChuICYmIChuID0gZnVuY3Rpb24gdChyLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ubWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByLml0ZXJhdG9yW29dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IGUgPyAobi5kZWxlZ2F0ZSA9IG51bGwsICJ0aHJvdyIgPT09IG8gJiYgci5pdGVyYXRvci5yZXR1cm4gJiYgKG4ubWV0aG9kID0gInJldHVybiIsIG4uYXJnID0gZSwgdChyLCBuKSwgInRocm93IiA9PT0gbi5tZXRob2QpIHx8ICJyZXR1cm4iICE9PSBvICYmIChuLm1ldGhvZCA9ICJ0aHJvdyIsIG4uYXJnID0gbmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIiArIG8gKyAiJyBtZXRob2QiKSksIGcpIDogInRocm93IiA9PT0gKG8gPSBsKGksIHIuaXRlcmF0b3IsIG4uYXJnKSkudHlwZSA/IChuLm1ldGhvZCA9ICJ0aHJvdyIsIG4uYXJnID0gby5hcmcsIG4uZGVsZWdhdGUgPSBudWxsLCBnKSA6IChpID0gby5hcmcpID8gaS5kb25lID8gKG5bci5yZXN1bHROYW1lXSA9IGkudmFsdWUsIG4ubmV4dCA9IHIubmV4dExvYywgInJldHVybiIgIT09IG4ubWV0aG9kICYmIChuLm1ldGhvZCA9ICJuZXh0Iiwgbi5hcmcgPSBlKSwgbi5kZWxlZ2F0ZSA9IG51bGwsIGcpIDogaSA6IChuLm1ldGhvZCA9ICJ0aHJvdyIsIG4uYXJnID0gbmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSwgbi5kZWxlZ2F0ZSA9IG51bGwsIGcpCiAgICAgICAgICAgICAgICAgICAgICAgIH0obiwgdSksIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09PSBnKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCJuZXh0IiA9PT0gdS5tZXRob2QpIHUuc2VudCA9IHUuX3NlbnQgPSB1LmFyZzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgidGhyb3ciID09PSB1Lm1ldGhvZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9PT0gZikgdGhyb3cgaCA9IHksIHUuYXJnOwogICAgICAgICAgICAgICAgICAgICAgICB1LmRpc3BhdGNoRXhjZXB0aW9uKHUuYXJnKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSAicmV0dXJuIiA9PT0gdS5tZXRob2QgJiYgdS5hYnJ1cHQoInJldHVybiIsIHUuYXJnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IHAsICJub3JtYWwiID09PSAobiA9IGwoYSwgYywgdSkpLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSB1LmRvbmUgPyB5IDogcywgbi5hcmcgIT09IGcpIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbi5hcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lOiB1LmRvbmUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSAidGhyb3ciID09PSBuLnR5cGUgJiYgKGggPSB5LCB1Lm1ldGhvZCA9ICJ0aHJvdyIsIHUuYXJnID0gbi5hcmcpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSksIHIKICAgIH0KCiAgICBmdW5jdGlvbiBsKHQsIGUsIHIpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogIm5vcm1hbCIsCiAgICAgICAgICAgICAgICBhcmc6IHQuY2FsbChlLCByKQogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogInRocm93IiwKICAgICAgICAgICAgICAgIGFyZzogdAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgdC53cmFwID0gaDsKICAgIHZhciBmID0gInN1c3BlbmRlZFN0YXJ0IiwKICAgICAgICBzID0gInN1c3BlbmRlZFlpZWxkIiwKICAgICAgICBwID0gImV4ZWN1dGluZyIsCiAgICAgICAgeSA9ICJjb21wbGV0ZWQiLAogICAgICAgIGcgPSB7fTsKCiAgICBmdW5jdGlvbiB2KCkge30KCiAgICBmdW5jdGlvbiBkKCkge30KCiAgICBmdW5jdGlvbiBtKCkge30KICAgIHZhciB3LCBiLCBMID0gKChiID0gKGIgPSAodSh3ID0ge30sIGksIChmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcwogICAgfSkpLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YpKSAmJiBiKGIoayhbXSkpKSkgJiYgYiAhPT0gciAmJiBuLmNhbGwoYiwgaSkgJiYgKHcgPSBiKSwgbS5wcm90b3R5cGUgPSB2LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodykpOwoKICAgIGZ1bmN0aW9uIHgodCkgewogICAgICAgIFsibmV4dCIsICJ0aHJvdyIsICJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHUodCwgZSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UoZSwgdCkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSkpCiAgICB9CgogICAgZnVuY3Rpb24gRSh0LCBlKSB7CiAgICAgICAgdmFyIHI7CiAgICAgICAgbyh0aGlzLCAiX2ludm9rZSIsIHsKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKG8sIGkpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBlKChmdW5jdGlvbihyLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24gcihvLCBpLCBhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidGhyb3ciICE9PSAobyA9IGwodFtvXSwgdCwgaSkpLnR5cGUpIHJldHVybiAoaSA9ICh1ID0gby5hcmcpLnZhbHVlKSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgaSAmJiBuLmNhbGwoaSwgIl9fYXdhaXQiKSA/IGUucmVzb2x2ZShpLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKCJuZXh0IiwgdCwgYSwgYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoInRocm93IiwgdCwgYSwgYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IGUucmVzb2x2ZShpKS50aGVuKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS52YWx1ZSA9IHQsIGEodSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByKCJ0aHJvdyIsIHQsIGEsIGMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKG8uYXJnKQogICAgICAgICAgICAgICAgICAgICAgICB9KG8sIGksIHIsIGEpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gciA9IHIgPyByLnRoZW4oYSwgYSkgOiBhKCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9CgogICAgZnVuY3Rpb24gaih0KSB7CiAgICAgICAgdmFyIGUgPSB7CiAgICAgICAgICAgIHRyeUxvYzogdFswXQogICAgICAgIH07CiAgICAgICAgMSBpbiB0ICYmIChlLmNhdGNoTG9jID0gdFsxXSksIDIgaW4gdCAmJiAoZS5maW5hbGx5TG9jID0gdFsyXSwgZS5hZnRlckxvYyA9IHRbM10pLCB0aGlzLnRyeUVudHJpZXMucHVzaChlKQogICAgfQoKICAgIGZ1bmN0aW9uIF8odCkgewogICAgICAgIHZhciBlID0gdC5jb21wbGV0aW9uIHx8IHt9OwogICAgICAgIGUudHlwZSA9ICJub3JtYWwiLCBkZWxldGUgZS5hcmcsIHQuY29tcGxldGlvbiA9IGUKICAgIH0KCiAgICBmdW5jdGlvbiBPKHQpIHsKICAgICAgICB0aGlzLnRyeUVudHJpZXMgPSBbewogICAgICAgICAgICB0cnlMb2M6ICJyb290IgogICAgICAgIH1dLCB0LmZvckVhY2goaiwgdGhpcyksIHRoaXMucmVzZXQoITApCiAgICB9CgogICAgZnVuY3Rpb24gayh0KSB7CiAgICAgICAgaWYgKHQgfHwgIiIgPT09IHQpIHsKICAgICAgICAgICAgdmFyIHIsIG8gPSB0W2ldOwogICAgICAgICAgICBpZiAobykgcmV0dXJuIG8uY2FsbCh0KTsKICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHQubmV4dCkgcmV0dXJuIHQ7CiAgICAgICAgICAgIGlmICghaXNOYU4odC5sZW5ndGgpKSByZXR1cm4gciA9IC0xLCAobyA9IGZ1bmN0aW9uIG8oKSB7CiAgICAgICAgICAgICAgICBmb3IgKDsgKytyIDwgdC5sZW5ndGg7KQogICAgICAgICAgICAgICAgICAgIGlmIChuLmNhbGwodCwgcikpIHJldHVybiBvLnZhbHVlID0gdFtyXSwgby5kb25lID0gITEsIG87CiAgICAgICAgICAgICAgICByZXR1cm4gby52YWx1ZSA9IGUsIG8uZG9uZSA9ICEwLCBvCiAgICAgICAgICAgIH0pLm5leHQgPSBvCiAgICAgICAgfQogICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IodHlwZW9mIHQgKyAiIGlzIG5vdCBpdGVyYWJsZSIpCiAgICB9CiAgICByZXR1cm4gbyhMLCAiY29uc3RydWN0b3IiLCB7CiAgICAgICAgdmFsdWU6IGQucHJvdG90eXBlID0gbSwKICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICB9KSwgbyhtLCAiY29uc3RydWN0b3IiLCB7CiAgICAgICAgdmFsdWU6IGQsCiAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgfSksIGQuZGlzcGxheU5hbWUgPSB1KG0sIGMsICJHZW5lcmF0b3JGdW5jdGlvbiIpLCB0LmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuICEhKHQgPSAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmIHQuY29uc3RydWN0b3IpICYmICh0ID09PSBkIHx8ICJHZW5lcmF0b3JGdW5jdGlvbiIgPT09ICh0LmRpc3BsYXlOYW1lIHx8IHQubmFtZSkpCiAgICB9LCB0Lm1hcmsgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZih0LCBtKSA6ICh0Ll9fcHJvdG9fXyA9IG0sIHUodCwgYywgIkdlbmVyYXRvckZ1bmN0aW9uIikpLCB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTCksIHQKICAgIH0sIHQuYXdyYXAgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgX19hd2FpdDogdAogICAgICAgIH0KICAgIH0sIHgoRS5wcm90b3R5cGUpLCB1KEUucHJvdG90eXBlLCBhLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMKICAgIH0pKSwgdC5Bc3luY0l0ZXJhdG9yID0gRSwgdC5hc3luYyA9IGZ1bmN0aW9uKGUsIHIsIG4sIG8sIGkpIHsKICAgICAgICB2b2lkIDAgPT09IGkgJiYgKGkgPSBQcm9taXNlKTsKICAgICAgICB2YXIgYSA9IG5ldyBFKGgoZSwgciwgbiwgbyksIGkpOwogICAgICAgIHJldHVybiB0LmlzR2VuZXJhdG9yRnVuY3Rpb24ocikgPyBhIDogYS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdC5kb25lID8gdC52YWx1ZSA6IGEubmV4dCgpCiAgICAgICAgfSkpCiAgICB9LCB4KEwpLCB1KEwsIGMsICJHZW5lcmF0b3IiKSwgdShMLCBpLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMKICAgIH0pKSwgdShMLCAidG9TdHJpbmciLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuICJbb2JqZWN0IEdlbmVyYXRvcl0iCiAgICB9KSksIHQua2V5cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICB2YXIgZSwgciA9IE9iamVjdCh0KSwKICAgICAgICAgICAgbiA9IFtdOwogICAgICAgIGZvciAoZSBpbiByKSBuLnB1c2goZSk7CiAgICAgICAgcmV0dXJuIG4ucmV2ZXJzZSgpLAogICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgZm9yICg7IG4ubGVuZ3RoOykgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5wb3AoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZSBpbiByKSByZXR1cm4gdC52YWx1ZSA9IGUsIHQuZG9uZSA9ICExLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdC5kb25lID0gITAsIHQKICAgICAgICAgICAgfQogICAgfSwgdC52YWx1ZXMgPSBrLCBPLnByb3RvdHlwZSA9IHsKICAgICAgICBjb25zdHJ1Y3RvcjogTywKICAgICAgICByZXNldDogZnVuY3Rpb24odCkgewogICAgICAgICAgICBpZiAodGhpcy5wcmV2ID0gMCwgdGhpcy5uZXh0ID0gMCwgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IGUsIHRoaXMuZG9uZSA9ICExLCB0aGlzLmRlbGVnYXRlID0gbnVsbCwgdGhpcy5tZXRob2QgPSAibmV4dCIsIHRoaXMuYXJnID0gZSwgdGhpcy50cnlFbnRyaWVzLmZvckVhY2goXyksICF0KQogICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiB0aGlzKSAidCIgPT09IHIuY2hhckF0KDApICYmIG4uY2FsbCh0aGlzLCByKSAmJiAhaXNOYU4oK3Iuc2xpY2UoMSkpICYmICh0aGlzW3JdID0gZSkKICAgICAgICB9LAogICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmRvbmUgPSAhMDsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjsKICAgICAgICAgICAgaWYgKCJ0aHJvdyIgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnJ2YWwKICAgICAgICB9LAogICAgICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICh0aGlzLmRvbmUpIHRocm93IHQ7CiAgICAgICAgICAgIHZhciByID0gdGhpczsKCiAgICAgICAgICAgIGZ1bmN0aW9uIG8obiwgbykgewogICAgICAgICAgICAgICAgcmV0dXJuIGMudHlwZSA9ICJ0aHJvdyIsIGMuYXJnID0gdCwgci5uZXh0ID0gbiwgbyAmJiAoci5tZXRob2QgPSAibmV4dCIsIHIuYXJnID0gZSksICEhbwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgMCA8PSBpOyAtLWkpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy50cnlFbnRyaWVzW2ldLAogICAgICAgICAgICAgICAgICAgIGMgPSBhLmNvbXBsZXRpb247CiAgICAgICAgICAgICAgICBpZiAoInJvb3QiID09PSBhLnRyeUxvYykgcmV0dXJuIG8oImVuZCIpOwogICAgICAgICAgICAgICAgaWYgKGEudHJ5TG9jIDw9IHRoaXMucHJldikgewogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbi5jYWxsKGEsICJjYXRjaExvYyIpLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gbi5jYWxsKGEsICJmaW5hbGx5TG9jIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHUgJiYgaCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgYS5jYXRjaExvYykgcmV0dXJuIG8oYS5jYXRjaExvYywgITApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgYS5maW5hbGx5TG9jKSByZXR1cm4gbyhhLmZpbmFsbHlMb2MpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBhLmNhdGNoTG9jKSByZXR1cm4gbyhhLmNhdGNoTG9jLCAhMCkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWgpIHRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGEuZmluYWxseUxvYykgcmV0dXJuIG8oYS5maW5hbGx5TG9jKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgYWJydXB0OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHIgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgMCA8PSByOyAtLXIpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy50cnlFbnRyaWVzW3JdOwogICAgICAgICAgICAgICAgaWYgKG8udHJ5TG9jIDw9IHRoaXMucHJldiAmJiBuLmNhbGwobywgImZpbmFsbHlMb2MiKSAmJiB0aGlzLnByZXYgPCBvLmZpbmFsbHlMb2MpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG87CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYSA9IChpID0gaSAmJiAoImJyZWFrIiA9PT0gdCB8fCAiY29udGludWUiID09PSB0KSAmJiBpLnRyeUxvYyA8PSBlICYmIGUgPD0gaS5maW5hbGx5TG9jID8gbnVsbCA6IGkpID8gaS5jb21wbGV0aW9uIDoge307CiAgICAgICAgICAgIHJldHVybiBhLnR5cGUgPSB0LCBhLmFyZyA9IGUsIGkgPyAodGhpcy5tZXRob2QgPSAibmV4dCIsIHRoaXMubmV4dCA9IGkuZmluYWxseUxvYywgZykgOiB0aGlzLmNvbXBsZXRlKGEpCiAgICAgICAgfSwKICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICBpZiAoInRocm93IiA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZzsKICAgICAgICAgICAgcmV0dXJuICJicmVhayIgPT09IHQudHlwZSB8fCAiY29udGludWUiID09PSB0LnR5cGUgPyB0aGlzLm5leHQgPSB0LmFyZyA6ICJyZXR1cm4iID09PSB0LnR5cGUgPyAodGhpcy5ydmFsID0gdGhpcy5hcmcgPSB0LmFyZywgdGhpcy5tZXRob2QgPSAicmV0dXJuIiwgdGhpcy5uZXh0ID0gImVuZCIpIDogIm5vcm1hbCIgPT09IHQudHlwZSAmJiBlICYmICh0aGlzLm5leHQgPSBlKSwgZwogICAgICAgIH0sCiAgICAgICAgZmluaXNoOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgMCA8PSBlOyAtLWUpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdOwogICAgICAgICAgICAgICAgaWYgKHIuZmluYWxseUxvYyA9PT0gdCkgcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLCByLmFmdGVyTG9jKSwgXyhyKSwgZwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBjYXRjaDogZnVuY3Rpb24odCkgewogICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IDAgPD0gZTsgLS1lKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgbiwgbyA9IHRoaXMudHJ5RW50cmllc1tlXTsKICAgICAgICAgICAgICAgIGlmIChvLnRyeUxvYyA9PT0gdCkgcmV0dXJuICJ0aHJvdyIgPT09IChyID0gby5jb21wbGV0aW9uKS50eXBlICYmIChuID0gci5hcmcsIF8obykpLCBuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKQogICAgICAgIH0sCiAgICAgICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24odCwgciwgbikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZSA9IHsKICAgICAgICAgICAgICAgIGl0ZXJhdG9yOiBrKHQpLAogICAgICAgICAgICAgICAgcmVzdWx0TmFtZTogciwKICAgICAgICAgICAgICAgIG5leHRMb2M6IG4KICAgICAgICAgICAgfSwgIm5leHQiID09PSB0aGlzLm1ldGhvZCAmJiAodGhpcy5hcmcgPSBlKSwgZwogICAgICAgIH0KICAgIH0sIHQKfSgib2JqZWN0IiA9PSB0eXBlb2YgbW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fSk7CnRyeSB7CiAgICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lCn0gY2F0Y2ggKHQpIHsKICAgICJvYmplY3QiID09IHR5cGVvZiBnbG9iYWxUaGlzID8gZ2xvYmFsVGhpcy5yZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lIDogRnVuY3Rpb24oInIiLCAicmVnZW5lcmF0b3JSdW50aW1lID0gciIpKHJ1bnRpbWUpCn0="}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":8,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/metform/public/assets/js/app.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.035Z","timestamp":1785130090035,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/metform/public/assets/js/app.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=yLcbw6tb9zpO6vMxIiMOEP3jVD%2FbmE7LHLHgKyTlYr%2BPBp9Vb8mlfK%2Fw%2Bo9cAoUbK7Mz0mLlpjjO6w39AWh4ZcxfhM4ryPJcmUFvG4pRQeRTPyUdBirBszlbAzciEs3fahi6QbpBqA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36be50120a-OSL\r\ncontent-length: 188794\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":1359753,"size_decoded":189624,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (909)","md5":"5532e9540f5c068ec71e2e68183e522b","sha1":"1c1c05967eabb14e920e606b929713f383796b00","sha256":"90842b2f2e2198834b4546ca1296ad1f0ec69445760172e3719a769fa69400a6","sha512":"1b192c038cea93f3ec81558188f053741a51e48dfe4c29d61124fe451cc017ab9fc1ee544002f13f2a9f3a0746c9652442e4cec8308cbc0c98cb3cd9deea4f25","ssdeep":"24576:lK+fXlNuudu3D9dM1biVOBN/8jpPxJRUU+iPy4kSYOqu23F5rMmZZ1veUvjNk9kQ:lK+fXlNuudu3D9dM1biVOBN/8jpPxJR/","tlshash":"7925814dbaf264718253f0394a2fc804b236941f598ced007e4c95a55f6983da7fafe8","first_seen":"2026-07-27T03:56:42.580242Z","last_seen":"2026-07-27T05:30:59.817403Z","times_seen":6,"resource_available":false,"data":"ISBmdW5jdGlvbigpIHsKICAgIHZhciBlID0gewogICAgICAgICAgICA2NTIxOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiBSZWZsZWN0ICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFJlZmxlY3Qub3duS2V5cyA/IHQgPSBSZWZsZWN0Lm93bktleXMoZS5wcm90b3R5cGUpIDogKHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlLnByb3RvdHlwZSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgKHQgPSB0LmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUucHJvdG90eXBlKSkpKSwgdC5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiY29uc3RydWN0b3IiICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5wcm90b3R5cGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygbi52YWx1ZSAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIHQsIHIoZSwgdCwgbikpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksIGUKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiByKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHIpIHRocm93IG5ldyBFcnJvcigiQGF1dG9iaW5kIGRlY29yYXRvciBjYW4gb25seSBiZSBhcHBsaWVkIHRvIG1ldGhvZHMgbm90OiAiICsgdHlwZW9mIHIpOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gITE7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvIHx8IHRoaXMgPT09IGUucHJvdG90eXBlIHx8IHRoaXMuaGFzT3duUHJvcGVydHkodCkpIHJldHVybiByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByLmJpbmQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyA9ICEwLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbyA9ICExLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgsIHQgPSBBcnJheShlKSwgbyA9IDA7IG8gPCBlOyBvKyspIHRbb10gPSBhcmd1bWVudHNbb107CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgPT09IHQubGVuZ3RoID8gbi5hcHBseSh1bmRlZmluZWQsIHQpIDogci5hcHBseSh1bmRlZmluZWQsIHQpCiAgICAgICAgICAgICAgICB9LCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgODUyNzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgbi5yKHQpLCBuLmQodCwgewogICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgciA9IFsib25DaGFuZ2UiLCAib25DbG9zZSIsICJvbkRheUNyZWF0ZSIsICJvbkRlc3Ryb3kiLCAib25LZXlEb3duIiwgIm9uTW9udGhDaGFuZ2UiLCAib25PcGVuIiwgIm9uUGFyc2VDb25maWciLCAib25SZWFkeSIsICJvblZhbHVlVXBkYXRlIiwgIm9uWWVhckNoYW5nZSIsICJvblByZUNhbGVuZGFyUG9zaXRpb24iXSwKICAgICAgICAgICAgICAgICAgICBvID0gewogICAgICAgICAgICAgICAgICAgICAgICBfZGlzYWJsZTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93SW5wdXQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0ludmFsaWRQcmVsb2FkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgYWx0Rm9ybWF0OiAiRiBqLCBZIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWx0SW5wdXQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBhbHRJbnB1dENsYXNzOiAiZm9ybS1jb250cm9sIGlucHV0IiwKICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZTogIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdyAmJiAtMSA9PT0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSIpLAogICAgICAgICAgICAgICAgICAgICAgICBhcmlhRGF0ZUZvcm1hdDogIkYgaiwgWSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9GaWxsRGVmYXVsdFRpbWU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBjbGlja09wZW5zOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VPblNlbGVjdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmp1bmN0aW9uOiAiLCAiLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0OiAiWS1tLWQiLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SG91cjogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNaW51dGU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTZWNvbmRzOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZU1vYmlsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVNlY29uZHM6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUaW1lOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVuZGVmaW5lZCIgIT0gdHlwZW9mIGNvbnNvbGUgJiYgY29uc29sZS53YXJuKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdldFdlZWs6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IERhdGUoZS5nZXRUaW1lKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zZXRIb3VycygwLCAwLCAwLCAwKSwgdC5zZXREYXRlKHQuZ2V0RGF0ZSgpICsgMyAtICh0LmdldERheSgpICsgNikgJSA3KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IERhdGUodC5nZXRGdWxsWWVhcigpLCAwLCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxICsgTWF0aC5yb3VuZCgoKHQuZ2V0VGltZSgpIC0gbi5nZXRUaW1lKCkpIC8gODY0ZTUgLSAzICsgKG4uZ2V0RGF5KCkgKyA2KSAlIDcpIC8gNykKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaG91ckluY3JlbWVudDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZEZvY3VzRWxlbWVudHM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6ICJkZWZhdWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlSW5jcmVtZW50OiA1LAogICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiAic2luZ2xlIiwKICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhTZWxlY3RvclR5cGU6ICJkcm9wZG93biIsCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRBcnJvdzogIjxzdmcgdmVyc2lvbj0nMS4xJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyB2aWV3Qm94PScwIDAgMTcgMTcnPjxnPjwvZz48cGF0aCBkPSdNMTMuMjA3IDguNDcybC03Ljg1NCA3Ljg1NC0wLjcwNy0wLjcwNyA3LjE0Ni03LjE0Ni03LjE0Ni03LjE0OCAwLjcwNy0wLjcwNyA3Ljg1NCA3Ljg1NHonIC8+PC9zdmc+IiwKICAgICAgICAgICAgICAgICAgICAgICAgbm9DYWxlbmRhcjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIG5vdzogbmV3IERhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uRGF5Q3JlYXRlOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgb25EZXN0cm95OiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgb25Nb250aENoYW5nZTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uT3BlbjogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uUGFyc2VDb25maWc6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBvblJlYWR5OiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgb25WYWx1ZVVwZGF0ZTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uWWVhckNoYW5nZTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uUHJlQ2FsZW5kYXJQb3NpdGlvbjogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkVsZW1lbnQ6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgcHJldkFycm93OiAiPHN2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHZpZXdCb3g9JzAgMCAxNyAxNyc+PGc+PC9nPjxwYXRoIGQ9J001LjIwNyA4LjQ3MWw3LjE0NiA3LjE0Ny0wLjcwNyAwLjcwNy03Ljg1My03Ljg1NCA3Ljg1NC03Ljg1MyAwLjcwNyAwLjcwNy03LjE0NyA3LjE0NnonIC8+PC9zdmc+IiwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kQ3VycmVudE1vbnRoOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd01vbnRoczogMSwKICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRpYyI6ICExLAogICAgICAgICAgICAgICAgICAgICAgICB0aW1lXzI0aHI6ICExLAogICAgICAgICAgICAgICAgICAgICAgICB3ZWVrTnVtYmVyczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHdyYXA6ICExCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kOiBbIlN1biIsICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ2hhbmQ6IFsiU3VuZGF5IiwgIk1vbmRheSIsICJUdWVzZGF5IiwgIldlZG5lc2RheSIsICJUaHVyc2RheSIsICJGcmlkYXkiLCAiU2F0dXJkYXkiXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBtb250aHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZDogWyJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ2hhbmQ6IFsiSmFudWFyeSIsICJGZWJydWFyeSIsICJNYXJjaCIsICJBcHJpbCIsICJNYXkiLCAiSnVuZSIsICJKdWx5IiwgIkF1Z3VzdCIsICJTZXB0ZW1iZXIiLCAiT2N0b2JlciIsICJOb3ZlbWJlciIsICJEZWNlbWJlciJdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGRheXNJbk1vbnRoOiBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgJSAxMDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+IDMgJiYgdCA8IDIxKSByZXR1cm4gInRoIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodCAlIDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibmQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJyZCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ0aCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VTZXBhcmF0b3I6ICIgdG8gIiwKICAgICAgICAgICAgICAgICAgICAgICAgd2Vla0FiYnJldmlhdGlvbjogIldrIiwKICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVGl0bGU6ICJTY3JvbGwgdG8gaW5jcmVtZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlVGl0bGU6ICJDbGljayB0byB0b2dnbGUiLAogICAgICAgICAgICAgICAgICAgICAgICBhbVBNOiBbIkFNIiwgIlBNIl0sCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXJBcmlhTGFiZWw6ICJZZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhBcmlhTGFiZWw6ICJNb250aCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJBcmlhTGFiZWw6ICJIb3VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlQXJpYUxhYmVsOiAiTWludXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgdGltZV8yNGhyOiAhMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYSA9IGksCiAgICAgICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCAmJiAodCA9IDIpLCAoIjAwMCIgKyBlKS5zbGljZSgtMSAqIHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IGUgPyAxIDogMAogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYXJndW1lbnRzOwogICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobiksIG4gPSBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmFwcGx5KHIsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBjID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgQXJyYXkgPyBlIDogW2VdCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGlmICghMCA9PT0gbikgcmV0dXJuIGUuY2xhc3NMaXN0LmFkZCh0KTsKICAgICAgICAgICAgICAgICAgICBlLmNsYXNzTGlzdC5yZW1vdmUodCkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdCB8fCAiIiwgbiA9IG4gfHwgIiIsIHIuY2xhc3NOYW1lID0gdCwgbiAhPT0gdW5kZWZpbmVkICYmIChyLnRleHRDb250ZW50ID0gbiksIHIKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBwKGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZS5maXJzdENoaWxkOykgZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQoZSkgPyBlIDogZS5wYXJlbnROb2RlID8gaChlLnBhcmVudE5vZGUsIHQpIDogdW5kZWZpbmVkCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBkKCJkaXYiLCAibnVtSW5wdXRXcmFwcGVyIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBkKCJpbnB1dCIsICJudW1JbnB1dCAiICsgZSksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBkKCJzcGFuIiwgImFycm93VXAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGQoInNwYW4iLCAiYXJyb3dEb3duIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKC0xID09PSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUgOS4wIikgPyByLnR5cGUgPSAibnVtYmVyIiA6IChyLnR5cGUgPSAidGV4dCIsIHIucGF0dGVybiA9ICJcXGQqIiksIHQgIT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSBpbiB0KSByLnNldEF0dHJpYnV0ZShhLCB0W2FdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5hcHBlbmRDaGlsZChyKSwgbi5hcHBlbmRDaGlsZChvKSwgbi5hcHBlbmRDaGlsZChpKSwgbgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHkoZSkgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLmNvbXBvc2VkUGF0aCA/IGUuY29tcG9zZWRQYXRoKClbMF0gOiBlLnRhcmdldAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdiA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ubW9udGhzW3QgPyAic2hvcnRoYW5kIiA6ICJsb25naGFuZCJdW2VdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBiID0gewogICAgICAgICAgICAgICAgICAgICAgICBEOiBnLAogICAgICAgICAgICAgICAgICAgICAgICBGOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldE1vbnRoKG4ubW9udGhzLmxvbmdoYW5kLmluZGV4T2YodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEc6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0SG91cnMoKGUuZ2V0SG91cnMoKSA+PSAxMiA/IDEyIDogMCkgKyBwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBIOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldEhvdXJzKHBhcnNlRmxvYXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEo6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0RGF0ZShwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBLOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldEhvdXJzKGUuZ2V0SG91cnMoKSAlIDEyICsgMTIgKiB1KG5ldyBSZWdFeHAobi5hbVBNWzFdLCAiaSIpLnRlc3QodCkpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBNOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldE1vbnRoKG4ubW9udGhzLnNob3J0aGFuZC5pbmRleE9mKHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBTOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldFNlY29uZHMocGFyc2VGbG9hdCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgVTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKDFlMyAqIHBhcnNlRmxvYXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFc6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gcGFyc2VJbnQodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSwgMCwgMiArIDcgKiAociAtIDEpLCAwLCAwLCAwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnNldERhdGUoby5nZXREYXRlKCkgLSBvLmdldERheSgpICsgbi5maXJzdERheU9mV2VlayksIG8KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgWTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZXRGdWxsWWVhcihwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBaOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZXREYXRlKHBhcnNlRmxvYXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGg6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0SG91cnMoKGUuZ2V0SG91cnMoKSA+PSAxMiA/IDEyIDogMCkgKyBwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBpOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldE1pbnV0ZXMocGFyc2VGbG9hdCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgajogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZXREYXRlKHBhcnNlRmxvYXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGw6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIG06IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0TW9udGgocGFyc2VGbG9hdCh0KSAtIDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG46IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0TW9udGgocGFyc2VGbG9hdCh0KSAtIDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0U2Vjb25kcyhwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB1OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUocGFyc2VGbG9hdCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdzogZywKICAgICAgICAgICAgICAgICAgICAgICAgeTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZXRGdWxsWWVhcigyZTMgKyBwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB3ID0gewogICAgICAgICAgICAgICAgICAgICAgICBEOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgRjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIEc6ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBIOiAiKFxcZFxcZHxcXGQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgSjogIihcXGRcXGR8XFxkKVxcdysiLAogICAgICAgICAgICAgICAgICAgICAgICBLOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgTTogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIFM6ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBVOiAiKC4rKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIFc6ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBZOiAiKFxcZHs0fSkiLAogICAgICAgICAgICAgICAgICAgICAgICBaOiAiKC4rKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGQ6ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBoOiAiKFxcZFxcZHxcXGQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgaTogIihcXGRcXGR8XFxkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGo6ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBsOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgbTogIihcXGRcXGR8XFxkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIG46ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBzOiAiKFxcZFxcZHxcXGQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgdTogIiguKykiLAogICAgICAgICAgICAgICAgICAgICAgICB3OiAiKFxcZFxcZHxcXGQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgeTogIihcXGR7Mn0pIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgTyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgWjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudG9JU09TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBEOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC53ZWVrZGF5cy5zaG9ydGhhbmRbTy53KGUsIHQsIG4pXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBGOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdihPLm4oZSwgdCwgbikgLSAxLCAhMSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgRzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMoTy5oKGUsIHQsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBIOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyhlLmdldEhvdXJzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEo6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lm9yZGluYWwgIT09IHVuZGVmaW5lZCA/IGUuZ2V0RGF0ZSgpICsgdC5vcmRpbmFsKGUuZ2V0RGF0ZSgpKSA6IGUuZ2V0RGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEs6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmFtUE1bdShlLmdldEhvdXJzKCkgPiAxMSldCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIE06IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2KGUuZ2V0TW9udGgoKSwgITAsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKGUuZ2V0U2Vjb25kcygpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBVOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRUaW1lKCkgLyAxZTMKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgVzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uZ2V0V2VlayhlKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBZOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyhlLmdldEZ1bGxZZWFyKCksIDQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKGUuZ2V0RGF0ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBoOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRIb3VycygpICUgMTIgPyBlLmdldEhvdXJzKCkgJSAxMiA6IDEyCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKGUuZ2V0TWludXRlcygpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBqOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXREYXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQud2Vla2RheXMubG9uZ2hhbmRbZS5nZXREYXkoKV0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMoZS5nZXRNb250aCgpICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0TW9udGgoKSArIDEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0U2Vjb25kcygpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldFRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB3OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXREYXkoKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUuZ2V0RnVsbFllYXIoKSkuc3Vic3RyaW5nKDIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdm9pZCAwID09PSB0ID8gbyA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5sMTBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHZvaWQgMCA9PT0gciA/IGkgOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuaXNNb2JpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdm9pZCAwICE9PSBzICYmIHM7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIgfHwgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmZvcm1hdERhdGUgPT09IHVuZGVmaW5lZCB8fCB1ID8gdC5zcGxpdCgiIikubWFwKChmdW5jdGlvbih0LCByLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9bdF0gJiYgIlxcIiAhPT0gaVtyIC0gMV0gPyBPW3RdKGUsIG8sIG4pIDogIlxcIiAhPT0gdCA/IHQgOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmpvaW4oIiIpIDogbi5mb3JtYXREYXRlKGUsIHQsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdm9pZCAwID09PSB0ID8gbyA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5sMTBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHZvaWQgMCA9PT0gciA/IGkgOiByOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCwgciwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IGUgJiYgIWUpIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcywgdSA9IGkgfHwgYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRGF0ZSkgcyA9IG5ldyBEYXRlKGUuZ2V0VGltZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlICYmIGUudG9GaXhlZCAhPT0gdW5kZWZpbmVkKSBzID0gbmV3IERhdGUoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdCB8fCAobiB8fCBvKS5kYXRlRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gU3RyaW5nKGUpLnRyaW0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInRvZGF5IiA9PT0gZikgcyA9IG5ldyBEYXRlLCByID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobiAmJiBuLnBhcnNlRGF0ZSkgcyA9IG4ucGFyc2VEYXRlKGUsIGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKC9aJC8udGVzdChmKSB8fCAvR01UJC8udGVzdChmKSkgcyA9IG5ldyBEYXRlKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gdm9pZCAwLCBwID0gW10sIGggPSAwLCBtID0gMCwgeSA9ICIiOyBoIDwgYy5sZW5ndGg7IGgrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBjW2hdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAiXFwiID09PSBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSAiXFwiID09PSBjW2ggLSAxXSB8fCB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdbZ10gJiYgIU8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ICs9IHdbZ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF8gPSBuZXcgUmVnRXhwKHkpLmV4ZWMoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAmJiAoZCA9ICEwKSAmJiBwWyJZIiAhPT0gZyA/ICJwdXNoIiA6ICJ1bnNoaWZ0Il0oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogYltnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsOiBfWysrbV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHYgfHwgKHkgKz0gIi4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuICYmIG4ubm9DYWxlbmRhciA/IG5ldyBEYXRlKChuZXcgRGF0ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpIDogbmV3IERhdGUoKG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLCAwLCAxLCAwLCAwLCAwLCAwKSwgcC5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUudmFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgPSB0KHMsIG4sIHUpIHx8IHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBzID0gZCA/IHMgOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKHMuZ2V0VGltZSgpKSA/ICghMCA9PT0gciAmJiBzLnNldEhvdXJzKDAsIDAsIDAsIDApLCBzKSA6IChuLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoIkludmFsaWQgZGF0ZSBwcm92aWRlZDogIiArIGwpKSwgdW5kZWZpbmVkKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBrKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBuICYmIChuID0gITApLCAhMSAhPT0gbiA/IG5ldyBEYXRlKGUuZ2V0VGltZSgpKS5zZXRIb3VycygwLCAwLCAwLCAwKSAtIG5ldyBEYXRlKHQuZ2V0VGltZSgpKS5zZXRIb3VycygwLCAwLCAwLCAwKSA6IGUuZ2V0VGltZSgpIC0gdC5nZXRUaW1lKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBFID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzYwMCAqIGUgKyA2MCAqIHQgKyBuCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBDID0gODY0ZTU7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gUyhlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmRlZmF1bHRIb3VyLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5kZWZhdWx0TWludXRlLAogICAgICAgICAgICAgICAgICAgICAgICByID0gZS5kZWZhdWx0U2Vjb25kczsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5taW5EYXRlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLm1pbkRhdGUuZ2V0SG91cnMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLm1pbkRhdGUuZ2V0TWludXRlcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUubWluRGF0ZS5nZXRTZWNvbmRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPCBvICYmICh0ID0gbyksIHQgPT09IG8gJiYgbiA8IGkgJiYgKG4gPSBpKSwgdCA9PT0gbyAmJiBuID09PSBpICYmIHIgPCBhICYmIChyID0gZS5taW5EYXRlLmdldFNlY29uZHMoKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGUubWF4RGF0ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZS5tYXhEYXRlLmdldEhvdXJzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZS5tYXhEYXRlLmdldE1pbnV0ZXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgKHQgPSBNYXRoLm1pbih0LCBzKSkgPT09IHMgJiYgKG4gPSBNYXRoLm1pbih1LCBuKSksIHQgPT09IHMgJiYgbiA9PT0gdSAmJiAociA9IGUubWF4RGF0ZS5nZXRTZWNvbmRzKCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzOiByCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbigxODk1KTsKICAgICAgICAgICAgICAgIHZhciBqID0gdW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX2Fzc2lnbiB8fCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChqID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCBuID0gMSwgciA9IGFyZ3VtZW50cy5sZW5ndGg7IG4gPCByOyBuKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyBpbiB0ID0gYXJndW1lbnRzW25dKSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwgbykgJiYgKGVbb10gPSB0W29dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIFAgPSB1bmRlZmluZWQgJiYgdW5kZWZpbmVkLl9fc3ByZWFkQXJyYXlzIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMCwgdCA9IDAsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyB0IDwgbjsgdCsrKSBlICs9IGFyZ3VtZW50c1t0XS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gQXJyYXkoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IG47IHQrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBhcmd1bWVudHNbdF0sIGEgPSAwLCBzID0gaS5sZW5ndGg7IGEgPCBzOyBhKyssIG8rKykgcltvXSA9IGlbYV07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBBKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBqKGooe30sIG8pLCBULmRlZmF1bHRDb25maWcpLAogICAgICAgICAgICAgICAgICAgICAgICBsMTBuOiBhCiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobnVsbCA9PT0gKGUgPSBuLmNhbGVuZGFyQ29udGFpbmVyKSB8fCB2b2lkIDAgPT09IGUgPyB2b2lkIDAgOiBlLmdldFJvb3ROb2RlKCkpLmFjdGl2ZUVsZW1lbnQgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmJpbmQobikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5jb25maWc7CiAgICAgICAgICAgICAgICAgICAgICAgICExID09PSBlLndlZWtOdW1iZXJzICYmIDEgPT09IGUuc2hvd01vbnRocyB8fCAhMCAhPT0gZS5ub0NhbGVuZGFyICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY2FsZW5kYXJDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJiAobi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiIsIG4uY2FsZW5kYXJDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICJibG9jayIpLCBuLmRheXNDb250YWluZXIgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gKG4uZGF5cy5vZmZzZXRXaWR0aCArIDEpICogZS5zaG93TW9udGhzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uZGF5c0NvbnRhaW5lci5zdHlsZS53aWR0aCA9IHQgKyAicHgiLCBuLmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLndpZHRoID0gdCArIChuLndlZWtXcmFwcGVyICE9PSB1bmRlZmluZWQgPyBuLndlZWtXcmFwcGVyLm9mZnNldFdpZHRoIDogMCkgKyAicHgiLCBuLmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ2aXNpYmlsaXR5IiksIG4uY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoImRpc3BsYXkiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE8oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gbi5zZWxlY3RlZERhdGVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuLmNvbmZpZy5taW5EYXRlID09PSB1bmRlZmluZWQgfHwgayhuZXcgRGF0ZSwgbi5jb25maWcubWluRGF0ZSkgPj0gMCA/IG5ldyBEYXRlIDogbmV3IERhdGUobi5jb25maWcubWluRGF0ZS5nZXRUaW1lKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBTKG4uY29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2V0SG91cnMoci5ob3Vycywgci5taW51dGVzLCByLnNlY29uZHMsIHQuZ2V0TWlsbGlzZWNvbmRzKCkpLCBuLnNlbGVjdGVkRGF0ZXMgPSBbdF0sIG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID0gdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGUgIT09IHVuZGVmaW5lZCAmJiAiYmx1ciIgIT09IGUudHlwZSAmJiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9ICJrZXlkb3duIiA9PT0gZS50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB5KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5hbVBNICE9PSB1bmRlZmluZWQgJiYgciA9PT0gbi5hbVBNICYmIChuLmFtUE0udGV4dENvbnRlbnQgPSBuLmwxMG4uYW1QTVt1KG4uYW1QTS50ZXh0Q29udGVudCA9PT0gbi5sMTBuLmFtUE1bMF0pXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHBhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoIm1pbiIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZSgibWF4IikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBwYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKCJzdGVwIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwYXJzZUludChvLnZhbHVlLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGUuZGVsdGEgfHwgKHQgPyAzOCA9PT0gZS53aGljaCA/IDEgOiAtMSA6IDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjICsgbCAqIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIG8udmFsdWUgJiYgMiA9PT0gby52YWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IG8gPT09IG4uaG91ckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBvID09PSBuLm1pbnV0ZUVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA8IGkgPyAoZCA9IGEgKyBkICsgdSghcCkgKyAodShwKSAmJiB1KCFuLmFtUE0pKSwgaCAmJiBGKHVuZGVmaW5lZCwgLTEsIG4uaG91ckVsZW1lbnQpKSA6IGQgPiBhICYmIChkID0gbyA9PT0gbi5ob3VyRWxlbWVudCA/IGQgLSBhIC0gdSghbi5hbVBNKSA6IGksIGggJiYgRih1bmRlZmluZWQsIDEsIG4uaG91ckVsZW1lbnQpKSwgbi5hbVBNICYmIHAgJiYgKDEgPT09IGwgPyBkICsgYyA9PT0gMjMgOiBNYXRoLmFicyhkIC0gYykgPiBsKSAmJiAobi5hbVBNLnRleHRDb250ZW50ID0gbi5sMTBuLmFtUE1bdShuLmFtUE0udGV4dENvbnRlbnQgPT09IG4ubDEwbi5hbVBNWzBdKV0pLCBvLnZhbHVlID0gcyhkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KGUpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4uX2lucHV0LnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBBKCksIHhlKCksIG4uX2lucHV0LnZhbHVlICE9PSBvICYmIG4uX2RlYm91bmNlZENoYW5nZSgpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBBKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5ob3VyRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIG4ubWludXRlRWxlbWVudCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCwgciA9IChwYXJzZUludChuLmhvdXJFbGVtZW50LnZhbHVlLnNsaWNlKC0yKSwgMTApIHx8IDApICUgMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IChwYXJzZUludChuLm1pbnV0ZUVsZW1lbnQudmFsdWUsIDEwKSB8fCAwKSAlIDYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLnNlY29uZEVsZW1lbnQgIT09IHVuZGVmaW5lZCA/IChwYXJzZUludChuLnNlY29uZEVsZW1lbnQudmFsdWUsIDEwKSB8fCAwKSAlIDYwIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uYW1QTSAhPT0gdW5kZWZpbmVkICYmIChlID0gciwgdCA9IG4uYW1QTS50ZXh0Q29udGVudCwgciA9IGUgJSAxMiArIDEyICogdSh0ID09PSBuLmwxMG4uYW1QTVsxXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuLmNvbmZpZy5taW5UaW1lICE9PSB1bmRlZmluZWQgfHwgbi5jb25maWcubWluRGF0ZSAmJiBuLm1pbkRhdGVIYXNUaW1lICYmIG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqICYmIDAgPT09IGsobi5sYXRlc3RTZWxlY3RlZERhdGVPYmosIG4uY29uZmlnLm1pbkRhdGUsICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5jb25maWcubWF4VGltZSAhPT0gdW5kZWZpbmVkIHx8IG4uY29uZmlnLm1heERhdGUgJiYgbi5tYXhEYXRlSGFzVGltZSAmJiBuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiAmJiAwID09PSBrKG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLCBuLmNvbmZpZy5tYXhEYXRlLCAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jb25maWcubWF4VGltZSAhPT0gdW5kZWZpbmVkICYmIG4uY29uZmlnLm1pblRpbWUgIT09IHVuZGVmaW5lZCAmJiBuLmNvbmZpZy5taW5UaW1lID4gbi5jb25maWcubWF4VGltZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gRShuLmNvbmZpZy5taW5UaW1lLmdldEhvdXJzKCksIG4uY29uZmlnLm1pblRpbWUuZ2V0TWludXRlcygpLCBuLmNvbmZpZy5taW5UaW1lLmdldFNlY29uZHMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBFKG4uY29uZmlnLm1heFRpbWUuZ2V0SG91cnMoKSwgbi5jb25maWcubWF4VGltZS5nZXRNaW51dGVzKCksIG4uY29uZmlnLm1heFRpbWUuZ2V0U2Vjb25kcygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IEUociwgbywgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPiBjICYmIGYgPCBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBNYXRoLmZsb29yKGUgLyAzNjAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gKGUgLSAzNjAwICogdCkgLyA2MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbdCwgbiwgZSAtIDM2MDAgKiB0IC0gNjAgKiBuXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZFswXSwgbyA9IGRbMV0sIGkgPSBkWzJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IG4uY29uZmlnLm1heFRpbWUgIT09IHVuZGVmaW5lZCA/IG4uY29uZmlnLm1heFRpbWUgOiBuLmNvbmZpZy5tYXhEYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAociA9IE1hdGgubWluKHIsIHAuZ2V0SG91cnMoKSkpID09PSBwLmdldEhvdXJzKCkgJiYgKG8gPSBNYXRoLm1pbihvLCBwLmdldE1pbnV0ZXMoKSkpLCBvID09PSBwLmdldE1pbnV0ZXMoKSAmJiAoaSA9IE1hdGgubWluKGksIHAuZ2V0U2Vjb25kcygpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBuLmNvbmZpZy5taW5UaW1lICE9PSB1bmRlZmluZWQgPyBuLmNvbmZpZy5taW5UaW1lIDogbi5jb25maWcubWluRGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHIgPSBNYXRoLm1heChyLCBoLmdldEhvdXJzKCkpKSA9PT0gaC5nZXRIb3VycygpICYmIG8gPCBoLmdldE1pbnV0ZXMoKSAmJiAobyA9IGguZ2V0TWludXRlcygpKSwgbyA9PT0gaC5nZXRNaW51dGVzKCkgJiYgKGkgPSBNYXRoLm1heChpLCBoLmdldFNlY29uZHMoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTihyLCBvLCBpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBEKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlIHx8IG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqOwogICAgICAgICAgICAgICAgICAgICAgICB0ICYmIHQgaW5zdGFuY2VvZiBEYXRlICYmIE4odC5nZXRIb3VycygpLCB0LmdldE1pbnV0ZXMoKSwgdC5nZXRTZWNvbmRzKCkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBOKGUsIHQsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5sYXRlc3RTZWxlY3RlZERhdGVPYmogIT09IHVuZGVmaW5lZCAmJiBuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iai5zZXRIb3VycyhlICUgMjQsIHQsIHIgfHwgMCwgMCksIG4uaG91ckVsZW1lbnQgJiYgbi5taW51dGVFbGVtZW50ICYmICFuLmlzTW9iaWxlICYmIChuLmhvdXJFbGVtZW50LnZhbHVlID0gcyhuLmNvbmZpZy50aW1lXzI0aHIgPyBlIDogKDEyICsgZSkgJSAxMiArIDEyICogdShlICUgMTIgPT0gMCkpLCBuLm1pbnV0ZUVsZW1lbnQudmFsdWUgPSBzKHQpLCBuLmFtUE0gIT09IHVuZGVmaW5lZCAmJiAobi5hbVBNLnRleHRDb250ZW50ID0gbi5sMTBuLmFtUE1bdShlID49IDEyKV0pLCBuLnNlY29uZEVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJiAobi5zZWNvbmRFbGVtZW50LnZhbHVlID0gcyhyKSkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBNKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB5KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHBhcnNlSW50KHQudmFsdWUpICsgKGUuZGVsdGEgfHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIChuIC8gMWUzID4gMSB8fCAiRW50ZXIiID09PSBlLmtleSAmJiAhL1teXGRdLy50ZXN0KG4udG9TdHJpbmcoKSkpICYmIGVlKG4pCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBMKGUsIHQsIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBBcnJheSA/IHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEwoZSwgdCwgciwgbykKICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogZSBpbnN0YW5jZW9mIEFycmF5ID8gZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTChlLCB0LCByLCBvKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiAoZS5hZGRFdmVudExpc3RlbmVyKHQsIHIsIG8pLCB2b2lkIG4uX2hhbmRsZXJzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsIHIsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gSSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmUoIm9uQ2hhbmdlIikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFIoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUgIT09IHVuZGVmaW5lZCA/IG4ucGFyc2VEYXRlKGUpIDogbi5sYXRlc3RTZWxlY3RlZERhdGVPYmogfHwgKG4uY29uZmlnLm1pbkRhdGUgJiYgbi5jb25maWcubWluRGF0ZSA+IG4ubm93ID8gbi5jb25maWcubWluRGF0ZSA6IG4uY29uZmlnLm1heERhdGUgJiYgbi5jb25maWcubWF4RGF0ZSA8IG4ubm93ID8gbi5jb25maWcubWF4RGF0ZSA6IG4ubm93KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLmN1cnJlbnRZZWFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uY3VycmVudE1vbnRoOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgciAhPT0gdW5kZWZpbmVkICYmIChuLmN1cnJlbnRZZWFyID0gci5nZXRGdWxsWWVhcigpLCBuLmN1cnJlbnRNb250aCA9IHIuZ2V0TW9udGgoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5tZXNzYWdlID0gIkludmFsaWQgZGF0ZSBzdXBwbGllZDogIiArIHIsIG4uY29uZmlnLmVycm9ySGFuZGxlcihhKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgbi5jdXJyZW50WWVhciAhPT0gbyAmJiAodmUoIm9uWWVhckNoYW5nZSIpLCBLKCkpLCAhdCB8fCBuLmN1cnJlbnRZZWFyID09PSBvICYmIG4uY3VycmVudE1vbnRoID09PSBpIHx8IHZlKCJvbk1vbnRoQ2hhbmdlIiksIG4ucmVkcmF3KCkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHEoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHkoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH50LmNsYXNzTmFtZS5pbmRleE9mKCJhcnJvdyIpICYmIEYoZSwgdC5jbGFzc0xpc3QuY29udGFpbnMoImFycm93VXAiKSA/IDEgOiAtMSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEYoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUgJiYgeShlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuIHx8IHIgJiYgci5wYXJlbnROb2RlICYmIHIucGFyZW50Tm9kZS5maXJzdENoaWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGJlKCJpbmNyZW1lbnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5kZWx0YSA9IHQsIG8gJiYgby5kaXNwYXRjaEV2ZW50KGkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBWKGUsIHQsIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0ZSh0LCAhMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZCgic3BhbiIsIGUsIHQuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRlT2JqID0gdCwgYS4kaSA9IG8sIGEuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbi5mb3JtYXREYXRlKHQsIG4uY29uZmlnLmFyaWFEYXRlRm9ybWF0KSksIC0xID09PSBlLmluZGV4T2YoImhpZGRlbiIpICYmIDAgPT09IGsodCwgbi5ub3cpICYmIChuLnRvZGF5RGF0ZUVsZW0gPSBhLCBhLmNsYXNzTGlzdC5hZGQoInRvZGF5IiksIGEuc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCAiZGF0ZSIpKSwgaSA/IChhLnRhYkluZGV4ID0gLTEsIHdlKHQpICYmIChhLmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIiksIG4uc2VsZWN0ZWREYXRlRWxlbSA9IGEsICJyYW5nZSIgPT09IG4uY29uZmlnLm1vZGUgJiYgKGYoYSwgInN0YXJ0UmFuZ2UiLCBuLnNlbGVjdGVkRGF0ZXNbMF0gJiYgMCA9PT0gayh0LCBuLnNlbGVjdGVkRGF0ZXNbMF0sICEwKSksIGYoYSwgImVuZFJhbmdlIiwgbi5zZWxlY3RlZERhdGVzWzFdICYmIDAgPT09IGsodCwgbi5zZWxlY3RlZERhdGVzWzFdLCAhMCkpLCAibmV4dE1vbnRoRGF5IiA9PT0gZSAmJiBhLmNsYXNzTGlzdC5hZGQoImluUmFuZ2UiKSkpKSA6IGEuY2xhc3NMaXN0LmFkZCgiZmxhdHBpY2tyLWRpc2FibGVkIiksICJyYW5nZSIgPT09IG4uY29uZmlnLm1vZGUgJiYgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoInJhbmdlIiAhPT0gbi5jb25maWcubW9kZSB8fCBuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoIDwgMikgJiYgKGsoZSwgbi5zZWxlY3RlZERhdGVzWzBdKSA+PSAwICYmIGsoZSwgbi5zZWxlY3RlZERhdGVzWzFdKSA8PSAwKQogICAgICAgICAgICAgICAgICAgICAgICB9KHQpICYmICF3ZSh0KSAmJiBhLmNsYXNzTGlzdC5hZGQoImluUmFuZ2UiKSwgbi53ZWVrTnVtYmVycyAmJiAxID09PSBuLmNvbmZpZy5zaG93TW9udGhzICYmICJwcmV2TW9udGhEYXkiICE9PSBlICYmIG8gJSA3ID09IDYgJiYgbi53ZWVrTnVtYmVycy5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWVuZCIsICI8c3BhbiBjbGFzcz0nZmxhdHBpY2tyLWRheSc+IiArIG4uY29uZmlnLmdldFdlZWsodCkgKyAiPC9zcGFuPiIpLCB2ZSgib25EYXlDcmVhdGUiLCBhKSwgYQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZm9jdXMoKSwgInJhbmdlIiA9PT0gbi5jb25maWcubW9kZSAmJiBpZShlKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gVShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBlID4gMCA/IDAgOiBuLmNvbmZpZy5zaG93TW9udGhzIC0gMSwgciA9IGUgPiAwID8gbi5jb25maWcuc2hvd01vbnRocyA6IC0xLCBvID0gdDsgbyAhPSByOyBvICs9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gbi5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW29dLCBhID0gZSA+IDAgPyAwIDogaS5jaGlsZHJlbi5sZW5ndGggLSAxLCBzID0gZSA+IDAgPyBpLmNoaWxkcmVuLmxlbmd0aCA6IC0xLCB1ID0gYTsgdSAhPSBzOyB1ICs9IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGkuY2hpbGRyZW5bdV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0xID09PSBsLmNsYXNzTmFtZS5pbmRleE9mKCJoaWRkZW4iKSAmJiB0ZShsLmRhdGVPYmopKSByZXR1cm4gbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBIKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBpKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbmUociB8fCBkb2N1bWVudC5ib2R5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlICE9PSB1bmRlZmluZWQgPyBlIDogbyA/IHIgOiBuLnNlbGVjdGVkRGF0ZUVsZW0gIT09IHVuZGVmaW5lZCAmJiBuZShuLnNlbGVjdGVkRGF0ZUVsZW0pID8gbi5zZWxlY3RlZERhdGVFbGVtIDogbi50b2RheURhdGVFbGVtICE9PSB1bmRlZmluZWQgJiYgbmUobi50b2RheURhdGVFbGVtKSA/IG4udG9kYXlEYXRlRWxlbSA6IFUodCA+IDAgPyAxIDogLTEpOwogICAgICAgICAgICAgICAgICAgICAgICBhID09PSB1bmRlZmluZWQgPyBuLl9pbnB1dC5mb2N1cygpIDogbyA/IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAtMSA9PT0gZS5jbGFzc05hbWUuaW5kZXhPZigiTW9udGgiKSA/IGUuZGF0ZU9iai5nZXRNb250aCgpIDogbi5jdXJyZW50TW9udGgsIG8gPSB0ID4gMCA/IG4uY29uZmlnLnNob3dNb250aHMgOiAtMSwgaSA9IHQgPiAwID8gMSA6IC0xLCBhID0gciAtIG4uY3VycmVudE1vbnRoOyBhICE9IG87IGEgKz0gaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gbi5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW2FdLCB1ID0gciAtIG4uY3VycmVudE1vbnRoID09PSBhID8gZS4kaSArIHQgOiB0IDwgMCA/IHMuY2hpbGRyZW4ubGVuZ3RoIC0gMSA6IDAsIGwgPSBzLmNoaWxkcmVuLmxlbmd0aCwgYyA9IHU7IGMgPj0gMCAmJiBjIDwgbCAmJiBjICE9ICh0ID4gMCA/IGwgOiAtMSk7IGMgKz0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IHMuY2hpbGRyZW5bY107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gZi5jbGFzc05hbWUuaW5kZXhPZigiaGlkZGVuIikgJiYgdGUoZi5kYXRlT2JqKSAmJiBNYXRoLmFicyhlLiRpIC0gYykgPj0gTWF0aC5hYnModCkpIHJldHVybiBCKGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jaGFuZ2VNb250aChpKSwgSChVKGkpLCAwKSwgdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgIH0oYSwgdCkgOiBCKGEpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB6KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IChuZXcgRGF0ZShlLCB0LCAxKS5nZXREYXkoKSAtIG4ubDEwbi5maXJzdERheU9mV2VlayArIDcpICUgNywgbyA9IG4udXRpbHMuZ2V0RGF5c0luTW9udGgoKHQgLSAxICsgMTIpICUgMTIsIGUpLCBpID0gbi51dGlscy5nZXREYXlzSW5Nb250aCh0LCBlKSwgYSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksIHMgPSBuLmNvbmZpZy5zaG93TW9udGhzID4gMSwgdSA9IHMgPyAicHJldk1vbnRoRGF5IGhpZGRlbiIgOiAicHJldk1vbnRoRGF5IiwgbCA9IHMgPyAibmV4dE1vbnRoRGF5IGhpZGRlbiIgOiAibmV4dE1vbnRoRGF5IiwgYyA9IG8gKyAxIC0gciwgZiA9IDA7IGMgPD0gbzsgYysrLCBmKyspIGEuYXBwZW5kQ2hpbGQoVigiZmxhdHBpY2tyLWRheSAiICsgdSwgbmV3IERhdGUoZSwgdCAtIDEsIGMpLCAwLCBmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IDE7IGMgPD0gaTsgYysrLCBmKyspIGEuYXBwZW5kQ2hpbGQoVigiZmxhdHBpY2tyLWRheSIsIG5ldyBEYXRlKGUsIHQsIGMpLCAwLCBmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHAgPSBpICsgMTsgcCA8PSA0MiAtIHIgJiYgKDEgPT09IG4uY29uZmlnLnNob3dNb250aHMgfHwgZiAlIDcgIT0gMCk7IHArKywgZisrKSBhLmFwcGVuZENoaWxkKFYoImZsYXRwaWNrci1kYXkgIiArIGwsIG5ldyBEYXRlKGUsIHQgKyAxLCBwICUgaSksIDAsIGYpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBkKCJkaXYiLCAiZGF5Q29udGFpbmVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoLmFwcGVuZENoaWxkKGEpLCBoCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBXKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5kYXlzQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAobi5kYXlzQ29udGFpbmVyKSwgbi53ZWVrTnVtYmVycyAmJiBwKG4ud2Vla051bWJlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgdCA9IDA7IHQgPCBuLmNvbmZpZy5zaG93TW9udGhzOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG5ldyBEYXRlKG4uY3VycmVudFllYXIsIG4uY3VycmVudE1vbnRoLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNldE1vbnRoKG4uY3VycmVudE1vbnRoICsgdCksIGUuYXBwZW5kQ2hpbGQoeihyLmdldEZ1bGxZZWFyKCksIHIuZ2V0TW9udGgoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmRheXNDb250YWluZXIuYXBwZW5kQ2hpbGQoZSksIG4uZGF5cyA9IG4uZGF5c0NvbnRhaW5lci5maXJzdENoaWxkLCAicmFuZ2UiID09PSBuLmNvbmZpZy5tb2RlICYmIDEgPT09IG4uc2VsZWN0ZWREYXRlcy5sZW5ndGggJiYgaWUoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBLKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShuLmNvbmZpZy5zaG93TW9udGhzID4gMSB8fCAiZHJvcGRvd24iICE9PSBuLmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKG4uY29uZmlnLm1pbkRhdGUgIT09IHVuZGVmaW5lZCAmJiBuLmN1cnJlbnRZZWFyID09PSBuLmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkgJiYgZSA8IG4uY29uZmlnLm1pbkRhdGUuZ2V0TW9udGgoKSkgJiYgIShuLmNvbmZpZy5tYXhEYXRlICE9PSB1bmRlZmluZWQgJiYgbi5jdXJyZW50WWVhciA9PT0gbi5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpICYmIGUgPiBuLmNvbmZpZy5tYXhEYXRlLmdldE1vbnRoKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5tb250aHNEcm9wZG93bkNvbnRhaW5lci50YWJJbmRleCA9IC0xLCBuLm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLmlubmVySFRNTCA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCAxMjsgdCsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZCgib3B0aW9uIiwgImZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIudmFsdWUgPSBuZXcgRGF0ZShuLmN1cnJlbnRZZWFyLCB0KS5nZXRNb250aCgpLnRvU3RyaW5nKCksIHIudGV4dENvbnRlbnQgPSB2KHQsIG4uY29uZmlnLnNob3J0aGFuZEN1cnJlbnRNb250aCwgbi5sMTBuKSwgci50YWJJbmRleCA9IC0xLCBuLmN1cnJlbnRNb250aCA9PT0gdCAmJiAoci5zZWxlY3RlZCA9ICEwKSwgbi5tb250aHNEcm9wZG93bkNvbnRhaW5lci5hcHBlbmRDaGlsZChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gWSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQgPSBkKCJkaXYiLCAiZmxhdHBpY2tyLW1vbnRoIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcuc2hvd01vbnRocyA+IDEgfHwgInN0YXRpYyIgPT09IG4uY29uZmlnLm1vbnRoU2VsZWN0b3JUeXBlID8gZSA9IGQoInNwYW4iLCAiY3VyLW1vbnRoIikgOiAobi5tb250aHNEcm9wZG93bkNvbnRhaW5lciA9IGQoInNlbGVjdCIsICJmbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHMiKSwgbi5tb250aHNEcm9wZG93bkNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBuLmwxMG4ubW9udGhBcmlhTGFiZWwpLCBMKG4ubW9udGhzRHJvcGRvd25Db250YWluZXIsICJjaGFuZ2UiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB5KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBwYXJzZUludCh0LnZhbHVlLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNoYW5nZU1vbnRoKHIgLSBuLmN1cnJlbnRNb250aCksIHZlKCJvbk1vbnRoQ2hhbmdlIikKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBLKCksIGUgPSBuLm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBtKCJjdXIteWVhciIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleDogIi0xIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gby5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBuLmwxMG4ueWVhckFyaWFMYWJlbCksIG4uY29uZmlnLm1pbkRhdGUgJiYgaS5zZXRBdHRyaWJ1dGUoIm1pbiIsIG4uY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKSwgbi5jb25maWcubWF4RGF0ZSAmJiAoaS5zZXRBdHRyaWJ1dGUoIm1heCIsIG4uY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKSwgaS5kaXNhYmxlZCA9ICEhbi5jb25maWcubWluRGF0ZSAmJiBuLmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkgPT09IG4uY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZCgiZGl2IiwgImZsYXRwaWNrci1jdXJyZW50LW1vbnRoIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmFwcGVuZENoaWxkKGUpLCBhLmFwcGVuZENoaWxkKG8pLCByLmFwcGVuZENoaWxkKGEpLCB0LmFwcGVuZENoaWxkKHIpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyRWxlbWVudDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoRWxlbWVudDogZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBHKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwKG4ubW9udGhOYXYpLCBuLm1vbnRoTmF2LmFwcGVuZENoaWxkKG4ucHJldk1vbnRoTmF2KSwgbi5jb25maWcuc2hvd01vbnRocyAmJiAobi55ZWFyRWxlbWVudHMgPSBbXSwgbi5tb250aEVsZW1lbnRzID0gW10pOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gbi5jb25maWcuc2hvd01vbnRoczsgZS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBZKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnllYXJFbGVtZW50cy5wdXNoKHQueWVhckVsZW1lbnQpLCBuLm1vbnRoRWxlbWVudHMucHVzaCh0Lm1vbnRoRWxlbWVudCksIG4ubW9udGhOYXYuYXBwZW5kQ2hpbGQodC5jb250YWluZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbi5tb250aE5hdi5hcHBlbmRDaGlsZChuLm5leHRNb250aE5hdikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4ud2Vla2RheUNvbnRhaW5lciA/IHAobi53ZWVrZGF5Q29udGFpbmVyKSA6IG4ud2Vla2RheUNvbnRhaW5lciA9IGQoImRpdiIsICJmbGF0cGlja3Itd2Vla2RheXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IG4uY29uZmlnLnNob3dNb250aHM7IGUtLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZCgiZGl2IiwgImZsYXRwaWNrci13ZWVrZGF5Y29udGFpbmVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLndlZWtkYXlDb250YWluZXIuYXBwZW5kQ2hpbGQodCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUSgpLCBuLndlZWtkYXlDb250YWluZXIKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFEoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLndlZWtkYXlDb250YWluZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5sMTBuLmZpcnN0RGF5T2ZXZWVrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBQKG4ubDEwbi53ZWVrZGF5cy5zaG9ydGhhbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA+IDAgJiYgZSA8IHQubGVuZ3RoICYmICh0ID0gUCh0LnNwbGljZShlLCB0Lmxlbmd0aCksIHQuc3BsaWNlKDAsIGUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gbi5jb25maWcuc2hvd01vbnRoczsgci0tOykgbi53ZWVrZGF5Q29udGFpbmVyLmNoaWxkcmVuW3JdLmlubmVySFRNTCA9ICJcbiAgICAgIDxzcGFuIGNsYXNzPSdmbGF0cGlja3Itd2Vla2RheSc+XG4gICAgICAgICIgKyB0LmpvaW4oIjwvc3Bhbj48c3BhbiBjbGFzcz0nZmxhdHBpY2tyLXdlZWtkYXknPiIpICsgIlxuICAgICAgPC9zcGFuPlxuICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBaKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQgPyBlIDogZSAtIG4uY3VycmVudE1vbnRoOwogICAgICAgICAgICAgICAgICAgICAgICByIDwgMCAmJiAhMCA9PT0gbi5faGlkZVByZXZNb250aEFycm93IHx8IHIgPiAwICYmICEwID09PSBuLl9oaWRlTmV4dE1vbnRoQXJyb3cgfHwgKG4uY3VycmVudE1vbnRoICs9IHIsIChuLmN1cnJlbnRNb250aCA8IDAgfHwgbi5jdXJyZW50TW9udGggPiAxMSkgJiYgKG4uY3VycmVudFllYXIgKz0gbi5jdXJyZW50TW9udGggPiAxMSA/IDEgOiAtMSwgbi5jdXJyZW50TW9udGggPSAobi5jdXJyZW50TW9udGggKyAxMikgJSAxMiwgdmUoIm9uWWVhckNoYW5nZSIpLCBLKCkpLCBXKCksIHZlKCJvbk1vbnRoQ2hhbmdlIiksIE9lKCkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBYKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uY2FsZW5kYXJDb250YWluZXIuY29udGFpbnMoZSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEooZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5pc09wZW4gJiYgIW4uY29uZmlnLmlubGluZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB5KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBYKHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhKHQgPT09IG4uaW5wdXQgfHwgdCA9PT0gbi5hbHRJbnB1dCB8fCBuLmVsZW1lbnQuY29udGFpbnModCkgfHwgZS5wYXRoICYmIGUucGF0aC5pbmRleE9mICYmICh+ZS5wYXRoLmluZGV4T2Yobi5pbnB1dCkgfHwgfmUucGF0aC5pbmRleE9mKG4uYWx0SW5wdXQpKSkgJiYgIXIgJiYgIVgoZS5yZWxhdGVkVGFyZ2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gIW4uY29uZmlnLmlnbm9yZWRGb2N1c0VsZW1lbnRzLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY29udGFpbnModCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvICYmIGkgJiYgKG4uY29uZmlnLmFsbG93SW5wdXQgJiYgbi5zZXREYXRlKG4uX2lucHV0LnZhbHVlLCAhMSwgbi5jb25maWcuYWx0SW5wdXQgPyBuLmNvbmZpZy5hbHRGb3JtYXQgOiBuLmNvbmZpZy5kYXRlRm9ybWF0KSwgbi50aW1lQ29udGFpbmVyICE9PSB1bmRlZmluZWQgJiYgbi5taW51dGVFbGVtZW50ICE9PSB1bmRlZmluZWQgJiYgbi5ob3VyRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmICIiICE9PSBuLmlucHV0LnZhbHVlICYmIG4uaW5wdXQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBPKCksIG4uY2xvc2UoKSwgbi5jb25maWcgJiYgInJhbmdlIiA9PT0gbi5jb25maWcubW9kZSAmJiAxID09PSBuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoICYmIG4uY2xlYXIoITEpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCFlIHx8IG4uY29uZmlnLm1pbkRhdGUgJiYgZSA8IG4uY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSB8fCBuLmNvbmZpZy5tYXhEYXRlICYmIGUgPiBuLmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4uY3VycmVudFllYXIgIT09IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmN1cnJlbnRZZWFyID0gdCB8fCBuLmN1cnJlbnRZZWFyLCBuLmNvbmZpZy5tYXhEYXRlICYmIG4uY3VycmVudFllYXIgPT09IG4uY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSA/IG4uY3VycmVudE1vbnRoID0gTWF0aC5taW4obi5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpLCBuLmN1cnJlbnRNb250aCkgOiBuLmNvbmZpZy5taW5EYXRlICYmIG4uY3VycmVudFllYXIgPT09IG4uY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSAmJiAobi5jdXJyZW50TW9udGggPSBNYXRoLm1heChuLmNvbmZpZy5taW5EYXRlLmdldE1vbnRoKCksIG4uY3VycmVudE1vbnRoKSksIHIgJiYgKG4ucmVkcmF3KCksIHZlKCJvblllYXJDaGFuZ2UiKSwgSygpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0ZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbi5wYXJzZURhdGUoZSwgdW5kZWZpbmVkLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY29uZmlnLm1pbkRhdGUgJiYgbyAmJiBrKG8sIG4uY29uZmlnLm1pbkRhdGUsIHQgIT09IHVuZGVmaW5lZCA/IHQgOiAhbi5taW5EYXRlSGFzVGltZSkgPCAwIHx8IG4uY29uZmlnLm1heERhdGUgJiYgbyAmJiBrKG8sIG4uY29uZmlnLm1heERhdGUsIHQgIT09IHVuZGVmaW5lZCA/IHQgOiAhbi5tYXhEYXRlSGFzVGltZSkgPiAwKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbi5jb25maWcuZW5hYmxlICYmIDAgPT09IG4uY29uZmlnLmRpc2FibGUubGVuZ3RoKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID09PSB1bmRlZmluZWQpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9ICEhbi5jb25maWcuZW5hYmxlLCBhID0gbnVsbCAhPT0gKHIgPSBuLmNvbmZpZy5lbmFibGUpICYmIHZvaWQgMCAhPT0gciA/IHIgOiBuLmNvbmZpZy5kaXNhYmxlLCBzID0gMCwgdSA9IHZvaWQgMDsgcyA8IGEubGVuZ3RoOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZih1ID0gYVtzXSkgJiYgdShvKSkgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSBpbnN0YW5jZW9mIERhdGUgJiYgbyAhPT0gdW5kZWZpbmVkICYmIHUuZ2V0VGltZSgpID09PSBvLmdldFRpbWUoKSkgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG4ucGFyc2VEYXRlKHUsIHVuZGVmaW5lZCwgITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsICYmIGwuZ2V0VGltZSgpID09PSBvLmdldFRpbWUoKSA/IGkgOiAhaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiB1ICYmIG8gIT09IHVuZGVmaW5lZCAmJiB1LmZyb20gJiYgdS50byAmJiBvLmdldFRpbWUoKSA+PSB1LmZyb20uZ2V0VGltZSgpICYmIG8uZ2V0VGltZSgpIDw9IHUudG8uZ2V0VGltZSgpKSByZXR1cm4gaQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhaQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5kYXlzQ29udGFpbmVyICE9PSB1bmRlZmluZWQgJiYgKC0xID09PSBlLmNsYXNzTmFtZS5pbmRleE9mKCJoaWRkZW4iKSAmJiAtMSA9PT0gZS5jbGFzc05hbWUuaW5kZXhPZigiZmxhdHBpY2tyLWRpc2FibGVkIikgJiYgbi5kYXlzQ29udGFpbmVyLmNvbnRhaW5zKGUpKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUudGFyZ2V0ID09PSBuLl9pbnB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLl9pbnB1dC52YWx1ZS50cmltRW5kKCkgIT09IF9lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICF0IHx8ICFyIHx8IGUucmVsYXRlZFRhcmdldCAmJiBYKGUucmVsYXRlZFRhcmdldCkgfHwgbi5zZXREYXRlKG4uX2lucHV0LnZhbHVlLCAhMCwgZS50YXJnZXQgPT09IG4uYWx0SW5wdXQgPyBuLmNvbmZpZy5hbHRGb3JtYXQgOiBuLmNvbmZpZy5kYXRlRm9ybWF0KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb2UodCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHkodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5jb25maWcud3JhcCA/IGUuY29udGFpbnMocikgOiByID09PSBuLl9pbnB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmNvbmZpZy5hbGxvd0lucHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4uaXNPcGVuICYmICghYSB8fCAhbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi5jb25maWcuaW5saW5lICYmIG8gJiYgIWE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxMyA9PT0gdC5rZXlDb2RlICYmIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhKSByZXR1cm4gbi5zZXREYXRlKG4uX2lucHV0LnZhbHVlLCAhMCwgciA9PT0gbi5hbHRJbnB1dCA/IG4uY29uZmlnLmFsdEZvcm1hdCA6IG4uY29uZmlnLmRhdGVGb3JtYXQpLCBuLmNsb3NlKCksIHIuYmx1cigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5vcGVuKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChYKHIpIHx8IHMgfHwgdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSAhIW4udGltZUNvbnRhaW5lciAmJiBuLnRpbWVDb250YWluZXIuY29udGFpbnMocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQua2V5Q29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPyAodC5wcmV2ZW50RGVmYXVsdCgpLCBPKCksIGRlKCkpIDogcGUodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKSwgZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gJiYgIW4uY29uZmlnLmFsbG93SW5wdXQgJiYgKHQucHJldmVudERlZmF1bHQoKSwgbi5jbGVhcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCB8fCBvKSBuLmhvdXJFbGVtZW50ICYmIG4uaG91ckVsZW1lbnQuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmRheXNDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJiAoITEgPT09IGEgfHwgYyAmJiBuZShjKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IDM5ID09PSB0LmtleUNvZGUgPyAxIDogLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5jdHJsS2V5ID8gKHQuc3RvcFByb3BhZ2F0aW9uKCksIFooZiksIEgoVSgxKSwgMCkpIDogSCh1bmRlZmluZWQsIGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gNDAgPT09IHQua2V5Q29kZSA/IDEgOiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5kYXlzQ29udGFpbmVyICYmIHIuJGkgIT09IHVuZGVmaW5lZCB8fCByID09PSBuLmlucHV0IHx8IHIgPT09IG4uYWx0SW5wdXQgPyB0LmN0cmxLZXkgPyAodC5zdG9wUHJvcGFnYXRpb24oKSwgZWUobi5jdXJyZW50WWVhciAtIGQpLCBIKFUoMSksIDApKSA6IGwgfHwgSCh1bmRlZmluZWQsIDcgKiBkKSA6IHIgPT09IG4uY3VycmVudFllYXJFbGVtZW50ID8gZWUobi5jdXJyZW50WWVhciAtIGQpIDogbi5jb25maWcuZW5hYmxlVGltZSAmJiAoIWwgJiYgbi5ob3VyRWxlbWVudCAmJiBuLmhvdXJFbGVtZW50LmZvY3VzKCksIE8odCksIG4uX2RlYm91bmNlZENoYW5nZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBbbi5ob3VyRWxlbWVudCwgbi5taW51dGVFbGVtZW50LCBuLnNlY29uZEVsZW1lbnQsIG4uYW1QTV0uY29uY2F0KG4ucGx1Z2luRWxlbWVudHMpLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gcC5pbmRleE9mKHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0xICE9PSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBwW2ggKyAodC5zaGlmdEtleSA/IC0xIDogMSldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKSwgKG0gfHwgbi5faW5wdXQpLmZvY3VzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICFuLmNvbmZpZy5ub0NhbGVuZGFyICYmIG4uZGF5c0NvbnRhaW5lciAmJiBuLmRheXNDb250YWluZXIuY29udGFpbnMocikgJiYgdC5zaGlmdEtleSAmJiAodC5wcmV2ZW50RGVmYXVsdCgpLCBuLl9pbnB1dC5mb2N1cygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmFtUE0gIT09IHVuZGVmaW5lZCAmJiByID09PSBuLmFtUE0pIHN3aXRjaCAodC5rZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ugbi5sMTBuLmFtUE1bMF0uY2hhckF0KDApOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBuLmwxMG4uYW1QTVswXS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmFtUE0udGV4dENvbnRlbnQgPSBuLmwxMG4uYW1QTVswXSwgQSgpLCB4ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBuLmwxMG4uYW1QTVsxXS5jaGFyQXQoMCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG4ubDEwbi5hbVBNWzFdLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uYW1QTS50ZXh0Q29udGVudCA9IG4ubDEwbi5hbVBNWzFdLCBBKCksIHhlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfShvIHx8IFgocikpICYmIHZlKCJvbktleURvd24iLCB0KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaWUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSB0ICYmICh0ID0gImZsYXRwaWNrci1kYXkiKSwgMSA9PT0gbi5zZWxlY3RlZERhdGVzLmxlbmd0aCAmJiAoIWUgfHwgZS5jbGFzc0xpc3QuY29udGFpbnModCkgJiYgIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGlzYWJsZWQiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBlID8gZS5kYXRlT2JqLmdldFRpbWUoKSA6IG4uZGF5cy5maXJzdEVsZW1lbnRDaGlsZC5kYXRlT2JqLmdldFRpbWUoKSwgbyA9IG4ucGFyc2VEYXRlKG4uc2VsZWN0ZWREYXRlc1swXSwgdW5kZWZpbmVkLCAhMCkuZ2V0VGltZSgpLCBpID0gTWF0aC5taW4ociwgbi5zZWxlY3RlZERhdGVzWzBdLmdldFRpbWUoKSksIGEgPSBNYXRoLm1heChyLCBuLnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpKSwgcyA9ICExLCB1ID0gMCwgbCA9IDAsIGMgPSBpOyBjIDwgYTsgYyArPSBDKSB0ZShuZXcgRGF0ZShjKSwgITApIHx8IChzID0gcyB8fCBjID4gaSAmJiBjIDwgYSwgYyA8IG8gJiYgKCF1IHx8IGMgPiB1KSA/IHUgPSBjIDogYyA+IG8gJiYgKCFsIHx8IGMgPCBsKSAmJiAobCA9IGMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmZyb20obi5yQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoIio6bnRoLWNoaWxkKC1uKyIgKyBuLmNvbmZpZy5zaG93TW9udGhzICsgIikgPiAuIiArIHQpKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEsIGMsIGYgPSB0LmRhdGVPYmouZ2V0VGltZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdSA+IDAgJiYgZiA8IHUgfHwgbCA+IDAgJiYgZiA+IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQpIHJldHVybiB0LmNsYXNzTGlzdC5hZGQoIm5vdEFsbG93ZWQiKSwgdm9pZFsiaW5SYW5nZSIsICJzdGFydFJhbmdlIiwgImVuZFJhbmdlIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmNsYXNzTGlzdC5yZW1vdmUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyAmJiAhZCB8fCAoWyJzdGFydFJhbmdlIiwgImluUmFuZ2UiLCAiZW5kUmFuZ2UiLCAibm90QWxsb3dlZCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5jbGFzc0xpc3QucmVtb3ZlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBlICE9PSB1bmRlZmluZWQgJiYgKGUuY2xhc3NMaXN0LmFkZChyIDw9IG4uc2VsZWN0ZWREYXRlc1swXS5nZXRUaW1lKCkgPyAic3RhcnRSYW5nZSIgOiAiZW5kUmFuZ2UiKSwgbyA8IHIgJiYgZiA9PT0gbyA/IHQuY2xhc3NMaXN0LmFkZCgic3RhcnRSYW5nZSIpIDogbyA+IHIgJiYgZiA9PT0gbyAmJiB0LmNsYXNzTGlzdC5hZGQoImVuZFJhbmdlIiksIGYgPj0gdSAmJiAoMCA9PT0gbCB8fCBmIDw9IGwpICYmIChhID0gbywgYyA9IHIsIChpID0gZikgPiBNYXRoLm1pbihhLCBjKSAmJiBpIDwgTWF0aC5tYXgoYSwgYykpICYmIHQuY2xhc3NMaXN0LmFkZCgiaW5SYW5nZSIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIW4uaXNPcGVuIHx8IG4uY29uZmlnWyJzdGF0aWMiXSB8fCBuLmNvbmZpZy5pbmxpbmUgfHwgY2UoKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2UoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmNvbmZpZ1siXyIgKyBlICsgIkRhdGUiXSA9IG4ucGFyc2VEYXRlKHQsIG4uY29uZmlnLmRhdGVGb3JtYXQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLmNvbmZpZ1siXyIgKyAoIm1pbiIgPT09IGUgPyAibWF4IiA6ICJtaW4iKSArICJEYXRlIl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByICE9PSB1bmRlZmluZWQgJiYgKG5bIm1pbiIgPT09IGUgPyAibWluRGF0ZUhhc1RpbWUiIDogIm1heERhdGVIYXNUaW1lIl0gPSByLmdldEhvdXJzKCkgPiAwIHx8IHIuZ2V0TWludXRlcygpID4gMCB8fCByLmdldFNlY29uZHMoKSA+IDApLCBuLnNlbGVjdGVkRGF0ZXMgJiYgKG4uc2VsZWN0ZWREYXRlcyA9IG4uc2VsZWN0ZWREYXRlcy5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbi5zZWxlY3RlZERhdGVzLmxlbmd0aCB8fCAibWluIiAhPT0gZSB8fCBEKHIpLCB4ZSgpKSwgbi5kYXlzQ29udGFpbmVyICYmIChmZSgpLCByICE9PSB1bmRlZmluZWQgPyBuLmN1cnJlbnRZZWFyRWxlbWVudFtlXSA9IHIuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpIDogbi5jdXJyZW50WWVhckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGUpLCBuLmN1cnJlbnRZZWFyRWxlbWVudC5kaXNhYmxlZCA9ICEhbyAmJiByICE9PSB1bmRlZmluZWQgJiYgby5nZXRGdWxsWWVhcigpID09PSByLmdldEZ1bGxZZWFyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHVlKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5jb25maWcud3JhcCA/IGUucXVlcnlTZWxlY3RvcigiW2RhdGEtaW5wdXRdIikgOiBlCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCIgIT0gdHlwZW9mIG4uY29uZmlnLmxvY2FsZSAmJiAidW5kZWZpbmVkIiA9PSB0eXBlb2YgVC5sMTBuc1tuLmNvbmZpZy5sb2NhbGVdICYmIG4uY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoImZsYXRwaWNrcjogaW52YWxpZCBsb2NhbGUgIiArIG4uY29uZmlnLmxvY2FsZSkpLCBuLmwxMG4gPSBqKGooe30sIFQubDEwbnNbImRlZmF1bHQiXSksICJvYmplY3QiID09IHR5cGVvZiBuLmNvbmZpZy5sb2NhbGUgPyBuLmNvbmZpZy5sb2NhbGUgOiAiZGVmYXVsdCIgIT09IG4uY29uZmlnLmxvY2FsZSA/IFQubDEwbnNbbi5jb25maWcubG9jYWxlXSA6IHVuZGVmaW5lZCksIHcuRCA9ICIoIiArIG4ubDEwbi53ZWVrZGF5cy5zaG9ydGhhbmQuam9pbigifCIpICsgIikiLCB3LmwgPSAiKCIgKyBuLmwxMG4ud2Vla2RheXMubG9uZ2hhbmQuam9pbigifCIpICsgIikiLCB3Lk0gPSAiKCIgKyBuLmwxMG4ubW9udGhzLnNob3J0aGFuZC5qb2luKCJ8IikgKyAiKSIsIHcuRiA9ICIoIiArIG4ubDEwbi5tb250aHMubG9uZ2hhbmQuam9pbigifCIpICsgIikiLCB3LksgPSAiKCIgKyBuLmwxMG4uYW1QTVswXSArICJ8IiArIG4ubDEwbi5hbVBNWzFdICsgInwiICsgbi5sMTBuLmFtUE1bMF0udG9Mb3dlckNhc2UoKSArICJ8IiArIG4ubDEwbi5hbVBNWzFdLnRvTG93ZXJDYXNlKCkgKyAiKSIsIGooaih7fSwgdCksIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZS5kYXRhc2V0IHx8IHt9KSkpLnRpbWVfMjRociA9PT0gdW5kZWZpbmVkICYmIFQuZGVmYXVsdENvbmZpZy50aW1lXzI0aHIgPT09IHVuZGVmaW5lZCAmJiAobi5jb25maWcudGltZV8yNGhyID0gbi5sMTBuLnRpbWVfMjRociksIG4uZm9ybWF0RGF0ZSA9IF8obiksIG4ucGFyc2VEYXRlID0geCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IG4uY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDEwbjogbi5sMTBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiBuLmNvbmZpZy5wb3NpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY2FsZW5kYXJDb250YWluZXIgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlKCJvblByZUNhbGVuZGFyUG9zaXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgfHwgbi5fcG9zaXRpb25FbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gQXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKG4uY2FsZW5kYXJDb250YWluZXIuY2hpbGRyZW4sIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSArIHQub2Zmc2V0SGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4uY2FsZW5kYXJDb250YWluZXIub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLmNvbmZpZy5wb3NpdGlvbi5zcGxpdCgiICIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkubGVuZ3RoID4gMSA/IGlbMV0gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHUuYm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gImFib3ZlIiA9PT0gYSB8fCAiYmVsb3ciICE9PSBhICYmIGwgPCByICYmIHUudG9wID4gciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHdpbmRvdy5wYWdlWU9mZnNldCArIHUudG9wICsgKGMgPyAtciAtIDIgOiB0Lm9mZnNldEhlaWdodCArIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmKG4uY2FsZW5kYXJDb250YWluZXIsICJhcnJvd1RvcCIsICFjKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAiYXJyb3dCb3R0b20iLCBjKSwgIW4uY29uZmlnLmlubGluZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IHdpbmRvdy5wYWdlWE9mZnNldCArIHUubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNlbnRlciIgPT09IHMgPyAocCAtPSAobyAtIHUud2lkdGgpIC8gMiwgaCA9ICEwKSA6ICJyaWdodCIgPT09IHMgJiYgKHAgLT0gbyAtIHUud2lkdGgsIG0gPSAhMCksIGYobi5jYWxlbmRhckNvbnRhaW5lciwgImFycm93TGVmdCIsICFoICYmICFtKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAiYXJyb3dDZW50ZXIiLCBoKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAiYXJyb3dSaWdodCIsIG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIC0gKHdpbmRvdy5wYWdlWE9mZnNldCArIHUucmlnaHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHAgKyBvID4gd2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0geSArIG8gPiB3aW5kb3cuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYobi5jYWxlbmRhckNvbnRhaW5lciwgInJpZ2h0TW9zdCIsIGcpLCAhbi5jb25maWdbInN0YXRpYyJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY2FsZW5kYXJDb250YWluZXIuc3R5bGUudG9wID0gZCArICJweCIsIGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBudWxsLCB0ID0gMDsgdCA8IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgdCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBkb2N1bWVudC5zdHlsZVNoZWV0c1t0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jc3NSdWxlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jc3NSdWxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IGUgPyBlIDogKHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLCBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHIpLCByLnNoZWV0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIgPT09IHVuZGVmaW5lZCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IE1hdGgubWF4KDAsIHcgLyAyIC0gbyAvIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9IGIuY3NzUnVsZXMubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9ICJ7bGVmdDoiICsgdS5sZWZ0ICsgInB4O3JpZ2h0OmF1dG87fSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYobi5jYWxlbmRhckNvbnRhaW5lciwgInJpZ2h0TW9zdCIsICExKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAiY2VudGVyTW9zdCIsICEwKSwgYi5pbnNlcnRSdWxlKCIuZmxhdHBpY2tyLWNhbGVuZGFyLmNlbnRlck1vc3Q6YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuY2VudGVyTW9zdDphZnRlciIgKyB4LCBfKSwgbi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gTyArICJweCIsIG4uY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmlnaHQgPSAiYXV0byIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugbi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gImF1dG8iLCBuLmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJpZ2h0ID0geSArICJweCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugbi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gcCArICJweCIsIG4uY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmlnaHQgPSAiYXV0byIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuLmNvbmZpZy5wb3NpdGlvbihuLCBlKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZmUoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnLm5vQ2FsZW5kYXIgfHwgbi5pc01vYmlsZSB8fCAoSygpLCBPZSgpLCBXKCkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5faW5wdXQuZm9jdXMoKSwgLTEgIT09IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKSB8fCBuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyAhPT0gdW5kZWZpbmVkID8gc2V0VGltZW91dChuLmNsb3NlLCAwKSA6IG4uY2xvc2UoKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcGUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gaCh5KGUpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2xhc3NMaXN0ICYmIGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGF5IikgJiYgIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGlzYWJsZWQiKSAmJiAhZS5jbGFzc0xpc3QuY29udGFpbnMoIm5vdEFsbG93ZWQiKQogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5sYXRlc3RTZWxlY3RlZERhdGVPYmogPSBuZXcgRGF0ZShyLmRhdGVPYmouZ2V0VGltZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gKG8uZ2V0TW9udGgoKSA8IG4uY3VycmVudE1vbnRoIHx8IG8uZ2V0TW9udGgoKSA+IG4uY3VycmVudE1vbnRoICsgbi5jb25maWcuc2hvd01vbnRocyAtIDEpICYmICJyYW5nZSIgIT09IG4uY29uZmlnLm1vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5zZWxlY3RlZERhdGVFbGVtID0gciwgInNpbmdsZSIgPT09IG4uY29uZmlnLm1vZGUpIG4uc2VsZWN0ZWREYXRlcyA9IFtvXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJtdWx0aXBsZSIgPT09IG4uY29uZmlnLm1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHdlKG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPyBuLnNlbGVjdGVkRGF0ZXMuc3BsaWNlKHBhcnNlSW50KGEpLCAxKSA6IG4uc2VsZWN0ZWREYXRlcy5wdXNoKG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgInJhbmdlIiA9PT0gbi5jb25maWcubW9kZSAmJiAoMiA9PT0gbi5zZWxlY3RlZERhdGVzLmxlbmd0aCAmJiBuLmNsZWFyKCExLCAhMSksIG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID0gbywgbi5zZWxlY3RlZERhdGVzLnB1c2gobyksIDAgIT09IGsobywgbi5zZWxlY3RlZERhdGVzWzBdLCAhMCkgJiYgbi5zZWxlY3RlZERhdGVzLnNvcnQoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRUaW1lKCkgLSB0LmdldFRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBKCksIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG4uY3VycmVudFllYXIgIT09IG8uZ2V0RnVsbFllYXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmN1cnJlbnRZZWFyID0gby5nZXRGdWxsWWVhcigpLCBuLmN1cnJlbnRNb250aCA9IG8uZ2V0TW9udGgoKSwgcyAmJiAodmUoIm9uWWVhckNoYW5nZSIpLCBLKCkpLCB2ZSgib25Nb250aENoYW5nZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2UoKSwgVygpLCB4ZSgpLCBpIHx8ICJyYW5nZSIgPT09IG4uY29uZmlnLm1vZGUgfHwgMSAhPT0gbi5jb25maWcuc2hvd01vbnRocyA/IG4uc2VsZWN0ZWREYXRlRWxlbSAhPT0gdW5kZWZpbmVkICYmIG4uaG91ckVsZW1lbnQgPT09IHVuZGVmaW5lZCAmJiBuLnNlbGVjdGVkRGF0ZUVsZW0gJiYgbi5zZWxlY3RlZERhdGVFbGVtLmZvY3VzKCkgOiBCKHIpLCBuLmhvdXJFbGVtZW50ICE9PSB1bmRlZmluZWQgJiYgbi5ob3VyRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIG4uaG91ckVsZW1lbnQuZm9jdXMoKSwgbi5jb25maWcuY2xvc2VPblNlbGVjdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gInNpbmdsZSIgPT09IG4uY29uZmlnLm1vZGUgJiYgIW4uY29uZmlnLmVuYWJsZVRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAicmFuZ2UiID09PSBuLmNvbmZpZy5tb2RlICYmIDIgPT09IG4uc2VsZWN0ZWREYXRlcy5sZW5ndGggJiYgIW4uY29uZmlnLmVuYWJsZVRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHUgfHwgbCkgJiYgZGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbi5wYXJzZURhdGUgPSB4KHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBuLmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgbDEwbjogbi5sMTBuCiAgICAgICAgICAgICAgICAgICAgfSksIG4uX2hhbmRsZXJzID0gW10sIG4ucGx1Z2luRWxlbWVudHMgPSBbXSwgbi5sb2FkZWRQbHVnaW5zID0gW10sIG4uX2JpbmQgPSBMLCBuLl9zZXRIb3Vyc0Zyb21EYXRlID0gRCwgbi5fcG9zaXRpb25DYWxlbmRhciA9IGNlLCBuLmNoYW5nZU1vbnRoID0gWiwgbi5jaGFuZ2VZZWFyID0gZWUsIG4uY2xlYXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICBuLmlucHV0LnZhbHVlID0gIiIsIG4uYWx0SW5wdXQgIT09IHVuZGVmaW5lZCAmJiAobi5hbHRJbnB1dC52YWx1ZSA9ICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5tb2JpbGVJbnB1dCAhPT0gdW5kZWZpbmVkICYmIChuLm1vYmlsZUlucHV0LnZhbHVlID0gIiIpOwogICAgICAgICAgICAgICAgICAgICAgICBuLnNlbGVjdGVkRGF0ZXMgPSBbXSwgbi5sYXRlc3RTZWxlY3RlZERhdGVPYmogPSB1bmRlZmluZWQsICEwID09PSB0ICYmIChuLmN1cnJlbnRZZWFyID0gbi5faW5pdGlhbERhdGUuZ2V0RnVsbFllYXIoKSwgbi5jdXJyZW50TW9udGggPSBuLl9pbml0aWFsRGF0ZS5nZXRNb250aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEwID09PSBuLmNvbmZpZy5lbmFibGVUaW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IFMobi5jb25maWcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLmhvdXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByLm1pbnV0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIuc2Vjb25kczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4obywgaSwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBuLnJlZHJhdygpLCBlICYmIHZlKCJvbkNoYW5nZSIpCiAgICAgICAgICAgICAgICAgICAgfSwgbi5jbG9zZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBuLmlzT3BlbiA9ICExLCBuLmlzTW9iaWxlIHx8IChuLmNhbGVuZGFyQ29udGFpbmVyICE9PSB1bmRlZmluZWQgJiYgbi5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJvcGVuIiksIG4uX2lucHV0ICE9PSB1bmRlZmluZWQgJiYgbi5faW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgiYWN0aXZlIikpOwogICAgICAgICAgICAgICAgICAgICAgICB2ZSgib25DbG9zZSIpCiAgICAgICAgICAgICAgICAgICAgfSwgbi5vbk1vdXNlT3ZlciA9IGllLCBuLl9jcmVhdGVFbGVtZW50ID0gZCwgbi5jcmVhdGVEYXkgPSBWLCBuLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcgIT09IHVuZGVmaW5lZCAmJiB2ZSgib25EZXN0cm95Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBuLl9oYW5kbGVycy5sZW5ndGg7IGUtLTspIG4uX2hhbmRsZXJzW2VdLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5faGFuZGxlcnMgPSBbXSwgbi5tb2JpbGVJbnB1dCkgbi5tb2JpbGVJbnB1dC5wYXJlbnROb2RlICYmIG4ubW9iaWxlSW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuLm1vYmlsZUlucHV0KSwgbi5tb2JpbGVJbnB1dCA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobi5jYWxlbmRhckNvbnRhaW5lciAmJiBuLmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jb25maWdbInN0YXRpYyJdICYmIG4uY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbi5jYWxlbmRhckNvbnRhaW5lci5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lmxhc3RDaGlsZCAmJiB0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKSwgdC5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB0LmZpcnN0Q2hpbGQ7KSB0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQuZmlyc3RDaGlsZCwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuLmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobi5jYWxlbmRhckNvbnRhaW5lcik7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uYWx0SW5wdXQgJiYgKG4uaW5wdXQudHlwZSA9ICJ0ZXh0Iiwgbi5hbHRJbnB1dC5wYXJlbnROb2RlICYmIG4uYWx0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuLmFsdElucHV0KSwgZGVsZXRlIG4uYWx0SW5wdXQpOwogICAgICAgICAgICAgICAgICAgICAgICBuLmlucHV0ICYmIChuLmlucHV0LnR5cGUgPSBuLmlucHV0Ll90eXBlLCBuLmlucHV0LmNsYXNzTGlzdC5yZW1vdmUoImZsYXRwaWNrci1pbnB1dCIpLCBuLmlucHV0LnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFsiX3Nob3dUaW1lSW5wdXQiLCAibGF0ZXN0U2VsZWN0ZWREYXRlT2JqIiwgIl9oaWRlTmV4dE1vbnRoQXJyb3ciLCAiX2hpZGVQcmV2TW9udGhBcnJvdyIsICJfX2hpZGVOZXh0TW9udGhBcnJvdyIsICJfX2hpZGVQcmV2TW9udGhBcnJvdyIsICJpc01vYmlsZSIsICJpc09wZW4iLCAic2VsZWN0ZWREYXRlRWxlbSIsICJtaW5EYXRlSGFzVGltZSIsICJtYXhEYXRlSGFzVGltZSIsICJkYXlzIiwgImRheXNDb250YWluZXIiLCAiX2lucHV0IiwgIl9wb3NpdGlvbkVsZW1lbnQiLCAiaW5uZXJDb250YWluZXIiLCAickNvbnRhaW5lciIsICJtb250aE5hdiIsICJ0b2RheURhdGVFbGVtIiwgImNhbGVuZGFyQ29udGFpbmVyIiwgIndlZWtkYXlDb250YWluZXIiLCAicHJldk1vbnRoTmF2IiwgIm5leHRNb250aE5hdiIsICJtb250aHNEcm9wZG93bkNvbnRhaW5lciIsICJjdXJyZW50TW9udGhFbGVtZW50IiwgImN1cnJlbnRZZWFyRWxlbWVudCIsICJuYXZpZ2F0aW9uQ3VycmVudE1vbnRoIiwgInNlbGVjdGVkRGF0ZUVsZW0iLCAiY29uZmlnIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbltlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkge30KICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSwgbi5pc0VuYWJsZWQgPSB0ZSwgbi5qdW1wVG9EYXRlID0gUiwgbi51cGRhdGVWYWx1ZSA9IHhlLCBuLm9wZW4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9IG4uX3Bvc2l0aW9uRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMCA9PT0gbi5pc01vYmlsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB5KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgJiYgci5ibHVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLm1vYmlsZUlucHV0ICE9PSB1bmRlZmluZWQgJiYgKG4ubW9iaWxlSW5wdXQuZm9jdXMoKSwgbi5tb2JpbGVJbnB1dC5jbGljaygpKSwgdm9pZCB2ZSgib25PcGVuIikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5faW5wdXQuZGlzYWJsZWQgfHwgbi5jb25maWcuaW5saW5lKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbi5pc09wZW47CiAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNPcGVuID0gITAsIG8gfHwgKG4uY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgib3BlbiIpLCBuLl9pbnB1dC5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKSwgdmUoIm9uT3BlbiIpLCBjZSh0KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICEwID09PSBuLmNvbmZpZy5lbmFibGVUaW1lICYmICEwID09PSBuLmNvbmZpZy5ub0NhbGVuZGFyICYmICghMSAhPT0gbi5jb25maWcuYWxsb3dJbnB1dCB8fCBlICE9PSB1bmRlZmluZWQgJiYgbi50aW1lQ29udGFpbmVyLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCkgfHwgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5ob3VyRWxlbWVudC5zZWxlY3QoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgNTApKQogICAgICAgICAgICAgICAgICAgIH0sIG4ucmVkcmF3ID0gZmUsIG4uc2V0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gaW4gT2JqZWN0LmFzc2lnbihuLmNvbmZpZywgZSksIGUpIGhlW29dICE9PSB1bmRlZmluZWQgJiYgaGVbb10uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBuLmNvbmZpZ1tlXSA9IHQsIGhlW2VdICE9PSB1bmRlZmluZWQgPyBoZVtlXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IHIuaW5kZXhPZihlKSA+IC0xICYmIChuLmNvbmZpZ1tlXSA9IGModCkpOwogICAgICAgICAgICAgICAgICAgICAgICBuLnJlZHJhdygpLCB4ZSghMCkKICAgICAgICAgICAgICAgICAgICB9LCBuLnNldERhdGUgPSBmdW5jdGlvbihlLCB0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9ICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSByICYmIChyID0gbi5jb25maWcuZGF0ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBlICYmICFlIHx8IGUgaW5zdGFuY2VvZiBBcnJheSAmJiAwID09PSBlLmxlbmd0aCkgcmV0dXJuIG4uY2xlYXIodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lKGUsIHIpLCBuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA9IG4uc2VsZWN0ZWREYXRlc1tuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoIC0gMV0sIG4ucmVkcmF3KCksIFIodW5kZWZpbmVkLCB0KSwgRCgpLCAwID09PSBuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoICYmIG4uY2xlYXIoITEpOwogICAgICAgICAgICAgICAgICAgICAgICB4ZSh0KSwgdCAmJiB2ZSgib25DaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgIH0sIG4udG9nZ2xlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoITAgPT09IG4uaXNPcGVuKSByZXR1cm4gbi5jbG9zZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBuLm9wZW4oZSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHZhciBoZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBbbGUsIFFdLAogICAgICAgICAgICAgICAgICAgICAgICBzaG93TW9udGhzOiBbRywgYiwgJF0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRhdGU6IFtSXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGF0ZTogW1JdLAogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkVsZW1lbnQ6IFtnZV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrT3BlbnM6IFtmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICEwID09PSBuLmNvbmZpZy5jbGlja09wZW5zID8gKEwobi5faW5wdXQsICJmb2N1cyIsIG4ub3BlbiksIEwobi5faW5wdXQsICJjbGljayIsIG4ub3BlbikpIDogKG4uX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIiwgbi5vcGVuKSwgbi5faW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBuLm9wZW4pKQogICAgICAgICAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG1lKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBcnJheSkgciA9IGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5wYXJzZURhdGUoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlIGluc3RhbmNlb2YgRGF0ZSB8fCAibnVtYmVyIiA9PSB0eXBlb2YgZSkgciA9IFtuLnBhcnNlRGF0ZShlLCB0KV07CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSBzd2l0Y2ggKG4uY29uZmlnLm1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNpbmdsZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0aW1lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gW24ucGFyc2VEYXRlKGUsIHQpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm11bHRpcGxlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5zcGxpdChuLmNvbmZpZy5jb25qdW5jdGlvbikubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnBhcnNlRGF0ZShlLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJhbmdlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5zcGxpdChuLmwxMG4ucmFuZ2VTZXBhcmF0b3IpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5wYXJzZURhdGUoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIG4uY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoIkludmFsaWQgZGF0ZSBzdXBwbGllZDogIiArIEpTT04uc3RyaW5naWZ5KGUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uc2VsZWN0ZWREYXRlcyA9IG4uY29uZmlnLmFsbG93SW52YWxpZFByZWxvYWQgPyByIDogci5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgRGF0ZSAmJiB0ZShlLCAhMSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCAicmFuZ2UiID09PSBuLmNvbmZpZy5tb2RlICYmIG4uc2VsZWN0ZWREYXRlcy5zb3J0KChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRUaW1lKCkgLSB0LmdldFRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHllKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuc2xpY2UoKS5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgZSB8fCAibnVtYmVyIiA9PSB0eXBlb2YgZSB8fCBlIGluc3RhbmNlb2YgRGF0ZSA/IG4ucGFyc2VEYXRlKGUsIHVuZGVmaW5lZCwgITApIDogZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlLmZyb20gJiYgZS50byA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBuLnBhcnNlRGF0ZShlLmZyb20sIHVuZGVmaW5lZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IG4ucGFyc2VEYXRlKGUudG8sIHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2UoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uX3Bvc2l0aW9uRWxlbWVudCA9IG4uY29uZmlnLnBvc2l0aW9uRWxlbWVudCB8fCBuLl9pbnB1dAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdmUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jb25maWcgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmNvbmZpZ1tlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICE9PSB1bmRlZmluZWQgJiYgci5sZW5ndGggPiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSAwOyByW29dICYmIG8gPCByLmxlbmd0aDsgbysrKSByW29dKG4uc2VsZWN0ZWREYXRlcywgbi5pbnB1dC52YWx1ZSwgbiwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25DaGFuZ2UiID09PSBlICYmIChuLmlucHV0LmRpc3BhdGNoRXZlbnQoYmUoImNoYW5nZSIpKSwgbi5pbnB1dC5kaXNwYXRjaEV2ZW50KGJlKCJpbnB1dCIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pbml0RXZlbnQoZSwgITAsICEwKSwgdAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2UoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IG4uc2VsZWN0ZWREYXRlcy5sZW5ndGg7IHQrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLnNlbGVjdGVkRGF0ZXNbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIERhdGUgJiYgMCA9PT0gayhyLCBlKSkgcmV0dXJuICIiICsgdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gT2UoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnLm5vQ2FsZW5kYXIgfHwgbi5pc01vYmlsZSB8fCAhbi5tb250aE5hdiB8fCAobi55ZWFyRWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuZXcgRGF0ZShuLmN1cnJlbnRZZWFyLCBuLmN1cnJlbnRNb250aCwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNldE1vbnRoKG4uY3VycmVudE1vbnRoICsgdCksIG4uY29uZmlnLnNob3dNb250aHMgPiAxIHx8ICJzdGF0aWMiID09PSBuLmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZSA/IG4ubW9udGhFbGVtZW50c1t0XS50ZXh0Q29udGVudCA9IHYoci5nZXRNb250aCgpLCBuLmNvbmZpZy5zaG9ydGhhbmRDdXJyZW50TW9udGgsIG4ubDEwbikgKyAiICIgOiBuLm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLnZhbHVlID0gci5nZXRNb250aCgpLnRvU3RyaW5nKCksIGUudmFsdWUgPSByLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4uX2hpZGVQcmV2TW9udGhBcnJvdyA9IG4uY29uZmlnLm1pbkRhdGUgIT09IHVuZGVmaW5lZCAmJiAobi5jdXJyZW50WWVhciA9PT0gbi5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpID8gbi5jdXJyZW50TW9udGggPD0gbi5jb25maWcubWluRGF0ZS5nZXRNb250aCgpIDogbi5jdXJyZW50WWVhciA8IG4uY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSksIG4uX2hpZGVOZXh0TW9udGhBcnJvdyA9IG4uY29uZmlnLm1heERhdGUgIT09IHVuZGVmaW5lZCAmJiAobi5jdXJyZW50WWVhciA9PT0gbi5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpID8gbi5jdXJyZW50TW9udGggKyAxID4gbi5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpIDogbi5jdXJyZW50WWVhciA+IG4uY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBfZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZSB8fCAobi5jb25maWcuYWx0SW5wdXQgPyBuLmNvbmZpZy5hbHRGb3JtYXQgOiBuLmNvbmZpZy5kYXRlRm9ybWF0KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2VsZWN0ZWREYXRlcy5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmZvcm1hdERhdGUoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmZpbHRlcigoZnVuY3Rpb24oZSwgdCwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJyYW5nZSIgIT09IG4uY29uZmlnLm1vZGUgfHwgbi5jb25maWcuZW5hYmxlVGltZSB8fCByLmluZGV4T2YoZSkgPT09IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmpvaW4oInJhbmdlIiAhPT0gbi5jb25maWcubW9kZSA/IG4uY29uZmlnLmNvbmp1bmN0aW9uIDogbi5sMTBuLnJhbmdlU2VwYXJhdG9yKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geGUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSAhMCksIG4ubW9iaWxlSW5wdXQgIT09IHVuZGVmaW5lZCAmJiBuLm1vYmlsZUZvcm1hdFN0ciAmJiAobi5tb2JpbGVJbnB1dC52YWx1ZSA9IG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqICE9PSB1bmRlZmluZWQgPyBuLmZvcm1hdERhdGUobi5sYXRlc3RTZWxlY3RlZERhdGVPYmosIG4ubW9iaWxlRm9ybWF0U3RyKSA6ICIiKSwgbi5pbnB1dC52YWx1ZSA9IF9lKG4uY29uZmlnLmRhdGVGb3JtYXQpLCBuLmFsdElucHV0ICE9PSB1bmRlZmluZWQgJiYgKG4uYWx0SW5wdXQudmFsdWUgPSBfZShuLmNvbmZpZy5hbHRGb3JtYXQpKSwgITEgIT09IGUgJiYgdmUoIm9uVmFsdWVVcGRhdGUiKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24ga2UoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHkoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi5wcmV2TW9udGhOYXYuY29udGFpbnModCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5uZXh0TW9udGhOYXYuY29udGFpbnModCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgfHwgbyA/IFoociA/IC0xIDogMSkgOiBuLnllYXJFbGVtZW50cy5pbmRleE9mKHQpID49IDAgPyB0LnNlbGVjdCgpIDogdC5jbGFzc0xpc3QuY29udGFpbnMoImFycm93VXAiKSA/IG4uY2hhbmdlWWVhcihuLmN1cnJlbnRZZWFyICsgMSkgOiB0LmNsYXNzTGlzdC5jb250YWlucygiYXJyb3dEb3duIikgJiYgbi5jaGFuZ2VZZWFyKG4uY3VycmVudFllYXIgLSAxKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uZWxlbWVudCA9IG4uaW5wdXQgPSBlLCBuLmlzT3BlbiA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBbIndyYXAiLCAid2Vla051bWJlcnMiLCAiYWxsb3dJbnB1dCIsICJhbGxvd0ludmFsaWRQcmVsb2FkIiwgImNsaWNrT3BlbnMiLCAidGltZV8yNGhyIiwgImVuYWJsZVRpbWUiLCAibm9DYWxlbmRhciIsICJhbHRJbnB1dCIsICJzaG9ydGhhbmRDdXJyZW50TW9udGgiLCAiaW5saW5lIiwgInN0YXRpYyIsICJlbmFibGVTZWNvbmRzIiwgImRpc2FibGVNb2JpbGUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGooaih7fSwgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlLmRhdGFzZXQgfHwge30pKSksIHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcucGFyc2VEYXRlID0gYS5wYXJzZURhdGUsIG4uY29uZmlnLmZvcm1hdERhdGUgPSBhLmZvcm1hdERhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLmNvbmZpZywgImVuYWJsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbmZpZy5fZW5hYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcuX2VuYWJsZSA9IHllKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4uY29uZmlnLCAiZGlzYWJsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbmZpZy5fZGlzYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnLl9kaXNhYmxlID0geWUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gInRpbWUiID09PSBhLm1vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhLmRhdGVGb3JtYXQgJiYgKGEuZW5hYmxlVGltZSB8fCB1KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IFQuZGVmYXVsdENvbmZpZy5kYXRlRm9ybWF0IHx8IG8uZGF0ZUZvcm1hdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kYXRlRm9ybWF0ID0gYS5ub0NhbGVuZGFyIHx8IHUgPyAiSDppIiArIChhLmVuYWJsZVNlY29uZHMgPyAiOlMiIDogIiIpIDogbCArICIgSDppIiArIChhLmVuYWJsZVNlY29uZHMgPyAiOlMiIDogIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLmFsdElucHV0ICYmIChhLmVuYWJsZVRpbWUgfHwgdSkgJiYgIWEuYWx0Rm9ybWF0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gVC5kZWZhdWx0Q29uZmlnLmFsdEZvcm1hdCB8fCBvLmFsdEZvcm1hdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hbHRGb3JtYXQgPSBhLm5vQ2FsZW5kYXIgfHwgdSA/ICJoOmkiICsgKGEuZW5hYmxlU2Vjb25kcyA/ICI6UyBLIiA6ICIgSyIpIDogZiArICIgaDppIiArIChhLmVuYWJsZVNlY29uZHMgPyAiOlMiIDogIiIpICsgIiBLIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobi5jb25maWcsICJtaW5EYXRlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uY29uZmlnLl9taW5EYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldDogc2UoIm1pbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLmNvbmZpZywgIm1heERhdGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5jb25maWcuX21heERhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBzZSgibWF4IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnWyJtaW4iID09PSBlID8gIl9taW5UaW1lIiA6ICJfbWF4VGltZSJdID0gbi5wYXJzZURhdGUodCwgIkg6aTpTIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4uY29uZmlnLCAibWluVGltZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbmZpZy5fbWluVGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IGQoIm1pbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLmNvbmZpZywgIm1heFRpbWUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5jb25maWcuX21heFRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBkKCJtYXgiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAidGltZSIgPT09IGEubW9kZSAmJiAobi5jb25maWcubm9DYWxlbmRhciA9ICEwLCBuLmNvbmZpZy5lbmFibGVUaW1lID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obi5jb25maWcsIHMsIGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgaS5sZW5ndGg7IHArKykgbi5jb25maWdbaVtwXV0gPSAhMCA9PT0gbi5jb25maWdbaVtwXV0gfHwgInRydWUiID09PSBuLmNvbmZpZ1tpW3BdXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5jb25maWdbZV0gIT09IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnW2VdID0gYyhuLmNvbmZpZ1tlXSB8fCBbXSkubWFwKGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuLmlzTW9iaWxlID0gIW4uY29uZmlnLmRpc2FibGVNb2JpbGUgJiYgIW4uY29uZmlnLmlubGluZSAmJiAic2luZ2xlIiA9PT0gbi5jb25maWcubW9kZSAmJiAhbi5jb25maWcuZGlzYWJsZS5sZW5ndGggJiYgIW4uY29uZmlnLmVuYWJsZSAmJiAhbi5jb25maWcud2Vla051bWJlcnMgJiYgL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocCA9IDA7IHAgPCBuLmNvbmZpZy5wbHVnaW5zLmxlbmd0aDsgcCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gbi5jb25maWcucGx1Z2luc1twXShuKSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbSBpbiBoKSByLmluZGV4T2YobSkgPiAtMSA/IG4uY29uZmlnW21dID0gYyhoW21dKS5tYXAoZykuY29uY2F0KG4uY29uZmlnW21dKSA6ICJ1bmRlZmluZWQiID09IHR5cGVvZiBhW21dICYmIChuLmNvbmZpZ1ttXSA9IGhbbV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuYWx0SW5wdXRDbGFzcyB8fCAobi5jb25maWcuYWx0SW5wdXRDbGFzcyA9IHVlKCkuY2xhc3NOYW1lICsgIiAiICsgbi5jb25maWcuYWx0SW5wdXRDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmUoIm9uUGFyc2VDb25maWciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLCBsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uaW5wdXQgPSB1ZSgpLCAhbi5pbnB1dCkgcmV0dXJuIHZvaWQgbi5jb25maWcuZXJyb3JIYW5kbGVyKG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCBlbGVtZW50IHNwZWNpZmllZCIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmlucHV0Ll90eXBlID0gbi5pbnB1dC50eXBlLCBuLmlucHV0LnR5cGUgPSAidGV4dCIsIG4uaW5wdXQuY2xhc3NMaXN0LmFkZCgiZmxhdHBpY2tyLWlucHV0IiksIG4uX2lucHV0ID0gbi5pbnB1dCwgbi5jb25maWcuYWx0SW5wdXQgJiYgKG4uYWx0SW5wdXQgPSBkKG4uaW5wdXQubm9kZU5hbWUsIG4uY29uZmlnLmFsdElucHV0Q2xhc3MpLCBuLl9pbnB1dCA9IG4uYWx0SW5wdXQsIG4uYWx0SW5wdXQucGxhY2Vob2xkZXIgPSBuLmlucHV0LnBsYWNlaG9sZGVyLCBuLmFsdElucHV0LmRpc2FibGVkID0gbi5pbnB1dC5kaXNhYmxlZCwgbi5hbHRJbnB1dC5yZXF1aXJlZCA9IG4uaW5wdXQucmVxdWlyZWQsIG4uYWx0SW5wdXQudGFiSW5kZXggPSBuLmlucHV0LnRhYkluZGV4LCBuLmFsdElucHV0LnR5cGUgPSAidGV4dCIsIG4uaW5wdXQuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImhpZGRlbiIpLCAhbi5jb25maWdbInN0YXRpYyJdICYmIG4uaW5wdXQucGFyZW50Tm9kZSAmJiBuLmlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4uYWx0SW5wdXQsIG4uaW5wdXQubmV4dFNpYmxpbmcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbmZpZy5hbGxvd0lucHV0IHx8IG4uX2lucHV0LnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCAicmVhZG9ubHkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNlbGVjdGVkRGF0ZXMgPSBbXSwgbi5ub3cgPSBuLnBhcnNlRGF0ZShuLmNvbmZpZy5ub3cpIHx8IG5ldyBEYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5jb25maWcuZGVmYXVsdERhdGUgfHwgKCJJTlBVVCIgIT09IG4uaW5wdXQubm9kZU5hbWUgJiYgIlRFWFRBUkVBIiAhPT0gbi5pbnB1dC5ub2RlTmFtZSB8fCAhbi5pbnB1dC5wbGFjZWhvbGRlciB8fCBuLmlucHV0LnZhbHVlICE9PSBuLmlucHV0LnBsYWNlaG9sZGVyID8gbi5pbnB1dC52YWx1ZSA6IG51bGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgbWUoZSwgbi5jb25maWcuZGF0ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5faW5pdGlhbERhdGUgPSBuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMCA/IG4uc2VsZWN0ZWREYXRlc1swXSA6IG4uY29uZmlnLm1pbkRhdGUgJiYgbi5jb25maWcubWluRGF0ZS5nZXRUaW1lKCkgPiBuLm5vdy5nZXRUaW1lKCkgPyBuLmNvbmZpZy5taW5EYXRlIDogbi5jb25maWcubWF4RGF0ZSAmJiBuLmNvbmZpZy5tYXhEYXRlLmdldFRpbWUoKSA8IG4ubm93LmdldFRpbWUoKSA/IG4uY29uZmlnLm1heERhdGUgOiBuLm5vdywgbi5jdXJyZW50WWVhciA9IG4uX2luaXRpYWxEYXRlLmdldEZ1bGxZZWFyKCksIG4uY3VycmVudE1vbnRoID0gbi5faW5pdGlhbERhdGUuZ2V0TW9udGgoKSwgbi5zZWxlY3RlZERhdGVzLmxlbmd0aCA+IDAgJiYgKG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID0gbi5zZWxlY3RlZERhdGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbmZpZy5taW5UaW1lICE9PSB1bmRlZmluZWQgJiYgKG4uY29uZmlnLm1pblRpbWUgPSBuLnBhcnNlRGF0ZShuLmNvbmZpZy5taW5UaW1lLCAiSDppIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnLm1heFRpbWUgIT09IHVuZGVmaW5lZCAmJiAobi5jb25maWcubWF4VGltZSA9IG4ucGFyc2VEYXRlKG4uY29uZmlnLm1heFRpbWUsICJIOmkiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5taW5EYXRlSGFzVGltZSA9ICEhbi5jb25maWcubWluRGF0ZSAmJiAobi5jb25maWcubWluRGF0ZS5nZXRIb3VycygpID4gMCB8fCBuLmNvbmZpZy5taW5EYXRlLmdldE1pbnV0ZXMoKSA+IDAgfHwgbi5jb25maWcubWluRGF0ZS5nZXRTZWNvbmRzKCkgPiAwKSwgbi5tYXhEYXRlSGFzVGltZSA9ICEhbi5jb25maWcubWF4RGF0ZSAmJiAobi5jb25maWcubWF4RGF0ZS5nZXRIb3VycygpID4gMCB8fCBuLmNvbmZpZy5tYXhEYXRlLmdldE1pbnV0ZXMoKSA+IDAgfHwgbi5jb25maWcubWF4RGF0ZS5nZXRTZWNvbmRzKCkgPiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLCBuLnV0aWxzID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldERheXNJbk1vbnRoOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSBuLmN1cnJlbnRNb250aCksIHZvaWQgMCA9PT0gdCAmJiAodCA9IG4uY3VycmVudFllYXIpLCAxID09PSBlICYmICh0ICUgNCA9PSAwICYmIHQgJSAxMDAgIT0gMCB8fCB0ICUgNDAwID09IDApID8gMjkgOiBuLmwxMG4uZGF5c0luTW9udGhbZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmlzTW9iaWxlIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jYWxlbmRhckNvbnRhaW5lciA9IGQoImRpdiIsICJmbGF0cGlja3ItY2FsZW5kYXIiKSwgbi5jYWxlbmRhckNvbnRhaW5lci50YWJJbmRleCA9IC0xLCAhbi5jb25maWcubm9DYWxlbmRhcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5hcHBlbmRDaGlsZCgobi5tb250aE5hdiA9IGQoImRpdiIsICJmbGF0cGlja3ItbW9udGhzIiksIG4ueWVhckVsZW1lbnRzID0gW10sIG4ubW9udGhFbGVtZW50cyA9IFtdLCBuLnByZXZNb250aE5hdiA9IGQoInNwYW4iLCAiZmxhdHBpY2tyLXByZXYtbW9udGgiKSwgbi5wcmV2TW9udGhOYXYuaW5uZXJIVE1MID0gbi5jb25maWcucHJldkFycm93LCBuLm5leHRNb250aE5hdiA9IGQoInNwYW4iLCAiZmxhdHBpY2tyLW5leHQtbW9udGgiKSwgbi5uZXh0TW9udGhOYXYuaW5uZXJIVE1MID0gbi5jb25maWcubmV4dEFycm93LCBHKCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCAiX2hpZGVQcmV2TW9udGhBcnJvdyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5fX2hpZGVQcmV2TW9udGhBcnJvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX19oaWRlUHJldk1vbnRoQXJyb3cgIT09IGUgJiYgKGYobi5wcmV2TW9udGhOYXYsICJmbGF0cGlja3ItZGlzYWJsZWQiLCBlKSwgbi5fX2hpZGVQcmV2TW9udGhBcnJvdyA9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCAiX2hpZGVOZXh0TW9udGhBcnJvdyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5fX2hpZGVOZXh0TW9udGhBcnJvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX19oaWRlTmV4dE1vbnRoQXJyb3cgIT09IGUgJiYgKGYobi5uZXh0TW9udGhOYXYsICJmbGF0cGlja3ItZGlzYWJsZWQiLCBlKSwgbi5fX2hpZGVOZXh0TW9udGhBcnJvdyA9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4uY3VycmVudFllYXJFbGVtZW50ID0gbi55ZWFyRWxlbWVudHNbMF0sIE9lKCksIG4ubW9udGhOYXYpKSwgbi5pbm5lckNvbnRhaW5lciA9IGQoImRpdiIsICJmbGF0cGlja3ItaW5uZXJDb250YWluZXIiKSwgbi5jb25maWcud2Vla051bWJlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFzV2Vla3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBkKCJkaXYiLCAiZmxhdHBpY2tyLXdlZWt3cmFwcGVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuYXBwZW5kQ2hpbGQoZCgic3BhbiIsICJmbGF0cGlja3Itd2Vla2RheSIsIG4ubDEwbi53ZWVrQWJicmV2aWF0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZCgiZGl2IiwgImZsYXRwaWNrci13ZWVrcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hcHBlbmRDaGlsZCh0KSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla1dyYXBwZXI6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrTnVtYmVyczogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LndlZWtXcmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LndlZWtOdW1iZXJzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5pbm5lckNvbnRhaW5lci5hcHBlbmRDaGlsZChyKSwgbi53ZWVrTnVtYmVycyA9IG8sIG4ud2Vla1dyYXBwZXIgPSByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5yQ29udGFpbmVyID0gZCgiZGl2IiwgImZsYXRwaWNrci1yQ29udGFpbmVyIiksIG4uckNvbnRhaW5lci5hcHBlbmRDaGlsZCgkKCkpLCBuLmRheXNDb250YWluZXIgfHwgKG4uZGF5c0NvbnRhaW5lciA9IGQoImRpdiIsICJmbGF0cGlja3ItZGF5cyIpLCBuLmRheXNDb250YWluZXIudGFiSW5kZXggPSAtMSksIFcoKSwgbi5yQ29udGFpbmVyLmFwcGVuZENoaWxkKG4uZGF5c0NvbnRhaW5lciksIG4uaW5uZXJDb250YWluZXIuYXBwZW5kQ2hpbGQobi5yQ29udGFpbmVyKSwgZS5hcHBlbmRDaGlsZChuLmlubmVyQ29udGFpbmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbmZpZy5lbmFibGVUaW1lICYmIGUuYXBwZW5kQ2hpbGQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFzVGltZSIpLCBuLmNvbmZpZy5ub0NhbGVuZGFyICYmIG4uY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgibm9DYWxlbmRhciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IFMobi5jb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnRpbWVDb250YWluZXIgPSBkKCJkaXYiLCAiZmxhdHBpY2tyLXRpbWUiKSwgbi50aW1lQ29udGFpbmVyLnRhYkluZGV4ID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZCgic3BhbiIsICJmbGF0cGlja3ItdGltZS1zZXBhcmF0b3IiLCAiOiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG0oImZsYXRwaWNrci1ob3VyIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWxhYmVsIjogbi5sMTBuLmhvdXJBcmlhTGFiZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmhvdXJFbGVtZW50ID0gci5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBtKCJmbGF0cGlja3ItbWludXRlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWwiOiBuLmwxMG4ubWludXRlQXJpYUxhYmVsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLm1pbnV0ZUVsZW1lbnQgPSBvLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLCBuLmhvdXJFbGVtZW50LnRhYkluZGV4ID0gbi5taW51dGVFbGVtZW50LnRhYkluZGV4ID0gLTEsIG4uaG91ckVsZW1lbnQudmFsdWUgPSBzKG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID8gbi5sYXRlc3RTZWxlY3RlZERhdGVPYmouZ2V0SG91cnMoKSA6IG4uY29uZmlnLnRpbWVfMjRociA/IGUuaG91cnMgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUgJSAyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJSAxMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUuaG91cnMpKSwgbi5taW51dGVFbGVtZW50LnZhbHVlID0gcyhuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA/IG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldE1pbnV0ZXMoKSA6IGUubWludXRlcyksIG4uaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdGVwIiwgbi5jb25maWcuaG91ckluY3JlbWVudC50b1N0cmluZygpKSwgbi5taW51dGVFbGVtZW50LnNldEF0dHJpYnV0ZSgic3RlcCIsIG4uY29uZmlnLm1pbnV0ZUluY3JlbWVudC50b1N0cmluZygpKSwgbi5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1pbiIsIG4uY29uZmlnLnRpbWVfMjRociA/ICIwIiA6ICIxIiksIG4uaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCBuLmNvbmZpZy50aW1lXzI0aHIgPyAiMjMiIDogIjEyIiksIG4uaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiLCAiMiIpLCBuLm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLCAiMCIpLCBuLm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCAiNTkiKSwgbi5taW51dGVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIiwgIjIiKSwgbi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHIpLCBuLnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodCksIG4udGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChvKSwgbi5jb25maWcudGltZV8yNGhyICYmIG4udGltZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJ0aW1lMjRociIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jb25maWcuZW5hYmxlU2Vjb25kcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi50aW1lQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhhc1NlY29uZHMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gbSgiZmxhdHBpY2tyLXNlY29uZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5zZWNvbmRFbGVtZW50ID0gaS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSwgbi5zZWNvbmRFbGVtZW50LnZhbHVlID0gcyhuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA/IG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldFNlY29uZHMoKSA6IGUuc2Vjb25kcyksIG4uc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0ZXAiLCBuLm1pbnV0ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJzdGVwIikpLCBuLnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLCAiMCIpLCBuLnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCAiNTkiKSwgbi5zZWNvbmRFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIiwgIjIiKSwgbi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKGQoInNwYW4iLCAiZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yIiwgIjoiKSksIG4udGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnLnRpbWVfMjRociB8fCAobi5hbVBNID0gZCgic3BhbiIsICJmbGF0cGlja3ItYW0tcG0iLCBuLmwxMG4uYW1QTVt1KChuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA/IG4uaG91ckVsZW1lbnQudmFsdWUgOiBuLmNvbmZpZy5kZWZhdWx0SG91cikgPiAxMSldKSwgbi5hbVBNLnRpdGxlID0gbi5sMTBuLnRvZ2dsZVRpdGxlLCBuLmFtUE0udGFiSW5kZXggPSAtMSwgbi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKG4uYW1QTSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi50aW1lQ29udGFpbmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmKG4uY2FsZW5kYXJDb250YWluZXIsICJyYW5nZU1vZGUiLCAicmFuZ2UiID09PSBuLmNvbmZpZy5tb2RlKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAiYW5pbWF0ZSIsICEwID09PSBuLmNvbmZpZy5hbmltYXRlKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAibXVsdGlNb250aCIsIG4uY29uZmlnLnNob3dNb250aHMgPiAxKSwgbi5jYWxlbmRhckNvbnRhaW5lci5hcHBlbmRDaGlsZChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4uY29uZmlnLmFwcGVuZFRvICE9PSB1bmRlZmluZWQgJiYgbi5jb25maWcuYXBwZW5kVG8ubm9kZVR5cGUgIT09IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4uY29uZmlnLmlubGluZSB8fCBuLmNvbmZpZ1sic3RhdGljIl0pICYmIChuLmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQobi5jb25maWcuaW5saW5lID8gImlubGluZSIgOiAic3RhdGljIiksIG4uY29uZmlnLmlubGluZSAmJiAoIWkgJiYgbi5lbGVtZW50LnBhcmVudE5vZGUgPyBuLmVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobi5jYWxlbmRhckNvbnRhaW5lciwgbi5faW5wdXQubmV4dFNpYmxpbmcpIDogbi5jb25maWcuYXBwZW5kVG8gIT09IHVuZGVmaW5lZCAmJiBuLmNvbmZpZy5hcHBlbmRUby5hcHBlbmRDaGlsZChuLmNhbGVuZGFyQ29udGFpbmVyKSksIG4uY29uZmlnWyJzdGF0aWMiXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBkKCJkaXYiLCAiZmxhdHBpY2tyLXdyYXBwZXIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5lbGVtZW50LnBhcmVudE5vZGUgJiYgbi5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsIG4uZWxlbWVudCksIGEuYXBwZW5kQ2hpbGQobi5lbGVtZW50KSwgbi5hbHRJbnB1dCAmJiBhLmFwcGVuZENoaWxkKG4uYWx0SW5wdXQpLCBhLmFwcGVuZENoaWxkKG4uY2FsZW5kYXJDb250YWluZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnWyJzdGF0aWMiXSB8fCBuLmNvbmZpZy5pbmxpbmUgfHwgKG4uY29uZmlnLmFwcGVuZFRvICE9PSB1bmRlZmluZWQgPyBuLmNvbmZpZy5hcHBlbmRUbyA6IHdpbmRvdy5kb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZChuLmNhbGVuZGFyQ29udGFpbmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcud3JhcCAmJiBbIm9wZW4iLCAiY2xvc2UiLCAidG9nZ2xlIiwgImNsZWFyIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG4uZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS0iICsgZSArICJdIiksIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTCh0LCAiY2xpY2siLCBuW2VdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uaXNNb2JpbGUpIHJldHVybiB2b2lkCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG4uY29uZmlnLmVuYWJsZVRpbWUgPyBuLmNvbmZpZy5ub0NhbGVuZGFyID8gInRpbWUiIDogImRhdGV0aW1lLWxvY2FsIiA6ICJkYXRlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5tb2JpbGVJbnB1dCA9IGQoImlucHV0Iiwgbi5pbnB1dC5jbGFzc05hbWUgKyAiIGZsYXRwaWNrci1tb2JpbGUiKSwgbi5tb2JpbGVJbnB1dC50YWJJbmRleCA9IDEsIG4ubW9iaWxlSW5wdXQudHlwZSA9IGUsIG4ubW9iaWxlSW5wdXQuZGlzYWJsZWQgPSBuLmlucHV0LmRpc2FibGVkLCBuLm1vYmlsZUlucHV0LnJlcXVpcmVkID0gbi5pbnB1dC5yZXF1aXJlZCwgbi5tb2JpbGVJbnB1dC5wbGFjZWhvbGRlciA9IG4uaW5wdXQucGxhY2Vob2xkZXIsIG4ubW9iaWxlRm9ybWF0U3RyID0gImRhdGV0aW1lLWxvY2FsIiA9PT0gZSA/ICJZLW0tZFxcVEg6aTpTIiA6ICJkYXRlIiA9PT0gZSA/ICJZLW0tZCIgOiAiSDppOlMiLCBuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMCAmJiAobi5tb2JpbGVJbnB1dC5kZWZhdWx0VmFsdWUgPSBuLm1vYmlsZUlucHV0LnZhbHVlID0gbi5mb3JtYXREYXRlKG4uc2VsZWN0ZWREYXRlc1swXSwgbi5tb2JpbGVGb3JtYXRTdHIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcubWluRGF0ZSAmJiAobi5tb2JpbGVJbnB1dC5taW4gPSBuLmZvcm1hdERhdGUobi5jb25maWcubWluRGF0ZSwgIlktbS1kIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbmZpZy5tYXhEYXRlICYmIChuLm1vYmlsZUlucHV0Lm1heCA9IG4uZm9ybWF0RGF0ZShuLmNvbmZpZy5tYXhEYXRlLCAiWS1tLWQiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaW5wdXQuZ2V0QXR0cmlidXRlKCJzdGVwIikgJiYgKG4ubW9iaWxlSW5wdXQuc3RlcCA9IFN0cmluZyhuLmlucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaW5wdXQudHlwZSA9ICJoaWRkZW4iLCBuLmFsdElucHV0ICE9PSB1bmRlZmluZWQgJiYgKG4uYWx0SW5wdXQudHlwZSA9ICJoaWRkZW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaW5wdXQucGFyZW50Tm9kZSAmJiBuLmlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4ubW9iaWxlSW5wdXQsIG4uaW5wdXQubmV4dFNpYmxpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwobi5tb2JpbGVJbnB1dCwgImNoYW5nZSIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNldERhdGUoeShlKS52YWx1ZSwgITEsIG4ubW9iaWxlRm9ybWF0U3RyKSwgdmUoIm9uQ2hhbmdlIiksIHZlKCJvbkNsb3NlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbChhZSwgNTApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2RlYm91bmNlZENoYW5nZSA9IGwoSSwgMzAwKSwgbi5kYXlzQ29udGFpbmVyICYmICEvaVBob25lfGlQYWR8aVBvZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgTChuLmRheXNDb250YWluZXIsICJtb3VzZW92ZXIiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmFuZ2UiID09PSBuLmNvbmZpZy5tb2RlICYmIGllKHkoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwobi5faW5wdXQsICJrZXlkb3duIiwgb2UpLCBuLmNhbGVuZGFyQ29udGFpbmVyICE9PSB1bmRlZmluZWQgJiYgTChuLmNhbGVuZGFyQ29udGFpbmVyLCAia2V5ZG93biIsIG9lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbmZpZy5pbmxpbmUgfHwgbi5jb25maWdbInN0YXRpYyJdIHx8IEwod2luZG93LCAicmVzaXplIiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9udG91Y2hzdGFydCAhPT0gdW5kZWZpbmVkID8gTCh3aW5kb3cuZG9jdW1lbnQsICJ0b3VjaHN0YXJ0IiwgSikgOiBMKHdpbmRvdy5kb2N1bWVudCwgIm1vdXNlZG93biIsIEopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwod2luZG93LmRvY3VtZW50LCAiZm9jdXMiLCBKLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksICEwID09PSBuLmNvbmZpZy5jbGlja09wZW5zICYmIChMKG4uX2lucHV0LCAiZm9jdXMiLCBuLm9wZW4pLCBMKG4uX2lucHV0LCAiY2xpY2siLCBuLm9wZW4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmRheXNDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJiAoTChuLm1vbnRoTmF2LCAiY2xpY2siLCBrZSksIEwobi5tb250aE5hdiwgWyJrZXl1cCIsICJpbmNyZW1lbnQiXSwgTSksIEwobi5kYXlzQ29udGFpbmVyLCAiY2xpY2siLCBwZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLnRpbWVDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJiBuLm1pbnV0ZUVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJiBuLmhvdXJFbGVtZW50ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geShlKS5zZWxlY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMKG4udGltZUNvbnRhaW5lciwgWyJpbmNyZW1lbnQiXSwgTyksIEwobi50aW1lQ29udGFpbmVyLCAiYmx1ciIsIE8sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBMKG4udGltZUNvbnRhaW5lciwgImNsaWNrIiwgcSksIEwoW24uaG91ckVsZW1lbnQsIG4ubWludXRlRWxlbWVudF0sIFsiZm9jdXMiLCAiY2xpY2siXSwgdCksIG4uc2Vjb25kRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIEwobi5zZWNvbmRFbGVtZW50LCAiZm9jdXMiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zZWNvbmRFbGVtZW50ICYmIG4uc2Vjb25kRWxlbWVudC5zZWxlY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4uYW1QTSAhPT0gdW5kZWZpbmVkICYmIEwobi5hbVBNLCAiY2xpY2siLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyhlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcuYWxsb3dJbnB1dCAmJiBMKG4uX2lucHV0LCAiYmx1ciIsIHJlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLCAobi5zZWxlY3RlZERhdGVzLmxlbmd0aCB8fCBuLmNvbmZpZy5ub0NhbGVuZGFyKSAmJiAobi5jb25maWcuZW5hYmxlVGltZSAmJiBEKG4uY29uZmlnLm5vQ2FsZW5kYXIgPyBuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA6IHVuZGVmaW5lZCksIHhlKCExKSksIGIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAhbi5pc01vYmlsZSAmJiBpICYmIGNlKCksIHZlKCJvblJlYWR5IikKICAgICAgICAgICAgICAgICAgICB9KCksIG4KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBEKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgciA9IFtdLCBvID0gMDsgbyA8IG4ubGVuZ3RoOyBvKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuW29dOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGkuZ2V0QXR0cmlidXRlKCJkYXRhLWZwLW9taXQiKSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLl9mbGF0cGlja3IgIT09IHVuZGVmaW5lZCAmJiAoaS5fZmxhdHBpY2tyLmRlc3Ryb3koKSwgaS5fZmxhdHBpY2tyID0gdW5kZWZpbmVkKSwgaS5fZmxhdHBpY2tyID0gQShpLCB0IHx8IHt9KSwgci5wdXNoKGkuX2ZsYXRwaWNrcikKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihhKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAxID09PSByLmxlbmd0aCA/IHJbMF0gOiByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAidW5kZWZpbmVkIiAhPSB0eXBlb2YgSFRNTEVsZW1lbnQgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIEhUTUxDb2xsZWN0aW9uICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBOb2RlTGlzdCAmJiAoSFRNTENvbGxlY3Rpb24ucHJvdG90eXBlLmZsYXRwaWNrciA9IE5vZGVMaXN0LnByb3RvdHlwZS5mbGF0cGlja3IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEQodGhpcywgZSkKICAgICAgICAgICAgICAgIH0sIEhUTUxFbGVtZW50LnByb3RvdHlwZS5mbGF0cGlja3IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEQoW3RoaXNdLCBlKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgVCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBEKHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGUpLCB0KSA6IGUgaW5zdGFuY2VvZiBOb2RlID8gRChbZV0sIHQpIDogRChlLCB0KQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIFQuZGVmYXVsdENvbmZpZyA9IHt9LCBULmwxMG5zID0gewogICAgICAgICAgICAgICAgICAgIGVuOiBqKHt9LCBhKSwKICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGooe30sIGEpCiAgICAgICAgICAgICAgICB9LCBULmxvY2FsaXplID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIFQubDEwbnNbImRlZmF1bHQiXSA9IGooaih7fSwgVC5sMTBuc1siZGVmYXVsdCJdKSwgZSkKICAgICAgICAgICAgICAgIH0sIFQuc2V0RGVmYXVsdHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgVC5kZWZhdWx0Q29uZmlnID0gaihqKHt9LCBULmRlZmF1bHRDb25maWcpLCBlKQogICAgICAgICAgICAgICAgfSwgVC5wYXJzZURhdGUgPSB4KHt9KSwgVC5mb3JtYXREYXRlID0gXyh7fSksIFQuY29tcGFyZURhdGVzID0gaywgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGpRdWVyeSAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgalF1ZXJ5LmZuICYmIChqUXVlcnkuZm4uZmxhdHBpY2tyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBEKHRoaXMsIGUpCiAgICAgICAgICAgICAgICB9KSwgRGF0ZS5wcm90b3R5cGUuZnBfaW5jciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLCB0aGlzLmdldE1vbnRoKCksIHRoaXMuZ2V0RGF0ZSgpICsgKCJzdHJpbmciID09IHR5cGVvZiBlID8gcGFyc2VJbnQoZSwgMTApIDogZSkpCiAgICAgICAgICAgICAgICB9LCAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ICYmICh3aW5kb3cuZmxhdHBpY2tyID0gVCk7CiAgICAgICAgICAgICAgICB2YXIgTiA9IFQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTg5NTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAiZnVuY3Rpb24iICE9IHR5cGVvZiBPYmplY3QuYXNzaWduICYmIChPYmplY3QuYXNzaWduID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBbXSwgbiA9IDE7IG4gPCBhcmd1bWVudHMubGVuZ3RoOyBuKyspIHRbbiAtIDFdID0gYXJndW1lbnRzW25dOwogICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCAmJiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbbl0gPSB0W25dCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgbyA9IDAsIGkgPSB0OyBvIDwgaS5sZW5ndGg7IG8rKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGlbb107CiAgICAgICAgICAgICAgICAgICAgICAgIHIoYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg1NTI6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NTIpKG4oNTYzOSksICJEYXRhVmlldyIpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICB9LAogICAgICAgICAgICAxOTg5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oMTc4OSksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oNDAxKSwKICAgICAgICAgICAgICAgICAgICBpID0gbig3NjY3KSwKICAgICAgICAgICAgICAgICAgICBhID0gbigxMzI3KSwKICAgICAgICAgICAgICAgICAgICBzID0gbigxODY2KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gbnVsbCA9PSBlID8gMCA6IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGZvciAodGhpcy5jbGVhcigpOyArK3QgPCBuOykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHJbMF0sIHJbMV0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdS5wcm90b3R5cGUuY2xlYXIgPSByLCB1LnByb3RvdHlwZVsiZGVsZXRlIl0gPSBvLCB1LnByb3RvdHlwZS5nZXQgPSBpLCB1LnByb3RvdHlwZS5oYXMgPSBhLCB1LnByb3RvdHlwZS5zZXQgPSBzLCBlLmV4cG9ydHMgPSB1CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg0MDc6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig3MDQwKSwKICAgICAgICAgICAgICAgICAgICBvID0gbig0MTI1KSwKICAgICAgICAgICAgICAgICAgICBpID0gbigyMTE3KSwKICAgICAgICAgICAgICAgICAgICBhID0gbig3NTE4KSwKICAgICAgICAgICAgICAgICAgICBzID0gbig0NzA1KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gbnVsbCA9PSBlID8gMCA6IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGZvciAodGhpcy5jbGVhcigpOyArK3QgPCBuOykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHJbMF0sIHJbMV0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdS5wcm90b3R5cGUuY2xlYXIgPSByLCB1LnByb3RvdHlwZVsiZGVsZXRlIl0gPSBvLCB1LnByb3RvdHlwZS5nZXQgPSBpLCB1LnByb3RvdHlwZS5oYXMgPSBhLCB1LnByb3RvdHlwZS5zZXQgPSBzLCBlLmV4cG9ydHMgPSB1CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDcwNzE6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NTIpKG4oNTYzOSksICJNYXAiKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMzM2OTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDQ3ODUpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDEyODUpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDZlMyksCiAgICAgICAgICAgICAgICAgICAgYSA9IG4oOTkxNiksCiAgICAgICAgICAgICAgICAgICAgcyA9IG4oNTI2NSk7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG51bGwgPT0gZSA/IDAgOiBlLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHRoaXMuY2xlYXIoKTsgKyt0IDwgbjspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlW3RdOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldChyWzBdLCByWzFdKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHUucHJvdG90eXBlLmNsZWFyID0gciwgdS5wcm90b3R5cGVbImRlbGV0ZSJdID0gbywgdS5wcm90b3R5cGUuZ2V0ID0gaSwgdS5wcm90b3R5cGUuaGFzID0gYSwgdS5wcm90b3R5cGUuc2V0ID0gcywgZS5leHBvcnRzID0gdQogICAgICAgICAgICB9LAogICAgICAgICAgICAzODE4OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODUyKShuKDU2MzkpLCAiUHJvbWlzZSIpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICB9LAogICAgICAgICAgICA4NTI1OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODUyKShuKDU2MzkpLCAiU2V0Iik7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSByCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg2Njg6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbigzMzY5KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig2MTkpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDIzODUpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBudWxsID09IGUgPyAwIDogZS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0aGlzLl9fZGF0YV9fID0gbmV3IHI7ICsrdCA8IG47KSB0aGlzLmFkZChlW3RdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYS5wcm90b3R5cGUuYWRkID0gYS5wcm90b3R5cGUucHVzaCA9IG8sIGEucHJvdG90eXBlLmhhcyA9IGksIGUuZXhwb3J0cyA9IGEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNjM4NDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDg0MDcpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDc0NjUpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDM3NzkpLAogICAgICAgICAgICAgICAgICAgIGEgPSBuKDc1OTkpLAogICAgICAgICAgICAgICAgICAgIHMgPSBuKDQ3NTgpLAogICAgICAgICAgICAgICAgICAgIHUgPSBuKDQzMDkpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fX2RhdGFfXyA9IG5ldyByKGUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2l6ZSA9IHQuc2l6ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbC5wcm90b3R5cGUuY2xlYXIgPSBvLCBsLnByb3RvdHlwZVsiZGVsZXRlIl0gPSBpLCBsLnByb3RvdHlwZS5nZXQgPSBhLCBsLnByb3RvdHlwZS5oYXMgPSBzLCBsLnByb3RvdHlwZS5zZXQgPSB1LCBlLmV4cG9ydHMgPSBsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDI3MDU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig1NjM5KS5TeW1ib2w7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSByCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDExNDk6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig1NjM5KS5VaW50OEFycmF5OwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICB9LAogICAgICAgICAgICA1Nzc6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NTIpKG4oNTYzOSksICJXZWFrTWFwIik7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSByCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQ5NjM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gLTEsIHIgPSBudWxsID09IGUgPyAwIDogZS5sZW5ndGgsIG8gPSAwLCBpID0gW107ICsrbiA8IHI7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZVtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgdChhLCBuLCBlKSAmJiAoaVtvKytdID0gYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDYzNjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDI1NDUpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDU2OTQpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDE0NjkpLAogICAgICAgICAgICAgICAgICAgIGEgPSBuKDQxNDQpLAogICAgICAgICAgICAgICAgICAgIHMgPSBuKDU3NzYpLAogICAgICAgICAgICAgICAgICAgIHUgPSBuKDY3MTkpLAogICAgICAgICAgICAgICAgICAgIGwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gaShlKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICFuICYmIG8oZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAhbiAmJiAhYyAmJiBhKGUpLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gIW4gJiYgIWMgJiYgIWYgJiYgdShlKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG4gfHwgYyB8fCBmIHx8IGQsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBwID8gcihlLmxlbmd0aCwgU3RyaW5nKSA6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBtID0gaC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeSBpbiBlKSAhdCAmJiAhbC5jYWxsKGUsIHkpIHx8IHAgJiYgKCJsZW5ndGgiID09IHkgfHwgZiAmJiAoIm9mZnNldCIgPT0geSB8fCAicGFyZW50IiA9PSB5KSB8fCBkICYmICgiYnVmZmVyIiA9PSB5IHx8ICJieXRlTGVuZ3RoIiA9PSB5IHx8ICJieXRlT2Zmc2V0IiA9PSB5KSB8fCBzKHksIG0pKSB8fCBoLnB1c2goeSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjQ4ODogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAtMSwgciA9IHQubGVuZ3RoLCBvID0gZS5sZW5ndGg7ICsrbiA8IHI7KSBlW28gKyBuXSA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjkwODogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAtMSwgciA9IG51bGwgPT0gZSA/IDAgOiBlLmxlbmd0aDsgKytuIDwgcjspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KGVbbl0sIG4sIGUpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg0NzA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig3ODEzKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gZS5sZW5ndGg7IG4tLTspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKGVbbl1bMF0sIHQpKSByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgODg2NjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDI0ODgpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDE0NjkpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdChlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyhlKSA/IGkgOiByKGksIG4oZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQyMzk6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbigyNzA1KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig5NjA3KSwKICAgICAgICAgICAgICAgICAgICBpID0gbigyMzMzKSwKICAgICAgICAgICAgICAgICAgICBhID0gciA/IHIudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IGUgPT09IHVuZGVmaW5lZCA/ICJbb2JqZWN0IFVuZGVmaW5lZF0iIDogIltvYmplY3QgTnVsbF0iIDogYSAmJiBhIGluIE9iamVjdChlKSA/IG8oZSkgOiBpKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDk0NTQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig0MjM5KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig3MDA1KTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyhlKSAmJiAiW29iamVjdCBBcmd1bWVudHNdIiA9PSByKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDkzOTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDI0OTIpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDcwMDUpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24gaShlLCB0LCBuLCBhLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgfHwgKG51bGwgPT0gZSB8fCBudWxsID09IHQgfHwgIW8oZSkgJiYgIW8odCkgPyBlICE9IGUgJiYgdCAhPSB0IDogcihlLCB0LCBuLCBhLCBpLCBzKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjQ5MjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDYzODQpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDcxMTQpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDgzNTEpLAogICAgICAgICAgICAgICAgICAgIGEgPSBuKDYwOTYpLAogICAgICAgICAgICAgICAgICAgIHMgPSBuKDQxNjApLAogICAgICAgICAgICAgICAgICAgIHUgPSBuKDE0NjkpLAogICAgICAgICAgICAgICAgICAgIGwgPSBuKDQxNDQpLAogICAgICAgICAgICAgICAgICAgIGMgPSBuKDY3MTkpLAogICAgICAgICAgICAgICAgICAgIGYgPSAiW29iamVjdCBBcmd1bWVudHNdIiwKICAgICAgICAgICAgICAgICAgICBkID0gIltvYmplY3QgQXJyYXldIiwKICAgICAgICAgICAgICAgICAgICBwID0gIltvYmplY3QgT2JqZWN0XSIsCiAgICAgICAgICAgICAgICAgICAgaCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuLCBtLCB5LCBnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSB1KGUpLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gdSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHYgPyBkIDogcyhlKSwKICAgICAgICAgICAgICAgICAgICAgICAgTyA9IGIgPyBkIDogcyh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgXyA9ICh3ID0gdyA9PSBmID8gcCA6IHcpID09IHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSAoTyA9IE8gPT0gZiA/IHAgOiBPKSA9PSBwLAogICAgICAgICAgICAgICAgICAgICAgICBrID0gdyA9PSBPOwogICAgICAgICAgICAgICAgICAgIGlmIChrICYmIGwoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAhMCwgXyA9ICExCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChrICYmICFfKSByZXR1cm4gZyB8fCAoZyA9IG5ldyByKSwgdiB8fCBjKGUpID8gbyhlLCB0LCBuLCBtLCB5LCBnKSA6IGkoZSwgdCwgdywgbiwgbSwgeSwgZyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoMSAmIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBFID0gXyAmJiBoLmNhbGwoZSwgIl9fd3JhcHBlZF9fIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0geCAmJiBoLmNhbGwodCwgIl9fd3JhcHBlZF9fIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFIHx8IEMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBTID0gRSA/IGUudmFsdWUoKSA6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IEMgPyB0LnZhbHVlKCkgOiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcgfHwgKGcgPSBuZXcgciksIHkoUywgaiwgbiwgbSwgZykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFrICYmIChnIHx8IChnID0gbmV3IHIpLCBhKGUsIHQsIG4sIG0sIHksIGcpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA4NDU4OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oMzU2MCksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oNTM0NiksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oMzIxOCksCiAgICAgICAgICAgICAgICAgICAgYSA9IG4oMzQ2KSwKICAgICAgICAgICAgICAgICAgICBzID0gL15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sCiAgICAgICAgICAgICAgICAgICAgdSA9IEZ1bmN0aW9uLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICBsID0gT2JqZWN0LnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICBjID0gdS50b1N0cmluZywKICAgICAgICAgICAgICAgICAgICBmID0gbC5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICBkID0gUmVnRXhwKCJeIiArIGMuY2FsbChmKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywgIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCAiJDEuKj8iKSArICIkIik7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoIWkoZSkgfHwgbyhlKSkgJiYgKHIoZSkgPyBkIDogcykudGVzdChhKGUpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA4NzQ5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDIzOSksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oMTc4MCksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oNzAwNSksCiAgICAgICAgICAgICAgICAgICAgYSA9IHt9OwogICAgICAgICAgICAgICAgYVsiW29iamVjdCBGbG9hdDMyQXJyYXldIl0gPSBhWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXSA9IGFbIltvYmplY3QgSW50OEFycmF5XSJdID0gYVsiW29iamVjdCBJbnQxNkFycmF5XSJdID0gYVsiW29iamVjdCBJbnQzMkFycmF5XSJdID0gYVsiW29iamVjdCBVaW50OEFycmF5XSJdID0gYVsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXSA9IGFbIltvYmplY3QgVWludDE2QXJyYXldIl0gPSBhWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdID0gITAsIGFbIltvYmplY3QgQXJndW1lbnRzXSJdID0gYVsiW29iamVjdCBBcnJheV0iXSA9IGFbIltvYmplY3QgQXJyYXlCdWZmZXJdIl0gPSBhWyJbb2JqZWN0IEJvb2xlYW5dIl0gPSBhWyJbb2JqZWN0IERhdGFWaWV3XSJdID0gYVsiW29iamVjdCBEYXRlXSJdID0gYVsiW29iamVjdCBFcnJvcl0iXSA9IGFbIltvYmplY3QgRnVuY3Rpb25dIl0gPSBhWyJbb2JqZWN0IE1hcF0iXSA9IGFbIltvYmplY3QgTnVtYmVyXSJdID0gYVsiW29iamVjdCBPYmplY3RdIl0gPSBhWyJbb2JqZWN0IFJlZ0V4cF0iXSA9IGFbIltvYmplY3QgU2V0XSJdID0gYVsiW29iamVjdCBTdHJpbmddIl0gPSBhWyJbb2JqZWN0IFdlYWtNYXBdIl0gPSAhMSwgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpKGUpICYmIG8oZS5sZW5ndGgpICYmICEhYVtyKGUpXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAyODA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig1NzI2KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig2OTE2KSwKICAgICAgICAgICAgICAgICAgICBpID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXIoZSkpIHJldHVybiBvKGUpOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBPYmplY3QoZSkpIGkuY2FsbChlLCBuKSAmJiAiY29uc3RydWN0b3IiICE9IG4gJiYgdC5wdXNoKG4pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDI1NDU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gLTEsIHIgPSBBcnJheShlKTsgKytuIDwgZTspIHJbbl0gPSB0KG4pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDE3MTc6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSh0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDc1NzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmhhcyh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA0NDI5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNTYzOSlbIl9fY29yZS1qc19zaGFyZWRfXyJdOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICB9LAogICAgICAgICAgICA3MTE0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODY2OCksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oMjkwOCksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oNDc1Nyk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuLCBhLCBzLCB1KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSAxICYgbiwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gdC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gZiAmJiAhKGwgJiYgZiA+IGMpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB1LmdldChlKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHUuZ2V0KHQpOwogICAgICAgICAgICAgICAgICAgIGlmIChkICYmIHApIHJldHVybiBkID09IHQgJiYgcCA9PSBlOwogICAgICAgICAgICAgICAgICAgIHZhciBoID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IDIgJiBuID8gbmV3IHIgOiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgZm9yICh1LnNldChlLCB0KSwgdS5zZXQodCwgZSk7ICsraCA8IGM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZVtoXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0W2hdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSkgdmFyIGIgPSBsID8gYSh2LCBnLCBoLCB0LCBlLCB1KSA6IGEoZywgdiwgaCwgZSwgdCwgdSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbyh0LCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkoeSwgdCkgJiYgKGcgPT09IGUgfHwgcyhnLCBlLCBuLCBhLCB1KSkpIHJldHVybiB5LnB1c2godCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChnICE9PSB2ICYmICFzKGcsIHYsIG4sIGEsIHUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB1WyJkZWxldGUiXShlKSwgdVsiZGVsZXRlIl0odCksIG0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgODM1MTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDI3MDUpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDExNDkpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDc4MTMpLAogICAgICAgICAgICAgICAgICAgIGEgPSBuKDcxMTQpLAogICAgICAgICAgICAgICAgICAgIHMgPSBuKDg3NzYpLAogICAgICAgICAgICAgICAgICAgIHUgPSBuKDE4MTQpLAogICAgICAgICAgICAgICAgICAgIGwgPSByID8gci5wcm90b3R5cGUgOiB1bmRlZmluZWQsCiAgICAgICAgICAgICAgICAgICAgYyA9IGwgPyBsLnZhbHVlT2YgOiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuLCByLCBsLCBmLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgRGF0YVZpZXddIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmJ5dGVMZW5ndGggIT0gdC5ieXRlTGVuZ3RoIHx8IGUuYnl0ZU9mZnNldCAhPSB0LmJ5dGVPZmZzZXQpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlLmJ1ZmZlciwgdCA9IHQuYnVmZmVyOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IEFycmF5QnVmZmVyXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShlLmJ5dGVMZW5ndGggIT0gdC5ieXRlTGVuZ3RoIHx8ICFmKG5ldyBvKGUpLCBuZXcgbyh0KSkpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IEJvb2xlYW5dIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiW29iamVjdCBEYXRlXSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgTnVtYmVyXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSgrZSwgK3QpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IEVycm9yXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5uYW1lID09IHQubmFtZSAmJiBlLm1lc3NhZ2UgPT0gdC5tZXNzYWdlOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IFJlZ0V4cF0iOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IFN0cmluZ10iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT0gdCArICIiOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IE1hcF0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IFNldF0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSAxICYgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwIHx8IChwID0gdSksIGUuc2l6ZSAhPSB0LnNpemUgJiYgIWgpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gZC5nZXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSkgcmV0dXJuIG0gPT0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgfD0gMiwgZC5zZXQoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGEocChlKSwgcCh0KSwgciwgbCwgZiwgZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZFsiZGVsZXRlIl0oZSksIHk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgU3ltYm9sXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYykgcmV0dXJuIGMuY2FsbChlKSA9PSBjLmNhbGwodCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDYwOTY6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4MjM0KSwKICAgICAgICAgICAgICAgICAgICBvID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4sIGksIGEsIHMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IDEgJiBuLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gcihlKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGlmIChjICE9IHIodCkubGVuZ3RoICYmICF1KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZiA9IGM7IGYtLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBsW2ZdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh1ID8gZCBpbiB0IDogby5jYWxsKHQsIGQpKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBwID0gcy5nZXQoZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzLmdldCh0KTsKICAgICAgICAgICAgICAgICAgICBpZiAocCAmJiBoKSByZXR1cm4gcCA9PSB0ICYmIGggPT0gZTsKICAgICAgICAgICAgICAgICAgICB2YXIgbSA9ICEwOwogICAgICAgICAgICAgICAgICAgIHMuc2V0KGUsIHQpLCBzLnNldCh0LCBlKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gdTsgKytmIDwgYzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBlW2QgPSBsW2ZdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0W2RdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkgdmFyIGIgPSB1ID8gaSh2LCBnLCBkLCB0LCBlLCBzKSA6IGkoZywgdiwgZCwgZSwgdCwgcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGIgPT09IHVuZGVmaW5lZCA/IGcgPT09IHYgfHwgYShnLCB2LCBuLCBpLCBzKSA6IGIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHkgfHwgKHkgPSAiY29uc3RydWN0b3IiID09IGQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChtICYmICF5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gZS5jb25zdHJ1Y3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSB0LmNvbnN0cnVjdG9yOwogICAgICAgICAgICAgICAgICAgICAgICB3ID09IE8gfHwgISgiY29uc3RydWN0b3IiIGluIGUpIHx8ICEoImNvbnN0cnVjdG9yIiBpbiB0KSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiB3ICYmIHcgaW5zdGFuY2VvZiB3ICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIE8gJiYgTyBpbnN0YW5jZW9mIE8gfHwgKG0gPSAhMSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNbImRlbGV0ZSJdKGUpLCBzWyJkZWxldGUiXSh0KSwgbQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAxOTU3OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9ICJvYmplY3QiID09IHR5cGVvZiBuLmcgJiYgbi5nICYmIG4uZy5PYmplY3QgPT09IE9iamVjdCAmJiBuLmc7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSByCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDgyMzQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4ODY2KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig5NTUxKSwKICAgICAgICAgICAgICAgICAgICBpID0gbigzNjc0KTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCBpLCBvKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA1MDUwOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNzAxOSk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByKHQpID8gblsic3RyaW5nIiA9PSB0eXBlb2YgdCA/ICJzdHJpbmciIDogImhhc2giXSA6IG4ubWFwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg1MjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDg0NTgpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDc4MDEpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gbyhlLCB0KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihuKSA/IG4gOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgOTYwNzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDI3MDUpLAogICAgICAgICAgICAgICAgICAgIG8gPSBPYmplY3QucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgIGkgPSBvLmhhc093blByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgIGEgPSBvLnRvU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIHMgPSByID8gci50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGkuY2FsbChlLCBzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbc107CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgZVtzXSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAhMAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHUpIHt9CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBhLmNhbGwoZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgJiYgKHQgPyBlW3NdID0gbiA6IGRlbGV0ZSBlW3NdKSwgbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA5NTUxOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDk2MyksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oNDc5KSwKICAgICAgICAgICAgICAgICAgICBpID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSwKICAgICAgICAgICAgICAgICAgICBhID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scywKICAgICAgICAgICAgICAgICAgICBzID0gYSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IFtdIDogKGUgPSBPYmplY3QoZSksIHIoYShlKSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNhbGwoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgICAgIH0gOiBvOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcwogICAgICAgICAgICB9LAogICAgICAgICAgICA0MTYwOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODU1MiksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oNzA3MSksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oMzgxOCksCiAgICAgICAgICAgICAgICAgICAgYSA9IG4oODUyNSksCiAgICAgICAgICAgICAgICAgICAgcyA9IG4oNTc3KSwKICAgICAgICAgICAgICAgICAgICB1ID0gbig0MjM5KSwKICAgICAgICAgICAgICAgICAgICBsID0gbigzNDYpLAogICAgICAgICAgICAgICAgICAgIGMgPSAiW29iamVjdCBNYXBdIiwKICAgICAgICAgICAgICAgICAgICBmID0gIltvYmplY3QgUHJvbWlzZV0iLAogICAgICAgICAgICAgICAgICAgIGQgPSAiW29iamVjdCBTZXRdIiwKICAgICAgICAgICAgICAgICAgICBwID0gIltvYmplY3QgV2Vha01hcF0iLAogICAgICAgICAgICAgICAgICAgIGggPSAiW29iamVjdCBEYXRhVmlld10iLAogICAgICAgICAgICAgICAgICAgIG0gPSBsKHIpLAogICAgICAgICAgICAgICAgICAgIHkgPSBsKG8pLAogICAgICAgICAgICAgICAgICAgIGcgPSBsKGkpLAogICAgICAgICAgICAgICAgICAgIHYgPSBsKGEpLAogICAgICAgICAgICAgICAgICAgIGIgPSBsKHMpLAogICAgICAgICAgICAgICAgICAgIHcgPSB1OwogICAgICAgICAgICAgICAgKHIgJiYgdyhuZXcgcihuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBoIHx8IG8gJiYgdyhuZXcgbykgIT0gYyB8fCBpICYmIHcoaS5yZXNvbHZlKCkpICE9IGYgfHwgYSAmJiB3KG5ldyBhKSAhPSBkIHx8IHMgJiYgdyhuZXcgcykgIT0gcCkgJiYgKHcgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB1KGUpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gIltvYmplY3QgT2JqZWN0XSIgPT0gdCA/IGUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuID8gbChuKSA6ICIiOwogICAgICAgICAgICAgICAgICAgIGlmIChyKSBzd2l0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZjsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgYjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9KSwgZS5leHBvcnRzID0gdwogICAgICAgICAgICB9LAogICAgICAgICAgICA3ODAxOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IHVuZGVmaW5lZCA6IGVbdF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTc4OTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDQ1MzYpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fX2RhdGFfXyA9IHIgPyByKG51bGwpIDoge30sIHRoaXMuc2l6ZSA9IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDAxOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmhhcyhlKSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1tlXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaXplIC09IHQgPyAxIDogMCwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3NjY3OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDUzNiksCiAgICAgICAgICAgICAgICAgICAgbyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdFtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiA9PT0gbiA/IHVuZGVmaW5lZCA6IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uY2FsbCh0LCBlKSA/IHRbZV0gOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTMyNzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDQ1MzYpLAogICAgICAgICAgICAgICAgICAgIG8gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fX2RhdGFfXzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA/IHRbZV0gIT09IHVuZGVmaW5lZCA6IG8uY2FsbCh0LCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAxODY2OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDUzNik7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNpemUgKz0gdGhpcy5oYXMoZSkgPyAwIDogMSwgbltlXSA9IHIgJiYgdCA9PT0gdW5kZWZpbmVkID8gIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iIDogdCwgdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA1Nzc2OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IC9eKD86MHxbMS05XVxkKikkLzsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHR5cGVvZiBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIShuID0gbnVsbCA9PSBuID8gOTAwNzE5OTI1NDc0MDk5MSA6IG4pICYmICgibnVtYmVyIiA9PSByIHx8ICJzeW1ib2wiICE9IHIgJiYgdC50ZXN0KGUpKSAmJiBlID4gLTEgJiYgZSAlIDEgPT0gMCAmJiBlIDwgbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3MDE5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0eXBlb2YgZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdCB8fCAibnVtYmVyIiA9PSB0IHx8ICJzeW1ib2wiID09IHQgfHwgImJvb2xlYW4iID09IHQgPyAiX19wcm90b19fIiAhPT0gZSA6IG51bGwgPT09IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNTM0NjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBuKDQ0MjkpLAogICAgICAgICAgICAgICAgICAgIGkgPSAociA9IC9bXi5dKyQvLmV4ZWMobyAmJiBvLmtleXMgJiYgby5rZXlzLklFX1BST1RPIHx8ICIiKSkgPyAiU3ltYm9sKHNyYylfMS4iICsgciA6ICIiOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWkgJiYgaSBpbiBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDU3MjY6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gT2JqZWN0LnByb3RvdHlwZTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUgJiYgZS5jb25zdHJ1Y3RvcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gKCJmdW5jdGlvbiIgPT0gdHlwZW9mIG4gJiYgbi5wcm90b3R5cGUgfHwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzA0MDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fX2RhdGFfXyA9IFtdLCB0aGlzLnNpemUgPSAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQxMjU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NDcwKSwKICAgICAgICAgICAgICAgICAgICBvID0gQXJyYXkucHJvdG90eXBlLnNwbGljZTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX18sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByKHQsIGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKG4gPCAwKSAmJiAobiA9PSB0Lmxlbmd0aCAtIDEgPyB0LnBvcCgpIDogby5jYWxsKHQsIG4sIDEpLCAtLXRoaXMuc2l6ZSwgITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDIxMTc6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NDcwKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX18sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByKHQsIGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuIDwgMCA/IHVuZGVmaW5lZCA6IHRbbl1bMV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzUxODogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDg0NzApOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiByKHRoaXMuX19kYXRhX18sIGUpID4gLTEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDcwNTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDg0NzApOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fX2RhdGFfXywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIobiwgZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gPCAwID8gKCsrdGhpcy5zaXplLCBuLnB1c2goW2UsIHRdKSkgOiBuW29dWzFdID0gdCwgdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA0Nzg1OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oMTk4OSksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oODQwNyksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oNzA3MSk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNpemUgPSAwLCB0aGlzLl9fZGF0YV9fID0gewogICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiBuZXcgciwKICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBuZXcoaSB8fCBvKSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiBuZXcgcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTI4NTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDUwNTApOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gcih0aGlzLCBlKVsiZGVsZXRlIl0oZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSAtPSB0ID8gMSA6IDAsIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNmUzOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNTA1MCk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIodGhpcywgZSkuZ2V0KGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDk5MTY6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig1MDUwKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcih0aGlzLCBlKS5oYXMoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNTI2NTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDUwNTApOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gcih0aGlzLCBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4uc2l6ZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zZXQoZSwgdCksIHRoaXMuc2l6ZSArPSBuLnNpemUgPT0gbyA/IDAgOiAxLCB0aGlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg3NzY6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gQXJyYXkoZS5zaXplKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5bKyt0XSA9IFtyLCBlXQogICAgICAgICAgICAgICAgICAgIH0pKSwgbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA0NTM2OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODUyKShPYmplY3QsICJjcmVhdGUiKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNjkxNjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDU1NjkpKE9iamVjdC5rZXlzLCBPYmplY3QpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICB9LAogICAgICAgICAgICA0ZTM6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGUgPSBuLm5tZChlKTsKICAgICAgICAgICAgICAgIHZhciByID0gbigxOTU3KSwKICAgICAgICAgICAgICAgICAgICBvID0gdCAmJiAhdC5ub2RlVHlwZSAmJiB0LAogICAgICAgICAgICAgICAgICAgIGkgPSBvICYmIGUgJiYgIWUubm9kZVR5cGUgJiYgZSwKICAgICAgICAgICAgICAgICAgICBhID0gaSAmJiBpLmV4cG9ydHMgPT09IG8gJiYgci5wcm9jZXNzLAogICAgICAgICAgICAgICAgICAgIHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gaSAmJiBpLnJlcXVpcmUgJiYgaS5yZXF1aXJlKCJ1dGlsIikudHlwZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSB8fCBhICYmIGEuYmluZGluZyAmJiBhLmJpbmRpbmcoInV0aWwiKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjMzMzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmNhbGwoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNTU2OTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHQobikpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA1NjM5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oMTk1NyksCiAgICAgICAgICAgICAgICAgICAgbyA9ICJvYmplY3QiID09IHR5cGVvZiBzZWxmICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmLAogICAgICAgICAgICAgICAgICAgIGkgPSByIHx8IG8gfHwgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNjE5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGUsICJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiksIHRoaXMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjM4NTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAxODE0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IEFycmF5KGUuc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBuWysrdF0gPSBlCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDc0NjU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NDA3KTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgciwgdGhpcy5zaXplID0gMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAzNzc5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdFsiZGVsZXRlIl0oZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA9IHQuc2l6ZSwgbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3NTk5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQ3NTg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDMwOTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDg0MDcpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDcwNzEpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDMzNjkpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fX2RhdGFfXzsKICAgICAgICAgICAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW8gfHwgYS5sZW5ndGggPCAxOTkpIHJldHVybiBhLnB1c2goW2UsIHRdKSwgdGhpcy5zaXplID0gKytuLnNpemUsIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9fZGF0YV9fID0gbmV3IGkoYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2V0KGUsIHQpLCB0aGlzLnNpemUgPSBuLnNpemUsIHRoaXMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMzQ2OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5jYWxsKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHt9CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSArICIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHt9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3ODEzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgfHwgZSAhPSBlICYmIHQgIT0gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA1Njk0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oOTQ1NCksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oNzAwNSksCiAgICAgICAgICAgICAgICAgICAgaSA9IE9iamVjdC5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAgICAgYSA9IGkuaGFzT3duUHJvcGVydHksCiAgICAgICAgICAgICAgICAgICAgcyA9IGkucHJvcGVydHlJc0VudW1lcmFibGUsCiAgICAgICAgICAgICAgICAgICAgdSA9IHIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMKICAgICAgICAgICAgICAgICAgICB9KCkpID8gciA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8oZSkgJiYgYS5jYWxsKGUsICJjYWxsZWUiKSAmJiAhcy5jYWxsKGUsICJjYWxsZWUiKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSB1CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDE0Njk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gQXJyYXkuaXNBcnJheTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgODYxMjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDM1NjApLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDE3ODApOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IGUgJiYgbyhlLmxlbmd0aCkgJiYgIXIoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDE0NDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgZSA9IG4ubm1kKGUpOwogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDU2MzkpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDUwNjIpLAogICAgICAgICAgICAgICAgICAgIGkgPSB0ICYmICF0Lm5vZGVUeXBlICYmIHQsCiAgICAgICAgICAgICAgICAgICAgYSA9IGkgJiYgZSAmJiAhZS5ub2RlVHlwZSAmJiBlLAogICAgICAgICAgICAgICAgICAgIHMgPSBhICYmIGEuZXhwb3J0cyA9PT0gaSA/IHIuQnVmZmVyIDogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgICAgIHUgPSAocyA/IHMuaXNCdWZmZXIgOiB1bmRlZmluZWQpIHx8IG87CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSB1CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg0NDY6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig5MzkpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiByKGUsIHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDM1NjA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig0MjM5KSwKICAgICAgICAgICAgICAgICAgICBvID0gbigzMjE4KTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIW8oZSkpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHIoZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJbb2JqZWN0IEZ1bmN0aW9uXSIgPT0gdCB8fCAiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iID09IHQgfHwgIltvYmplY3QgQXN5bmNGdW5jdGlvbl0iID09IHQgfHwgIltvYmplY3QgUHJveHldIiA9PSB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDE3ODA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bWJlciIgPT0gdHlwZW9mIGUgJiYgZSA+IC0xICYmIGUgJSAxID09IDAgJiYgZSA8PSA5MDA3MTk5MjU0NzQwOTkxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDc2NTQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbigxNzYzKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlKSAmJiBlICE9ICtlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDE3NjM6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig0MjM5KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig3MDA1KTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bWJlciIgPT0gdHlwZW9mIGUgfHwgbyhlKSAmJiAiW29iamVjdCBOdW1iZXJdIiA9PSByKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDMyMTg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHR5cGVvZiBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IGUgJiYgKCJvYmplY3QiID09IHQgfHwgImZ1bmN0aW9uIiA9PSB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3MDA1OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3MDM3OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDIzOSksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oMTQ2OSksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oNzAwNSk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiBlIHx8ICFvKGUpICYmIGkoZSkgJiYgIltvYmplY3QgU3RyaW5nXSIgPT0gcihlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA2NzE5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODc0OSksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oMTcxNyksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oNGUzKSwKICAgICAgICAgICAgICAgICAgICBhID0gaSAmJiBpLmlzVHlwZWRBcnJheSwKICAgICAgICAgICAgICAgICAgICBzID0gYSA/IG8oYSkgOiByOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcwogICAgICAgICAgICB9LAogICAgICAgICAgICAyMzUzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAzNjc0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDYzNiksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oMjgwKSwKICAgICAgICAgICAgICAgICAgICBpID0gbig4NjEyKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaShlKSA/IHIoZSkgOiBvKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQ3OTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDUwNjI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA0MjUxOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAvKiEKICAgICAgICAgICAgICAgICAqIE1vdmVUbyAtIEEgbGlnaHR3ZWlnaHQgc2Nyb2xsIGFuaW1hdGlvbiBqYXZhc2NyaXB0IGxpYnJhcnkgd2l0aG91dCBhbnkgZGVwZW5kZW5jeS4KICAgICAgICAgICAgICAgICAqIFZlcnNpb24gMS44LjIgKDI4LTA2LTIwMTkgMTQ6MzApCiAgICAgICAgICAgICAgICAgKiBMaWNlbnNlZCB1bmRlciBNSVQKICAgICAgICAgICAgICAgICAqIENvcHlyaWdodCAyMDE5IEhhc2FuIEF5ZG/En2R1IDxoc25heWRkQGdtYWlsLmNvbT4KICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9sZXJhbmNlOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogODAwLAogICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6ICJlYXNlT3V0UXVhcnQiLAogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCkge30KICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgLz0gciwgLW4gKiAoLS1lICogZSAqIGUgKiBlIC0gMSkgKyB0CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bdF0gPSBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbltlXSA9IHRbZV0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGUuc2Nyb2xsVG9wIDogZS5wYWdlWU9mZnNldAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG4oZSwgciksIHRoaXMuZWFzZUZ1bmN0aW9ucyA9IG4oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZU91dFF1YXJ0OiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnByb3RvdHlwZS5yZWdpc3RlclRyaWdnZXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5nZXRBdHRyaWJ1dGUoImhyZWYiKSB8fCBlLmdldEF0dHJpYnV0ZSgiZGF0YS10YXJnZXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbyAmJiAiIyIgIT09IG8gPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvLnN1YnN0cmluZygxKSkgOiBkb2N1bWVudC5ib2R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKHRoaXMub3B0aW9ucywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmdldEF0dHJpYnV0ZSgiZGF0YS1tdC0iLmNvbmNhdCh0LnJlcGxhY2UoLyhbQS1aXSkvZywgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIi0iICsgZS50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgJiYgKG5bdF0gPSBpc05hTihyKSA/IHIgOiBwYXJzZUludChyLCAxMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdGhpcy5vcHRpb25zKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmIChhLmNhbGxiYWNrID0gdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHIubW92ZShpLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgcywgITEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsIHMsICExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIG8ucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZSB8fCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbih0aGlzLm9wdGlvbnMsIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEgPSAibnVtYmVyIiA9PSB0eXBlb2YgZSA/IGUgOiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcihvLmNvbnRhaW5lciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIC09IG8udG9sZXJhbmNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBmdW5jdGlvbiBjKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHIodC5vcHRpb25zLmNvbnRhaW5lcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSB8fCAodSA9IG4gLSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IG4gLSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICYmIChhID4gMCAmJiBpID4gbCB8fCBhIDwgMCAmJiBpIDwgbCkpIHJldHVybiBvLmNhbGxiYWNrKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdC5lYXNlRnVuY3Rpb25zW28uZWFzaW5nXShmLCBzLCBhLCBvLmR1cmF0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmNvbnRhaW5lci5zY3JvbGwoMCwgZCksIGYgPCBvLmR1cmF0aW9uID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShjKSA6IChvLmNvbnRhaW5lci5zY3JvbGwoMCwgYSArIHMpLCBvLmNhbGxiYWNrKGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIG8ucHJvdG90eXBlLmFkZEVhc2VGdW5jdGlvbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lYXNlRnVuY3Rpb25zW2VdID0gdAogICAgICAgICAgICAgICAgICAgIH0sIG8KICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjcwMzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDQxNCk7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbygpIHt9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaSgpIHt9CiAgICAgICAgICAgICAgICBpLnJlc2V0V2FybmluZ0NhY2hlID0gbywgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0LCBuLCBvLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhICE9PSByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG5ldyBFcnJvcigiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcy5uYW1lID0gIkludmFyaWFudCBWaW9sYXRpb24iLCBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUuaXNSZXF1aXJlZCA9IGU7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBiaWdpbnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2w6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmM6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcjogZSwKICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgYW55OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBhcnJheU9mOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50VHlwZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VPZjogdCwKICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0T2Y6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG9uZU9mOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBvbmVPZlR5cGU6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tQcm9wVHlwZXM6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0V2FybmluZ0NhY2hlOiBvCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5Qcm9wVHlwZXMgPSBuLCBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDU2OTc6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IG4oMjcwMykoKQogICAgICAgICAgICB9LAogICAgICAgICAgICA0MTQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNjA5NTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgLyohCiAgICAgICAgICAgICAgICAgKiBRdWlsbCBFZGl0b3IgdjEuMy43CiAgICAgICAgICAgICAgICAgKiBodHRwczovL3F1aWxsanMuY29tLwogICAgICAgICAgICAgICAgICogQ29weXJpZ2h0IChjKSAyMDE0LCBKYXNvbiBDaGVuCiAgICAgICAgICAgICAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIHNhbGVzZm9yY2UuY29tCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHNlbGYgJiYgc2VsZiwgdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0ge307CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0W3JdKSByZXR1cm4gdFtyXS5leHBvcnRzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0W3JdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cywgbywgby5leHBvcnRzLCBuKSwgby5sID0gITAsIG8uZXhwb3J0cwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLm0gPSBlLCBuLmMgPSB0LCBuLmQgPSBmdW5jdGlvbihlLCB0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLm8oZSwgdCkgfHwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5uID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlICYmIGUuX19lc01vZHVsZSA/IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmQodCwgImEiLCB0KSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9LCBuLm8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4ucCA9ICIiLCBuKG4ucyA9IDEwOSkKICAgICAgICAgICAgICAgICAgICB9KFtmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4oMTcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4oMTgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4oMTkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oNDUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4oNDYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4oNDcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4oNDgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG4oNDkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG4oMTIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG4oMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG4oMzMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4oMzEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjb3BlOiBtLlNjb3BlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZTogbS5jcmVhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZDogbS5maW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBtLnF1ZXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyOiBtLnJlZ2lzdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lcjogclsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdDogb1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlYWY6IGlbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWJlZDogbFsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbDogYVsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrOiB1WyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lOiBzWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dDogY1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlOiBmWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiBkWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0eWxlOiBwWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlOiBoWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSB5CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCAociA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3Byb3RvX18gPSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpIHQuaGFzT3duUHJvcGVydHkobikgJiYgKGVbbl0gPSB0W25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPSAiW1BhcmNobWVudF0gIiArIHQsIChuID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXMpLm1lc3NhZ2UgPSB0LCBuLm5hbWUgPSBuLmNvbnN0cnVjdG9yLm5hbWUsIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICAgICB0LlBhcmNobWVudEVycm9yID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEsIHMgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB7fTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSB0ICYmICh0ID0gYS5BTlkpLCAic3RyaW5nIiA9PSB0eXBlb2YgZSkgbiA9IGNbZV0gfHwgc1tlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBUZXh0IHx8IGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSBuID0gYy50ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIm51bWJlciIgPT0gdHlwZW9mIGUpIGUgJiBhLkxFVkVMICYgYS5CTE9DSyA/IG4gPSBjLmJsb2NrIDogZSAmIGEuTEVWRUwgJiBhLklOTElORSAmJiAobiA9IGMuaW5saW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gKGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKS5zcGxpdCgvXHMrLyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyBpbiByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IHVbcltvXV0pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuIHx8IGxbZS50YWdOYW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gbiA/IG51bGwgOiB0ICYgYS5MRVZFTCAmIG4uc2NvcGUgJiYgdCAmIGEuVFlQRSAmIG4uc2NvcGUgPyBuIDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHQuREFUQV9LRVkgPSAiX19ibG90IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2UuVFlQRSA9IDNdID0gIlRZUEUiLCBlW2UuTEVWRUwgPSAxMl0gPSAiTEVWRUwiLCBlW2UuQVRUUklCVVRFID0gMTNdID0gIkFUVFJJQlVURSIsIGVbZS5CTE9UID0gMTRdID0gIkJMT1QiLCBlW2UuSU5MSU5FID0gN10gPSAiSU5MSU5FIiwgZVtlLkJMT0NLID0gMTFdID0gIkJMT0NLIiwgZVtlLkJMT0NLX0JMT1QgPSAxMF0gPSAiQkxPQ0tfQkxPVCIsIGVbZS5JTkxJTkVfQkxPVCA9IDZdID0gIklOTElORV9CTE9UIiwgZVtlLkJMT0NLX0FUVFJJQlVURSA9IDldID0gIkJMT0NLX0FUVFJJQlVURSIsIGVbZS5JTkxJTkVfQVRUUklCVVRFID0gNV0gPSAiSU5MSU5FX0FUVFJJQlVURSIsIGVbZS5BTlkgPSAxNV0gPSAiQU5ZIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShhID0gdC5TY29wZSB8fCAodC5TY29wZSA9IHt9KSksIHQuY3JlYXRlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBuKSB0aHJvdyBuZXcgaSgiVW5hYmxlIHRvIGNyZWF0ZSAiICsgZSArICIgYmxvdCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUgaW5zdGFuY2VvZiBOb2RlIHx8IGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFID8gZSA6IHIuY3JlYXRlKHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgcihvLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5maW5kID0gZnVuY3Rpb24gZChlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gbiAmJiAobiA9ICExKSwgbnVsbCA9PSBlID8gbnVsbCA6IG51bGwgIT0gZVt0LkRBVEFfS0VZXSA/IGVbdC5EQVRBX0tFWV0uYmxvdCA6IG4gPyBkKGUucGFyZW50Tm9kZSwgbikgOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnF1ZXJ5ID0gZiwgdC5yZWdpc3RlciA9IGZ1bmN0aW9uIHAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IFtdLCB0ID0gMDsgdCA8IGFyZ3VtZW50cy5sZW5ndGg7IHQrKykgZVt0XSA9IGFyZ3VtZW50c1t0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5sZW5ndGggPiAxKSByZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2Ygbi5ibG90TmFtZSAmJiAic3RyaW5nIiAhPSB0eXBlb2Ygbi5hdHRyTmFtZSkgdGhyb3cgbmV3IGkoIkludmFsaWQgZGVmaW5pdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiYWJzdHJhY3QiID09PSBuLmJsb3ROYW1lKSB0aHJvdyBuZXcgaSgiQ2Fubm90IHJlZ2lzdGVyIGFic3RyYWN0IGNsYXNzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNbbi5ibG90TmFtZSB8fCBuLmF0dHJOYW1lXSA9IG4sICJzdHJpbmciID09IHR5cGVvZiBuLmtleU5hbWUpIHNbbi5rZXlOYW1lXSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobnVsbCAhPSBuLmNsYXNzTmFtZSAmJiAodVtuLmNsYXNzTmFtZV0gPSBuKSwgbnVsbCAhPSBuLnRhZ05hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShuLnRhZ05hbWUpID8gbi50YWdOYW1lID0gbi50YWdOYW1lLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudG9VcHBlckNhc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiBuLnRhZ05hbWUgPSBuLnRhZ05hbWUudG9VcHBlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBBcnJheS5pc0FycmF5KG4udGFnTmFtZSkgPyBuLnRhZ05hbWUgOiBbbi50YWdOYW1lXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGxbZV0gJiYgbnVsbCAhPSBuLmNsYXNzTmFtZSB8fCAobFtlXSA9IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuKDUxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuKDExKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuKDMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMjApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoZSkgPyB0aGlzLm9wcyA9IGUgOiBudWxsICE9IGUgJiYgQXJyYXkuaXNBcnJheShlLm9wcykgPyB0aGlzLm9wcyA9IGUub3BzIDogdGhpcy5vcHMgPSBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgdS5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBlLmxlbmd0aCA/IHRoaXMgOiAobi5pbnNlcnQgPSBlLCBudWxsICE9IHQgJiYgIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgT2JqZWN0LmtleXModCkubGVuZ3RoID4gMCAmJiAobi5hdHRyaWJ1dGVzID0gdCksIHRoaXMucHVzaChuKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGVbImRlbGV0ZSJdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPD0gMCA/IHRoaXMgOiB0aGlzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGUiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS5yZXRhaW4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA8PSAwKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQgJiYgIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgT2JqZWN0LmtleXModCkubGVuZ3RoID4gMCAmJiAobi5hdHRyaWJ1dGVzID0gdCksIHRoaXMucHVzaChuKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLm9wcy5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMub3BzW3QgLSAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID0gaSghMCwge30sIGUpLCAib2JqZWN0IiA9PSB0eXBlb2YgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgibnVtYmVyIiA9PSB0eXBlb2YgZVsiZGVsZXRlIl0gJiYgIm51bWJlciIgPT0gdHlwZW9mIG5bImRlbGV0ZSJdKSByZXR1cm4gdGhpcy5vcHNbdCAtIDFdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlIjogblsiZGVsZXRlIl0gKyBlWyJkZWxldGUiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJudW1iZXIiID09IHR5cGVvZiBuWyJkZWxldGUiXSAmJiBudWxsICE9IGUuaW5zZXJ0ICYmICh0IC09IDEsICJvYmplY3QiICE9IHR5cGVvZihuID0gdGhpcy5vcHNbdCAtIDFdKSkpIHJldHVybiB0aGlzLm9wcy51bnNoaWZ0KGUpLCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKGUuYXR0cmlidXRlcywgbi5hdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUuaW5zZXJ0ICYmICJzdHJpbmciID09IHR5cGVvZiBuLmluc2VydCkgcmV0dXJuIHRoaXMub3BzW3QgLSAxXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydDogbi5pbnNlcnQgKyBlLmluc2VydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAib2JqZWN0IiA9PSB0eXBlb2YgZS5hdHRyaWJ1dGVzICYmICh0aGlzLm9wc1t0IC0gMV0uYXR0cmlidXRlcyA9IGUuYXR0cmlidXRlcyksIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgibnVtYmVyIiA9PSB0eXBlb2YgZS5yZXRhaW4gJiYgIm51bWJlciIgPT0gdHlwZW9mIG4ucmV0YWluKSByZXR1cm4gdGhpcy5vcHNbdCAtIDFdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluOiBuLnJldGFpbiArIGUucmV0YWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICJvYmplY3QiID09IHR5cGVvZiBlLmF0dHJpYnV0ZXMgJiYgKHRoaXMub3BzW3QgLSAxXS5hdHRyaWJ1dGVzID0gZS5hdHRyaWJ1dGVzKSwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID09PSB0aGlzLm9wcy5sZW5ndGggPyB0aGlzLm9wcy5wdXNoKGUpIDogdGhpcy5vcHMuc3BsaWNlKHQsIDAsIGUpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmNob3AgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcHNbdGhpcy5vcHMubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLnJldGFpbiAmJiAhZS5hdHRyaWJ1dGVzICYmIHRoaXMub3BzLnBvcCgpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmZpbHRlciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wcy5maWx0ZXIoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BzLmZvckVhY2goZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BzLm1hcChlKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS5wYXJ0aXRpb24gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvckVhY2goKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZShyKSA/IHQgOiBuKS5wdXNoKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIFt0LCBuXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS5yZWR1Y2UgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHMucmVkdWNlKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmNoYW5nZUxlbmd0aCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuaW5zZXJ0ID8gZSArIGEubGVuZ3RoKHQpIDogdFsiZGVsZXRlIl0gPyBlIC0gdFsiZGVsZXRlIl0gOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSArIGEubGVuZ3RoKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCAwLCAibnVtYmVyIiAhPSB0eXBlb2YgdCAmJiAodCA9IEluZmluaXR5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBbXSwgciA9IGEuaXRlcmF0b3IodGhpcy5vcHMpLCBvID0gMDsgbyA8IHQgJiYgci5oYXNOZXh0KCk7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA8IGUgPyBpID0gci5uZXh0KGUgLSBvKSA6IChpID0gci5uZXh0KHQgLSBvKSwgbi5wdXNoKGkpKSwgbyArPSBhLmxlbmd0aChpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB1KG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmNvbXBvc2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGEuaXRlcmF0b3IodGhpcy5vcHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhLml0ZXJhdG9yKGUub3BzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4ucGVlaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gaSAmJiAibnVtYmVyIiA9PSB0eXBlb2YgaS5yZXRhaW4gJiYgbnVsbCA9PSBpLmF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gaS5yZXRhaW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnNlcnQiID09PSB0LnBlZWtUeXBlKCkgJiYgdC5wZWVrTGVuZ3RoKCkgPD0gczspIHMgLT0gdC5wZWVrTGVuZ3RoKCksIHIucHVzaCh0Lm5leHQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5yZXRhaW4gLSBzID4gMCAmJiBuLm5leHQoaS5yZXRhaW4gLSBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IG5ldyB1KHIpOyB0Lmhhc05leHQoKSB8fCBuLmhhc05leHQoKTspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJpbnNlcnQiID09PSBuLnBlZWtUeXBlKCkpIGwucHVzaChuLm5leHQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoImRlbGV0ZSIgPT09IHQucGVla1R5cGUoKSkgbC5wdXNoKHQubmV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gTWF0aC5taW4odC5wZWVrTGVuZ3RoKCksIG4ucGVla0xlbmd0aCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHQubmV4dChjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG4ubmV4dChjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm51bWJlciIgPT0gdHlwZW9mIGQucmV0YWluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJudW1iZXIiID09IHR5cGVvZiBmLnJldGFpbiA/IHAucmV0YWluID0gYyA6IHAuaW5zZXJ0ID0gZi5pbnNlcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gYS5hdHRyaWJ1dGVzLmNvbXBvc2UoZi5hdHRyaWJ1dGVzLCBkLmF0dHJpYnV0ZXMsICJudW1iZXIiID09IHR5cGVvZiBmLnJldGFpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoICYmIChwLmF0dHJpYnV0ZXMgPSBoKSwgbC5wdXNoKHApLCAhbi5oYXNOZXh0KCkgJiYgbyhsLm9wc1tsLm9wcy5sZW5ndGggLSAxXSwgcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gbmV3IHUodC5yZXN0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwuY29uY2F0KG0pLmNob3AoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJudW1iZXIiID09IHR5cGVvZiBkWyJkZWxldGUiXSAmJiAibnVtYmVyIiA9PSB0eXBlb2YgZi5yZXRhaW4gJiYgbC5wdXNoKGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbC5jaG9wKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgdSh0aGlzLm9wcy5zbGljZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm9wcy5sZW5ndGggPiAwICYmICh0LnB1c2goZS5vcHNbMF0pLCB0Lm9wcyA9IHQub3BzLmNvbmNhdChlLm9wcy5zbGljZSgxKSkpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmRpZmYgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHMgPT09IGUub3BzKSByZXR1cm4gbmV3IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFt0aGlzLCBlXS5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubWFwKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBuLmluc2VydCkgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiBuLmluc2VydCA/IG4uaW5zZXJ0IDogczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZGlmZigpIGNhbGxlZCAiICsgKHQgPT09IGUgPyAib24iIDogIndpdGgiKSArICIgbm9uLWRvY3VtZW50IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmpvaW4oIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcihuWzBdLCBuWzFdLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gYS5pdGVyYXRvcih0aGlzLm9wcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGEuaXRlcmF0b3IoZS5vcHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBlWzFdLmxlbmd0aDsgdCA+IDA7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHIuSU5TRVJUOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBNYXRoLm1pbihmLnBlZWtMZW5ndGgoKSwgdCksIGkucHVzaChmLm5leHQobikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSByLkRFTEVURToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5taW4odCwgYy5wZWVrTGVuZ3RoKCkpLCBjLm5leHQobiksIGlbImRlbGV0ZSJdKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSByLkVRVUFMOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBNYXRoLm1pbihjLnBlZWtMZW5ndGgoKSwgZi5wZWVrTGVuZ3RoKCksIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gYy5uZXh0KG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZi5uZXh0KG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ocy5pbnNlcnQsIHUuaW5zZXJ0KSA/IGkucmV0YWluKG4sIGEuYXR0cmlidXRlcy5kaWZmKHMuYXR0cmlidXRlcywgdS5hdHRyaWJ1dGVzKSkgOiBpLnB1c2godSlbImRlbGV0ZSJdKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCAtPSBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBpLmNob3AoKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS5lYWNoTGluZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0IHx8ICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gYS5pdGVyYXRvcih0aGlzLm9wcyksIHIgPSBuZXcgdSwgbyA9IDA7IG4uaGFzTmV4dCgpOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiaW5zZXJ0IiAhPT0gbi5wZWVrVHlwZSgpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLnBlZWsoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEubGVuZ3RoKGkpIC0gbi5wZWVrTGVuZ3RoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAic3RyaW5nIiA9PSB0eXBlb2YgaS5pbnNlcnQgPyBpLmluc2VydC5pbmRleE9mKHQsIHMpIC0gcyA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsIDwgMCkgci5wdXNoKG4ubmV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsID4gMCkgci5wdXNoKG4ubmV4dChsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMSA9PT0gZShyLCBuLm5leHQoMSkuYXR0cmlidXRlcyB8fCB7fSwgbykpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyArPSAxLCByID0gbmV3IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmxlbmd0aCgpID4gMCAmJiBlKHIsIHt9LCBvKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9ICEhdCwgIm51bWJlciIgPT0gdHlwZW9mIGUpIHJldHVybiB0aGlzLnRyYW5zZm9ybVBvc2l0aW9uKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IGEuaXRlcmF0b3IodGhpcy5vcHMpLCByID0gYS5pdGVyYXRvcihlLm9wcyksIG8gPSBuZXcgdTsgbi5oYXNOZXh0KCkgfHwgci5oYXNOZXh0KCk7KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiaW5zZXJ0IiAhPT0gbi5wZWVrVHlwZSgpIHx8ICF0ICYmICJpbnNlcnQiID09PSByLnBlZWtUeXBlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiaW5zZXJ0IiA9PT0gci5wZWVrVHlwZSgpKSBvLnB1c2goci5uZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gTWF0aC5taW4obi5wZWVrTGVuZ3RoKCksIHIucGVla0xlbmd0aCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5uZXh0KGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByLm5leHQoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc1siZGVsZXRlIl0pIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbFsiZGVsZXRlIl0gPyBvLnB1c2gobCkgOiBvLnJldGFpbihpLCBhLmF0dHJpYnV0ZXMudHJhbnNmb3JtKHMuYXR0cmlidXRlcywgbC5hdHRyaWJ1dGVzLCB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBvLnJldGFpbihhLmxlbmd0aChuLm5leHQoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uY2hvcCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLnRyYW5zZm9ybVBvc2l0aW9uID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICEhdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBhLml0ZXJhdG9yKHRoaXMub3BzKSwgciA9IDA7IG4uaGFzTmV4dCgpICYmIHIgPD0gZTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ucGVla0xlbmd0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5wZWVrVHlwZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ubmV4dCgpLCAiZGVsZXRlIiAhPT0gaSA/ICgiaW5zZXJ0IiA9PT0gaSAmJiAociA8IGUgfHwgIXQpICYmIChlICs9IG8pLCByICs9IG8pIDogZSAtPSBNYXRoLm1pbihvLCBlIC0gcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBBcnJheS5pc0FycmF5ID8gQXJyYXkuaXNBcnJheShlKSA6ICJbb2JqZWN0IEFycmF5XSIgPT09IHIuY2FsbChlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICJbb2JqZWN0IE9iamVjdF0iICE9PSByLmNhbGwoZSkpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbyA9IG4uY2FsbChlLCAiY29uc3RydWN0b3IiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuY29uc3RydWN0b3IgJiYgZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgJiYgbi5jYWxsKGUuY29uc3RydWN0b3IucHJvdG90eXBlLCAiaXNQcm90b3R5cGVPZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbnN0cnVjdG9yICYmICFvICYmICFpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgfHwgbi5jYWxsKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvICYmICJfX3Byb3RvX18iID09PSB0Lm5hbWUgPyBvKGUsIHQubmFtZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHQubmV3VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogZVt0Lm5hbWVdID0gdC5uZXdWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJfX3Byb3RvX18iID09PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbi5jYWxsKGUsIHQpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpKSByZXR1cm4gaShlLCB0KS52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVt0XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24gYygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuLCByLCBvLCBpLCBmID0gYXJndW1lbnRzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhcmd1bWVudHMubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBmICYmIChoID0gZiwgZiA9IGFyZ3VtZW50c1sxXSB8fCB7fSwgZCA9IDIpLCAobnVsbCA9PSBmIHx8ICJvYmplY3QiICE9IHR5cGVvZiBmICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIGYpICYmIChmID0ge30pOyBkIDwgcDsgKytkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IChlID0gYXJndW1lbnRzW2RdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIGUpIG4gPSBsKGYsIHQpLCBmICE9PSAociA9IGwoZSwgdCkpICYmIChoICYmIHIgJiYgKHMocikgfHwgKG8gPSBhKHIpKSkgPyAobyA/IChvID0gITEsIGkgPSBuICYmIGEobikgPyBuIDogW10pIDogaSA9IG4gJiYgcyhuKSA/IG4gOiB7fSwgdShmLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWU6IGMoaCwgaSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogdm9pZCAwICE9PSByICYmIHUoZiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0WyJkZWZhdWx0Il0gPSB0LkJsb2NrRW1iZWQgPSB0LmJ1YmJsZUZvcm1hdHMgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uIHYoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHYobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYobigzKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZihuKDIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBmKG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGYobigxNikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGYobig2KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZihuKDcpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHAoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCh0aGlzLCB0KSwgcCh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgodCwgZSksIHIodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJhdHRhY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImF0dGFjaCIsIHRoaXMpLmNhbGwodGhpcyksIHRoaXMuYXR0cmlidXRlcyA9IG5ldyBzWyJkZWZhdWx0Il0uQXR0cmlidXRvci5TdG9yZSh0aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImRlbHRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobmV3IGFbImRlZmF1bHQiXSkuaW5zZXJ0KHRoaXMudmFsdWUoKSwgKDAsIGlbImRlZmF1bHQiXSkodGhpcy5mb3JtYXRzKCksIHRoaXMuYXR0cmlidXRlcy52YWx1ZXMoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBzWyJkZWZhdWx0Il0ucXVlcnkoZSwgc1siZGVmYXVsdCJdLlNjb3BlLkJMT0NLX0FUVFJJQlVURSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gbiAmJiB0aGlzLmF0dHJpYnV0ZXMuYXR0cmlidXRlKG4sIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdEF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdChuLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbnNlcnRBdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBuICYmIG4uZW5kc1dpdGgoIlxuIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gc1siZGVmYXVsdCJdLmNyZWF0ZSh5LmJsb3ROYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZShpLCAwID09PSBlID8gdGhpcyA6IHRoaXMubmV4dCksIGkuaW5zZXJ0QXQoMCwgbi5zbGljZSgwLCAtMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5zZXJ0QXQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4sIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oc1siZGVmYXVsdCJdLkVtYmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgbS5zY29wZSA9IHNbImRlZmF1bHQiXS5TY29wZS5CTE9DS19CTE9UOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBwKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNhY2hlID0ge30sIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoKHQsIGUpLCByKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVsdGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdGhpcy5jYWNoZS5kZWx0YSAmJiAodGhpcy5jYWNoZS5kZWx0YSA9IHRoaXMuZGVzY2VuZGFudHMoc1siZGVmYXVsdCJdLkxlYWYpLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IHQubGVuZ3RoKCkgPyBlIDogZS5pbnNlcnQodC52YWx1ZSgpLCBnKHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbmV3IGFbImRlZmF1bHQiXSkuaW5zZXJ0KCJcbiIsIGcodGhpcykpKSwgdGhpcy5jYWNoZS5kZWx0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkZWxldGVBdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImRlbGV0ZUF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKSwgdGhpcy5jYWNoZSA9IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdEF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbiwgciwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuIDw9IDAgfHwgKHNbImRlZmF1bHQiXS5xdWVyeShyLCBzWyJkZWZhdWx0Il0uU2NvcGUuQkxPQ0spID8gZSArIG4gPT09IHRoaXMubGVuZ3RoKCkgJiYgdGhpcy5mb3JtYXQociwgaSkgOiBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiZm9ybWF0QXQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIE1hdGgubWluKG4sIHRoaXMubGVuZ3RoKCkgLSBlIC0gMSksIHIsIGkpLCB0aGlzLmNhY2hlID0ge30pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImluc2VydEF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSByKSByZXR1cm4gbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImluc2VydEF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IG4ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4uc3BsaXQoIlxuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEubGVuZ3RoID4gMCAmJiAoZSA8IHRoaXMubGVuZ3RoKCkgLSAxIHx8IG51bGwgPT0gdGhpcy5jaGlsZHJlbi50YWlsID8gbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImluc2VydEF0IiwgdGhpcykuY2FsbCh0aGlzLCBNYXRoLm1pbihlLCB0aGlzLmxlbmd0aCgpIC0gMSksIGEpIDogdGhpcy5jaGlsZHJlbi50YWlsLmluc2VydEF0KHRoaXMuY2hpbGRyZW4udGFpbC5sZW5ndGgoKSwgYSksIHRoaXMuY2FjaGUgPSB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocyA9IHMuc3BsaXQoZSwgITApKS5pbnNlcnRBdCgwLCB0KSwgdC5sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlICsgYS5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaW5zZXJ0QmVmb3JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuY2hpbGRyZW4uaGVhZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImluc2VydEJlZm9yZSIsIHRoaXMpLmNhbGwodGhpcywgZSwgbiksIHIgaW5zdGFuY2VvZiB1WyJkZWZhdWx0Il0gJiYgci5yZW1vdmUoKSwgdGhpcy5jYWNoZSA9IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxlbmd0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0aGlzLmNhY2hlLmxlbmd0aCAmJiAodGhpcy5jYWNoZS5sZW5ndGggPSBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAibGVuZ3RoIiwgdGhpcykuY2FsbCh0aGlzKSArIDEpLCB0aGlzLmNhY2hlLmxlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJtb3ZlQ2hpbGRyZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJtb3ZlQ2hpbGRyZW4iLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pLCB0aGlzLmNhY2hlID0ge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAib3B0aW1pemUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJvcHRpbWl6ZSIsIHRoaXMpLmNhbGwodGhpcywgZSksIHRoaXMuY2FjaGUgPSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJwYXRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgInBhdGgiLCB0aGlzKS5jYWxsKHRoaXMsIGUsICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW1vdmVDaGlsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgInJlbW92ZUNoaWxkIiwgdGhpcykuY2FsbCh0aGlzLCBlKSwgdGhpcy5jYWNoZSA9IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNwbGl0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkICYmIGFyZ3VtZW50c1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiYgKDAgPT09IGUgfHwgZSA+PSB0aGlzLmxlbmd0aCgpIC0gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5jbG9uZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IGUgPyAodGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHIsIHRoaXMpLCB0aGlzKSA6ICh0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUociwgdGhpcy5uZXh0KSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJzcGxpdCIsIHRoaXMpLmNhbGwodGhpcywgZSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlID0ge30sIGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShzWyJkZWZhdWx0Il0uQmxvY2spOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gdCA6ICgiZnVuY3Rpb24iID09IHR5cGVvZiBlLmZvcm1hdHMgJiYgKHQgPSAoMCwgaVsiZGVmYXVsdCJdKSh0LCBlLmZvcm1hdHMoKSkpLCBudWxsID09IGUucGFyZW50IHx8ICJzY3JvbGwiID09IGUucGFyZW50LmJsb3ROYW1lIHx8IGUucGFyZW50LnN0YXRpY3Muc2NvcGUgIT09IGUuc3RhdGljcy5zY29wZSA/IHQgOiBnKGUucGFyZW50LCB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB5LmJsb3ROYW1lID0gImJsb2NrIiwgeS50YWdOYW1lID0gIlAiLCB5LmRlZmF1bHRDaGlsZCA9ICJicmVhayIsIHkuYWxsb3dlZENoaWxkcmVuID0gW2xbImRlZmF1bHQiXSwgc1siZGVmYXVsdCJdLkVtYmVkLCBjWyJkZWZhdWx0Il1dLCB0LmJ1YmJsZUZvcm1hdHMgPSBnLCB0LkJsb2NrRW1iZWQgPSBtLCB0WyJkZWZhdWx0Il0gPSB5CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gdC5vdmVybG9hZCA9IHQuZXhwYW5kQ29uZmlnID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgZS5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIGUgIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSwgcyA9IGVbU3ltYm9sLml0ZXJhdG9yXSgpOyAhKHIgPSAoYSA9IHMubmV4dCgpKS5kb25lKSAmJiAobi5wdXNoKGEudmFsdWUpLCAhdCB8fCBuLmxlbmd0aCAhPT0gdCk7IHIgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgaSA9IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXIgJiYgc1sicmV0dXJuIl0gJiYgc1sicmV0dXJuIl0oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobykgdGhyb3cgaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICBuKDUwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB5KG4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHkobigxNCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHkobig4KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0geShuKDkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB5KG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG4oMTUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHkoZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0geShuKDMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB5KG4oMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB5KG4oMzQpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHkoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBlW3RdID0gbiwgZQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9ICgwLCBoWyJkZWZhdWx0Il0pKCJxdWlsbCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYodGhpcywgZSksIHRoaXMub3B0aW9ucyA9IE8odCwgciksIHRoaXMuY29udGFpbmVyID0gdGhpcy5vcHRpb25zLmNvbnRhaW5lciwgbnVsbCA9PSB0aGlzLmNvbnRhaW5lcikgcmV0dXJuIGIuZXJyb3IoIkludmFsaWQgUXVpbGwgY29udGFpbmVyIiwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5kZWJ1ZyAmJiBlLmRlYnVnKHRoaXMub3B0aW9ucy5kZWJ1Zyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5jb250YWluZXIuaW5uZXJIVE1MLnRyaW0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgicWwtY29udGFpbmVyIiksIHRoaXMuY29udGFpbmVyLmlubmVySFRNTCA9ICIiLCB0aGlzLmNvbnRhaW5lci5fX3F1aWxsID0gdGhpcywgdGhpcy5yb290ID0gdGhpcy5hZGRDb250YWluZXIoInFsLWVkaXRvciIpLCB0aGlzLnJvb3QuY2xhc3NMaXN0LmFkZCgicWwtYmxhbmsiKSwgdGhpcy5yb290LnNldEF0dHJpYnV0ZSgiZGF0YS1ncmFtbSIsICExKSwgdGhpcy5zY3JvbGxpbmdDb250YWluZXIgPSB0aGlzLm9wdGlvbnMuc2Nyb2xsaW5nQ29udGFpbmVyIHx8IHRoaXMucm9vdCwgdGhpcy5lbWl0dGVyID0gbmV3IHVbImRlZmF1bHQiXSwgdGhpcy5zY3JvbGwgPSBjWyJkZWZhdWx0Il0uY3JlYXRlKHRoaXMucm9vdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlcjogdGhpcy5lbWl0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0OiB0aGlzLm9wdGlvbnMuZm9ybWF0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5lZGl0b3IgPSBuZXcgc1siZGVmYXVsdCJdKHRoaXMuc2Nyb2xsKSwgdGhpcy5zZWxlY3Rpb24gPSBuZXcgZFsiZGVmYXVsdCJdKHRoaXMuc2Nyb2xsLCB0aGlzLmVtaXR0ZXIpLCB0aGlzLnRoZW1lID0gbmV3IHRoaXMub3B0aW9ucy50aGVtZSh0aGlzLCB0aGlzLm9wdGlvbnMpLCB0aGlzLmtleWJvYXJkID0gdGhpcy50aGVtZS5hZGRNb2R1bGUoImtleWJvYXJkIiksIHRoaXMuY2xpcGJvYXJkID0gdGhpcy50aGVtZS5hZGRNb2R1bGUoImNsaXBib2FyZCIpLCB0aGlzLmhpc3RvcnkgPSB0aGlzLnRoZW1lLmFkZE1vZHVsZSgiaGlzdG9yeSIpLCB0aGlzLnRoZW1lLmluaXQoKSwgdGhpcy5lbWl0dGVyLm9uKHVbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPT09IHVbImRlZmF1bHQiXS5ldmVudHMuVEVYVF9DSEFOR0UgJiYgbi5yb290LmNsYXNzTGlzdC50b2dnbGUoInFsLWJsYW5rIiwgbi5lZGl0b3IuaXNCbGFuaygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZW1pdHRlci5vbih1WyJkZWZhdWx0Il0uZXZlbnRzLlNDUk9MTF9VUERBVEUsIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4uc2VsZWN0aW9uLmxhc3RSYW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gciAmJiAwID09PSByLmxlbmd0aCA/IHIuaW5kZXggOiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmNhbGwobiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmVkaXRvci51cGRhdGUobnVsbCwgdCwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5jbGlwYm9hcmQuY29udmVydCgiPGRpdiBjbGFzcz0ncWwtZWRpdG9yJyBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3JtYWw7XCI+IiArIG8gKyAiPHA+PGJyPjwvcD48L2Rpdj4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50cyhpKSwgdGhpcy5oaXN0b3J5LmNsZWFyKCksIHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlciAmJiB0aGlzLnJvb3Quc2V0QXR0cmlidXRlKCJkYXRhLXBsYWNlaG9sZGVyIiwgdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyKSwgdGhpcy5vcHRpb25zLnJlYWRPbmx5ICYmIHRoaXMuZGlzYWJsZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpKGUsIG51bGwsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImRlYnVnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEwID09PSBlICYmIChlID0gImxvZyIpLCBoWyJkZWZhdWx0Il0ubGV2ZWwoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZmluZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5fX3F1aWxsIHx8IGNbImRlZmF1bHQiXS5maW5kKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImltcG9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0aGlzLmltcG9ydHNbZV0gJiYgYi5lcnJvcigiQ2Fubm90IGltcG9ydCAiICsgZSArICIuIEFyZSB5b3Ugc3VyZSBpdCB3YXMgcmVnaXN0ZXJlZD8iKSwgdGhpcy5pbXBvcnRzW2VdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlZ2lzdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLmF0dHJOYW1lIHx8IGUuYmxvdE5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyIgPT0gdHlwZW9mIG8gPyB0aGlzLnJlZ2lzdGVyKCJmb3JtYXRzLyIgKyBvLCBlLCB0KSA6IE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5yZWdpc3RlcihyLCBlW3JdLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIG51bGwgPT0gdGhpcy5pbXBvcnRzW2VdIHx8IHIgfHwgYi53YXJuKCJPdmVyd3JpdGluZyAiICsgZSArICIgd2l0aCIsIHQpLCB0aGlzLmltcG9ydHNbZV0gPSB0LCAoZS5zdGFydHNXaXRoKCJibG90cy8iKSB8fCBlLnN0YXJ0c1dpdGgoImZvcm1hdHMvIikpICYmICJhYnN0cmFjdCIgIT09IHQuYmxvdE5hbWUgPyBjWyJkZWZhdWx0Il0ucmVnaXN0ZXIodCkgOiBlLnN0YXJ0c1dpdGgoIm1vZHVsZXMiKSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB0LnJlZ2lzdGVyICYmIHQucmVnaXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBpKGUsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZENvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5jbGFzc0xpc3QuYWRkKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKGUsIHQpLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImJsdXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXRSYW5nZShudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkZWxldGVUZXh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0geChlLCB0LCBuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbyhpLCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gYVswXSwgdCA9IGFbMV0sIG4gPSBhWzNdLCBfLmNhbGwodGhpcywgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLmVkaXRvci5kZWxldGVUZXh0KGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbiwgZSwgLTEgKiB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkaXNhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGUoITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImVuYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gIShhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCkgfHwgYXJndW1lbnRzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGwuZW5hYmxlKGUpLCB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKCJxbC1kaXNhYmxlZCIsICFlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb2N1cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5zY3JvbGxpbmdDb250YWluZXIuc2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZm9jdXMoKSwgdGhpcy5zY3JvbGxpbmdDb250YWluZXIuc2Nyb2xsVG9wID0gZSwgdGhpcy5zY3JvbGxJbnRvVmlldygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogdVsiZGVmYXVsdCJdLnNvdXJjZXMuQVBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF8uY2FsbCh0aGlzLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmdldFNlbGVjdGlvbighMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgYVsiZGVmYXVsdCJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHIpIHJldHVybiBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjWyJkZWZhdWx0Il0ucXVlcnkoZSwgY1siZGVmYXVsdCJdLlNjb3BlLkJMT0NLKSkgbyA9IG4uZWRpdG9yLmZvcm1hdExpbmUoci5pbmRleCwgci5sZW5ndGgsIGcoe30sIGUsIHQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHIubGVuZ3RoKSByZXR1cm4gbi5zZWxlY3Rpb24uZm9ybWF0KGUsIHQpLCBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5lZGl0b3IuZm9ybWF0VGV4dChyLmluZGV4LCByLmxlbmd0aCwgZyh7fSwgZSwgdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNldFNlbGVjdGlvbihyLCB1WyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpLCBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0TGluZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSwgcyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHgoZSwgdCwgbiwgciwgaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8odSwgNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IGxbMF0sIHQgPSBsWzFdLCBhID0gbFsyXSwgaSA9IGxbM10sIF8uY2FsbCh0aGlzLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMuZWRpdG9yLmZvcm1hdExpbmUoZSwgdCwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLCBlLCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRUZXh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4sIHIsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhLCBzID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0geChlLCB0LCBuLCByLCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbyh1LCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gbFswXSwgdCA9IGxbMV0sIGEgPSBsWzJdLCBpID0gbFszXSwgXy5jYWxsKHRoaXMsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5lZGl0b3IuZm9ybWF0VGV4dChlLCB0LCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGksIGUsIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldEJvdW5kcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICJudW1iZXIiID09IHR5cGVvZiBlID8gdGhpcy5zZWxlY3Rpb24uZ2V0Qm91bmRzKGUsIHQpIDogdGhpcy5zZWxlY3Rpb24uZ2V0Qm91bmRzKGUuaW5kZXgsIGUubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogbi5ib3R0b20gLSByLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG4uaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IG4ubGVmdCAtIHIubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogbi5yaWdodCAtIHIubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IG4udG9wIC0gci50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG4ud2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0Q29udGVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0aGlzLmdldExlbmd0aCgpIC0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0geChlLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbyhuLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gclswXSwgdCA9IHJbMV0sIHRoaXMuZWRpdG9yLmdldENvbnRlbnRzKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldEZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB0aGlzLmdldFNlbGVjdGlvbighMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibnVtYmVyIiA9PSB0eXBlb2YgZSA/IHRoaXMuZWRpdG9yLmdldEZvcm1hdChlLCB0KSA6IHRoaXMuZWRpdG9yLmdldEZvcm1hdChlLmluZGV4LCBlLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0SW5kZXgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUub2Zmc2V0KHRoaXMuc2Nyb2xsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJnZXRMZW5ndGgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JvbGwubGVuZ3RoKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0TGVhZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JvbGwubGVhZihlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJnZXRMaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcm9sbC5saW5lKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldExpbmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogTnVtYmVyLk1BWF9WQUxVRTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibnVtYmVyIiAhPSB0eXBlb2YgZSA/IHRoaXMuc2Nyb2xsLmxpbmVzKGUuaW5kZXgsIGUubGVuZ3RoKSA6IHRoaXMuc2Nyb2xsLmxpbmVzKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldE1vZHVsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50aGVtZS5tb2R1bGVzW2VdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldFNlbGVjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgdGhpcy5mb2N1cygpLCB0aGlzLnVwZGF0ZSgpLCB0aGlzLnNlbGVjdGlvbi5nZXRSYW5nZSgpWzBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldFRleHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0aGlzLmdldExlbmd0aCgpIC0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0geChlLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbyhuLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gclswXSwgdCA9IHJbMV0sIHRoaXMuZWRpdG9yLmdldFRleHQoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaGFzRm9jdXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24uaGFzRm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbnNlcnRFbWJlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogZS5zb3VyY2VzLkFQSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfLmNhbGwodGhpcywgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLmVkaXRvci5pbnNlcnRFbWJlZCh0LCBuLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGksIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImluc2VydFRleHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbiwgciwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEsIHMgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB4KGUsIDAsIG4sIHIsIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBvKHUsIDQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSBsWzBdLCBhID0gbFsyXSwgaSA9IGxbM10sIF8uY2FsbCh0aGlzLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMuZWRpdG9yLmluc2VydFRleHQoZSwgdCwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLCBlLCB0Lmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaXNFbmFibGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoInFsLWRpc2FibGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAib2ZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW1pdHRlci5vZmYuYXBwbHkodGhpcy5lbWl0dGVyLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIm9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW1pdHRlci5vbi5hcHBseSh0aGlzLmVtaXR0ZXIsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAib25jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVtaXR0ZXIub25jZS5hcHBseSh0aGlzLmVtaXR0ZXIsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicGFzdGVIVE1MIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkLmRhbmdlcm91c2x5UGFzdGVIVE1MKGUsIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbW92ZUZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHgoZSwgdCwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8oaSwgNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IGFbMF0sIHQgPSBhWzFdLCBuID0gYVszXSwgXy5jYWxsKHRoaXMsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5lZGl0b3IucmVtb3ZlRm9ybWF0KGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbiwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2Nyb2xsSW50b1ZpZXciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zY3JvbGxJbnRvVmlldyh0aGlzLnNjcm9sbGluZ0NvbnRhaW5lcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2V0Q29udGVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHVbImRlZmF1bHQiXS5zb3VyY2VzLkFQSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfLmNhbGwodGhpcywgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgYVsiZGVmYXVsdCJdKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5nZXRMZW5ndGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuZWRpdG9yLmRlbGV0ZVRleHQoMCwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmVkaXRvci5hcHBseURlbHRhKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gby5vcHNbby5vcHMubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gaSAmJiAic3RyaW5nIiA9PSB0eXBlb2YgaS5pbnNlcnQgJiYgIlxuIiA9PT0gaS5pbnNlcnRbaS5pbnNlcnQubGVuZ3RoIC0gMV0gJiYgKHQuZWRpdG9yLmRlbGV0ZVRleHQodC5nZXRMZW5ndGgoKSAtIDEsIDEpLCBvWyJkZWxldGUiXSgxKSksIHIuY29tcG9zZShvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNldFNlbGVjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0KSB0aGlzLnNlbGVjdGlvbi5zZXRSYW5nZShudWxsLCBuIHx8IGUuc291cmNlcy5BUEkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB4KHQsIG4sIHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbyhpLCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gYVswXSwgbiA9IGFbMV0sIHIgPSBhWzNdLCB0aGlzLnNlbGVjdGlvbi5zZXRSYW5nZShuZXcgZi5SYW5nZSh0LCBuKSwgciksIHIgIT09IHVbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCAmJiB0aGlzLnNlbGVjdGlvbi5zY3JvbGxJbnRvVmlldyh0aGlzLnNjcm9sbGluZ0NvbnRhaW5lcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2V0VGV4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdVsiZGVmYXVsdCJdLnNvdXJjZXMuQVBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAobmV3IGFbImRlZmF1bHQiXSkuaW5zZXJ0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q29udGVudHMobiwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHVbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuc2Nyb2xsLnVwZGF0ZShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbi51cGRhdGUoZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlQ29udGVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHVbImRlZmF1bHQiXS5zb3VyY2VzLkFQSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfLmNhbGwodGhpcywgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gbmV3IGFbImRlZmF1bHQiXShlKSwgdC5lZGl0b3IuYXBwbHlEZWx0YShlLCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4sICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBPKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodCA9ICgwLCBwWyJkZWZhdWx0Il0pKCEwLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWJvYXJkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3Rvcnk6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0KSkudGhlbWUgJiYgdC50aGVtZSAhPT0gdy5ERUZBVUxUUy50aGVtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnRoZW1lID0gd1siaW1wb3J0Il0oInRoZW1lcy8iICsgdC50aGVtZSksIG51bGwgPT0gdC50aGVtZSkgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHRoZW1lICIgKyB0LnRoZW1lICsgIi4gRGlkIHlvdSByZWdpc3RlciBpdD8iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHQudGhlbWUgPSBtWyJkZWZhdWx0Il07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICgwLCBwWyJkZWZhdWx0Il0pKCEwLCB7fSwgdC50aGVtZS5ERUZBVUxUUyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbiwgdF0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW9kdWxlcyA9IGUubW9kdWxlcyB8fCB7fSwgT2JqZWN0LmtleXMoZS5tb2R1bGVzKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEwID09PSBlLm1vZHVsZXNbdF0gJiYgKGUubW9kdWxlc1t0XSA9IHt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3Qua2V5cyhuLm1vZHVsZXMpLmNvbmNhdChPYmplY3Qua2V5cyh0Lm1vZHVsZXMpKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHdbImltcG9ydCJdKCJtb2R1bGVzLyIgKyB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBuID8gYi5lcnJvcigiQ2Fubm90IGxvYWQgIiArIHQgKyAiIG1vZHVsZS4gQXJlIHlvdSBzdXJlIHlvdSByZWdpc3RlcmVkIGl0PyIpIDogZVt0XSA9IG4uREVGQVVMVFMgfHwge30sIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSB0Lm1vZHVsZXMgJiYgdC5tb2R1bGVzLnRvb2xiYXIgJiYgdC5tb2R1bGVzLnRvb2xiYXIuY29uc3RydWN0b3IgIT09IE9iamVjdCAmJiAodC5tb2R1bGVzLnRvb2xiYXIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiB0Lm1vZHVsZXMudG9vbGJhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgPSAoMCwgcFsiZGVmYXVsdCJdKSghMCwge30sIHcuREVGQVVMVFMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLCB0KSwgWyJib3VuZHMiLCAiY29udGFpbmVyIiwgInNjcm9sbGluZ0NvbnRhaW5lciJdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgdFtlXSAmJiAodFtlXSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodFtlXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHQubW9kdWxlcyA9IE9iamVjdC5rZXlzKHQubW9kdWxlcykucmVkdWNlKChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubW9kdWxlc1tuXSAmJiAoZVtuXSA9IHQubW9kdWxlc1tuXSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gXyhlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnN0cmljdCAmJiAhdGhpcy5pc0VuYWJsZWQoKSAmJiB0ID09PSB1WyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSByZXR1cm4gbmV3IGFbImRlZmF1bHQiXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbnVsbCA9PSBuID8gbnVsbCA6IHRoaXMuZ2V0U2VsZWN0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZWRpdG9yLmRlbHRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBvICYmICghMCA9PT0gbiAmJiAobiA9IG8uaW5kZXgpLCBudWxsID09IHIgPyBvID0gayhvLCBzLCB0KSA6IDAgIT09IHIgJiYgKG8gPSBrKG8sIG4sIHIsIHQpKSwgdGhpcy5zZXRTZWxlY3Rpb24obywgdVsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UKSksIHMubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwsIGMsIGYgPSBbdVsiZGVmYXVsdCJdLmV2ZW50cy5URVhUX0NIQU5HRSwgcywgaSwgdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSB0aGlzLmVtaXR0ZXIpLmVtaXQuYXBwbHkobCwgW3VbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRV0uY29uY2F0KGYpKSwgdCAhPT0gdVsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UICYmIChjID0gdGhpcy5lbWl0dGVyKS5lbWl0LmFwcGx5KGMsIGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4KGUsIHQsIG4sIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bWJlciIgPT0gdHlwZW9mIGUuaW5kZXggJiYgIm51bWJlciIgPT0gdHlwZW9mIGUubGVuZ3RoID8gIm51bWJlciIgIT0gdHlwZW9mIHQgPyAoaSA9IG8sIG8gPSBuLCBuID0gdCwgdCA9IGUubGVuZ3RoLCBlID0gZS5pbmRleCkgOiAodCA9IGUubGVuZ3RoLCBlID0gZS5pbmRleCkgOiAibnVtYmVyIiAhPSB0eXBlb2YgdCAmJiAoaSA9IG8sIG8gPSBuLCBuID0gdCwgdCA9IDApLCAib2JqZWN0IiA9PT0gKHZvaWQgMCA9PT0gbiA/ICJ1bmRlZmluZWQiIDogcihuKSkgPyAoYSA9IG4sIGkgPSBvKSA6ICJzdHJpbmciID09IHR5cGVvZiBuICYmIChudWxsICE9IG8gPyBhW25dID0gbyA6IGkgPSBuKSwgW2UsIHQsIGEsIGkgPSBpIHx8IHVbImRlZmF1bHQiXS5zb3VyY2VzLkFQSV0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gayhlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIGFbImRlZmF1bHQiXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gW2UuaW5kZXgsIGUuaW5kZXggKyBlLmxlbmd0aF0ubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC50cmFuc2Zvcm1Qb3NpdGlvbihlLCByICE9PSB1WyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBvKGwsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjWzBdLCBzID0gY1sxXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtlLmluZGV4LCBlLmluZGV4ICsgZS5sZW5ndGhdLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPCB0IHx8IGUgPT09IHQgJiYgciA9PT0gdVsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiA/IGUgOiBuID49IDAgPyBlICsgbiA6IE1hdGgubWF4KHQsIGUgKyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvKGQsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBwWzBdLCBzID0gcFsxXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBmLlJhbmdlKGksIHMgLSBpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHcuREVGQVVMVFMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHM6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRzOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczoge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkT25seTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb250YWluZXI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU6ICJkZWZhdWx0IgogICAgICAgICAgICAgICAgICAgICAgICB9LCB3LmV2ZW50cyA9IHVbImRlZmF1bHQiXS5ldmVudHMsIHcuc291cmNlcyA9IHVbImRlZmF1bHQiXS5zb3VyY2VzLCB3LnZlcnNpb24gPSAiMS4zLjciLCB3LmltcG9ydHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YTogYVsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyY2htZW50OiBjWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29yZS9tb2R1bGUiOiBsWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29yZS90aGVtZSI6IG1bImRlZmF1bHQiXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LmV4cGFuZENvbmZpZyA9IE8sIHQub3ZlcmxvYWQgPSB4LCB0WyJkZWZhdWx0Il0gPSB3CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24gZihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogZihvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcyhuKDcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBzKG4oMCkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1KHRoaXMsIHQpLCBsKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCByKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0QXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbXBhcmUodGhpcy5zdGF0aWNzLmJsb3ROYW1lLCByKSA8IDAgJiYgYVsiZGVmYXVsdCJdLnF1ZXJ5KHIsIGFbImRlZmF1bHQiXS5TY29wZS5CTE9UKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLmlzb2xhdGUoZSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICYmIHMud3JhcChyLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImZvcm1hdEF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuLCByLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJvcHRpbWl6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJvcHRpbWl6ZSIsIHRoaXMpLmNhbGwodGhpcywgZSksIHRoaXMucGFyZW50IGluc3RhbmNlb2YgdCAmJiB0LmNvbXBhcmUodGhpcy5zdGF0aWNzLmJsb3ROYW1lLCB0aGlzLnBhcmVudC5zdGF0aWNzLmJsb3ROYW1lKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5wYXJlbnQuaXNvbGF0ZSh0aGlzLm9mZnNldCgpLCB0aGlzLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUNoaWxkcmVuKG4pLCBuLndyYXAodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBhcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5vcmRlci5pbmRleE9mKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQub3JkZXIuaW5kZXhPZihuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgPj0gMCB8fCBvID49IDAgPyByIC0gbyA6IGUgPT09IG4gPyAwIDogZSA8IG4gPyAtMSA6IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShhWyJkZWZhdWx0Il0uSW5saW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgYy5hbGxvd2VkQ2hpbGRyZW4gPSBbYywgYVsiZGVmYXVsdCJdLkVtYmVkLCBpWyJkZWZhdWx0Il1dLCBjLm9yZGVyID0gWyJjdXJzb3IiLCAiaW5saW5lIiwgInVuZGVybGluZSIsICJzdHJpa2UiLCAiaXRhbGljIiwgImJvbGQiLCAic2NyaXB0IiwgImxpbmsiLCAiY29kZSJdLCB0WyJkZWZhdWx0Il0gPSBjCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBuKDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCB0KSwgYSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KCgociA9IG8pICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSlbImRlZmF1bHQiXS5UZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uIGwoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IGwobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGEobig1NCkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gKDAsIGEobigxMCkpWyJkZWZhdWx0Il0pKCJxdWlsbDpldmVudHMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgWyJzZWxlY3Rpb25jaGFuZ2UiLCAibW91c2Vkb3duIiwgIm1vdXNldXAiLCAiY2xpY2siXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGUsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCwgdCA9IEFycmF5KGUpLCBuID0gMDsgbiA8IGU7IG4rKykgdFtuXSA9IGFyZ3VtZW50c1tuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5xbC1jb250YWluZXIiKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3F1aWxsICYmIGUuX19xdWlsbC5lbWl0dGVyICYmIChuID0gZS5fX3F1aWxsLmVtaXR0ZXIpLmhhbmRsZURPTS5hcHBseShuLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5saXN0ZW5lcnMgPSB7fSwgZS5vbigiZXJyb3IiLCBzLmVycm9yKSwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgcih0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImVtaXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5sb2cuYXBwbHkocywgYXJndW1lbnRzKSwgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImVtaXQiLCB0aGlzKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZURPTSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGgsIG4gPSBBcnJheSh0ID4gMSA/IHQgLSAxIDogMCksIHIgPSAxOyByIDwgdDsgcisrKSBuW3IgLSAxXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubGlzdGVuZXJzW2UudHlwZV0gfHwgW10pLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5ub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmhhbmRsZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS50YXJnZXQgPT09IHIgfHwgci5jb250YWlucyhlLnRhcmdldCkpICYmIG8uYXBwbHkodW5kZWZpbmVkLCBbZV0uY29uY2F0KG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAibGlzdGVuRE9NIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1tlXSB8fCAodGhpcy5saXN0ZW5lcnNbZV0gPSBbXSksIHRoaXMubGlzdGVuZXJzW2VdLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShpWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICB1LmV2ZW50cyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVESVRPUl9DSEFOR0U6ICJlZGl0b3ItY2hhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDUk9MTF9CRUZPUkVfVVBEQVRFOiAic2Nyb2xsLWJlZm9yZS11cGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NST0xMX09QVElNSVpFOiAic2Nyb2xsLW9wdGltaXplIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDUk9MTF9VUERBVEU6ICJzY3JvbGwtdXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVElPTl9DSEFOR0U6ICJzZWxlY3Rpb24tY2hhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFRfQ0hBTkdFOiAidGV4dC1jaGFuZ2UiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUuc291cmNlcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSTogImFwaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUxFTlQ6ICJzaWxlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNFUjogInVzZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRbImRlZmF1bHQiXSA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBmdW5jdGlvbiBpKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIodGhpcywgaSksIHRoaXMucXVpbGwgPSBlLCB0aGlzLm9wdGlvbnMgPSB0CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIG8uREVGQVVMVFMgPSB7fSwgdFsiZGVmYXVsdCJdID0gbwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gWyJlcnJvciIsICJ3YXJuIiwgImxvZyIsICJpbmZvIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gIndhcm4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5pbmRleE9mKGUpIDw9IHIuaW5kZXhPZihvKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIG4gPSBhcmd1bWVudHMubGVuZ3RoLCBpID0gQXJyYXkobiA+IDEgPyBuIC0gMSA6IDApLCBhID0gMTsgYSA8IG47IGErKykgaVthIC0gMV0gPSBhcmd1bWVudHNbYV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQgPSBjb25zb2xlKVtlXS5hcHBseSh0LCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnJlZHVjZSgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0W25dID0gaS5iaW5kKGNvbnNvbGUsIG4sIGUpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwge30pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaS5sZXZlbCA9IGEubGV2ZWwgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0WyJkZWZhdWx0Il0gPSBhCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IEFycmF5LnByb3RvdHlwZS5zbGljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuKDUyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuKDUzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gfHwgKG4gPSB7fSksIGUgPT09IHQgfHwgKGUgaW5zdGFuY2VvZiBEYXRlICYmIHQgaW5zdGFuY2VvZiBEYXRlID8gZS5nZXRUaW1lKCkgPT09IHQuZ2V0VGltZSgpIDogIWUgfHwgIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIGUgJiYgIm9iamVjdCIgIT0gdHlwZW9mIHQgPyBuLnN0cmljdCA/IGUgPT09IHQgOiBlID09IHQgOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsLCBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyhlKSB8fCBzKHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnByb3RvdHlwZSAhPT0gdC5wcm90b3R5cGUpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkoZSkpIHJldHVybiAhIWkodCkgJiYgKGUgPSByLmNhbGwoZSksIHQgPSByLmNhbGwodCksIGEoZSwgdCwgbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodShlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1KHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5sZW5ndGggIT09IHQubGVuZ3RoKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSAwOyBsIDwgZS5sZW5ndGg7IGwrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtsXSAhPT0gdFtsXSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gbyhlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gbyh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZi5sZW5ndGggIT0gZC5sZW5ndGgpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmLnNvcnQoKSwgZC5zb3J0KCksIGwgPSBmLmxlbmd0aCAtIDE7IGwgPj0gMDsgbC0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZbbF0gIT0gZFtsXSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBmLmxlbmd0aCAtIDE7IGwgPj0gMDsgbC0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSBmW2xdLCAhYShlW2NdLCB0W2NdLCBuKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGUgPT0gdHlwZW9mIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGUgfHwgZSA9PT0gdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoIWUgfHwgIm9iamVjdCIgIT0gdHlwZW9mIGUgfHwgIm51bWJlciIgIT0gdHlwZW9mIGUubGVuZ3RoIHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIGUuY29weSB8fCAiZnVuY3Rpb24iICE9IHR5cGVvZiBlLnNsaWNlIHx8IGUubGVuZ3RoID4gMCAmJiAibnVtYmVyIiAhPSB0eXBlb2YgZVswXSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbigxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBuICYmIChuID0ge30pLCB0aGlzLmF0dHJOYW1lID0gZSwgdGhpcy5rZXlOYW1lID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSByLlNjb3BlLlRZUEUgJiByLlNjb3BlLkFUVFJJQlVURTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBuLnNjb3BlID8gdGhpcy5zY29wZSA9IG4uc2NvcGUgJiByLlNjb3BlLkxFVkVMIHwgbyA6IHRoaXMuc2NvcGUgPSByLlNjb3BlLkFUVFJJQlVURSwgbnVsbCAhPSBuLndoaXRlbGlzdCAmJiAodGhpcy53aGl0ZWxpc3QgPSBuLndoaXRlbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUua2V5cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdLm1hcC5jYWxsKGUuYXR0cmlidXRlcywgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF0aGlzLmNhbkFkZChlLCB0KSAmJiAoZS5zZXRBdHRyaWJ1dGUodGhpcy5rZXlOYW1lLCB0KSwgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuY2FuQWRkID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSByLnF1ZXJ5KGUsIHIuU2NvcGUuQkxPVCAmICh0aGlzLnNjb3BlIHwgci5TY29wZS5UWVBFKSkgJiYgKG51bGwgPT0gdGhpcy53aGl0ZWxpc3QgfHwgKCJzdHJpbmciID09IHR5cGVvZiB0ID8gdGhpcy53aGl0ZWxpc3QuaW5kZXhPZih0LnJlcGxhY2UoL1siJ10vZywgIiIpKSA+IC0xIDogdGhpcy53aGl0ZWxpc3QuaW5kZXhPZih0KSA+IC0xKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlQXR0cmlidXRlKHRoaXMua2V5TmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS52YWx1ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmdldEF0dHJpYnV0ZSh0aGlzLmtleU5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYW5BZGQoZSwgdCkgJiYgdCA/IHQgOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gbwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IHQuQ29kZSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIHMgPSBlW1N5bWJvbC5pdGVyYXRvcl0oKTsgIShyID0gKGEgPSBzLm5leHQoKSkuZG9uZSkgJiYgKG4ucHVzaChhLnZhbHVlKSwgIXQgfHwgbi5sZW5ndGggIT09IHQpOyByID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyICYmIHNbInJldHVybiJdICYmIHNbInJldHVybiJdKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbiBnKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBlICYmIChlID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8gPyB1bmRlZmluZWQgOiBnKG8sIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIHIpIHJldHVybiByLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gci5nZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGkuY2FsbChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBmKG4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGYobigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZihuKDQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmKG4oNikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGYobig3KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBwKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQodGhpcywgdCksIHAodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoKHQsIGUpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0obFsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgbS5ibG90TmFtZSA9ICJjb2RlIiwgbS50YWdOYW1lID0gIkNPREUiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQodGhpcywgdCksIHAodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoKHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVsdGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZG9tTm9kZS50ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZW5kc1dpdGgoIlxuIikgJiYgKHQgPSB0LnNsaWNlKDAsIC0xKSksIHQuc3BsaXQoIlxuIikucmVkdWNlKChmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pbnNlcnQobikuaW5zZXJ0KCJcbiIsIGUuZm9ybWF0cygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbmV3IGFbImRlZmF1bHQiXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAhPT0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lIHx8ICFuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuZGVzY2VuZGFudChjWyJkZWZhdWx0Il0sIHRoaXMubGVuZ3RoKCkgLSAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcihvLCAxKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gYSAmJiBhLmRlbGV0ZUF0KGEubGVuZ3RoKCkgLSAxLCAxKSwgaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImZvcm1hdCIsIHRoaXMpLmNhbGwodGhpcywgZSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRBdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IG4gJiYgbnVsbCAhPSBzWyJkZWZhdWx0Il0ucXVlcnkociwgc1siZGVmYXVsdCJdLlNjb3BlLkJMT0NLKSAmJiAociAhPT0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lIHx8IG8gIT09IHRoaXMuc3RhdGljcy5mb3JtYXRzKHRoaXMuZG9tTm9kZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMubmV3bGluZUluZGV4KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSA8IDAgfHwgaSA+PSBlICsgbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMubmV3bGluZUluZGV4KGUsICEwKSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpIC0gYSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLmlzb2xhdGUoYSwgdSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBsLm5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5mb3JtYXQociwgbyksIGMgaW5zdGFuY2VvZiB0ICYmIGMuZm9ybWF0QXQoMCwgZSAtIGEgKyBuIC0gdSwgciwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbnNlcnRBdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLmRlc2NlbmRhbnQoY1siZGVmYXVsdCJdLCBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcihvLCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuaW5zZXJ0QXQocywgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJsZW5ndGgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmRvbU5vZGUudGV4dENvbnRlbnQubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb21Ob2RlLnRleHRDb250ZW50LmVuZHNXaXRoKCJcbiIpID8gZSA6IGUgKyAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIm5ld2xpbmVJbmRleCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCAmJiBhcmd1bWVudHNbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KSByZXR1cm4gdGhpcy5kb21Ob2RlLnRleHRDb250ZW50LnNsaWNlKDAsIGUpLmxhc3RJbmRleE9mKCJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuZG9tTm9kZS50ZXh0Q29udGVudC5zbGljZShlKS5pbmRleE9mKCJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA+IC0xID8gZSArIG4gOiAtMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJvcHRpbWl6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb21Ob2RlLnRleHRDb250ZW50LmVuZHNXaXRoKCJcbiIpIHx8IHRoaXMuYXBwZW5kQ2hpbGQoc1siZGVmYXVsdCJdLmNyZWF0ZSgidGV4dCIsICJcbiIpKSwgaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgIm9wdGltaXplIiwgdGhpcykuY2FsbCh0aGlzLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLm5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gbiAmJiBuLnByZXYgPT09IHRoaXMgJiYgbi5zdGF0aWNzLmJsb3ROYW1lID09PSB0aGlzLnN0YXRpY3MuYmxvdE5hbWUgJiYgdGhpcy5zdGF0aWNzLmZvcm1hdHModGhpcy5kb21Ob2RlKSA9PT0gbi5zdGF0aWNzLmZvcm1hdHMobi5kb21Ob2RlKSAmJiAobi5vcHRpbWl6ZShlKSwgbi5tb3ZlQ2hpbGRyZW4odGhpcyksIG4ucmVtb3ZlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlcGxhY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJyZXBsYWNlIiwgdGhpcykuY2FsbCh0aGlzLCBlKSwgW10uc2xpY2UuY2FsbCh0aGlzLmRvbU5vZGUucXVlcnlTZWxlY3RvckFsbCgiKiIpKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHNbImRlZmF1bHQiXS5maW5kKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PSB0ID8gZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpIDogdCBpbnN0YW5jZW9mIHNbImRlZmF1bHQiXS5FbWJlZCA/IHQucmVtb3ZlKCkgOiB0LnVud3JhcCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBpKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSwgImNyZWF0ZSIsIHRoaXMpLmNhbGwodGhpcywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNldEF0dHJpYnV0ZSgic3BlbGxjaGVjayIsICExKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHVbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHkuYmxvdE5hbWUgPSAiY29kZS1ibG9jayIsIHkudGFnTmFtZSA9ICJQUkUiLCB5LlRBQiA9ICIgICIsIHQuQ29kZSA9IG0sIHRbImRlZmF1bHQiXSA9IHkKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgZS5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIGUgIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSwgcyA9IGVbU3ltYm9sLml0ZXJhdG9yXSgpOyAhKHIgPSAoYSA9IHMubmV4dCgpKS5kb25lKSAmJiAobi5wdXNoKGEudmFsdWUpLCAhdCB8fCBuLmxlbmd0aCAhPT0gdCk7IHIgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgaSA9IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXIgJiYgc1sicmV0dXJuIl0gJiYgc1sicmV0dXJuIl0oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobykgdGhyb3cgaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGcobigyKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZyhuKDIwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZyhuKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBnKG4oMTMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBnKG4oMjQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBuKDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGcoZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZyhuKDE2KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZyhuKDIxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gZyhuKDExKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gZyhuKDMpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGcoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IC9eWyAtfl0qJC8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZSh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsIGUpLCB0aGlzLnNjcm9sbCA9IHQsIHRoaXMuZGVsdGEgPSB0aGlzLmdldERlbHRhKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkoZSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYXBwbHlEZWx0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGwudXBkYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuc2Nyb2xsLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Nyb2xsLmJhdGNoU3RhcnQoKSwgKGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSB0Lmluc2VydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAoMCwgaFsiZGVmYXVsdCJdKSh0LmF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZSBuLmltYWdlLCBlLmluc2VydCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHQuYXR0cmlidXRlcy5pbWFnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0LmF0dHJpYnV0ZXMgfHwgITAgIT09IHQuYXR0cmlidXRlcy5saXN0ICYmICEwICE9PSB0LmF0dHJpYnV0ZXMuYnVsbGV0IHx8ICgodCA9ICgwLCBoWyJkZWZhdWx0Il0pKHQpKS5hdHRyaWJ1dGVzLmxpc3QgPyB0LmF0dHJpYnV0ZXMubGlzdCA9ICJvcmRlcmVkIiA6ICh0LmF0dHJpYnV0ZXMubGlzdCA9ICJidWxsZXQiLCBkZWxldGUgdC5hdHRyaWJ1dGVzLmJ1bGxldCkpLCAic3RyaW5nIiA9PSB0eXBlb2YgdC5pbnNlcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5pbnNlcnQucmVwbGFjZSgvXHJcbi9nLCAiXG4iKS5yZXBsYWNlKC9cci9nLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmluc2VydChyLCB0LmF0dHJpYnV0ZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucHVzaCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuZXcgYVsiZGVmYXVsdCJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlKSkucmVkdWNlKChmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBhLnJldGFpbiB8fCBhWyJkZWxldGUiXSB8fCBhLmluc2VydC5sZW5ndGggfHwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGEuYXR0cmlidXRlcyB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBhLmluc2VydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGEuaW5zZXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGEuaW5zZXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5lbmRzV2l0aCgiXG4iKSAmJiBuICYmIChuID0gITEsIHAgPSBwLnNsaWNlKDAsIC0xKSksIGUgPj0gaSAmJiAhcC5lbmRzV2l0aCgiXG4iKSAmJiAobiA9ICEwKSwgdC5zY3JvbGwuaW5zZXJ0QXQoZSwgcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHQuc2Nyb2xsLmxpbmUoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG8oaCwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG1bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IG1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9ICgwLCB5WyJkZWZhdWx0Il0pKHt9LCAoMCwgZi5idWJibGVGb3JtYXRzKShnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyBpbnN0YW5jZW9mIGRbImRlZmF1bHQiXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gZy5kZXNjZW5kYW50KHVbImRlZmF1bHQiXS5MZWFmLCB2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IG8odywgMSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9ICgwLCB5WyJkZWZhdWx0Il0pKGIsICgwLCBmLmJ1YmJsZUZvcm1hdHMpKE8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHNbImRlZmF1bHQiXS5hdHRyaWJ1dGVzLmRpZmYoYiwgYykgfHwge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgib2JqZWN0IiA9PT0gcihhLmluc2VydCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfID0gT2JqZWN0LmtleXMoYS5pbnNlcnQpWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gXykgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNjcm9sbC5pbnNlcnRBdChlLCBfLCBhLmluc2VydFtfXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICs9IGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGMpLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zY3JvbGwuZm9ybWF0QXQoZSwgbCwgbiwgY1tuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGUgKyBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCksIGUucmVkdWNlKChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJudW1iZXIiID09IHR5cGVvZiBuWyJkZWxldGUiXSA/ICh0LnNjcm9sbC5kZWxldGVBdChlLCBuWyJkZWxldGUiXSksIGUpIDogZSArIChuLnJldGFpbiB8fCBuLmluc2VydC5sZW5ndGggfHwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSwgdGhpcy5zY3JvbGwuYmF0Y2hFbmQoKSwgdGhpcy51cGRhdGUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVsZXRlVGV4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JvbGwuZGVsZXRlQXQoZSwgdCksIHRoaXMudXBkYXRlKChuZXcgYVsiZGVmYXVsdCJdKS5yZXRhaW4oZSlbImRlbGV0ZSJdKHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRMaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcm9sbC51cGRhdGUoKSwgT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24obykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IG4uc2Nyb2xsLndoaXRlbGlzdCB8fCBuLnNjcm9sbC53aGl0ZWxpc3Rbb10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLnNjcm9sbC5saW5lcyhlLCBNYXRoLm1heCh0LCAxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIGxbImRlZmF1bHQiXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZSAtIHQub2Zmc2V0KG4uc2Nyb2xsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQubmV3bGluZUluZGV4KHMgKyBhKSAtIHMgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZm9ybWF0QXQocywgdSwgbywgcltvXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0LmZvcm1hdChvLCByW29dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgLT0gaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuc2Nyb2xsLm9wdGltaXplKCksIHRoaXMudXBkYXRlKChuZXcgYVsiZGVmYXVsdCJdKS5yZXRhaW4oZSkucmV0YWluKHQsICgwLCBoWyJkZWZhdWx0Il0pKHIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0VGV4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24obykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc2Nyb2xsLmZvcm1hdEF0KGUsIHQsIG8sIHJbb10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMudXBkYXRlKChuZXcgYVsiZGVmYXVsdCJdKS5yZXRhaW4oZSkucmV0YWluKHQsICgwLCBoWyJkZWZhdWx0Il0pKHIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0Q29udGVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVsdGEuc2xpY2UoZSwgZSArIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldERlbHRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Nyb2xsLmxpbmVzKCkucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY29uY2F0KHQuZGVsdGEoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuZXcgYVsiZGVmYXVsdCJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJnZXRGb3JtYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHQgPyB0aGlzLnNjcm9sbC5wYXRoKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG8oZSwgMSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCBpbnN0YW5jZW9mIGRbImRlZmF1bHQiXSA/IG4ucHVzaCh0KSA6IHQgaW5zdGFuY2VvZiB1WyJkZWZhdWx0Il0uTGVhZiAmJiByLnB1c2godCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IChuID0gdGhpcy5zY3JvbGwubGluZXMoZSwgdCksIHIgPSB0aGlzLnNjcm9sbC5kZXNjZW5kYW50cyh1WyJkZWZhdWx0Il0uTGVhZiwgZSwgdCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBbbiwgcl0ubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGUubGVuZ3RoKSByZXR1cm4ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9ICgwLCBmLmJ1YmJsZUZvcm1hdHMpKGUuc2hpZnQoKSk7IE9iamVjdC5rZXlzKHQpLmxlbmd0aCA+IDA7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBuKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHcoKDAsIGYuYnViYmxlRm9ybWF0cykobiksIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geVsiZGVmYXVsdCJdLmFwcGx5KHlbImRlZmF1bHQiXSwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0VGV4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb250ZW50cyhlLCB0KS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGUuaW5zZXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5zZXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuam9pbigiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaW5zZXJ0RW1iZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Nyb2xsLmluc2VydEF0KGUsIHQsIG4pLCB0aGlzLnVwZGF0ZSgobmV3IGFbImRlZmF1bHQiXSkucmV0YWluKGUpLmluc2VydChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBlW3RdID0gbiwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh7fSwgdCwgbikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbnNlcnRUZXh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdC5yZXBsYWNlKC9cclxuL2csICJcbiIpLnJlcGxhY2UoL1xyL2csICJcbiIpLCB0aGlzLnNjcm9sbC5pbnNlcnRBdChlLCB0KSwgT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24obykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc2Nyb2xsLmZvcm1hdEF0KGUsIHQubGVuZ3RoLCBvLCByW29dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnVwZGF0ZSgobmV3IGFbImRlZmF1bHQiXSkucmV0YWluKGUpLmluc2VydCh0LCAoMCwgaFsiZGVmYXVsdCJdKShyKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImlzQmxhbmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSB0aGlzLnNjcm9sbC5jaGlsZHJlbi5sZW5ndGgpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbC5jaGlsZHJlbi5sZW5ndGggPiAxKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuc2Nyb2xsLmNoaWxkcmVuLmhlYWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zdGF0aWNzLmJsb3ROYW1lID09PSBkWyJkZWZhdWx0Il0uYmxvdE5hbWUgJiYgIShlLmNoaWxkcmVuLmxlbmd0aCA+IDEpICYmIGUuY2hpbGRyZW4uaGVhZCBpbnN0YW5jZW9mIHBbImRlZmF1bHQiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW1vdmVGb3JtYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmdldFRleHQoZSwgdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuc2Nyb2xsLmxpbmUoZSArIHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvKHIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBuZXcgYVsiZGVmYXVsdCJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBzICYmIChjID0gcyBpbnN0YW5jZW9mIGxbImRlZmF1bHQiXSA/IHMubmV3bGluZUluZGV4KHUpIC0gdSArIDEgOiBzLmxlbmd0aCgpIC0gdSwgZiA9IHMuZGVsdGEoKS5zbGljZSh1LCB1ICsgYyAtIDEpLmluc2VydCgiXG4iKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZ2V0Q29udGVudHMoZSwgdCArIGMpLmRpZmYoKG5ldyBhWyJkZWZhdWx0Il0pLmluc2VydChuKS5jb25jYXQoZikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAobmV3IGFbImRlZmF1bHQiXSkucmV0YWluKGUpLmNvbmNhdChkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGx5RGVsdGEocCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZGVsdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gdC5sZW5ndGggJiYgImNoYXJhY3RlckRhdGEiID09PSB0WzBdLnR5cGUgJiYgdFswXS50YXJnZXQuZGF0YS5tYXRjaCh2KSAmJiB1WyJkZWZhdWx0Il0uZmluZCh0WzBdLnRhcmdldCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHVbImRlZmF1bHQiXS5maW5kKHRbMF0udGFyZ2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICgwLCBmLmJ1YmJsZUZvcm1hdHMpKG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gby5vZmZzZXQodGhpcy5zY3JvbGwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gdFswXS5vbGRWYWx1ZS5yZXBsYWNlKGNbImRlZmF1bHQiXS5DT05URU5UUywgIiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gKG5ldyBhWyJkZWZhdWx0Il0pLmluc2VydChsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IChuZXcgYVsiZGVmYXVsdCJdKS5pbnNlcnQoby52YWx1ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IChuZXcgYVsiZGVmYXVsdCJdKS5yZXRhaW4ocykuY29uY2F0KGQuZGlmZihwLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGgucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lmluc2VydCA/IGUuaW5zZXJ0KHQuaW5zZXJ0LCBpKSA6IGUucHVzaCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuZXcgYVsiZGVmYXVsdCJdKSwgdGhpcy5kZWx0YSA9IHIuY29tcG9zZShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuZGVsdGEgPSB0aGlzLmdldERlbHRhKCksIGUgJiYgKDAsIG1bImRlZmF1bHQiXSkoci5jb21wb3NlKGUpLCB0aGlzLmRlbHRhKSB8fCAoZSA9IHIuZGlmZih0aGlzLmRlbHRhLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlW3JdIHx8ICh0W3JdID09PSBlW3JdID8gbltyXSA9IHRbcl0gOiBBcnJheS5pc0FycmF5KHRbcl0pID8gdFtyXS5pbmRleE9mKGVbcl0pIDwgMCAmJiAobltyXSA9IHRbcl0uY29uY2F0KFtlW3JdXSkpIDogbltyXSA9IFt0W3JdLCBlW3JdXSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBiCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gdC5SYW5nZSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIHMgPSBlW1N5bWJvbC5pdGVyYXRvcl0oKTsgIShyID0gKGEgPSBzLm5leHQoKSkuZG9uZSkgJiYgKG4ucHVzaChhLnZhbHVlKSwgIXQgfHwgbi5sZW5ndGggIT09IHQpOyByID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyICYmIHNbInJldHVybiJdICYmIHNbInJldHVybiJdKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBsKG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGwobigyMSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGwobigxMSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGwobig4KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMCwgbiA9IEFycmF5KGUubGVuZ3RoKTsgdCA8IGUubGVuZ3RoOyB0KyspIG5bdF0gPSBlW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShlKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9ICgwLCBsKG4oMTApKVsiZGVmYXVsdCJdKSgicXVpbGw6c2VsZWN0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24geShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLCB5KSwgdGhpcy5pbmRleCA9IGUsIHRoaXMubGVuZ3RoID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmKHRoaXMsIGUpLCB0aGlzLmVtaXR0ZXIgPSBuLCB0aGlzLnNjcm9sbCA9IHQsIHRoaXMuY29tcG9zaW5nID0gITEsIHRoaXMubW91c2VEb3duID0gITEsIHRoaXMucm9vdCA9IHRoaXMuc2Nyb2xsLmRvbU5vZGUsIHRoaXMuY3Vyc29yID0gaVsiZGVmYXVsdCJdLmNyZWF0ZSgiY3Vyc29yIiwgdGhpcyksIHRoaXMubGFzdFJhbmdlID0gdGhpcy5zYXZlZFJhbmdlID0gbmV3IHAoMCwgMCksIHRoaXMuaGFuZGxlQ29tcG9zaXRpb24oKSwgdGhpcy5oYW5kbGVEcmFnZ2luZygpLCB0aGlzLmVtaXR0ZXIubGlzdGVuRE9NKCJzZWxlY3Rpb25jaGFuZ2UiLCBkb2N1bWVudCwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5tb3VzZURvd24gfHwgc2V0VGltZW91dChyLnVwZGF0ZS5iaW5kKHIsIHVbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZW1pdHRlci5vbih1WyJkZWZhdWx0Il0uZXZlbnRzLkVESVRPUl9DSEFOR0UsIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID09PSB1WyJkZWZhdWx0Il0uZXZlbnRzLlRFWFRfQ0hBTkdFICYmIHQubGVuZ3RoKCkgPiAwICYmIHIudXBkYXRlKHVbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmVtaXR0ZXIub24odVsiZGVmYXVsdCJdLmV2ZW50cy5TQ1JPTExfQkVGT1JFX1VQREFURSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuaGFzRm9jdXMoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gci5nZXROYXRpdmVSYW5nZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gZSAmJiBlLnN0YXJ0Lm5vZGUgIT09IHIuY3Vyc29yLnRleHROb2RlICYmIHIuZW1pdHRlci5vbmNlKHVbImRlZmF1bHQiXS5ldmVudHMuU0NST0xMX1VQREFURSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5zZXROYXRpdmVSYW5nZShlLnN0YXJ0Lm5vZGUsIGUuc3RhcnQub2Zmc2V0LCBlLmVuZC5ub2RlLCBlLmVuZC5vZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5lbWl0dGVyLm9uKHVbImRlZmF1bHQiXS5ldmVudHMuU0NST0xMX09QVElNSVpFLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQucmFuZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQucmFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLnN0YXJ0Tm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uc3RhcnRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmVuZE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuLmVuZE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNldE5hdGl2ZVJhbmdlKG8sIGksIGEsIHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy51cGRhdGUodVsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyhlLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVDb21wb3NpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm9vdC5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0IiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY29tcG9zaW5nID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5yb290LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uZW5kIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbXBvc2luZyA9ICExLCBlLmN1cnNvci5wYXJlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmN1cnNvci5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0TmF0aXZlUmFuZ2UodC5zdGFydE5vZGUsIHQuc3RhcnRPZmZzZXQsIHQuZW5kTm9kZSwgdC5lbmRPZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVEcmFnZ2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdHRlci5saXN0ZW5ET00oIm1vdXNlZG93biIsIGRvY3VtZW50LmJvZHksIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1vdXNlRG93biA9ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZW1pdHRlci5saXN0ZW5ET00oIm1vdXNldXAiLCBkb2N1bWVudC5ib2R5LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tb3VzZURvd24gPSAhMSwgZS51cGRhdGUodVsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb2N1cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRm9jdXMoKSB8fCAodGhpcy5yb290LmZvY3VzKCksIHRoaXMuc2V0UmFuZ2UodGhpcy5zYXZlZFJhbmdlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHRoaXMuc2Nyb2xsLndoaXRlbGlzdCB8fCB0aGlzLnNjcm9sbC53aGl0ZWxpc3RbZV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbC51cGRhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuZ2V0TmF0aXZlUmFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBuICYmIG4ubmF0aXZlLmNvbGxhcHNlZCAmJiAhaVsiZGVmYXVsdCJdLnF1ZXJ5KGUsIGlbImRlZmF1bHQiXS5TY29wZS5CTE9DSykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uc3RhcnQubm9kZSAhPT0gdGhpcy5jdXJzb3IudGV4dE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gaVsiZGVmYXVsdCJdLmZpbmQobi5zdGFydC5ub2RlLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSByKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIGlbImRlZmF1bHQiXS5MZWFmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSByLnNwbGl0KG4uc3RhcnQub2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy5jdXJzb3IsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugci5pbnNlcnRCZWZvcmUodGhpcy5jdXJzb3IsIG4uc3RhcnQubm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnNvci5hdHRhY2goKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yLmZvcm1hdChlLCB0KSwgdGhpcy5zY3JvbGwub3B0aW1pemUoKSwgdGhpcy5zZXROYXRpdmVSYW5nZSh0aGlzLmN1cnNvci50ZXh0Tm9kZSwgdGhpcy5jdXJzb3IudGV4dE5vZGUuZGF0YS5sZW5ndGgpLCB0aGlzLnVwZGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJnZXRCb3VuZHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuc2Nyb2xsLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IE1hdGgubWluKGUsIG4gLSAxKSwgdCA9IE1hdGgubWluKGUgKyB0LCBuIC0gMSkgLSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuc2Nyb2xsLmxlYWYoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIoaSwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGFbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBzKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gcy5wb3NpdGlvbih1LCAhMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHIobCwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gY1swXSwgdSA9IGNbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLnNldFN0YXJ0KG8sIHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5zY3JvbGwubGVhZihlICsgdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSByKGQsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gcFswXSwgdSA9IHBbMV0sIG51bGwgPT0gcykgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBzLnBvc2l0aW9uKHUsICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHIoaCwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gPSBtWzBdLCB1ID0gbVsxXSwgZi5zZXRFbmQobywgdSksIGYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gImxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyBpbnN0YW5jZW9mIFRleHQgPyAodSA8IG8uZGF0YS5sZW5ndGggPyAoZi5zZXRTdGFydChvLCB1KSwgZi5zZXRFbmQobywgdSArIDEpKSA6IChmLnNldFN0YXJ0KG8sIHUgLSAxKSwgZi5zZXRFbmQobywgdSksIHkgPSAicmlnaHQiKSwgZyA9IGYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpIDogKGcgPSBzLmRvbU5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHUgPiAwICYmICh5ID0gInJpZ2h0IikpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBnLnRvcCArIGcuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogZy5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogZ1t5XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogZ1t5XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGcudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldE5hdGl2ZVJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IGUgfHwgZS5yYW5nZUNvdW50IDw9IDApIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmdldFJhbmdlQXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0KSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5ub3JtYWxpemVOYXRpdmUodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5pbmZvKCJnZXROYXRpdmVSYW5nZSIsIG4pLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldFJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldE5hdGl2ZVJhbmdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gW251bGwsIG51bGxdIDogW3RoaXMubm9ybWFsaXplZFRvUmFuZ2UoZSksIGVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhc0ZvY3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMucm9vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJub3JtYWxpemVkVG9SYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Uuc3RhcnQubm9kZSwgZS5zdGFydC5vZmZzZXRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubmF0aXZlLmNvbGxhcHNlZCB8fCBuLnB1c2goW2UuZW5kLm5vZGUsIGUuZW5kLm9mZnNldF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHIoZSwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gblswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGlbImRlZmF1bHQiXS5maW5kKG8sICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBzLm9mZnNldCh0LnNjcm9sbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBhID8gdSA6IHMgaW5zdGFuY2VvZiBpWyJkZWZhdWx0Il0uQ29udGFpbmVyID8gdSArIHMubGVuZ3RoKCkgOiB1ICsgcy5pbmRleChvLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5taW4oTWF0aC5tYXguYXBwbHkoTWF0aCwgYyhvKSksIHRoaXMuc2Nyb2xsLmxlbmd0aCgpIC0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGgubWluLmFwcGx5KE1hdGgsIFthXS5jb25jYXQoYyhvKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBwKHMsIGEgLSBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJub3JtYWxpemVOYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtKHRoaXMucm9vdCwgZS5zdGFydENvbnRhaW5lcikgfHwgIWUuY29sbGFwc2VkICYmICFtKHRoaXMucm9vdCwgZS5lbmRDb250YWluZXIpKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGU6IGUuc3RhcnRDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogZS5zdGFydE9mZnNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGU6IGUuZW5kQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGUuZW5kT2Zmc2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmU6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3Quc3RhcnQsIHQuZW5kXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGUubm9kZSwgbiA9IGUub2Zmc2V0OyAhKHQgaW5zdGFuY2VvZiBUZXh0KSAmJiB0LmNoaWxkTm9kZXMubGVuZ3RoID4gMDspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNoaWxkTm9kZXMubGVuZ3RoID4gbikgdCA9IHQuY2hpbGROb2Rlc1tuXSwgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY2hpbGROb2Rlcy5sZW5ndGggIT09IG4pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICh0ID0gdC5sYXN0Q2hpbGQpIGluc3RhbmNlb2YgVGV4dCA/IHQuZGF0YS5sZW5ndGggOiB0LmNoaWxkTm9kZXMubGVuZ3RoICsgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5ub2RlID0gdCwgZS5vZmZzZXQgPSBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmFuZ2VUb05hdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUuY29sbGFwc2VkID8gW2UuaW5kZXhdIDogW2UuaW5kZXgsIGUuaW5kZXggKyBlLmxlbmd0aF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnNjcm9sbC5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gTWF0aC5taW4oaSAtIDEsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhLCBzID0gdC5zY3JvbGwubGVhZihlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHIocywgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1WzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGwucG9zaXRpb24oYywgMCAhPT0gbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSByKGYsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBkWzBdLCBjID0gZFsxXSwgby5wdXNoKGEsIGMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG8ubGVuZ3RoIDwgMiAmJiAobyA9IG8uY29uY2F0KG8pKSwgbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJzY3JvbGxJbnRvVmlldyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMubGFzdFJhbmdlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5nZXRCb3VuZHModC5pbmRleCwgdC5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLnNjcm9sbC5sZW5ndGgoKSAtIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5zY3JvbGwubGluZShNYXRoLm1pbih0LmluZGV4LCBvKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcihpLCAxKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHRoaXMuc2Nyb2xsLmxpbmUoTWF0aC5taW4odC5pbmRleCArIHQubGVuZ3RoLCBvKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcih1LCAxKVswXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGEgJiYgbnVsbCAhPSBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnRvcCA8IGwudG9wID8gZS5zY3JvbGxUb3AgLT0gbC50b3AgLSBuLnRvcCA6IG4uYm90dG9tID4gbC5ib3R0b20gJiYgKGUuc2Nyb2xsVG9wICs9IG4uYm90dG9tIC0gbC5ib3R0b20pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNldE5hdGl2ZVJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkICYmIGFyZ3VtZW50c1s0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkLmluZm8oInNldE5hdGl2ZVJhbmdlIiwgZSwgdCwgbiwgciksIG51bGwgPT0gZSB8fCBudWxsICE9IHRoaXMucm9vdC5wYXJlbnROb2RlICYmIG51bGwgIT0gZS5wYXJlbnROb2RlICYmIG51bGwgIT0gbi5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc0ZvY3VzKCkgfHwgdGhpcy5yb290LmZvY3VzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9ICh0aGlzLmdldE5hdGl2ZVJhbmdlKCkgfHwge30pLm5hdGl2ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IGEgfHwgbyB8fCBlICE9PSBhLnN0YXJ0Q29udGFpbmVyIHx8IHQgIT09IGEuc3RhcnRPZmZzZXQgfHwgbiAhPT0gYS5lbmRDb250YWluZXIgfHwgciAhPT0gYS5lbmRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQlIiID09IGUudGFnTmFtZSAmJiAodCA9IFtdLmluZGV4T2YuY2FsbChlLnBhcmVudE5vZGUuY2hpbGROb2RlcywgZSksIGUgPSBlLnBhcmVudE5vZGUpLCAiQlIiID09IG4udGFnTmFtZSAmJiAociA9IFtdLmluZGV4T2YuY2FsbChuLnBhcmVudE5vZGUuY2hpbGROb2RlcywgbiksIG4gPSBuLnBhcmVudE5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnNldFN0YXJ0KGUsIHQpLCBzLnNldEVuZChuLCByKSwgaS5yZW1vdmVBbGxSYW5nZXMoKSwgaS5hZGRSYW5nZShzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaS5yZW1vdmVBbGxSYW5nZXMoKSwgdGhpcy5yb290LmJsdXIoKSwgZG9jdW1lbnQuYm9keS5mb2N1cygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNldFJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHVbImRlZmF1bHQiXS5zb3VyY2VzLkFQSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAobiA9IHQsIHQgPSAhMSksIGQuaW5mbygic2V0UmFuZ2UiLCBlKSwgbnVsbCAhPSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnJhbmdlVG9OYXRpdmUoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXROYXRpdmVSYW5nZS5hcHBseSh0aGlzLCBjKHIpLmNvbmNhdChbdF0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuc2V0TmF0aXZlUmFuZ2UobnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZShuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ1cGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdVsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5sYXN0UmFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZ2V0UmFuZ2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcihuLCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gb1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gb1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhc3RSYW5nZSA9IGksIG51bGwgIT0gdGhpcy5sYXN0UmFuZ2UgJiYgKHRoaXMuc2F2ZWRSYW5nZSA9IHRoaXMubGFzdFJhbmdlKSwgISgwLCBzWyJkZWZhdWx0Il0pKHQsIHRoaXMubGFzdFJhbmdlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmNvbXBvc2luZyAmJiBudWxsICE9IGwgJiYgbC5uYXRpdmUuY29sbGFwc2VkICYmIGwuc3RhcnQubm9kZSAhPT0gdGhpcy5jdXJzb3IudGV4dE5vZGUgJiYgdGhpcy5jdXJzb3IucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmLCBkID0gW3VbImRlZmF1bHQiXS5ldmVudHMuU0VMRUNUSU9OX0NIQU5HRSwgKDAsIGFbImRlZmF1bHQiXSkodGhpcy5sYXN0UmFuZ2UpLCAoMCwgYVsiZGVmYXVsdCJdKSh0KSwgZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGMgPSB0aGlzLmVtaXR0ZXIpLmVtaXQuYXBwbHkoYywgW3VbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRV0uY29uY2F0KGQpKSwgZSAhPT0gdVsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UICYmIChmID0gdGhpcy5lbWl0dGVyKS5lbWl0LmFwcGx5KGYsIGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG0oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IGluc3RhbmNlb2YgVGV4dCAmJiAodCA9IHQucGFyZW50Tm9kZSksIGUuY29udGFpbnModCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0LlJhbmdlID0gcCwgdFsiZGVmYXVsdCJdID0gaAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIGMoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IGMobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMCk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKHRoaXMsIHQpLCB1KHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaW5zZXJ0SW50byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0gZS5jaGlsZHJlbi5sZW5ndGggPyBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5zZXJ0SW50byIsIHRoaXMpLmNhbGwodGhpcywgZSwgbikgOiB0aGlzLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxlbmd0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ2YWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ2YWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKChyID0gYSkgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdLkVtYmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5ibG90TmFtZSA9ICJicmVhayIsIGwudGFnTmFtZSA9ICJCUiIsIHRbImRlZmF1bHQiXSA9IGwKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Byb3RvX186IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fcHJvdG9fXyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoZVtuXSA9IHRbbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgdCksIGUucHJvdG90eXBlID0gbnVsbCA9PT0gdCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4oNDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMzApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuY2FsbCh0aGlzLCB0KSB8fCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5idWlsZCgpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUuYXR0YWNoLmNhbGwodGhpcyksIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5hdHRhY2goKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5idWlsZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBuZXcgaVsiZGVmYXVsdCJdLCBbXS5zbGljZS5jYWxsKHRoaXMuZG9tTm9kZS5jaGlsZE5vZGVzKS5yZXZlcnNlKCkuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGwodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5pbnNlcnRCZWZvcmUobiwgZS5jaGlsZHJlbi5oZWFkIHx8IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIHMuUGFyY2htZW50RXJyb3IpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmRlbGV0ZUF0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZSAmJiB0ID09PSB0aGlzLmxlbmd0aCgpKSByZXR1cm4gdGhpcy5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoQXQoZSwgdCwgKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZGVsZXRlQXQodCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZGVzY2VuZGFudCA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLmNoaWxkcmVuLmZpbmQobiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gclswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlLmJsb3ROYW1lICYmIGUobykgfHwgbnVsbCAhPSBlLmJsb3ROYW1lICYmIG8gaW5zdGFuY2VvZiBlID8gW28sIGldIDogbyBpbnN0YW5jZW9mIHQgPyBvLmRlc2NlbmRhbnQoZSwgaSkgOiBbbnVsbCwgLTFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZGVzY2VuZGFudHMgPSBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gbiAmJiAobiA9IDApLCB2b2lkIDAgPT09IHIgJiYgKHIgPSBOdW1iZXIuTUFYX1ZBTFVFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5mb3JFYWNoQXQobiwgciwgKGZ1bmN0aW9uKG4sIHIsIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09IGUuYmxvdE5hbWUgJiYgZShuKSB8fCBudWxsICE9IGUuYmxvdE5hbWUgJiYgbiBpbnN0YW5jZW9mIGUpICYmIG8ucHVzaChuKSwgbiBpbnN0YW5jZW9mIHQgJiYgKG8gPSBvLmNvbmNhdChuLmRlc2NlbmRhbnRzKGUsIHIsIGkpKSksIGkgLT0gYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5kZXRhY2ggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmRldGFjaCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZS5wcm90b3R5cGUuZGV0YWNoLmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5mb3JtYXRBdCA9IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoQXQoZSwgdCwgKGZ1bmN0aW9uKGUsIHQsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZm9ybWF0QXQodCwgbywgbiwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuaW5zZXJ0QXQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5jaGlsZHJlbi5maW5kKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHJbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gclsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIG8uaW5zZXJ0QXQoaSwgdCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBudWxsID09IG4gPyBzLmNyZWF0ZSgidGV4dCIsIHQpIDogcy5jcmVhdGUodCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMuc3RhdGljcy5hbGxvd2VkQ2hpbGRyZW4gJiYgIXRoaXMuc3RhdGljcy5hbGxvd2VkQ2hpbGRyZW4uc29tZSgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSB0aHJvdyBuZXcgcy5QYXJjaG1lbnRFcnJvcigiQ2Fubm90IGluc2VydCAiICsgZS5zdGF0aWNzLmJsb3ROYW1lICsgIiBpbnRvICIgKyB0aGlzLnN0YXRpY3MuYmxvdE5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmluc2VydEludG8odGhpcywgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSArIHQubGVuZ3RoKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUubW92ZUNoaWxkcmVuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaW5zZXJ0QmVmb3JlKG4sIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLm9wdGltaXplID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5wcm90b3R5cGUub3B0aW1pemUuY2FsbCh0aGlzLCB0KSwgMCA9PT0gdGhpcy5jaGlsZHJlbi5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLnN0YXRpY3MuZGVmYXVsdENoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBzLmNyZWF0ZSh0aGlzLnN0YXRpY3MuZGVmYXVsdENoaWxkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG4pLCBuLm9wdGltaXplKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5yZW1vdmUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gbiAmJiAobiA9ICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLmNoaWxkcmVuLmZpbmQoZSwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gclswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcywgZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvIGluc3RhbmNlb2YgdCA/IGEuY29uY2F0KG8ucGF0aChpLCBuKSkgOiAobnVsbCAhPSBvICYmIGEucHVzaChbbywgaV0pLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuLnJlbW92ZShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gaW5zdGFuY2VvZiB0ICYmIG4ubW92ZUNoaWxkcmVuKHRoaXMpLCBlLnByb3RvdHlwZS5yZXBsYWNlLmNhbGwodGhpcywgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gdCAmJiAodCA9ICExKSwgIXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBlKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID09PSB0aGlzLmxlbmd0aCgpKSByZXR1cm4gdGhpcy5uZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmNsb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUobiwgdGhpcy5uZXh0KSwgdGhpcy5jaGlsZHJlbi5mb3JFYWNoQXQoZSwgdGhpcy5sZW5ndGgoKSwgKGZ1bmN0aW9uKGUsIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlLnNwbGl0KHIsIHQpLCBuLmFwcGVuZENoaWxkKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVud3JhcCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVDaGlsZHJlbih0aGlzLnBhcmVudCwgdGhpcy5uZXh0KSwgdGhpcy5yZW1vdmUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0ID09PSBuLmRvbU5vZGUgJiYgImNoaWxkTGlzdCIgPT09IGUudHlwZSAmJiAoci5wdXNoLmFwcGx5KHIsIGUuYWRkZWROb2RlcyksIG8ucHVzaC5hcHBseShvLCBlLnJlbW92ZWROb2RlcykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgby5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShudWxsICE9IGUucGFyZW50Tm9kZSAmJiAiSUZSQU1FIiAhPT0gZS50YWdOYW1lICYmIGRvY3VtZW50LmJvZHkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHMuZmluZChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IHQgJiYgKG51bGwgIT0gdC5kb21Ob2RlLnBhcmVudE5vZGUgJiYgdC5kb21Ob2RlLnBhcmVudE5vZGUgIT09IG4uZG9tTm9kZSB8fCB0LmRldGFjaCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5wYXJlbnROb2RlID09IG4uZG9tTm9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuc29ydCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgPyAwIDogZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HID8gMSA6IC0xCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGUubmV4dFNpYmxpbmcgJiYgKHQgPSBzLmZpbmQoZS5uZXh0U2libGluZykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBsKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5uZXh0ID09IHQgJiYgbnVsbCAhPSByLm5leHQgfHwgKG51bGwgIT0gci5wYXJlbnQgJiYgci5wYXJlbnQucmVtb3ZlQ2hpbGQobiksIG4uaW5zZXJ0QmVmb3JlKHIsIHQgfHwgdW5kZWZpbmVkKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShhWyJkZWZhdWx0Il0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHMuZmluZChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHQpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHMuY3JlYXRlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHMuY3JlYXRlKHMuU2NvcGUuSU5MSU5FKSwgW10uc2xpY2UuY2FsbChlLmNoaWxkTm9kZXMpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5kb21Ob2RlLmFwcGVuZENoaWxkKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBlLnBhcmVudE5vZGUgJiYgZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0LmRvbU5vZGUsIGUpLCB0LmF0dGFjaCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Byb3RvX186IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fcHJvdG9fXyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoZVtuXSA9IHRbbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgdCksIGUucHJvdG90eXBlID0gbnVsbCA9PT0gdCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4oMTIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMzEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4oMTcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuY2FsbCh0aGlzLCB0KSB8fCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5hdHRyaWJ1dGVzID0gbmV3IGFbImRlZmF1bHQiXShuLmRvbU5vZGUpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LmZvcm1hdHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgdGhpcy50YWdOYW1lIHx8IChBcnJheS5pc0FycmF5KHRoaXMudGFnTmFtZSkgPyBlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA6IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdS5xdWVyeShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiBpbnN0YW5jZW9mIGlbImRlZmF1bHQiXSA/IHRoaXMuYXR0cmlidXRlcy5hdHRyaWJ1dGUobiwgdCkgOiB0ICYmIChudWxsID09IG4gfHwgZSA9PT0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lICYmIHRoaXMuZm9ybWF0cygpW2VdID09PSB0IHx8IHRoaXMucmVwbGFjZVdpdGgoZSwgdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZm9ybWF0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuYXR0cmlidXRlcy52YWx1ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLnN0YXRpY3MuZm9ybWF0cyh0aGlzLmRvbU5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSB0ICYmIChlW3RoaXMuc3RhdGljcy5ibG90TmFtZV0gPSB0KSwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnJlcGxhY2VXaXRoID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUucHJvdG90eXBlLnJlcGxhY2VXaXRoLmNhbGwodGhpcywgdCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXMuY29weShyKSwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZS51cGRhdGUuY2FsbCh0aGlzLCB0LCBuKSwgdC5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50YXJnZXQgPT09IHIuZG9tTm9kZSAmJiAiYXR0cmlidXRlcyIgPT09IGUudHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgJiYgdGhpcy5hdHRyaWJ1dGVzLmJ1aWxkKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24obiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGUucHJvdG90eXBlLndyYXAuY2FsbCh0aGlzLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gaW5zdGFuY2VvZiB0ICYmIG8uc3RhdGljcy5zY29wZSA9PT0gdGhpcy5zdGF0aWNzLnNjb3BlICYmIHRoaXMuYXR0cmlidXRlcy5tb3ZlKG8pLCBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShzWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBsCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCAociA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3Byb3RvX18gPSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpIHQuaGFzT3duUHJvcGVydHkobikgJiYgKGVbbl0gPSB0W25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuKDMwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gZSAmJiBlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh0LCBlKSwgdC52YWx1ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuaW5kZXggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbU5vZGUgPT09IGUgfHwgdGhpcy5kb21Ob2RlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkgPyBNYXRoLm1pbih0LCAxKSA6IC0xCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10uaW5kZXhPZi5jYWxsKHRoaXMucGFyZW50LmRvbU5vZGUuY2hpbGROb2RlcywgdGhpcy5kb21Ob2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPiAwICYmIChuICs9IDEpLCBbdGhpcy5wYXJlbnQuZG9tTm9kZSwgbl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS52YWx1ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlID0ge30pW3RoaXMuc3RhdGljcy5ibG90TmFtZV0gPSB0aGlzLnN0YXRpY3MudmFsdWUodGhpcy5kb21Ob2RlKSB8fCAhMCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQuc2NvcGUgPSBhLlNjb3BlLklOTElORV9CTE9ULCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbigxMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbigzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IiAhPSB0eXBlb2YgZSAmJiAoZSA9IHt9KSwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgKHQgPSB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG8oITAsIHt9LCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gbiB8fCAociA9IE9iamVjdC5rZXlzKHIpLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSByW3RdICYmIChlW3RdID0gclt0XSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwge30pKSwgZSkgZVtpXSAhPT0gdW5kZWZpbmVkICYmIHRbaV0gPT09IHVuZGVmaW5lZCAmJiAocltpXSA9IGVbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHIpLmxlbmd0aCA+IDAgPyByIDogdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmY6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QiICE9IHR5cGVvZiBlICYmIChlID0ge30pLCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAodCA9IHt9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gT2JqZWN0LmtleXMoZSkuY29uY2F0KE9iamVjdC5rZXlzKHQpKS5yZWR1Y2UoKGZ1bmN0aW9uKG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlW29dLCB0W29dKSB8fCAobltvXSA9IHRbb10gPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0W29dKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHt9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhuKS5sZW5ndGggPiAwID8gbiA6IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiAhPSB0eXBlb2YgZSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgIT0gdHlwZW9mIHQpIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4pIHJldHVybiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3Qua2V5cyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVtyXSA9PT0gdW5kZWZpbmVkICYmIChuW3JdID0gdFtyXSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocikubGVuZ3RoID4gMCA/IHIgOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBhKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJudW1iZXIiID09IHR5cGVvZiBlWyJkZWxldGUiXSA/IGVbImRlbGV0ZSJdIDogIm51bWJlciIgPT0gdHlwZW9mIGUucmV0YWluID8gZS5yZXRhaW4gOiAic3RyaW5nIiA9PSB0eXBlb2YgZS5pbnNlcnQgPyBlLmluc2VydC5sZW5ndGggOiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHMgPSBlLCB0aGlzLmluZGV4ID0gMCwgdGhpcy5vZmZzZXQgPSAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYS5wcm90b3R5cGUuaGFzTmV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGVla0xlbmd0aCgpIDwgSW5maW5pdHkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgfHwgKGUgPSBJbmZpbml0eSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMub3BzW3RoaXMuaW5kZXhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMub2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaS5sZW5ndGgodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPj0gciAtIG4gPyAoZSA9IHIgLSBuLCB0aGlzLmluZGV4ICs9IDEsIHRoaXMub2Zmc2V0ID0gMCkgOiB0aGlzLm9mZnNldCArPSBlLCAibnVtYmVyIiA9PSB0eXBlb2YgdFsiZGVsZXRlIl0pIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGUiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmF0dHJpYnV0ZXMgJiYgKG8uYXR0cmlidXRlcyA9IHQuYXR0cmlidXRlcyksICJudW1iZXIiID09IHR5cGVvZiB0LnJldGFpbiA/IG8ucmV0YWluID0gZSA6ICJzdHJpbmciID09IHR5cGVvZiB0Lmluc2VydCA/IG8uaW5zZXJ0ID0gdC5pbnNlcnQuc3Vic3RyKG4sIGUpIDogby5pbnNlcnQgPSB0Lmluc2VydCwgbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW46IEluZmluaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLnBlZWsgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wc1t0aGlzLmluZGV4XQogICAgICAgICAgICAgICAgICAgICAgICB9LCBhLnByb3RvdHlwZS5wZWVrTGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHNbdGhpcy5pbmRleF0gPyBpLmxlbmd0aCh0aGlzLm9wc1t0aGlzLmluZGV4XSkgLSB0aGlzLm9mZnNldCA6IEluZmluaXR5CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLnBlZWtUeXBlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHNbdGhpcy5pbmRleF0gPyAibnVtYmVyIiA9PSB0eXBlb2YgdGhpcy5vcHNbdGhpcy5pbmRleF1bImRlbGV0ZSJdID8gImRlbGV0ZSIgOiAibnVtYmVyIiA9PSB0eXBlb2YgdGhpcy5vcHNbdGhpcy5pbmRleF0ucmV0YWluID8gInJldGFpbiIgOiAiaW5zZXJ0IiA6ICJyZXRhaW4iCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLnJlc3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc05leHQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSB0aGlzLm9mZnNldCkgcmV0dXJuIHRoaXMub3BzLnNsaWNlKHRoaXMuaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5uZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLm9wcy5zbGljZSh0aGlzLmluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vZmZzZXQgPSBlLCB0aGlzLmluZGV4ID0gdCwgW25dLmNvbmNhdChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IGkKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gdCAmJiBlIGluc3RhbmNlb2YgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBNYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZnVuY3Rpb24oKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gU2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGZ1bmN0aW9uKCkge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFByb21pc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24oKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oaSwgcywgdSwgbCwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBzICYmICh1ID0gcy5kZXB0aCwgbCA9IHMucHJvdG90eXBlLCBjID0gcy5pbmNsdWRlTm9uRW51bWVyYWJsZSwgcyA9IHMuY2lyY3VsYXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBCdWZmZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gcyAmJiAocyA9ICEwKSwgdm9pZCAwID09PSB1ICYmICh1ID0gSW5maW5pdHkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGksIHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBpKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSB1KSByZXR1cm4gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtLCB5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiICE9IHR5cGVvZiBpKSByZXR1cm4gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKGksIHQpKSBtID0gbmV3IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlKGksIG4pKSBtID0gbmV3IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlKGksIHIpKSBtID0gbmV3IHIoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnRoZW4oKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZShoKHQsIHUgLSAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdChoKGUsIHUgLSAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG8uX19pc0FycmF5KGkpKSBtID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChvLl9faXNSZWdFeHAoaSkpIG0gPSBuZXcgUmVnRXhwKGkuc291cmNlLCBhKGkpKSwgaS5sYXN0SW5kZXggJiYgKG0ubGFzdEluZGV4ID0gaS5sYXN0SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoby5fX2lzRGF0ZShpKSkgbSA9IG5ldyBEYXRlKGkuZ2V0VGltZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwICYmIEJ1ZmZlci5pc0J1ZmZlcihpKSkgcmV0dXJuIG0gPSBCdWZmZXIuYWxsb2NVbnNhZmUgPyBCdWZmZXIuYWxsb2NVbnNhZmUoaS5sZW5ndGgpIDogbmV3IEJ1ZmZlcihpLmxlbmd0aCksIGkuY29weShtKSwgbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKGksIEVycm9yKSA/IG0gPSBPYmplY3QuY3JlYXRlKGkpIDogdm9pZCAwID09PSBsID8gKHkgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaSksIG0gPSBPYmplY3QuY3JlYXRlKHkpKSA6IChtID0gT2JqZWN0LmNyZWF0ZShsKSwgeSA9IGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZi5pbmRleE9mKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSAhPSBnKSByZXR1cm4gZFtnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLnB1c2goaSksIGQucHVzaChtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdiBpbiBlKGksIHQpICYmIGkuZm9yRWFjaCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGgodCwgdSAtIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGgoZSwgdSAtIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLnNldChuLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZShpLCBuKSAmJiBpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBoKGUsIHUgLSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5hZGQodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ICYmIChiID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LCB2KSksIGIgJiYgbnVsbCA9PSBiLnNldCB8fCAobVt2XSA9IGgoaVt2XSwgdSAtIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2ID0gMDsgdiA8IHcubGVuZ3RoOyB2KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE8gPSB3W3ZdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoISh4ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLCBPKSkgfHwgeC5lbnVtZXJhYmxlIHx8IGMpICYmIChtW09dID0gaChpW09dLCB1IC0gMSksIHguZW51bWVyYWJsZSB8fCBPYmplY3QuZGVmaW5lUHJvcGVydHkobSwgTywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgXyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodiA9IDA7IHYgPCBfLmxlbmd0aDsgdisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4LCBrID0gX1t2XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksIGspKSAmJiB4LmVudW1lcmFibGUgfHwgKG1ba10gPSBoKGlba10sIHUgLSAxKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG0sIGssIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oaSwgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nbG9iYWwgJiYgKHQgKz0gImciKSwgZS5pZ25vcmVDYXNlICYmICh0ICs9ICJpIiksIGUubXVsdGlsaW5lICYmICh0ICs9ICJtIiksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLmNsb25lUHJvdG90eXBlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBlKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGZ1bmN0aW9uKCkge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQucHJvdG90eXBlID0gZSwgbmV3IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8uX19vYmpUb1N0ciA9IGksIG8uX19pc0RhdGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlICYmICJbb2JqZWN0IERhdGVdIiA9PT0gaShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgby5fX2lzQXJyYXkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlICYmICJbb2JqZWN0IEFycmF5XSIgPT09IGkoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8uX19pc1JlZ0V4cCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgIltvYmplY3QgUmVnRXhwXSIgPT09IGkoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8uX19nZXRSZWdFeHBGbGFncyA9IGEsIG8KICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlLmV4cG9ydHMgJiYgKGUuZXhwb3J0cyA9IG4pCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIHMgPSBlW1N5bWJvbC5pdGVyYXRvcl0oKTsgIShyID0gKGEgPSBzLm5leHQoKSkuZG9uZSkgJiYgKG4ucHVzaChhLnZhbHVlKSwgIXQgfHwgbi5sZW5ndGggIT09IHQpOyByID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyICYmIHNbInJldHVybiJdICYmIHNbInJldHVybiJdKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbiB5KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBlICYmIChlID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8gPyB1bmRlZmluZWQgOiB5KG8sIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIHIpIHJldHVybiByLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gci5nZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGkuY2FsbChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwKG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHAobig4KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbig0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBwKHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHAobigxNikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHAobigxMykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHAobigyNSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgbFsiZGVmYXVsdCJdIHx8IGUgaW5zdGFuY2VvZiB1LkJsb2NrRW1iZWQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5lbWl0dGVyID0gbi5lbWl0dGVyLCBBcnJheS5pc0FycmF5KG4ud2hpdGVsaXN0KSAmJiAoci53aGl0ZWxpc3QgPSBuLndoaXRlbGlzdC5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdF0gPSAhMCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSkpLCByLmRvbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgKGZ1bmN0aW9uKCkge30pKSwgci5vcHRpbWl6ZSgpLCByLmVuYWJsZSgpLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYmF0Y2hTdGFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhdGNoID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYmF0Y2hFbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXRjaCA9ICExLCB0aGlzLm9wdGltaXplKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVsZXRlQXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5saW5lKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIobywgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMubGluZShlICsgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcihkLCAxKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJkZWxldGVBdCIsIHRoaXMpLmNhbGwodGhpcywgZSwgbiksIG51bGwgIT0gcCAmJiBzICE9PSBwICYmIGwgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyBpbnN0YW5jZW9mIHUuQmxvY2tFbWJlZCB8fCBwIGluc3RhbmNlb2YgdS5CbG9ja0VtYmVkKSByZXR1cm4gdm9pZCB0aGlzLm9wdGltaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyBpbnN0YW5jZW9mIGZbImRlZmF1bHQiXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gcy5uZXdsaW5lSW5kZXgocy5sZW5ndGgoKSwgITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4gLTEgJiYgKHMgPSBzLnNwbGl0KGggKyAxKSkgPT09IHApIHJldHVybiB2b2lkIHRoaXMub3B0aW1pemUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwIGluc3RhbmNlb2YgZlsiZGVmYXVsdCJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBwLm5ld2xpbmVJbmRleCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID4gLTEgJiYgcC5zcGxpdChtICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gcC5jaGlsZHJlbi5oZWFkIGluc3RhbmNlb2YgY1siZGVmYXVsdCJdID8gbnVsbCA6IHAuY2hpbGRyZW4uaGVhZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMubW92ZUNoaWxkcmVuKHAsIHkpLCBzLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpbWl6ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImVuYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9ICEoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQpIHx8IGFyZ3VtZW50c1swXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb21Ob2RlLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0QXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09IHRoaXMud2hpdGVsaXN0IHx8IHRoaXMud2hpdGVsaXN0W3JdKSAmJiAoaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImZvcm1hdEF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuLCByLCBvKSwgdGhpcy5vcHRpbWl6ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbnNlcnRBdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gciB8fCBudWxsID09IHRoaXMud2hpdGVsaXN0IHx8IHRoaXMud2hpdGVsaXN0W25dKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA+PSB0aGlzLmxlbmd0aCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHIgfHwgbnVsbCA9PSBhWyJkZWZhdWx0Il0ucXVlcnkobiwgYVsiZGVmYXVsdCJdLlNjb3BlLkJMT0NLKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGFbImRlZmF1bHQiXS5jcmVhdGUodGhpcy5zdGF0aWNzLmRlZmF1bHRDaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobyksIG51bGwgPT0gciAmJiBuLmVuZHNXaXRoKCJcbiIpICYmIChuID0gbi5zbGljZSgwLCAtMSkpLCBvLmluc2VydEF0KDAsIG4sIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBhWyJkZWZhdWx0Il0uY3JlYXRlKG4sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5zZXJ0QXQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpbWl6ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaW5zZXJ0QmVmb3JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zdGF0aWNzLnNjb3BlID09PSBhWyJkZWZhdWx0Il0uU2NvcGUuSU5MSU5FX0JMT1QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYVsiZGVmYXVsdCJdLmNyZWF0ZSh0aGlzLnN0YXRpY3MuZGVmYXVsdENoaWxkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuYXBwZW5kQ2hpbGQoZSksIGUgPSByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImluc2VydEJlZm9yZSIsIHRoaXMpLmNhbGwodGhpcywgZSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAibGVhZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGF0aChlKS5wb3AoKSB8fCBbbnVsbCwgLTFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxpbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSB0aGlzLmxlbmd0aCgpID8gdGhpcy5saW5lKGUgLSAxKSA6IHRoaXMuZGVzY2VuZGFudChoLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJsaW5lcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IE51bWJlci5NQVhfVkFMVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZnVuY3Rpb24gcihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2hpbGRyZW4uZm9yRWFjaEF0KHQsIG4sIChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgoZSkgPyBvLnB1c2goZSkgOiBlIGluc3RhbmNlb2YgYVsiZGVmYXVsdCJdLkNvbnRhaW5lciAmJiAobyA9IG8uY29uY2F0KHIoZSwgdCwgaSkpKSwgaSAtPSBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbih0aGlzLCBlLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJvcHRpbWl6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITAgIT09IHRoaXMuYmF0Y2ggJiYgKGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJvcHRpbWl6ZSIsIHRoaXMpLmNhbGwodGhpcywgZSwgbiksIGUubGVuZ3RoID4gMCAmJiB0aGlzLmVtaXR0ZXIuZW1pdChzWyJkZWZhdWx0Il0uZXZlbnRzLlNDUk9MTF9PUFRJTUlaRSwgZSwgbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInBhdGgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAicGF0aCIsIHRoaXMpLmNhbGwodGhpcywgZSkuc2xpY2UoMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoITAgIT09IHRoaXMuYmF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBlICYmIChuID0gZSksIEFycmF5LmlzQXJyYXkoZSkgfHwgKGUgPSB0aGlzLm9ic2VydmVyLnRha2VSZWNvcmRzKCkpLCBlLmxlbmd0aCA+IDAgJiYgdGhpcy5lbWl0dGVyLmVtaXQoc1siZGVmYXVsdCJdLmV2ZW50cy5TQ1JPTExfQkVGT1JFX1VQREFURSwgbiwgZSksIGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJ1cGRhdGUiLCB0aGlzKS5jYWxsKHRoaXMsIGUuY29uY2F0KFtdKSksIGUubGVuZ3RoID4gMCAmJiB0aGlzLmVtaXR0ZXIuZW1pdChzWyJkZWZhdWx0Il0uZXZlbnRzLlNDUk9MTF9VUERBVEUsIG4sIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShhWyJkZWZhdWx0Il0uU2Nyb2xsKTsKICAgICAgICAgICAgICAgICAgICAgICAgbS5ibG90TmFtZSA9ICJzY3JvbGwiLCBtLmNsYXNzTmFtZSA9ICJxbC1lZGl0b3IiLCBtLnRhZ05hbWUgPSAiRElWIiwgbS5kZWZhdWx0Q2hpbGQgPSAiYmxvY2siLCBtLmFsbG93ZWRDaGlsZHJlbiA9IFtsWyJkZWZhdWx0Il0sIHUuQmxvY2tFbWJlZCwgZFsiZGVmYXVsdCJdXSwgdFsiZGVmYXVsdCJdID0gbQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuU0hPUlRLRVkgPSB0WyJkZWZhdWx0Il0gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiBlLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgZSAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSkgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhLCBzID0gZVtTeW1ib2wuaXRlcmF0b3JdKCk7ICEociA9IChhID0gcy5uZXh0KCkpLmRvbmUpICYmIChuLnB1c2goYS52YWx1ZSksICF0IHx8IG4ubGVuZ3RoICE9PSB0KTsgciA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEwLCBpID0gdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhciAmJiBzWyJyZXR1cm4iXSAmJiBzWyJyZXR1cm4iXSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB0aHJvdyBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbShuKDIxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbShuKDExKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbShuKDMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBtKG4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG0obigyMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG0obigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gbShuKDUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBtKG4oMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBtKG4oOSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB5KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGVbdF0gPSBuLCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSAoMCwgcFsiZGVmYXVsdCJdKSgicXVpbGw6a2V5Ym9hcmQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAvTWFjL2kudGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pID8gIm1ldGFLZXkiIDogImN0cmxLZXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSwgbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5iaW5kaW5ncyA9IHt9LCBPYmplY3Qua2V5cyhyLm9wdGlvbnMuYmluZGluZ3MpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibGlzdCBhdXRvZmlsbCIgIT09IHQgfHwgbnVsbCA9PSBlLnNjcm9sbC53aGl0ZWxpc3QgfHwgZS5zY3JvbGwud2hpdGVsaXN0Lmxpc3QpICYmIHIub3B0aW9ucy5iaW5kaW5nc1t0XSAmJiByLmFkZEJpbmRpbmcoci5vcHRpb25zLmJpbmRpbmdzW3RdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIuYWRkQmluZGluZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHQua2V5cy5FTlRFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0S2V5OiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGspLCByLmFkZEJpbmRpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0LmtleXMuRU5URVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhS2V5OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybEtleTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdEtleTogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAoZnVuY3Rpb24oKSB7fSkpLCAvRmlyZWZveC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgPyAoci5hZGRCaW5kaW5nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdC5rZXlzLkJBQ0tTUEFDRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIE8pLCByLmFkZEJpbmRpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0LmtleXMuREVMRVRFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgXykpIDogKHIuYWRkQmluZGluZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHQua2V5cy5CQUNLU1BBQ0UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogL14uPyQvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIE8pLCByLmFkZEJpbmRpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0LmtleXMuREVMRVRFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg6IC9eLj8kLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBfKSksIHIuYWRkQmluZGluZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHQua2V5cy5CQUNLU1BBQ0UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB4KSwgci5hZGRCaW5kaW5nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdC5rZXlzLkRFTEVURQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHgpLCByLmFkZEJpbmRpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0LmtleXMuQkFDS1NQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0S2V5OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybEtleTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFLZXk6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdEtleTogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIE8pLCByLmxpc3RlbigpLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBpKHQsIG51bGwsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIm1hdGNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gUyh0KSwgIVsiYWx0S2V5IiwgImN0cmxLZXkiLCAibWV0YUtleSIsICJzaGlmdEtleSJdLnNvbWUoKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF0W25dICE9PSBlW25dICYmIG51bGwgIT09IHRbbl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSAmJiB0LmtleSA9PT0gKGUud2hpY2ggfHwgZS5rZXlDb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBpKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZEJpbmRpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBTKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gciB8fCBudWxsID09IHIua2V5KSByZXR1cm4gZy53YXJuKCJBdHRlbXB0ZWQgdG8gYWRkIGludmFsaWQga2V5Ym9hcmQgYmluZGluZyIsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdCAmJiAodCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiAmJiAobiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgciA9ICgwLCB1WyJkZWZhdWx0Il0pKHIsIHQsIG4pLCB0aGlzLmJpbmRpbmdzW3Iua2V5XSA9IHRoaXMuYmluZGluZ3Nbci5rZXldIHx8IFtdLCB0aGlzLmJpbmRpbmdzW3Iua2V5XS5wdXNoKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxpc3RlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwucm9vdC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4uZGVmYXVsdFByZXZlbnRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4ud2hpY2ggfHwgbi5rZXlDb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IChlLmJpbmRpbmdzW2ldIHx8IFtdKS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5tYXRjaChuLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gYS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gZS5xdWlsbC5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHUgJiYgZS5xdWlsbC5oYXNGb2N1cygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBlLnF1aWxsLmdldExpbmUodS5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBvKGwsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGNbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlLnF1aWxsLmdldExlYWYodS5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBvKGgsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gbVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAwID09PSB1Lmxlbmd0aCA/IFt5LCBnXSA6IGUucXVpbGwuZ2V0TGVhZih1LmluZGV4ICsgdS5sZW5ndGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gbyh2LCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGJbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBiWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0geSBpbnN0YW5jZW9mIGZbImRlZmF1bHQiXS5UZXh0ID8geS52YWx1ZSgpLnNsaWNlKDAsIGcpIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSB3IGluc3RhbmNlb2YgZlsiZGVmYXVsdCJdLlRleHQgPyB3LnZhbHVlKCkuc2xpY2UoTykgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogMCA9PT0gdS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eTogMCA9PT0gdS5sZW5ndGggJiYgZC5sZW5ndGgoKSA8PSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBlLnF1aWxsLmdldEZvcm1hdCh1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeDogeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuc29tZSgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0LmNvbGxhcHNlZCAmJiB0LmNvbGxhcHNlZCAhPT0gay5jb2xsYXBzZWQpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gdC5lbXB0eSAmJiB0LmVtcHR5ICE9PSBrLmVtcHR5KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHQub2Zmc2V0ICYmIHQub2Zmc2V0ICE9PSBrLm9mZnNldCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0LmZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmZvcm1hdC5ldmVyeSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBrLmZvcm1hdFtlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIm9iamVjdCIgPT09IHIodC5mb3JtYXQpICYmICFPYmplY3Qua2V5cyh0LmZvcm1hdCkuZXZlcnkoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IHQuZm9ybWF0W2VdID8gbnVsbCAhPSBrLmZvcm1hdFtlXSA6ICExID09PSB0LmZvcm1hdFtlXSA/IG51bGwgPT0gay5mb3JtYXRbZV0gOiAoMCwgc1siZGVmYXVsdCJdKSh0LmZvcm1hdFtlXSwgay5mb3JtYXRbZV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEobnVsbCAhPSB0LnByZWZpeCAmJiAhdC5wcmVmaXgudGVzdChrLnByZWZpeCkgfHwgbnVsbCAhPSB0LnN1ZmZpeCAmJiAhdC5zdWZmaXgudGVzdChrLnN1ZmZpeCkgfHwgITAgPT09IHQuaGFuZGxlci5jYWxsKGUsIHUsIGspKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSAmJiBuLnByZXZlbnREZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGhbImRlZmF1bHQiXSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCByID0gZSA9PT0gYi5rZXlzLkxFRlQgPyAicHJlZml4IiA6ICJzdWZmaXgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHkobiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRLZXk6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0S2V5OiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByLCAvXiQvKSwgeShuLCAiaGFuZGxlciIsIChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPT09IGIua2V5cy5SSUdIVCAmJiAociArPSBuLmxlbmd0aCArIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5xdWlsbC5nZXRMZWFmKHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKG8oaSwgMSlbMF0gaW5zdGFuY2VvZiBmWyJkZWZhdWx0Il0uRW1iZWQgJiYgKGUgPT09IGIua2V5cy5MRUZUID8gdCA/IHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKG4uaW5kZXggLSAxLCBuLmxlbmd0aCArIDEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpIDogdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24obi5pbmRleCAtIDEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpIDogdCA/IHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKG4uaW5kZXgsIG4ubGVuZ3RoICsgMSwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikgOiB0aGlzLnF1aWxsLnNldFNlbGVjdGlvbihuLmluZGV4ICsgbi5sZW5ndGggKyAxLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gTyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgwID09PSBlLmluZGV4IHx8IHRoaXMucXVpbGwuZ2V0TGVuZ3RoKCkgPD0gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMucXVpbGwuZ2V0TGluZShlLmluZGV4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG8obiwgMSlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gdC5vZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLnF1aWxsLmdldExpbmUoZS5pbmRleCAtIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG8oYSwgMSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHMgJiYgcy5sZW5ndGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gci5mb3JtYXRzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMucXVpbGwuZ2V0Rm9ybWF0KGUuaW5kZXggLSAxLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjWyJkZWZhdWx0Il0uYXR0cmlidXRlcy5kaWZmKHUsIGwpIHx8IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSAvW1x1RDgwMC1cdURCRkZdW1x1REMwMC1cdURGRkZdJC8udGVzdCh0LnByZWZpeCkgPyAyIDogMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLmRlbGV0ZVRleHQoZS5pbmRleCAtIGYsIGYsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCBPYmplY3Qua2V5cyhpKS5sZW5ndGggPiAwICYmIHRoaXMucXVpbGwuZm9ybWF0TGluZShlLmluZGV4IC0gZiwgZiwgaSwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIHRoaXMucXVpbGwuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBfKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gL15bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vLnRlc3QodC5zdWZmaXgpID8gMiA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlLmluZGV4ID49IHRoaXMucXVpbGwuZ2V0TGVuZ3RoKCkgLSBuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5xdWlsbC5nZXRMaW5lKGUuaW5kZXgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbyhhLCAxKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5vZmZzZXQgPj0gcy5sZW5ndGgoKSAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB0aGlzLnF1aWxsLmdldExpbmUoZS5pbmRleCArIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8odSwgMSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IHMuZm9ybWF0cygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0aGlzLnF1aWxsLmdldEZvcm1hdChlLmluZGV4LCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBjWyJkZWZhdWx0Il0uYXR0cmlidXRlcy5kaWZmKGYsIHApIHx8IHt9LCBpID0gbC5sZW5ndGgoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuZGVsZXRlVGV4dChlLmluZGV4LCBuLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgT2JqZWN0LmtleXMocikubGVuZ3RoID4gMCAmJiB0aGlzLnF1aWxsLmZvcm1hdExpbmUoZS5pbmRleCArIGkgLSAxLCBuLCByLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5xdWlsbC5nZXRMaW5lcyhlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0WzBdLmZvcm1hdHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRbdC5sZW5ndGggLSAxXS5mb3JtYXRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGNbImRlZmF1bHQiXS5hdHRyaWJ1dGVzLmRpZmYobywgcikgfHwge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuZGVsZXRlVGV4dChlLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgT2JqZWN0LmtleXMobikubGVuZ3RoID4gMCAmJiB0aGlzLnF1aWxsLmZvcm1hdExpbmUoZS5pbmRleCwgMSwgbiwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKGUuaW5kZXgsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCksIHRoaXMucXVpbGwuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBrKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGVuZ3RoID4gMCAmJiB0aGlzLnF1aWxsLnNjcm9sbC5kZWxldGVBdChlLmluZGV4LCBlLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5rZXlzKHQuZm9ybWF0KS5yZWR1Y2UoKGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZlsiZGVmYXVsdCJdLnF1ZXJ5KG4sIGZbImRlZmF1bHQiXS5TY29wZS5CTE9DSykgJiYgIUFycmF5LmlzQXJyYXkodC5mb3JtYXRbbl0pICYmIChlW25dID0gdC5mb3JtYXRbbl0pLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwge30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC5pbnNlcnRUZXh0KGUuaW5kZXgsICJcbiIsIHIsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCB0aGlzLnF1aWxsLnNldFNlbGVjdGlvbihlLmluZGV4ICsgMSwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UKSwgdGhpcy5xdWlsbC5mb2N1cygpLCBPYmplY3Qua2V5cyh0LmZvcm1hdCkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gcltlXSAmJiAoQXJyYXkuaXNBcnJheSh0LmZvcm1hdFtlXSkgfHwgImxpbmsiICE9PSBlICYmIG4ucXVpbGwuZm9ybWF0KGUsIHQuZm9ybWF0W2VdLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBFKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBiLmtleXMuVEFCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0S2V5OiAhZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvZGUtYmxvY2siOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZbImRlZmF1bHQiXS5xdWVyeSgiY29kZS1ibG9jayIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5xdWlsbC5zY3JvbGwuZGVzY2VuZGFudChuLCByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvKGEsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gc1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLnF1aWxsLmdldEluZGV4KHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB1Lm5ld2xpbmVJbmRleChsLCAhMCkgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB1Lm5ld2xpbmVJbmRleChjICsgbCArIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB1LmRvbU5vZGUudGV4dENvbnRlbnQuc2xpY2UocCwgaCkuc3BsaXQoIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMCwgbS5mb3JFYWNoKChmdW5jdGlvbih0LCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA/ICh1Lmluc2VydEF0KHAgKyBsLCBuLlRBQiksIGwgKz0gbi5UQUIubGVuZ3RoLCAwID09PSBvID8gciArPSBuLlRBQi5sZW5ndGggOiBpICs9IG4uVEFCLmxlbmd0aCkgOiB0LnN0YXJ0c1dpdGgobi5UQUIpICYmICh1LmRlbGV0ZUF0KHAgKyBsLCBuLlRBQi5sZW5ndGgpLCBsIC09IG4uVEFCLmxlbmd0aCwgMCA9PT0gbyA/IHIgLT0gbi5UQUIubGVuZ3RoIDogaSAtPSBuLlRBQi5sZW5ndGgpLCBsICs9IHQubGVuZ3RoICsgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnF1aWxsLnVwZGF0ZShkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24ociwgaSwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBDKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBlWzBdLnRvVXBwZXJDYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRLZXk6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoZSwgIW4uZm9ybWF0W2VdLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gUyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUgfHwgIm51bWJlciIgPT0gdHlwZW9mIGUpIHJldHVybiBTKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09PSAodm9pZCAwID09PSBlID8gInVuZGVmaW5lZCIgOiByKGUpKSAmJiAoZSA9ICgwLCBhWyJkZWZhdWx0Il0pKGUsICExKSksICJzdHJpbmciID09IHR5cGVvZiBlLmtleSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBiLmtleXNbZS5rZXkudG9VcHBlckNhc2UoKV0pIGUua2V5ID0gYi5rZXlzW2Uua2V5LnRvVXBwZXJDYXNlKCldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSAhPT0gZS5rZXkubGVuZ3RoKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5rZXkgPSBlLmtleS50b1VwcGVyQ2FzZSgpLmNoYXJDb2RlQXQoMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zaG9ydEtleSAmJiAoZVt2XSA9IGUuc2hvcnRLZXksIGRlbGV0ZSBlLnNob3J0S2V5KSwgZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGIua2V5cyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBQ0tTUEFDRTogOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQjogOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOVEVSOiAxMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTQ0FQRTogMjcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUZUOiAzNywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVQOiAzOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJJR0hUOiAzOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPV046IDQwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgREVMRVRFOiA0NgogICAgICAgICAgICAgICAgICAgICAgICB9LCBiLkRFRkFVTFRTID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZ3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2xkOiBDKCJib2xkIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRhbGljOiBDKCJpdGFsaWMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmU6IEMoInVuZGVybGluZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGIua2V5cy5UQUIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogWyJibG9ja3F1b3RlIiwgImluZGVudCIsICJsaXN0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbGxhcHNlZCAmJiAwICE9PSB0Lm9mZnNldCkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoImluZGVudCIsICIrMSIsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGRlbnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBiLmtleXMuVEFCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdEtleTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogWyJibG9ja3F1b3RlIiwgImluZGVudCIsICJsaXN0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbGxhcHNlZCAmJiAwICE9PSB0Lm9mZnNldCkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoImluZGVudCIsICItMSIsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvdXRkZW50IGJhY2tzcGFjZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBiLmtleXMuQkFDS1NQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdEtleTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YUtleTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybEtleTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0S2V5OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IFsiaW5kZW50IiwgImxpc3QiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IHQuZm9ybWF0LmluZGVudCA/IHRoaXMucXVpbGwuZm9ybWF0KCJpbmRlbnQiLCAiLTEiLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSA6IG51bGwgIT0gdC5mb3JtYXQubGlzdCAmJiB0aGlzLnF1aWxsLmZvcm1hdCgibGlzdCIsICExLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kZW50IGNvZGUtYmxvY2siOiBFKCEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3V0ZGVudCBjb2RlLWJsb2NrIjogRSghMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlbW92ZSB0YWIiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogYi5rZXlzLlRBQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRLZXk6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IC9cdCQvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLmRlbGV0ZVRleHQoZS5pbmRleCAtIDEsIDEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGIua2V5cy5UQUIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuaGlzdG9yeS5jdXRvZmYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gKG5ldyBsWyJkZWZhdWx0Il0pLnJldGFpbihlLmluZGV4KVsiZGVsZXRlIl0oZS5sZW5ndGgpLmluc2VydCgiXHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwudXBkYXRlQ29udGVudHModCwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIHRoaXMucXVpbGwuaGlzdG9yeS5jdXRvZmYoKSwgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24oZS5pbmRleCArIDEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgZW1wdHkgZW50ZXIiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogYi5rZXlzLkVOVEVSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IFsibGlzdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuZm9ybWF0KCJsaXN0IiwgITEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCB0LmZvcm1hdC5pbmRlbnQgJiYgdGhpcy5xdWlsbC5mb3JtYXQoImluZGVudCIsICExLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hlY2tsaXN0IGVudGVyIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGIua2V5cy5FTlRFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0OiAiY2hlY2tlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnF1aWxsLmdldExpbmUoZS5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG8odCwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICgwLCB1WyJkZWZhdWx0Il0pKHt9LCByLmZvcm1hdHMoKSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0OiAiY2hlY2tlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKG5ldyBsWyJkZWZhdWx0Il0pLnJldGFpbihlLmluZGV4KS5pbnNlcnQoIlxuIiwgYSkucmV0YWluKHIubGVuZ3RoKCkgLSBpIC0gMSkucmV0YWluKDEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogInVuY2hlY2tlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwudXBkYXRlQ29udGVudHMocywgZFsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKGUuaW5kZXggKyAxLCBkWyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpLCB0aGlzLnF1aWxsLnNjcm9sbEludG9WaWV3KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYWRlciBlbnRlciI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBiLmtleXMuRU5URVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogWyJoZWFkZXIiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4OiAvXiQvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMucXVpbGwuZ2V0TGluZShlLmluZGV4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbyhuLCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gclswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gclsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKG5ldyBsWyJkZWZhdWx0Il0pLnJldGFpbihlLmluZGV4KS5pbnNlcnQoIlxuIiwgdC5mb3JtYXQpLnJldGFpbihpLmxlbmd0aCgpIC0gYSAtIDEpLnJldGFpbigxLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC51cGRhdGVDb250ZW50cyhzLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24oZS5pbmRleCArIDEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCksIHRoaXMucXVpbGwuc2Nyb2xsSW50b1ZpZXcoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBhdXRvZmlsbCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAvXlxzKj8oXGQrXC58LXxcKnxcWyA/XF18XFt4XF0pJC8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5wcmVmaXgubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnF1aWxsLmdldExpbmUoZS5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG8ociwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+IG4pIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LnByZWZpeC50cmltKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiWyBdIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICJ1bmNoZWNrZWQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbeF0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gImNoZWNrZWQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICItIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIqIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICJidWxsZXQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gIm9yZGVyZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLmluc2VydFRleHQoZS5pbmRleCwgIiAiLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdGhpcy5xdWlsbC5oaXN0b3J5LmN1dG9mZigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAobmV3IGxbImRlZmF1bHQiXSkucmV0YWluKGUuaW5kZXggLSBzKVsiZGVsZXRlIl0obiArIDEpLnJldGFpbihhLmxlbmd0aCgpIC0gMiAtIHMpLnJldGFpbigxLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLnVwZGF0ZUNvbnRlbnRzKGMsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCB0aGlzLnF1aWxsLmhpc3RvcnkuY3V0b2ZmKCksIHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKGUuaW5kZXggLSBuLCBkWyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2RlIGV4aXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogYi5rZXlzLkVOVEVSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IFsiY29kZS1ibG9jayJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IC9cblxuJC8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeDogL15ccyskLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnF1aWxsLmdldExpbmUoZS5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG8odCwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IChuZXcgbFsiZGVmYXVsdCJdKS5yZXRhaW4oZS5pbmRleCArIHIubGVuZ3RoKCkgLSBpIC0gMikucmV0YWluKDEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvZGUtYmxvY2siOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlbImRlbGV0ZSJdKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC51cGRhdGVDb250ZW50cyhhLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1iZWQgbGVmdCI6IHcoYi5rZXlzLkxFRlQsICExKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1iZWQgbGVmdCBzaGlmdCI6IHcoYi5rZXlzLkxFRlQsICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1iZWQgcmlnaHQiOiB3KGIua2V5cy5SSUdIVCwgITEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbWJlZCByaWdodCBzaGlmdCI6IHcoYi5rZXlzLlJJR0hULCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgdFsiZGVmYXVsdCJdID0gYiwgdC5TSE9SVEtFWSA9IHYKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSwgcyA9IGVbU3ltYm9sLml0ZXJhdG9yXSgpOyAhKHIgPSAoYSA9IHMubmV4dCgpKS5kb25lKSAmJiAobi5wdXNoKGEudmFsdWUpLCAhdCB8fCBuLmxlbmd0aCAhPT0gdCk7IHIgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgaSA9IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXIgJiYgc1sicmV0dXJuIl0gJiYgc1sicmV0dXJuIl0oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobykgdGhyb3cgaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24gYyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogYyhvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHUobigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdShuKDcpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5zZWxlY3Rpb24gPSBuLCByLnRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodC5DT05URU5UUyksIHIuZG9tTm9kZS5hcHBlbmRDaGlsZChyLnRleHROb2RlKSwgci5fbGVuZ3RoID0gMCwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgaSh0LCBudWxsLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIGkodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkZXRhY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSB0aGlzLl9sZW5ndGgpIHJldHVybiBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiZm9ybWF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IHRoaXMsIGkgPSAwOyBudWxsICE9IHIgJiYgci5zdGF0aWNzLnNjb3BlICE9PSBhWyJkZWZhdWx0Il0uU2NvcGUuQkxPQ0tfQkxPVDspIGkgKz0gci5vZmZzZXQoci5wYXJlbnQpLCByID0gci5wYXJlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gciAmJiAodGhpcy5fbGVuZ3RoID0gdC5DT05URU5UUy5sZW5ndGgsIHIub3B0aW1pemUoKSwgci5mb3JtYXRBdChpLCB0LkNPTlRFTlRTLmxlbmd0aCwgZSwgbiksIHRoaXMuX2xlbmd0aCA9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImluZGV4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdGhpcy50ZXh0Tm9kZSA/IDAgOiBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5kZXgiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxlbmd0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInBvc2l0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy50ZXh0Tm9kZSwgdGhpcy50ZXh0Tm9kZS5kYXRhLmxlbmd0aF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJyZW1vdmUiLCB0aGlzKS5jYWxsKHRoaXMpLCB0aGlzLnBhcmVudCA9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVzdG9yZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0aW9uLmNvbXBvc2luZyAmJiBudWxsICE9IHRoaXMucGFyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudGV4dE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuc2VsZWN0aW9uLmdldE5hdGl2ZVJhbmdlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBuICYmIG4uc3RhcnQubm9kZSA9PT0gZSAmJiBuLmVuZC5ub2RlID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBbZSwgbi5zdGFydC5vZmZzZXQsIG4uZW5kLm9mZnNldF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGxbMF0sIGkgPSBsWzFdLCB1ID0gbFsyXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG51bGwgIT0gdGhpcy5kb21Ob2RlLmxhc3RDaGlsZCAmJiB0aGlzLmRvbU5vZGUubGFzdENoaWxkICE9PSB0aGlzLnRleHROb2RlOykgdGhpcy5kb21Ob2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuZG9tTm9kZS5sYXN0Q2hpbGQsIHRoaXMuZG9tTm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXh0Tm9kZS5kYXRhICE9PSB0LkNPTlRFTlRTKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLnRleHROb2RlLmRhdGEuc3BsaXQodC5DT05URU5UUykuam9pbigiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0IGluc3RhbmNlb2Ygc1siZGVmYXVsdCJdID8gKG8gPSB0aGlzLm5leHQuZG9tTm9kZSwgdGhpcy5uZXh0Lmluc2VydEF0KDAsIGMpLCB0aGlzLnRleHROb2RlLmRhdGEgPSB0LkNPTlRFTlRTKSA6ICh0aGlzLnRleHROb2RlLmRhdGEgPSBjLCB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUoYVsiZGVmYXVsdCJdLmNyZWF0ZSh0aGlzLnRleHROb2RlKSwgdGhpcyksIHRoaXMudGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0LkNPTlRFTlRTKSwgdGhpcy5kb21Ob2RlLmFwcGVuZENoaWxkKHRoaXMudGV4dE5vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVtb3ZlKCksIG51bGwgIT0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gW2ksIHVdLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKG8uZGF0YS5sZW5ndGgsIGUgLSAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gcihmLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9IGRbMF0sIHUgPSBkWzFdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZTogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE5vZGU6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ1cGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuc29tZSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2hhcmFjdGVyRGF0YSIgPT09IGUudHlwZSAmJiBlLnRhcmdldCA9PT0gbi50ZXh0Tm9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciAmJiAodC5yYW5nZSA9IHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidmFsdWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oYVsiZGVmYXVsdCJdLkVtYmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5ibG90TmFtZSA9ICJjdXJzb3IiLCBsLmNsYXNzTmFtZSA9ICJxbC1jdXJzb3IiLCBsLnRhZ05hbWUgPSAic3BhbiIsIGwuQ09OVEVOVFMgPSAiXHVmZWZmIiwgdFsiZGVmYXVsdCJdID0gbAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYShuKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuKDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGEobyk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHModGhpcywgdCksIHUodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShyWyJkZWZhdWx0Il0uQ29udGFpbmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5hbGxvd2VkQ2hpbGRyZW4gPSBbaVsiZGVmYXVsdCJdLCBvLkJsb2NrRW1iZWQsIGxdLCB0WyJkZWZhdWx0Il0gPSBsCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5Db2xvclN0eWxlID0gdC5Db2xvckNsYXNzID0gdC5Db2xvckF0dHJpYnV0b3IgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIHAoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHAobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKHIgPSBhKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSh0aGlzLCB0KSwgbCh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgbyh0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ2YWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJ2YWx1ZSIsIHRoaXMpLmNhbGwodGhpcywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zdGFydHNXaXRoKCJyZ2IoIikgPyAobiA9IG4ucmVwbGFjZSgvXlteXGRdKy8sICIiKS5yZXBsYWNlKC9bXlxkXSskLywgIiIpLCAiIyIgKyBuLnNwbGl0KCIsIikubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgiMDAiICsgcGFyc2VJbnQoZSkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5qb2luKCIiKSkgOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oc1siZGVmYXVsdCJdLkF0dHJpYnV0b3IuU3R5bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG5ldyBzWyJkZWZhdWx0Il0uQXR0cmlidXRvci5DbGFzcygiY29sb3IiLCAicWwtY29sb3IiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IHNbImRlZmF1bHQiXS5TY29wZS5JTkxJTkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG5ldyBjKCJjb2xvciIsICJjb2xvciIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZTogc1siZGVmYXVsdCJdLlNjb3BlLklOTElORQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuQ29sb3JBdHRyaWJ1dG9yID0gYywgdC5Db2xvckNsYXNzID0gZiwgdC5Db2xvclN0eWxlID0gZAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuc2FuaXRpemUgPSB0WyJkZWZhdWx0Il0gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIGYoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IGYobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oNik7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKHRoaXMsIHQpLCB1KHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAhPT0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lIHx8ICFuKSByZXR1cm4gaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImZvcm1hdCIsIHRoaXMpLmNhbGwodGhpcywgZSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmNvbnN0cnVjdG9yLnNhbml0aXplKG4pLCB0aGlzLmRvbU5vZGUuc2V0QXR0cmlidXRlKCJocmVmIiwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjcmVhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gaSh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCksICJjcmVhdGUiLCB0aGlzKS5jYWxsKHRoaXMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IHRoaXMuc2FuaXRpemUoZSksIG4uc2V0QXR0cmlidXRlKCJocmVmIiwgZSksIG4uc2V0QXR0cmlidXRlKCJyZWwiLCAibm9vcGVuZXIgbm9yZWZlcnJlciIpLCBuLnNldEF0dHJpYnV0ZSgidGFyZ2V0IiwgIl9ibGFuayIpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgiaHJlZiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNhbml0aXplIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhlLCB0aGlzLlBST1RPQ09MX1dISVRFTElTVCkgPyBlIDogdGhpcy5TQU5JVElaRURfVVJMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKChyID0gYSkgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmhyZWYgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmhyZWYuc2xpY2UoMCwgbi5ocmVmLmluZGV4T2YoIjoiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pbmRleE9mKHIpID4gLTEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBsLmJsb3ROYW1lID0gImxpbmsiLCBsLnRhZ05hbWUgPSAiQSIsIGwuU0FOSVRJWkVEX1VSTCA9ICJhYm91dDpibGFuayIsIGwuUFJPVE9DT0xfV0hJVEVMSVNUID0gWyJodHRwIiwgImh0dHBzIiwgIm1haWx0byIsICJ0ZWwiXSwgdFsiZGVmYXVsdCJdID0gbCwgdC5zYW5pdGl6ZSA9IGMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgZS5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIGUgIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzKG4oMjMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBzKG4oMTA3KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZSh0LCAhKCJ0cnVlIiA9PT0gZS5nZXRBdHRyaWJ1dGUodCkpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsIGUpLCB0aGlzLnNlbGVjdCA9IHQsIHRoaXMuY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLCB0aGlzLmJ1aWxkUGlja2VyKCksIHRoaXMuc2VsZWN0LnN0eWxlLmRpc3BsYXkgPSAibm9uZSIsIHRoaXMuc2VsZWN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuY29udGFpbmVyLCB0aGlzLnNlbGVjdCksIHRoaXMubGFiZWwuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnRvZ2dsZVBpY2tlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmxhYmVsLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUua2V5Q29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBpWyJkZWZhdWx0Il0ua2V5cy5FTlRFUjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnRvZ2dsZVBpY2tlcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBpWyJkZWZhdWx0Il0ua2V5cy5FU0NBUEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5lc2NhcGUoKSwgZS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMudXBkYXRlLmJpbmQodGhpcykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyhlLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInRvZ2dsZVBpY2tlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKCJxbC1leHBhbmRlZCIpLCBsKHRoaXMubGFiZWwsICJhcmlhLWV4cGFuZGVkIiksIGwodGhpcy5vcHRpb25zLCAiYXJpYS1oaWRkZW4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJidWlsZEl0ZW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnRhYkluZGV4ID0gIjAiLCBuLnNldEF0dHJpYnV0ZSgicm9sZSIsICJidXR0b24iKSwgbi5jbGFzc0xpc3QuYWRkKCJxbC1waWNrZXItaXRlbSIpLCBlLmhhc0F0dHJpYnV0ZSgidmFsdWUiKSAmJiBuLnNldEF0dHJpYnV0ZSgiZGF0YS12YWx1ZSIsIGUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpKSwgZS50ZXh0Q29udGVudCAmJiBuLnNldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbCIsIGUudGV4dENvbnRlbnQpLCBuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zZWxlY3RJdGVtKG4sICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUua2V5Q29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaVsiZGVmYXVsdCJdLmtleXMuRU5URVI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2VsZWN0SXRlbShuLCAhMCksIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBpWyJkZWZhdWx0Il0ua2V5cy5FU0NBUEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZXNjYXBlKCksIGUucHJldmVudERlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYnVpbGRMYWJlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2xhc3NMaXN0LmFkZCgicWwtcGlja2VyLWxhYmVsIiksIGUuaW5uZXJIVE1MID0gYVsiZGVmYXVsdCJdLCBlLnRhYkluZGV4ID0gIjAiLCBlLnNldEF0dHJpYnV0ZSgicm9sZSIsICJidXR0b24iKSwgZS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAiZmFsc2UiKSwgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoZSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYnVpbGRPcHRpb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuY2xhc3NMaXN0LmFkZCgicWwtcGlja2VyLW9wdGlvbnMiKSwgdC5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwgInRydWUiKSwgdC50YWJJbmRleCA9ICItMSIsIHQuaWQgPSAicWwtcGlja2VyLW9wdGlvbnMtIiArIHUsIHUgKz0gMSwgdGhpcy5sYWJlbC5zZXRBdHRyaWJ1dGUoImFyaWEtY29udHJvbHMiLCB0LmlkKSwgdGhpcy5vcHRpb25zID0gdCwgW10uc2xpY2UuY2FsbCh0aGlzLnNlbGVjdC5vcHRpb25zKS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUuYnVpbGRJdGVtKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hcHBlbmRDaGlsZChyKSwgITAgPT09IG4uc2VsZWN0ZWQgJiYgZS5zZWxlY3RJdGVtKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYnVpbGRQaWNrZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXS5zbGljZS5jYWxsKHRoaXMuc2VsZWN0LmF0dHJpYnV0ZXMpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY29udGFpbmVyLnNldEF0dHJpYnV0ZSh0Lm5hbWUsIHQudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgicWwtcGlja2VyIiksIHRoaXMubGFiZWwgPSB0aGlzLmJ1aWxkTGFiZWwoKSwgdGhpcy5idWlsZE9wdGlvbnMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJlc2NhcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCksIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUubGFiZWwuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY2xvc2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgicWwtZXhwYW5kZWQiKSwgdGhpcy5sYWJlbC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAiZmFsc2UiKSwgdGhpcy5vcHRpb25zLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAidHJ1ZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNlbGVjdEl0ZW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoIi5xbC1zZWxlY3RlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAhPT0gbiAmJiAobnVsbCAhPSBuICYmIG4uY2xhc3NMaXN0LnJlbW92ZSgicWwtc2VsZWN0ZWQiKSwgbnVsbCAhPSBlICYmIChlLmNsYXNzTGlzdC5hZGQoInFsLXNlbGVjdGVkIiksIHRoaXMuc2VsZWN0LnNlbGVjdGVkSW5kZXggPSBbXS5pbmRleE9mLmNhbGwoZS5wYXJlbnROb2RlLmNoaWxkcmVuLCBlKSwgZS5oYXNBdHRyaWJ1dGUoImRhdGEtdmFsdWUiKSA/IHRoaXMubGFiZWwuc2V0QXR0cmlidXRlKCJkYXRhLXZhbHVlIiwgZS5nZXRBdHRyaWJ1dGUoImRhdGEtdmFsdWUiKSkgOiB0aGlzLmxhYmVsLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS12YWx1ZSIpLCBlLmhhc0F0dHJpYnV0ZSgiZGF0YS1sYWJlbCIpID8gdGhpcy5sYWJlbC5zZXRBdHRyaWJ1dGUoImRhdGEtbGFiZWwiLCBlLmdldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbCIpKSA6IHRoaXMubGFiZWwucmVtb3ZlQXR0cmlidXRlKCJkYXRhLWxhYmVsIiksIHQpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIEV2ZW50KSB0aGlzLnNlbGVjdC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiY2hhbmdlIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIm9iamVjdCIgPT09ICgidW5kZWZpbmVkIiA9PSB0eXBlb2YgRXZlbnQgPyAidW5kZWZpbmVkIiA6IHIoRXZlbnQpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbml0RXZlbnQoImNoYW5nZSIsICEwLCAhMCksIHRoaXMuc2VsZWN0LmRpc3BhdGNoRXZlbnQobykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0LnNlbGVjdGVkSW5kZXggPiAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIucWwtcGlja2VyLW9wdGlvbnMiKS5jaGlsZHJlblt0aGlzLnNlbGVjdC5zZWxlY3RlZEluZGV4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLnNlbGVjdC5vcHRpb25zW3RoaXMuc2VsZWN0LnNlbGVjdGVkSW5kZXhdLCB0aGlzLnNlbGVjdEl0ZW0odCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuc2VsZWN0SXRlbShudWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBudWxsICE9IGUgJiYgZSAhPT0gdGhpcy5zZWxlY3QucXVlcnlTZWxlY3Rvcigib3B0aW9uW3NlbGVjdGVkXSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsLmNsYXNzTGlzdC50b2dnbGUoInFsLWFjdGl2ZSIsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gYwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZyhuKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBnKG4oNSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4oNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZyhpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBnKG4oMTYpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBnKG4oMjUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBnKG4oMjQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBnKG4oMzUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBnKG4oNikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGcobigyMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGcobig3KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZyhuKDU1KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gZyhuKDQyKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gZyhuKDIzKSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBnKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgb1siZGVmYXVsdCJdLnJlZ2lzdGVyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG90cy9ibG9jayI6IGFbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG90cy9ibG9jay9lbWJlZCI6IGkuQmxvY2tFbWJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG90cy9icmVhayI6IHNbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG90cy9jb250YWluZXIiOiB1WyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxvdHMvY3Vyc29yIjogbFsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsb3RzL2VtYmVkIjogY1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsb3RzL2lubGluZSI6IGZbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG90cy9zY3JvbGwiOiBkWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxvdHMvdGV4dCI6IHBbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGVzL2NsaXBib2FyZCI6IGhbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGVzL2hpc3RvcnkiOiBtWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlcy9rZXlib2FyZCI6IHlbImRlZmF1bHQiXQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgclsiZGVmYXVsdCJdLnJlZ2lzdGVyKGFbImRlZmF1bHQiXSwgc1siZGVmYXVsdCJdLCBsWyJkZWZhdWx0Il0sIGZbImRlZmF1bHQiXSwgZFsiZGVmYXVsdCJdLCBwWyJkZWZhdWx0Il0pLCB0WyJkZWZhdWx0Il0gPSBvWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG9tTm9kZSA9IGUsIHRoaXMuZG9tTm9kZVtyLkRBVEFfS0VZXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb3Q6IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCAic3RhdGljcyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUuY3JlYXRlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0aGlzLnRhZ05hbWUpIHRocm93IG5ldyByLlBhcmNobWVudEVycm9yKCJCbG90IGRlZmluaXRpb24gbWlzc2luZyB0YWdOYW1lIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnRhZ05hbWUpID8gKCJzdHJpbmciID09IHR5cGVvZiBlICYmIChlID0gZS50b1VwcGVyQ2FzZSgpLCBwYXJzZUludChlKS50b1N0cmluZygpID09PSBlICYmIChlID0gcGFyc2VJbnQoZSkpKSwgdCA9ICJudW1iZXIiID09IHR5cGVvZiBlID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLnRhZ05hbWVbZSAtIDFdKSA6IHRoaXMudGFnTmFtZS5pbmRleE9mKGUpID4gLTEgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLnRhZ05hbWVbMF0pKSA6IHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMudGFnTmFtZSksIHRoaXMuY2xhc3NOYW1lICYmIHQuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLnBhcmVudCAmJiAodGhpcy5zY3JvbGwgPSB0aGlzLnBhcmVudC5zY3JvbGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmRvbU5vZGUuY2xvbmVOb2RlKCExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuY3JlYXRlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuZGV0YWNoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyksIGRlbGV0ZSB0aGlzLmRvbU5vZGVbci5EQVRBX0tFWV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5kZWxldGVBdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc29sYXRlKGUsIHQpLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuZm9ybWF0QXQgPSBmdW5jdGlvbihlLCB0LCBuLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5pc29sYXRlKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSByLnF1ZXJ5KG4sIHIuU2NvcGUuQkxPVCkgJiYgbykgaS53cmFwKG4sIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChudWxsICE9IHIucXVlcnkobiwgci5TY29wZS5BVFRSSUJVVEUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHIuY3JlYXRlKHRoaXMuc3RhdGljcy5zY29wZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLndyYXAoYSksIGEuZm9ybWF0KG4sIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5pbnNlcnRBdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBudWxsID09IG4gPyByLmNyZWF0ZSgidGV4dCIsIHQpIDogci5jcmVhdGUodCwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5zcGxpdChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKG8sIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuaW5zZXJ0SW50byA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gbnVsbCksIG51bGwgIT0gdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuY2hpbGRyZW4ucmVtb3ZlKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY2hpbGRyZW4uaW5zZXJ0QmVmb3JlKHRoaXMsIHQpLCBudWxsICE9IHQgJiYgKG4gPSB0LmRvbU5vZGUpLCB0aGlzLmRvbU5vZGUucGFyZW50Tm9kZSA9PSBlLmRvbU5vZGUgJiYgdGhpcy5kb21Ob2RlLm5leHRTaWJsaW5nID09IG4gfHwgZS5kb21Ob2RlLmluc2VydEJlZm9yZSh0aGlzLmRvbU5vZGUsIG4pLCB0aGlzLnBhcmVudCA9IGUsIHRoaXMuYXR0YWNoKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5pc29sYXRlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuc3BsaXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNwbGl0KHQpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlICYmIChlID0gdGhpcy5wYXJlbnQpLCBudWxsID09IHRoaXMucGFyZW50IHx8IHRoaXMgPT0gZSA/IDAgOiB0aGlzLnBhcmVudC5jaGlsZHJlbi5vZmZzZXQodGhpcykgKyB0aGlzLnBhcmVudC5vZmZzZXQoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5vcHRpbWl6ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLmRvbU5vZGVbci5EQVRBX0tFWV0gJiYgZGVsZXRlIHRoaXMuZG9tTm9kZVtyLkRBVEFfS0VZXS5tdXRhdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLmRvbU5vZGUucGFyZW50Tm9kZSAmJiB0aGlzLmRvbU5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbU5vZGUpLCB0aGlzLmRldGFjaCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBlLnBhcmVudCAmJiAoZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIGUubmV4dCksIGUucmVtb3ZlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUucmVwbGFjZVdpdGggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gInN0cmluZyIgPT0gdHlwZW9mIGUgPyByLmNyZWF0ZShlLCB0KSA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnJlcGxhY2UodGhpcyksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IGUgPyB0aGlzIDogdGhpcy5uZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oZSwgdCkge30sIGUucHJvdG90eXBlLndyYXAgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gInN0cmluZyIgPT0gdHlwZW9mIGUgPyByLmNyZWF0ZShlLCB0KSA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZShuLCB0aGlzLm5leHQpLCBuLmFwcGVuZENoaWxkKHRoaXMpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5ibG90TmFtZSA9ICJhYnN0cmFjdCIsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gbwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbigxMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbigzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbigzMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbigxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzID0ge30sIHRoaXMuZG9tTm9kZSA9IGUsIHRoaXMuYnVpbGQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5wcm90b3R5cGUuYXR0cmlidXRlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID8gZS5hZGQodGhpcy5kb21Ob2RlLCB0KSAmJiAobnVsbCAhPSBlLnZhbHVlKHRoaXMuZG9tTm9kZSkgPyB0aGlzLmF0dHJpYnV0ZXNbZS5hdHRyTmFtZV0gPSBlIDogZGVsZXRlIHRoaXMuYXR0cmlidXRlc1tlLmF0dHJOYW1lXSkgOiAoZS5yZW1vdmUodGhpcy5kb21Ob2RlKSwgZGVsZXRlIHRoaXMuYXR0cmlidXRlc1tlLmF0dHJOYW1lXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5idWlsZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlcyA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHJbImRlZmF1bHQiXS5rZXlzKHRoaXMuZG9tTm9kZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gb1siZGVmYXVsdCJdLmtleXModGhpcy5kb21Ob2RlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpWyJkZWZhdWx0Il0ua2V5cyh0aGlzLmRvbU5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmNvbmNhdChuKS5jb25jYXQocykuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhLnF1ZXJ5KHQsIGEuU2NvcGUuQVRUUklCVVRFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gaW5zdGFuY2VvZiByWyJkZWZhdWx0Il0gJiYgKGUuYXR0cmlidXRlc1tuLmF0dHJOYW1lXSA9IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuYXR0cmlidXRlc1tuXS52YWx1ZSh0LmRvbU5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5mb3JtYXQobiwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUubW92ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcHkoZSksIE9iamVjdC5rZXlzKHRoaXMuYXR0cmlidXRlcykuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hdHRyaWJ1dGVzW2VdLnJlbW92ZSh0LmRvbU5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5hdHRyaWJ1dGVzID0ge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0W25dID0gZS5hdHRyaWJ1dGVzW25dLnZhbHVlKGUuZG9tTm9kZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMgfHwgKHIgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJvdG9fXzogW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX19wcm90b19fID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB8fCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiB0KSB0Lmhhc093blByb3BlcnR5KG4pICYmIChlW25dID0gdFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcihlLCB0KSwgZS5wcm90b3R5cGUgPSBudWxsID09PSB0ID8gT2JqZWN0LmNyZWF0ZSh0KSA6IChuLnByb3RvdHlwZSA9IHQucHJvdG90eXBlLCBuZXcgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKS5zcGxpdCgvXHMrLykuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IGUuaW5kZXhPZih0ICsgIi0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGUgJiYgZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LmtleXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSB8fCAiIikuc3BsaXQoL1xzKy8pLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zcGxpdCgiLSIpLnNsaWNlKDAsIC0xKS5qb2luKCItIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF0aGlzLmNhbkFkZChlLCB0KSAmJiAodGhpcy5yZW1vdmUoZSksIGUuY2xhc3NMaXN0LmFkZCh0aGlzLmtleU5hbWUgKyAiLSIgKyB0KSwgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShlLCB0aGlzLmtleU5hbWUpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jbGFzc0xpc3QucmVtb3ZlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCAwID09PSBlLmNsYXNzTGlzdC5sZW5ndGggJiYgZS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gKGkoZSwgdGhpcy5rZXlOYW1lKVswXSB8fCAiIikuc2xpY2UodGhpcy5rZXlOYW1lLmxlbmd0aCArIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbkFkZChlLCB0KSA/IHQgOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KG4oMTIpWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBhCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCAociA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3Byb3RvX18gPSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpIHQuaGFzT3duUHJvcGVydHkobikgJiYgKGVbbl0gPSB0W25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5zcGxpdCgiLSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnNsaWNlKDEpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVswXS50b1VwcGVyQ2FzZSgpICsgZS5zbGljZSgxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5qb2luKCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0WzBdICsgbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSBlICYmIGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh0LCBlKSwgdC5rZXlzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZS5nZXRBdHRyaWJ1dGUoInN0eWxlIikgfHwgIiIpLnNwbGl0KCI7IikubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnNwbGl0KCI6IilbMF0udHJpbSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5jYW5BZGQoZSwgdCkgJiYgKGUuc3R5bGVbaSh0aGlzLmtleU5hbWUpXSA9IHQsICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3R5bGVbaSh0aGlzLmtleU5hbWUpXSA9ICIiLCBlLmdldEF0dHJpYnV0ZSgic3R5bGUiKSB8fCBlLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUudmFsdWUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnN0eWxlW2kodGhpcy5rZXlOYW1lKV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FuQWRkKGUsIHQpID8gdCA6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0obigxMilbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IGEKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgZSksIHRoaXMucXVpbGwgPSB0LCB0aGlzLm9wdGlvbnMgPSBuLCB0aGlzLm1vZHVsZXMgPSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbml0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5vcHRpb25zLm1vZHVsZXMpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09IGUubW9kdWxlc1t0XSAmJiBlLmFkZE1vZHVsZSh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZE1vZHVsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucXVpbGwuY29uc3RydWN0b3JbImltcG9ydCJdKCJtb2R1bGVzLyIgKyBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1vZHVsZXNbZV0gPSBuZXcgdCh0aGlzLnF1aWxsLCB0aGlzLm9wdGlvbnMubW9kdWxlc1tlXSB8fCB7fSksIHRoaXMubW9kdWxlc1tlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uREVGQVVMVFMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiB7fQogICAgICAgICAgICAgICAgICAgICAgICB9LCBvLnRoZW1lcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogbwogICAgICAgICAgICAgICAgICAgICAgICB9LCB0WyJkZWZhdWx0Il0gPSBvCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24gYyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogYyhvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcyhuKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBzKG4oNykpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gIlx1ZmVmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbnRlbnROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLCBuLmNvbnRlbnROb2RlLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwgITEpLCBbXS5zbGljZS5jYWxsKG4uZG9tTm9kZS5jaGlsZE5vZGVzKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbnRlbnROb2RlLmFwcGVuZENoaWxkKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbi5sZWZ0R3VhcmQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh1KSwgbi5yaWdodEd1YXJkID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodSksIG4uZG9tTm9kZS5hcHBlbmRDaGlsZChuLmxlZnRHdWFyZCksIG4uZG9tTm9kZS5hcHBlbmRDaGlsZChuLmNvbnRlbnROb2RlKSwgbi5kb21Ob2RlLmFwcGVuZENoaWxkKG4ucmlnaHRHdWFyZCksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIHIodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaW5kZXgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHRoaXMubGVmdEd1YXJkID8gMCA6IGUgPT09IHRoaXMucmlnaHRHdWFyZCA/IDEgOiBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5kZXgiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlc3RvcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5kYXRhLnNwbGl0KHUpLmpvaW4oIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT09IHRoaXMubGVmdEd1YXJkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByZXYgaW5zdGFuY2VvZiBhWyJkZWZhdWx0Il0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLnByZXYubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJldi5pbnNlcnRBdChvLCByKSwgdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZTogdGhpcy5wcmV2LmRvbU5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogbyArIHIubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgbiA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHIpLCB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUoaVsiZGVmYXVsdCJdLmNyZWF0ZShuKSwgdGhpcyksIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IHIubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZSA9PT0gdGhpcy5yaWdodEd1YXJkICYmICh0aGlzLm5leHQgaW5zdGFuY2VvZiBhWyJkZWZhdWx0Il0gPyAodGhpcy5uZXh0Lmluc2VydEF0KDAsIHIpLCB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZTogdGhpcy5uZXh0LmRvbU5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IHIubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IChuID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUociksIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZShpWyJkZWZhdWx0Il0uY3JlYXRlKG4pLCB0aGlzLm5leHQpLCB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogci5sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmRhdGEgPSB1LCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImNoYXJhY3RlckRhdGEiID09PSBlLnR5cGUgJiYgKGUudGFyZ2V0ID09PSBuLmxlZnRHdWFyZCB8fCBlLnRhcmdldCA9PT0gbi5yaWdodEd1YXJkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4ucmVzdG9yZShlLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgJiYgKHQucmFuZ2UgPSByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGlbImRlZmF1bHQiXS5FbWJlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IGwKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LkFsaWduU3R5bGUgPSB0LkFsaWduQ2xhc3MgPSB0LkFsaWduQXR0cmlidXRlID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gKHIgPSBvKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGlbImRlZmF1bHQiXS5TY29wZS5CTE9DSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3Q6IFsicmlnaHQiLCAiY2VudGVyIiwgImp1c3RpZnkiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgaVsiZGVmYXVsdCJdLkF0dHJpYnV0b3IuQXR0cmlidXRlKCJhbGlnbiIsICJhbGlnbiIsIGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG5ldyBpWyJkZWZhdWx0Il0uQXR0cmlidXRvci5DbGFzcygiYWxpZ24iLCAicWwtYWxpZ24iLCBhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuZXcgaVsiZGVmYXVsdCJdLkF0dHJpYnV0b3IuU3R5bGUoImFsaWduIiwgInRleHQtYWxpZ24iLCBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5BbGlnbkF0dHJpYnV0ZSA9IHMsIHQuQWxpZ25DbGFzcyA9IHUsIHQuQWxpZ25TdHlsZSA9IGwKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LkJhY2tncm91bmRTdHlsZSA9IHQuQmFja2dyb3VuZENsYXNzID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gKHIgPSBvKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDI2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgaVsiZGVmYXVsdCJdLkF0dHJpYnV0b3IuQ2xhc3MoImJhY2tncm91bmQiLCAicWwtYmciLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGlbImRlZmF1bHQiXS5TY29wZS5JTkxJTkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG5ldyBhLkNvbG9yQXR0cmlidXRvcigiYmFja2dyb3VuZCIsICJiYWNrZ3JvdW5kLWNvbG9yIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlOiBpWyJkZWZhdWx0Il0uU2NvcGUuSU5MSU5FCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5CYWNrZ3JvdW5kQ2xhc3MgPSBzLCB0LkJhY2tncm91bmRTdHlsZSA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LkRpcmVjdGlvblN0eWxlID0gdC5EaXJlY3Rpb25DbGFzcyA9IHQuRGlyZWN0aW9uQXR0cmlidXRlID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gKHIgPSBvKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGlbImRlZmF1bHQiXS5TY29wZS5CTE9DSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3Q6IFsicnRsIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbmV3IGlbImRlZmF1bHQiXS5BdHRyaWJ1dG9yLkF0dHJpYnV0ZSgiZGlyZWN0aW9uIiwgImRpciIsIGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG5ldyBpWyJkZWZhdWx0Il0uQXR0cmlidXRvci5DbGFzcygiZGlyZWN0aW9uIiwgInFsLWRpcmVjdGlvbiIsIGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG5ldyBpWyJkZWZhdWx0Il0uQXR0cmlidXRvci5TdHlsZSgiZGlyZWN0aW9uIiwgImRpcmVjdGlvbiIsIGEpOwogICAgICAgICAgICAgICAgICAgICAgICB0LkRpcmVjdGlvbkF0dHJpYnV0ZSA9IHMsIHQuRGlyZWN0aW9uQ2xhc3MgPSB1LCB0LkRpcmVjdGlvblN0eWxlID0gbAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuRm9udENsYXNzID0gdC5Gb250U3R5bGUgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIHAoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHAobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKHIgPSBhKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZTogc1siZGVmYXVsdCJdLlNjb3BlLklOTElORSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3Q6IFsic2VyaWYiLCAibW9ub3NwYWNlIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gbmV3IHNbImRlZmF1bHQiXS5BdHRyaWJ1dG9yLkNsYXNzKCJmb250IiwgInFsLWZvbnQiLCBjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBuZXcoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1KHRoaXMsIHQpLCBsKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAidmFsdWUiLCB0aGlzKS5jYWxsKHRoaXMsIGUpLnJlcGxhY2UoL1siJ10vZywgIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oc1siZGVmYXVsdCJdLkF0dHJpYnV0b3IuU3R5bGUpKSgiZm9udCIsICJmb250LWZhbWlseSIsIGMpOwogICAgICAgICAgICAgICAgICAgICAgICB0LkZvbnRTdHlsZSA9IGQsIHQuRm9udENsYXNzID0gZgogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuU2l6ZVN0eWxlID0gdC5TaXplQ2xhc3MgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gbigwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAociA9IG8pICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG5ldyBpWyJkZWZhdWx0Il0uQXR0cmlidXRvci5DbGFzcygic2l6ZSIsICJxbC1zaXplIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlOiBpWyJkZWZhdWx0Il0uU2NvcGUuSU5MSU5FLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlbGlzdDogWyJzbWFsbCIsICJsYXJnZSIsICJodWdlIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5ldyBpWyJkZWZhdWx0Il0uQXR0cmlidXRvci5TdHlsZSgic2l6ZSIsICJmb250LXNpemUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGlbImRlZmF1bHQiXS5TY29wZS5JTkxJTkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0OiBbIjEwcHgiLCAiMThweCIsICIzMnB4Il0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB0LlNpemVDbGFzcyA9IGEsIHQuU2l6ZVN0eWxlID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiOiBuKDc2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IG4oNzcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBuKDc4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5OiBuKDc5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG4oODApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2txdW90ZTogbig4MSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2xkOiBuKDgyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFuOiBuKDgzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IG4oNTgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvZGUtYmxvY2siOiBuKDU4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBuKDg0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiOiBuKDg1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGw6IG4oODYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IG4oODcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGw6IG4oODgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IG4oODkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBuKDkwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm11bGE6IG4oOTEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTogbig5MiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjogbig5MykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGFsaWM6IG4oOTQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IG4oOTUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIisxIjogbig5NiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0xIjogbig5NykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBuKDk4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Q6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkOiBuKDk5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWxsZXQ6IG4oMTAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVjazogbigxMDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViOiBuKDEwMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyIjogbigxMDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWtlOiBuKDEwNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmU6IG4oMTA1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvOiBuKDEwNikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuZ2V0TGFzdENoYW5nZUluZGV4ID0gdFsiZGVmYXVsdCJdID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhKG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGEobig1KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIubGFzdFJlY29yZGVkID0gMCwgci5pZ25vcmVDaGFuZ2UgPSAhMSwgci5jbGVhcigpLCByLnF1aWxsLm9uKGlbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRSwgKGZ1bmN0aW9uKGUsIHQsIG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAhPT0gaVsiZGVmYXVsdCJdLmV2ZW50cy5URVhUX0NIQU5HRSB8fCByLmlnbm9yZUNoYW5nZSB8fCAoci5vcHRpb25zLnVzZXJPbmx5ICYmIG8gIT09IGlbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIgPyByLnRyYW5zZm9ybSh0KSA6IHIucmVjb3JkKHQsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgci5xdWlsbC5rZXlib2FyZC5hZGRCaW5kaW5nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiWiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0S2V5OiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHIudW5kby5iaW5kKHIpKSwgci5xdWlsbC5rZXlib2FyZC5hZGRCaW5kaW5nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiWiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0S2V5OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRLZXk6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgci5yZWRvLmJpbmQocikpLCAvV2luL2kudGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pICYmIHIucXVpbGwua2V5Ym9hcmQuYWRkQmluZGluZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIlkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydEtleTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByLnJlZG8uYmluZChyKSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIHIodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjaGFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSB0aGlzLnN0YWNrW2VdLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnN0YWNrW2VdLnBvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFja1t0XS5wdXNoKG4pLCB0aGlzLmxhc3RSZWNvcmRlZCA9IDAsIHRoaXMuaWdub3JlQ2hhbmdlID0gITAsIHRoaXMucXVpbGwudXBkYXRlQ29udGVudHMobltlXSwgaVsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIHRoaXMuaWdub3JlQ2hhbmdlID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHUobltlXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLnNldFNlbGVjdGlvbihyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNsZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRvOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZG86IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY3V0b2ZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFJlY29yZGVkID0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZWNvcmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBlLm9wcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucmVkbyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnF1aWxsLmdldENvbnRlbnRzKCkuZGlmZih0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gRGF0ZS5ub3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhc3RSZWNvcmRlZCArIHRoaXMub3B0aW9ucy5kZWxheSA+IHIgJiYgdGhpcy5zdGFjay51bmRvLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuc3RhY2sudW5kby5wb3AoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi5jb21wb3NlKG8udW5kbyksIGUgPSBvLnJlZG8uY29tcG9zZShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMubGFzdFJlY29yZGVkID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sudW5kby5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRvOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZG86IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLnN0YWNrLnVuZG8ubGVuZ3RoID4gdGhpcy5vcHRpb25zLm1heFN0YWNrICYmIHRoaXMuc3RhY2sudW5kby5zaGlmdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVkbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZSgicmVkbyIsICJ1bmRvIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidHJhbnNmb3JtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnVuZG8uZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC51bmRvID0gZS50cmFuc2Zvcm0odC51bmRvLCAhMCksIHQucmVkbyA9IGUudHJhbnNmb3JtKHQucmVkbywgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5zdGFjay5yZWRvLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudW5kbyA9IGUudHJhbnNmb3JtKHQudW5kbywgITApLCB0LnJlZG8gPSBlLnRyYW5zZm9ybSh0LnJlZG8sICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidW5kbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZSgidW5kbyIsICJyZWRvIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShhKG4oOSkpWyJkZWZhdWx0Il0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICs9IHRbImRlbGV0ZSJdIHx8IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUubGVuZ3RoKCkgLSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUub3BzW2Uub3BzLmxlbmd0aCAtIDFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQgJiYgKG51bGwgIT0gdC5pbnNlcnQgPyAic3RyaW5nIiA9PSB0eXBlb2YgdC5pbnNlcnQgJiYgdC5pbnNlcnQuZW5kc1dpdGgoIlxuIikgOiBudWxsICE9IHQuYXR0cmlidXRlcyAmJiBPYmplY3Qua2V5cyh0LmF0dHJpYnV0ZXMpLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gb1siZGVmYXVsdCJdLnF1ZXJ5KGUsIG9bImRlZmF1bHQiXS5TY29wZS5CTE9DSykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpICYmIChuIC09IDEpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcy5ERUZBVUxUUyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiAxZTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTdGFjazogMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck9ubHk6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRbImRlZmF1bHQiXSA9IHMsIHQuZ2V0TGFzdENoYW5nZUluZGV4ID0gdQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IHQuQmFzZVRvb2x0aXAgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uIEMoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IEMobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGgobigzKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaChuKDIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBoKG4oOCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGgobigyMykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGgobigzNCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGgobig1OSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGgobig2MCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGgobigyOCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGgobig2MSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBtKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGcoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBbITEsICJjZW50ZXIiLCAicmlnaHQiLCAianVzdGlmeSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IFsiIzAwMDAwMCIsICIjZTYwMDAwIiwgIiNmZjk5MDAiLCAiI2ZmZmYwMCIsICIjMDA4YTAwIiwgIiMwMDY2Y2MiLCAiIzk5MzNmZiIsICIjZmZmZmZmIiwgIiNmYWNjY2MiLCAiI2ZmZWJjYyIsICIjZmZmZmNjIiwgIiNjY2U4Y2MiLCAiI2NjZTBmNSIsICIjZWJkNmZmIiwgIiNiYmJiYmIiLCAiI2YwNjY2NiIsICIjZmZjMjY2IiwgIiNmZmZmNjYiLCAiIzY2Yjk2NiIsICIjNjZhM2UwIiwgIiNjMjg1ZmYiLCAiIzg4ODg4OCIsICIjYTEwMDAwIiwgIiNiMjZiMDAiLCAiI2IyYjIwMCIsICIjMDA2MTAwIiwgIiMwMDQ3YjIiLCAiIzZiMjRiMiIsICIjNDQ0NDQ0IiwgIiM1YzAwMDAiLCAiIzY2M2QwMCIsICIjNjY2NjAwIiwgIiMwMDM3MDAiLCAiIzAwMjk2NiIsICIjM2QxNDY2Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gWyExLCAic2VyaWYiLCAibW9ub3NwYWNlIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPID0gWyIxIiwgIjIiLCAiMyIsICExXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gPSBbInNtYWxsIiwgITEsICJsYXJnZSIsICJodWdlIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtKHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHkodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmVtaXR0ZXIubGlzdGVuRE9NKCJjbGljayIsIGRvY3VtZW50LmJvZHksIChmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyhlLnJvb3QpKSByZXR1cm4gZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PSByLnRvb2x0aXAgfHwgci50b29sdGlwLnJvb3QuY29udGFpbnModC50YXJnZXQpIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHIudG9vbHRpcC50ZXh0Ym94IHx8IHIucXVpbGwuaGFzRm9jdXMoKSB8fCByLnRvb2x0aXAuaGlkZSgpLCBudWxsICE9IHIucGlja2VycyAmJiByLnBpY2tlcnMuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY29udGFpbmVyLmNvbnRhaW5zKHQudGFyZ2V0KSB8fCBlLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcodCwgZSksIHIodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkTW9kdWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImFkZE1vZHVsZSIsIHRoaXMpLmNhbGwodGhpcywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInRvb2xiYXIiID09PSBlICYmIHRoaXMuZXh0ZW5kVG9vbGJhcihuKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJidWlsZEJ1dHRvbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKS5zcGxpdCgvXHMrLykuZm9yRWFjaCgoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5zdGFydHNXaXRoKCJxbC0iKSAmJiAobiA9IG4uc2xpY2UoInFsLSIubGVuZ3RoKSwgbnVsbCAhPSB0W25dKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZGlyZWN0aW9uIiA9PT0gbikgZS5pbm5lckhUTUwgPSB0W25dWyIiXSArIHRbbl0ucnRsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHRbbl0pIGUuaW5uZXJIVE1MID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUudmFsdWUgfHwgIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IHIgJiYgdFtuXVtyXSAmJiAoZS5pbm5lckhUTUwgPSB0W25dW3JdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYnVpbGRQaWNrZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGlja2VycyA9IGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJxbC1hbGlnbiIpKSByZXR1cm4gbnVsbCA9PSBlLnF1ZXJ5U2VsZWN0b3IoIm9wdGlvbiIpICYmIEUoZSwgdiksIG5ldyBmWyJkZWZhdWx0Il0oZSwgdC5hbGlnbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJxbC1iYWNrZ3JvdW5kIikgfHwgZS5jbGFzc0xpc3QuY29udGFpbnMoInFsLWNvbG9yIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmNsYXNzTGlzdC5jb250YWlucygicWwtYmFja2dyb3VuZCIpID8gImJhY2tncm91bmQiIDogImNvbG9yIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZS5xdWVyeVNlbGVjdG9yKCJvcHRpb24iKSAmJiBFKGUsIGIsICJiYWNrZ3JvdW5kIiA9PT0gbiA/ICIjZmZmZmZmIiA6ICIjMDAwMDAwIiksIG5ldyBjWyJkZWZhdWx0Il0oZSwgdFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZS5xdWVyeVNlbGVjdG9yKCJvcHRpb24iKSAmJiAoZS5jbGFzc0xpc3QuY29udGFpbnMoInFsLWZvbnQiKSA/IEUoZSwgdykgOiBlLmNsYXNzTGlzdC5jb250YWlucygicWwtaGVhZGVyIikgPyBFKGUsIE8pIDogZS5jbGFzc0xpc3QuY29udGFpbnMoInFsLXNpemUiKSAmJiBFKGUsIF8pKSwgbmV3IGRbImRlZmF1bHQiXShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnF1aWxsLm9uKHNbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucGlja2Vycy5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudXBkYXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGxbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHguREVGQVVMVFMgPSAoMCwgaVsiZGVmYXVsdCJdKSghMCwge30sIGxbImRlZmF1bHQiXS5ERUZBVUxUUywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm11bGE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwudGhlbWUudG9vbHRpcC5lZGl0KCJmb3JtdWxhIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcigiaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gdCAmJiAoKHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiZmlsZSIpLCB0LnNldEF0dHJpYnV0ZSgiYWNjZXB0IiwgImltYWdlL3BuZywgaW1hZ2UvZ2lmLCBpbWFnZS9qcGVnLCBpbWFnZS9ibXAsIGltYWdlL3gtaWNvbiIpLCB0LmNsYXNzTGlzdC5hZGQoInFsLWltYWdlIiksIHQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0LmZpbGVzICYmIG51bGwgIT0gdC5maWxlc1swXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBuZXcgRmlsZVJlYWRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ub25sb2FkID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZS5xdWlsbC5nZXRTZWxlY3Rpb24oITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucXVpbGwudXBkYXRlQ29udGVudHMoKG5ldyBhWyJkZWZhdWx0Il0pLnJldGFpbihyLmluZGV4KVsiZGVsZXRlIl0oci5sZW5ndGgpLmluc2VydCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiBuLnRhcmdldC5yZXN1bHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIGUucXVpbGwuc2V0U2VsZWN0aW9uKHIuaW5kZXggKyAxLCBzWyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpLCB0LnZhbHVlID0gIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4ucmVhZEFzRGF0YVVSTCh0LmZpbGVzWzBdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0KSksIHQuY2xpY2soKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLnRoZW1lLnRvb2x0aXAuZWRpdCgidmlkZW8iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtKHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0geSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUsIG4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci50ZXh0Ym94ID0gci5yb290LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9InRleHQiXScpLCByLmxpc3RlbigpLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZyh0LCBlKSwgcih0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxpc3RlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dGJveC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVbImRlZmF1bHQiXS5tYXRjaCh0LCAiZW50ZXIiKSA/IChlLnNhdmUoKSwgdC5wcmV2ZW50RGVmYXVsdCgpKSA6IHVbImRlZmF1bHQiXS5tYXRjaCh0LCAiZXNjYXBlIikgJiYgKGUuY2FuY2VsKCksIHQucHJldmVudERlZmF1bHQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNhbmNlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJlZGl0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAibGluayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb3QuY2xhc3NMaXN0LnJlbW92ZSgicWwtaGlkZGVuIiksIHRoaXMucm9vdC5jbGFzc0xpc3QuYWRkKCJxbC1lZGl0aW5nIiksIG51bGwgIT0gdCA/IHRoaXMudGV4dGJveC52YWx1ZSA9IHQgOiBlICE9PSB0aGlzLnJvb3QuZ2V0QXR0cmlidXRlKCJkYXRhLW1vZGUiKSAmJiAodGhpcy50ZXh0Ym94LnZhbHVlID0gIiIpLCB0aGlzLnBvc2l0aW9uKHRoaXMucXVpbGwuZ2V0Qm91bmRzKHRoaXMucXVpbGwuc2VsZWN0aW9uLnNhdmVkUmFuZ2UpKSwgdGhpcy50ZXh0Ym94LnNlbGVjdCgpLCB0aGlzLnRleHRib3guc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsIHRoaXMudGV4dGJveC5nZXRBdHRyaWJ1dGUoImRhdGEtIiArIGUpIHx8ICIiKSwgdGhpcy5yb290LnNldEF0dHJpYnV0ZSgiZGF0YS1tb2RlIiwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVzdG9yZUZvY3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5xdWlsbC5zY3JvbGxpbmdDb250YWluZXIuc2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLmZvY3VzKCksIHRoaXMucXVpbGwuc2Nyb2xsaW5nQ29udGFpbmVyLnNjcm9sbFRvcCA9IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2F2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiA9IHRoaXMudGV4dGJveC52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLnJvb3QuZ2V0QXR0cmlidXRlKCJkYXRhLW1vZGUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnF1aWxsLnJvb3Quc2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlua1JhbmdlID8gKHRoaXMucXVpbGwuZm9ybWF0VGV4dCh0aGlzLmxpbmtSYW5nZSwgImxpbmsiLCBuLCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgZGVsZXRlIHRoaXMubGlua1JhbmdlKSA6ICh0aGlzLnJlc3RvcmVGb2N1cygpLCB0aGlzLnF1aWxsLmZvcm1hdCgibGluayIsIG4sIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpKSwgdGhpcy5xdWlsbC5yb290LnNjcm9sbFRvcCA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ2aWRlbyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IChlID0gbikubWF0Y2goL14oPzooaHR0cHM/KTpcL1wvKT8oPzooPzp3d3d8bSlcLik/eW91dHViZVwuY29tXC93YXRjaC4qdj0oW2EtekEtWjAtOV8tXSspLykgfHwgZS5tYXRjaCgvXig/OihodHRwcz8pOlwvXC8pPyg/Oig/Ond3d3xtKVwuKT95b3V0dVwuYmVcLyhbYS16QS1aMC05Xy1dKykvKSwgbiA9IHQgPyAodFsxXSB8fCAiaHR0cHMiKSArICI6Ly93d3cueW91dHViZS5jb20vZW1iZWQvIiArIHRbMl0gKyAiP3Nob3dpbmZvPTAiIDogKHQgPSBlLm1hdGNoKC9eKD86KGh0dHBzPyk6XC9cLyk/KD86d3d3XC4pP3ZpbWVvXC5jb21cLyhcZCspLykpID8gKHRbMV0gfHwgImh0dHBzIikgKyAiOi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8iICsgdFsyXSArICIvIiA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmb3JtdWxhIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5xdWlsbC5nZXRTZWxlY3Rpb24oITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBvLmluZGV4ICsgby5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuaW5zZXJ0RW1iZWQoaSwgdGhpcy5yb290LmdldEF0dHJpYnV0ZSgiZGF0YS1tb2RlIiksIG4sIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCAiZm9ybXVsYSIgPT09IHRoaXMucm9vdC5nZXRBdHRyaWJ1dGUoImRhdGEtbW9kZSIpICYmIHRoaXMucXVpbGwuaW5zZXJ0VGV4dChpICsgMSwgIiAiLCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24oaSArIDIsIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dGJveC52YWx1ZSA9ICIiLCB0aGlzLmhpZGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHBbImRlZmF1bHQiXSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBFKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID09PSBuID8gci5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIiwgInNlbGVjdGVkIikgOiByLnNldEF0dHJpYnV0ZSgidmFsdWUiLCB0KSwgZS5hcHBlbmRDaGlsZChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdC5CYXNlVG9vbHRpcCA9IGssIHRbImRlZmF1bHQiXSA9IHgKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsLCB0aGlzLmxlbmd0aCA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gW10sIHQgPSAwOyB0IDwgYXJndW1lbnRzLmxlbmd0aDsgdCsrKSBlW3RdID0gYXJndW1lbnRzW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKGVbMF0sIG51bGwpLCBlLmxlbmd0aCA+IDEgJiYgdGhpcy5hcHBlbmQuYXBwbHkodGhpcywgZS5zbGljZSgxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIG4gPSB0aGlzLml0ZXJhdG9yKCk7IHQgPSBuKCk7KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9PT0gZSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgKGUubmV4dCA9IHQsIG51bGwgIT0gdCA/IChlLnByZXYgPSB0LnByZXYsIG51bGwgIT0gdC5wcmV2ICYmICh0LnByZXYubmV4dCA9IGUpLCB0LnByZXYgPSBlLCB0ID09PSB0aGlzLmhlYWQgJiYgKHRoaXMuaGVhZCA9IGUpKSA6IG51bGwgIT0gdGhpcy50YWlsID8gKHRoaXMudGFpbC5uZXh0ID0gZSwgZS5wcmV2ID0gdGhpcy50YWlsLCB0aGlzLnRhaWwgPSBlKSA6IChlLnByZXYgPSBudWxsLCB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBlKSwgdGhpcy5sZW5ndGggKz0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMCwgbiA9IHRoaXMuaGVhZDsgbnVsbCAhPSBuOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9PT0gZSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgKz0gbi5sZW5ndGgoKSwgbiA9IG4ubmV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5zKGUpICYmIChudWxsICE9IGUucHJldiAmJiAoZS5wcmV2Lm5leHQgPSBlLm5leHQpLCBudWxsICE9IGUubmV4dCAmJiAoZS5uZXh0LnByZXYgPSBlLnByZXYpLCBlID09PSB0aGlzLmhlYWQgJiYgKHRoaXMuaGVhZCA9IGUubmV4dCksIGUgPT09IHRoaXMudGFpbCAmJiAodGhpcy50YWlsID0gZS5wcmV2KSwgdGhpcy5sZW5ndGggLT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLml0ZXJhdG9yID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSB0aGlzLmhlYWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IGUgJiYgKGUgPSBlLm5leHQpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gITEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4sIHIgPSB0aGlzLml0ZXJhdG9yKCk7IG4gPSByKCk7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbi5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPCBvIHx8IHQgJiYgZSA9PT0gbyAmJiAobnVsbCA9PSBuLm5leHQgfHwgMCAhPT0gbi5uZXh0Lmxlbmd0aCgpKSkgcmV0dXJuIFtuLCBlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAtPSBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbbnVsbCwgMF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCwgbiA9IHRoaXMuaXRlcmF0b3IoKTsgdCA9IG4oKTspIGUodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmZvckVhY2hBdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh0IDw9IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByLCBvID0gdGhpcy5maW5kKGUpLCBpID0gb1swXSwgYSA9IGUgLSBvWzFdLCBzID0gdGhpcy5pdGVyYXRvcihpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyID0gcygpKSAmJiBhIDwgZSArIHQ7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHIubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID4gYSA/IG4ociwgZSAtIGEsIE1hdGgubWluKHQsIGEgKyB1IC0gZSkpIDogbihyLCAwLCBNYXRoLm1pbih1LCBlICsgdCAtIGEpKSwgYSArPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLm1hcCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQucHVzaChlKG4pKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBbXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLnJlZHVjZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuLCByID0gdGhpcy5pdGVyYXRvcigpOyBuID0gcigpOykgdCA9IGUodCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUKICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSByCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCAociA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3Byb3RvX18gPSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpIHQuaGFzT3duUHJvcGVydHkobikgJiYgKGVbbl0gPSB0W25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuKDE3KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhT2xkVmFsdWU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJlZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuY2FsbCh0aGlzLCB0KSB8fCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zY3JvbGwgPSBuLCBuLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udXBkYXRlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbi5vYnNlcnZlci5vYnNlcnZlKG4uZG9tTm9kZSwgcyksIG4uYXR0YWNoKCksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8odCwgZSksIHQucHJvdG90eXBlLmRldGFjaCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZS5kZXRhY2guY2FsbCh0aGlzKSwgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5kZWxldGVBdCA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKSwgMCA9PT0gdCAmJiBuID09PSB0aGlzLmxlbmd0aCgpID8gdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IGUucHJvdG90eXBlLmRlbGV0ZUF0LmNhbGwodGhpcywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5mb3JtYXRBdCA9IGZ1bmN0aW9uKHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKSwgZS5wcm90b3R5cGUuZm9ybWF0QXQuY2FsbCh0aGlzLCB0LCBuLCByLCBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmluc2VydEF0ID0gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpLCBlLnByb3RvdHlwZS5pbnNlcnRBdC5jYWxsKHRoaXMsIHQsIG4sIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUub3B0aW1pemUgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gW10pLCB2b2lkIDAgPT09IG4gJiYgKG4gPSB7fSksIGUucHJvdG90eXBlLm9wdGltaXplLmNhbGwodGhpcywgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSBbXS5zbGljZS5jYWxsKHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKSk7IG8ubGVuZ3RoID4gMDspIHQucHVzaChvLnBvcCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSAhMCksIG51bGwgIT0gZSAmJiBlICE9PSByICYmIG51bGwgIT0gZS5kb21Ob2RlLnBhcmVudE5vZGUgJiYgKG51bGwgPT0gZS5kb21Ob2RlW2EuREFUQV9LRVldLm11dGF0aW9ucyAmJiAoZS5kb21Ob2RlW2EuREFUQV9LRVldLm11dGF0aW9ucyA9IFtdKSwgdCAmJiBzKGUucGFyZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBlLmRvbU5vZGVbYS5EQVRBX0tFWV0gJiYgbnVsbCAhPSBlLmRvbU5vZGVbYS5EQVRBX0tFWV0ubXV0YXRpb25zICYmIChlIGluc3RhbmNlb2YgaVsiZGVmYXVsdCJdICYmIGUuY2hpbGRyZW4uZm9yRWFjaCh1KSwgZS5vcHRpbWl6ZShuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGwgPSB0LCBjID0gMDsgbC5sZW5ndGggPiAwOyBjICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID49IDEwMCkgdGhyb3cgbmV3IEVycm9yKCJbUGFyY2htZW50XSBNYXhpbXVtIG9wdGltaXplIGl0ZXJhdGlvbnMgcmVhY2hlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhLmZpbmQoZS50YXJnZXQsICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0ICYmICh0LmRvbU5vZGUgPT09IGUudGFyZ2V0ICYmICgiY2hpbGRMaXN0IiA9PT0gZS50eXBlID8gKHMoYS5maW5kKGUucHJldmlvdXNTaWJsaW5nLCAhMSkpLCBbXS5mb3JFYWNoLmNhbGwoZS5hZGRlZE5vZGVzLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhLmZpbmQoZSwgITEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyh0LCAhMSksIHQgaW5zdGFuY2VvZiBpWyJkZWZhdWx0Il0gJiYgdC5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyhlLCAhMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpIDogImF0dHJpYnV0ZXMiID09PSBlLnR5cGUgJiYgcyh0LnByZXYpKSwgcyh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCh1KSwgbyA9IChsID0gW10uc2xpY2UuY2FsbCh0aGlzLm9ic2VydmVyLnRha2VSZWNvcmRzKCkpKS5zbGljZSgpOyBvLmxlbmd0aCA+IDA7KSB0LnB1c2goby5wb3AoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IG4gJiYgKG4gPSB7fSksICh0ID0gdCB8fCB0aGlzLm9ic2VydmVyLnRha2VSZWNvcmRzKCkpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhLmZpbmQoZS50YXJnZXQsICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyBudWxsIDogbnVsbCA9PSB0LmRvbU5vZGVbYS5EQVRBX0tFWV0ubXV0YXRpb25zID8gKHQuZG9tTm9kZVthLkRBVEFfS0VZXS5tdXRhdGlvbnMgPSBbZV0sIHQpIDogKHQuZG9tTm9kZVthLkRBVEFfS0VZXS5tdXRhdGlvbnMucHVzaChlKSwgbnVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gZSAmJiBlICE9PSByICYmIG51bGwgIT0gZS5kb21Ob2RlW2EuREFUQV9LRVldICYmIGUudXBkYXRlKGUuZG9tTm9kZVthLkRBVEFfS0VZXS5tdXRhdGlvbnMgfHwgW10sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbnVsbCAhPSB0aGlzLmRvbU5vZGVbYS5EQVRBX0tFWV0ubXV0YXRpb25zICYmIGUucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMsIHRoaXMuZG9tTm9kZVthLkRBVEFfS0VZXS5tdXRhdGlvbnMsIG4pLCB0aGlzLm9wdGltaXplKHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5ibG90TmFtZSA9ICJzY3JvbGwiLCB0LmRlZmF1bHRDaGlsZCA9ICJibG9jayIsIHQuc2NvcGUgPSBhLlNjb3BlLkJMT0NLX0JMT1QsIHQudGFnTmFtZSA9ICJESVYiLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Byb3RvX186IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fcHJvdG9fXyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoZVtuXSA9IHRbbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgdCksIGUucHJvdG90eXBlID0gbnVsbCA9PT0gdCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4oMTgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSBlICYmIGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LmZvcm1hdHMgPSBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnRhZ05hbWUgPT09IHQudGFnTmFtZSA/IHVuZGVmaW5lZCA6IGUuZm9ybWF0cy5jYWxsKHRoaXMsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24obiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gIT09IHRoaXMuc3RhdGljcy5ibG90TmFtZSB8fCByID8gZS5wcm90b3R5cGUuZm9ybWF0LmNhbGwodGhpcywgbiwgcikgOiAodGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlIGluc3RhbmNlb2YgaVsiZGVmYXVsdCJdIHx8IChlID0gZS53cmFwKHQuYmxvdE5hbWUsICEwKSksIG8uYXR0cmlidXRlcy5jb3B5KGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy51bndyYXAoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5mb3JtYXRBdCA9IGZ1bmN0aW9uKHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLmZvcm1hdHMoKVtyXSB8fCBhLnF1ZXJ5KHIsIGEuU2NvcGUuQVRUUklCVVRFKSA/IHRoaXMuaXNvbGF0ZSh0LCBuKS5mb3JtYXQociwgbykgOiBlLnByb3RvdHlwZS5mb3JtYXRBdC5jYWxsKHRoaXMsIHQsIG4sIHIsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUub3B0aW1pemUgPSBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlLm9wdGltaXplLmNhbGwodGhpcywgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5mb3JtYXRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBPYmplY3Qua2V5cyhyKS5sZW5ndGgpIHJldHVybiB0aGlzLnVud3JhcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMubmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBpbnN0YW5jZW9mIHQgJiYgby5wcmV2ID09PSB0aGlzICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhlKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKHQpLmxlbmd0aCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW25dICE9PSB0W25dKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShyLCBvLmZvcm1hdHMoKSkgJiYgKG8ubW92ZUNoaWxkcmVuKHRoaXMpLCBvLnJlbW92ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQuYmxvdE5hbWUgPSAiaW5saW5lIiwgdC5zY29wZSA9IGEuU2NvcGUuSU5MSU5FX0JMT1QsIHQudGFnTmFtZSA9ICJTUEFOIiwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShpWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBzCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCAociA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3Byb3RvX18gPSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpIHQuaGFzT3duUHJvcGVydHkobikgJiYgKGVbbl0gPSB0W25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuKDE4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gZSAmJiBlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh0LCBlKSwgdC5mb3JtYXRzID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGEucXVlcnkodC5ibG90TmFtZSkudGFnTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udGFnTmFtZSA9PT0gciA/IHVuZGVmaW5lZCA6IGUuZm9ybWF0cy5jYWxsKHRoaXMsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24obiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGEucXVlcnkobiwgYS5TY29wZS5CTE9DSykgJiYgKG4gIT09IHRoaXMuc3RhdGljcy5ibG90TmFtZSB8fCByID8gZS5wcm90b3R5cGUuZm9ybWF0LmNhbGwodGhpcywgbiwgcikgOiB0aGlzLnJlcGxhY2VXaXRoKHQuYmxvdE5hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmZvcm1hdEF0ID0gZnVuY3Rpb24odCwgbiwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGEucXVlcnkociwgYS5TY29wZS5CTE9DSykgPyB0aGlzLmZvcm1hdChyLCBvKSA6IGUucHJvdG90eXBlLmZvcm1hdEF0LmNhbGwodGhpcywgdCwgbiwgciwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5pbnNlcnRBdCA9IGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gciB8fCBudWxsICE9IGEucXVlcnkobiwgYS5TY29wZS5JTkxJTkUpKSBlLnByb3RvdHlwZS5pbnNlcnRBdC5jYWxsKHRoaXMsIHQsIG4sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5zcGxpdCh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gYS5jcmVhdGUobiwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnBhcmVudC5pbnNlcnRCZWZvcmUoaSwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvVHJpZGVudC8pID8gdGhpcy5idWlsZCgpIDogZS5wcm90b3R5cGUudXBkYXRlLmNhbGwodGhpcywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LmJsb3ROYW1lID0gImJsb2NrIiwgdC5zY29wZSA9IGEuU2NvcGUuQkxPQ0tfQkxPVCwgdC50YWdOYW1lID0gIlAiLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Byb3RvX186IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fcHJvdG9fXyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoZVtuXSA9IHRbbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgdCksIGUucHJvdG90eXBlID0gbnVsbCA9PT0gdCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGUgJiYgZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LmZvcm1hdHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlLmZvcm1hdEF0LmNhbGwodGhpcywgMCwgdGhpcy5sZW5ndGgoKSwgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmZvcm1hdEF0ID0gZnVuY3Rpb24odCwgbiwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHQgJiYgbiA9PT0gdGhpcy5sZW5ndGgoKSA/IHRoaXMuZm9ybWF0KHIsIG8pIDogZS5wcm90b3R5cGUuZm9ybWF0QXQuY2FsbCh0aGlzLCB0LCBuLCByLCBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZm9ybWF0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRpY3MuZm9ybWF0cyh0aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0obigxOSlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IGkKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Byb3RvX186IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fcHJvdG9fXyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoZVtuXSA9IHRbbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgdCksIGUucHJvdG90eXBlID0gbnVsbCA9PT0gdCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4oMTkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuY2FsbCh0aGlzLCB0KSB8fCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi50ZXh0ID0gbi5zdGF0aWNzLnZhbHVlKG4uZG9tTm9kZSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8odCwgZSksIHQuY3JlYXRlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnZhbHVlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubm9ybWFsaXplICYmICh0ID0gdC5ub3JtYWxpemUoKSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5kZWxldGVBdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb21Ob2RlLmRhdGEgPSB0aGlzLnRleHQgPSB0aGlzLnRleHQuc2xpY2UoMCwgZSkgKyB0aGlzLnRleHQuc2xpY2UoZSArIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuaW5kZXggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbU5vZGUgPT09IGUgPyB0IDogLTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5pbnNlcnRBdCA9IGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PSByID8gKHRoaXMudGV4dCA9IHRoaXMudGV4dC5zbGljZSgwLCB0KSArIG4gKyB0aGlzLnRleHQuc2xpY2UodCksIHRoaXMuZG9tTm9kZS5kYXRhID0gdGhpcy50ZXh0KSA6IGUucHJvdG90eXBlLmluc2VydEF0LmNhbGwodGhpcywgdCwgbiwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dC5sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5vcHRpbWl6ZSA9IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUub3B0aW1pemUuY2FsbCh0aGlzLCBuKSwgdGhpcy50ZXh0ID0gdGhpcy5zdGF0aWNzLnZhbHVlKHRoaXMuZG9tTm9kZSksIDAgPT09IHRoaXMudGV4dC5sZW5ndGggPyB0aGlzLnJlbW92ZSgpIDogdGhpcy5uZXh0IGluc3RhbmNlb2YgdCAmJiB0aGlzLm5leHQucHJldiA9PT0gdGhpcyAmJiAodGhpcy5pbnNlcnRBdCh0aGlzLmxlbmd0aCgpLCB0aGlzLm5leHQudmFsdWUoKSksIHRoaXMubmV4dC5yZW1vdmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCAmJiAodCA9ICExKSwgW3RoaXMuZG9tTm9kZSwgZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gdCAmJiAodCA9ICExKSwgIXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBlKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID09PSB0aGlzLmxlbmd0aCgpKSByZXR1cm4gdGhpcy5uZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhLmNyZWF0ZSh0aGlzLmRvbU5vZGUuc3BsaXRUZXh0KGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZShuLCB0aGlzLm5leHQpLCB0aGlzLnRleHQgPSB0aGlzLnN0YXRpY3MudmFsdWUodGhpcy5kb21Ob2RlKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2hhcmFjdGVyRGF0YSIgPT09IGUudHlwZSAmJiBlLnRhcmdldCA9PT0gbi5kb21Ob2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSAmJiAodGhpcy50ZXh0ID0gdGhpcy5zdGF0aWNzLnZhbHVlKHRoaXMuZG9tTm9kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUudmFsdWUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQuYmxvdE5hbWUgPSAidGV4dCIsIHQuc2NvcGUgPSBhLlNjb3BlLklOTElORV9CTE9ULCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuY2xhc3NMaXN0LnRvZ2dsZSgidGVzdC1jbGFzcyIsICExKSwgci5jbGFzc0xpc3QuY29udGFpbnMoInRlc3QtY2xhc3MiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBET01Ub2tlbkxpc3QucHJvdG90eXBlLnRvZ2dsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTVRva2VuTGlzdC5wcm90b3R5cGUudG9nZ2xlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiAhdGhpcy5jb250YWlucyhlKSA9PSAhdCA/IHQgOiBvLmNhbGwodGhpcywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggfHwgKFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdCB8fCAwLCB0aGlzLnN1YnN0cih0LCBlLmxlbmd0aCkgPT09IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSksIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggfHwgKFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibnVtYmVyIiAhPSB0eXBlb2YgdCB8fCAhaXNGaW5pdGUodCkgfHwgTWF0aC5mbG9vcih0KSAhPT0gdCB8fCB0ID4gbi5sZW5ndGgpICYmICh0ID0gbi5sZW5ndGgpLCB0IC09IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmluZGV4T2YoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEgIT09IHIgJiYgciA9PT0gdAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgQXJyYXkucHJvdG90eXBlLmZpbmQgfHwgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgImZpbmQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB0aGlzKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmluZCBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgZSkgdGhyb3cgbmV3IFR5cGVFcnJvcigicHJlZGljYXRlIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIG4gPSBPYmplY3QodGhpcyksIHIgPSBuLmxlbmd0aCA+Pj4gMCwgbyA9IGFyZ3VtZW50c1sxXSwgaSA9IDA7IGkgPCByOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gbltpXSwgZS5jYWxsKG8sIHQsIGksIG4pKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImVuYWJsZU9iamVjdFJlc2l6aW5nIiwgITEsICExKSwgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImF1dG9VcmxEZXRlY3QiLCAhMSwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAtMTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIoZSwgdCwgdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT0gdCkgcmV0dXJuIGUgPyBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIGVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIDogW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodSA8IDAgfHwgZS5sZW5ndGggPCB1KSAmJiAodSA9IG51bGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBpKGUsIHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlLnN1YnN0cmluZygwLCBjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBhKGUgPSBlLnN1YnN0cmluZyhjKSwgdCA9IHQuc3Vic3RyaW5nKGMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZS5zdWJzdHJpbmcoZS5sZW5ndGggLSBjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIHRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuLCBlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGUubGVuZ3RoID4gdC5sZW5ndGggPyBlIDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlLmxlbmd0aCA+IHQubGVuZ3RoID8gdCA6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdS5pbmRleE9mKGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgIT0gYykgcmV0dXJuIHMgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMSwgdS5zdWJzdHJpbmcoMCwgYyldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIGxdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIHUuc3Vic3RyaW5nKGMgKyBsLmxlbmd0aCldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGUubGVuZ3RoID4gdC5sZW5ndGggJiYgKHNbMF1bMF0gPSBzWzJdWzBdID0gbiksIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09IGwubGVuZ3RoKSByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW24sIGVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIHRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmxlbmd0aCA+IHQubGVuZ3RoID8gZSA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUubGVuZ3RoID4gdC5sZW5ndGggPyB0IDogZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmxlbmd0aCA8IDQgfHwgMiAqIHIubGVuZ3RoIDwgbi5sZW5ndGgpIHJldHVybiBudWxsOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIsIG8sIHMsIHUsIGwgPSBlLnN1YnN0cmluZyhuLCBuICsgTWF0aC5mbG9vcihlLmxlbmd0aCAvIDQpKSwgYyA9IC0xLCBmID0gIiI7IC0gMSAhPSAoYyA9IHQuaW5kZXhPZihsLCBjICsgMSkpOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGkoZS5zdWJzdHJpbmcobiksIHQuc3Vic3RyaW5nKGMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhKGUuc3Vic3RyaW5nKDAsIG4pLCB0LnN1YnN0cmluZygwLCBjKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYubGVuZ3RoIDwgcCArIGQgJiYgKGYgPSB0LnN1YnN0cmluZyhjIC0gcCwgYykgKyB0LnN1YnN0cmluZyhjLCBjICsgZCksIHIgPSBlLnN1YnN0cmluZygwLCBuIC0gcCksIG8gPSBlLnN1YnN0cmluZyhuICsgZCksIHMgPSB0LnN1YnN0cmluZygwLCBjIC0gcCksIHUgPSB0LnN1YnN0cmluZyhjICsgZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyICogZi5sZW5ndGggPj0gZS5sZW5ndGggPyBbciwgbywgcywgdSwgZl0gOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcywgdSwgbCwgYywgZiwgZCA9IG8obiwgciwgTWF0aC5jZWlsKG4ubGVuZ3RoIC8gNCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvKG4sIHIsIE1hdGguY2VpbChuLmxlbmd0aCAvIDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZCAmJiAhcCkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcCA/IGQgJiYgZFs0XS5sZW5ndGggPiBwWzRdLmxlbmd0aCA/IGQgOiBwIDogZCwgZS5sZW5ndGggPiB0Lmxlbmd0aCA/ICh1ID0gc1swXSwgbCA9IHNbMV0sIGMgPSBzWzJdLCBmID0gc1szXSkgOiAoYyA9IHNbMF0sIGYgPSBzWzFdLCB1ID0gc1syXSwgbCA9IHNbM10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBzWzRdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt1LCBsLCBjLCBmLCBoXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBmWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBmWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBmWzNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBmWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSByKGQsIGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSByKHAsIG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcuY29uY2F0KFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgeV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIHYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBlLmxlbmd0aCwgaSA9IHQubGVuZ3RoLCBhID0gTWF0aC5jZWlsKChyICsgaSkgLyAyKSwgcyA9IGEsIHUgPSAyICogYSwgbCA9IG5ldyBBcnJheSh1KSwgYyA9IG5ldyBBcnJheSh1KSwgZiA9IDA7IGYgPCB1OyBmKyspIGxbZl0gPSAtMSwgY1tmXSA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbFtzICsgMV0gPSAwLCBjW3MgKyAxXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gciAtIGksIHAgPSBkICUgMiAhPSAwLCBoID0gMCwgbSA9IDAsIHkgPSAwLCBnID0gMCwgdiA9IDA7IHYgPCBhOyB2KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBiID0gLXYgKyBoOyBiIDw9IHYgLSBtOyBiICs9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdyA9IHMgKyBiLCBPID0gKEMgPSBiID09IC12IHx8IGIgIT0gdiAmJiBsW3cgLSAxXSA8IGxbdyArIDFdID8gbFt3ICsgMV0gOiBsW3cgLSAxXSArIDEpIC0gYjsgQyA8IHIgJiYgTyA8IGkgJiYgZS5jaGFyQXQoQykgPT0gdC5jaGFyQXQoTyk7KSBDKyssIE8rKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxbd10gPSBDLCBDID4gcikgbSArPSAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChPID4gaSkgaCArPSAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwICYmIChrID0gcyArIGQgLSBiKSA+PSAwICYmIGsgPCB1ICYmIC0xICE9IGNba10gJiYgQyA+PSAoeCA9IHIgLSBjW2tdKSkgcmV0dXJuIG8oZSwgdCwgQywgTykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgXyA9IC12ICsgeTsgXyA8PSB2IC0gZzsgXyArPSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHgsIGsgPSBzICsgXywgRSA9ICh4ID0gXyA9PSAtdiB8fCBfICE9IHYgJiYgY1trIC0gMV0gPCBjW2sgKyAxXSA/IGNbayArIDFdIDogY1trIC0gMV0gKyAxKSAtIF87IHggPCByICYmIEUgPCBpICYmIGUuY2hhckF0KHIgLSB4IC0gMSkgPT0gdC5jaGFyQXQoaSAtIEUgLSAxKTspIHgrKywgRSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1trXSA9IHgsIHggPiByKSBnICs9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEUgPiBpKSB5ICs9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodyA9IHMgKyBkIC0gXykgPj0gMCAmJiB3IDwgdSAmJiAtMSAhPSBsW3ddKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPID0gcyArIChDID0gbFt3XSkgLSB3LCBDID49ICh4ID0gciAtIHgpKSByZXR1cm4gbyhlLCB0LCBDLCBPKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbiwgZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIHRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUgPSBlLnN1YnN0cmluZygwLCBlLmxlbmd0aCAtIGMpLCB0ID0gdC5zdWJzdHJpbmcoMCwgdC5sZW5ndGggLSBjKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZiAmJiBwLnVuc2hpZnQoWzAsIGZdKSwgZCAmJiBwLnB1c2goWzAsIGRdKSwgcyhwKSwgbnVsbCAhPSB1ICYmIChwID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHQpIHJldHVybiBbMCwgZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gMCwgbyA9IDA7IG8gPCBlLmxlbmd0aDsgbysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlW29dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpWzBdID09PSBuIHx8IDAgPT09IGlbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSByICsgaVsxXS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID09PSBhKSByZXR1cm4gW28gKyAxLCBlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5zbGljZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0IC0gciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gW2lbMF0sIGlbMV0uc2xpY2UoMCwgcyldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBbaVswXSwgaVsxXS5zbGljZShzKV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zcGxpY2UobywgMSwgdSwgbCksIFtvICsgMSwgZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiY3Vyc29yX3BvcyBpcyBvdXQgb2YgYm91bmRzISIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gclswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG9baV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvW2kgKyAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBhKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gYVswXSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcyAmJiBhWzFdICsgc1sxXSA9PT0gc1sxXSArIGFbMV0pIHJldHVybiBvLnNwbGljZShpLCAyLCBzLCBhKSwgbChvLCBpLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBzICYmIDAgPT09IHNbMV0uaW5kZXhPZihhWzFdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnNwbGljZShpLCAyLCBbc1swXSwgYVsxXV0sIFswLCBhWzFdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gc1sxXS5zbGljZShhWzFdLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1Lmxlbmd0aCA+IDAgJiYgby5zcGxpY2UoaSArIDIsIDAsIFtzWzBdLCB1XSksIGwobywgaSwgMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0ocCwgdSkpLCBwID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAhMSwgciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNoYXJDb2RlQXQoMCkgPj0gNTYzMjAgJiYgZS5jaGFyQ29kZUF0KDApIDw9IDU3MzQzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jaGFyQ29kZUF0KGUubGVuZ3RoIC0gMSkgPj0gNTUyOTYgJiYgZS5jaGFyQ29kZUF0KGUubGVuZ3RoIC0gMSkgPD0gNTYzMTkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSA9IDI7IGkgPCBlLmxlbmd0aDsgaSArPSAxKSAwID09PSBlW2kgLSAyXVswXSAmJiBvKGVbaSAtIDJdWzFdKSAmJiBlW2kgLSAxXVswXSA9PT0gbiAmJiByKGVbaSAtIDFdWzFdKSAmJiAxID09PSBlW2ldWzBdICYmIHIoZVtpXVsxXSkgJiYgKHQgPSAhMCwgZVtpIC0gMV1bMV0gPSBlW2kgLSAyXVsxXS5zbGljZSgtMSkgKyBlW2kgLSAxXVsxXSwgZVtpXVsxXSA9IGVbaSAtIDJdWzFdLnNsaWNlKC0xKSArIGVbaV1bMV0sIGVbaSAtIDJdWzFdID0gZVtpIC0gMl1bMV0uc2xpY2UoMCwgLTEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGUubGVuZ3RoOyBpICs9IDEpIGVbaV1bMV0ubGVuZ3RoID4gMCAmJiBhLnB1c2goZVtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0ocCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbyhlLCB0LCBuLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuc3Vic3RyaW5nKDAsIG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnN1YnN0cmluZygwLCBvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5zdWJzdHJpbmcobiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQuc3Vic3RyaW5nKG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByKGksIGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSByKHMsIHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwuY29uY2F0KGMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICF0IHx8IGUuY2hhckF0KDApICE9IHQuY2hhckF0KDApKSByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwLCByID0gTWF0aC5taW4oZS5sZW5ndGgsIHQubGVuZ3RoKSwgbyA9IHIsIGkgPSAwOyBuIDwgbzspIGUuc3Vic3RyaW5nKGksIG8pID09IHQuc3Vic3RyaW5nKGksIG8pID8gaSA9IG4gPSBvIDogciA9IG8sIG8gPSBNYXRoLmZsb29yKChyIC0gbikgLyAyICsgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSB8fCAhdCB8fCBlLmNoYXJBdChlLmxlbmd0aCAtIDEpICE9IHQuY2hhckF0KHQubGVuZ3RoIC0gMSkpIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDAsIHIgPSBNYXRoLm1pbihlLmxlbmd0aCwgdC5sZW5ndGgpLCBvID0gciwgaSA9IDA7IG4gPCBvOykgZS5zdWJzdHJpbmcoZS5sZW5ndGggLSBvLCBlLmxlbmd0aCAtIGkpID09IHQuc3Vic3RyaW5nKHQubGVuZ3RoIC0gbywgdC5sZW5ndGggLSBpKSA/IGkgPSBuID0gbyA6IHIgPSBvLCBvID0gTWF0aC5mbG9vcigociAtIG4pIC8gMiArIG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnB1c2goWzAsICIiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByID0gMCwgbyA9IDAsIHUgPSAwLCBsID0gIiIsIGMgPSAiIjsgciA8IGUubGVuZ3RoOykgc3dpdGNoIChlW3JdWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KyssIGMgKz0gZVtyXVsxXSwgcisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8rKywgbCArPSBlW3JdWzFdLCByKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyArIHUgPiAxID8gKDAgIT09IG8gJiYgMCAhPT0gdSAmJiAoMCAhPT0gKHQgPSBpKGMsIGwpKSAmJiAociAtIG8gLSB1ID4gMCAmJiAwID09IGVbciAtIG8gLSB1IC0gMV1bMF0gPyBlW3IgLSBvIC0gdSAtIDFdWzFdICs9IGMuc3Vic3RyaW5nKDAsIHQpIDogKGUuc3BsaWNlKDAsIDAsIFswLCBjLnN1YnN0cmluZygwLCB0KV0pLCByKyspLCBjID0gYy5zdWJzdHJpbmcodCksIGwgPSBsLnN1YnN0cmluZyh0KSksIDAgIT09ICh0ID0gYShjLCBsKSkgJiYgKGVbcl1bMV0gPSBjLnN1YnN0cmluZyhjLmxlbmd0aCAtIHQpICsgZVtyXVsxXSwgYyA9IGMuc3Vic3RyaW5nKDAsIGMubGVuZ3RoIC0gdCksIGwgPSBsLnN1YnN0cmluZygwLCBsLmxlbmd0aCAtIHQpKSksIDAgPT09IG8gPyBlLnNwbGljZShyIC0gdSwgbyArIHUsIFsxLCBjXSkgOiAwID09PSB1ID8gZS5zcGxpY2UociAtIG8sIG8gKyB1LCBbbiwgbF0pIDogZS5zcGxpY2UociAtIG8gLSB1LCBvICsgdSwgW24sIGxdLCBbMSwgY10pLCByID0gciAtIG8gLSB1ICsgKG8gPyAxIDogMCkgKyAodSA/IDEgOiAwKSArIDEpIDogMCAhPT0gciAmJiAwID09IGVbciAtIDFdWzBdID8gKGVbciAtIDFdWzFdICs9IGVbcl1bMV0sIGUuc3BsaWNlKHIsIDEpKSA6IHIrKywgdSA9IDAsIG8gPSAwLCBsID0gIiIsIGMgPSAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgPT09IGVbZS5sZW5ndGggLSAxXVsxXSAmJiBlLnBvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IDE7IHIgPCBlLmxlbmd0aCAtIDE7KSAwID09IGVbciAtIDFdWzBdICYmIDAgPT0gZVtyICsgMV1bMF0gJiYgKGVbcl1bMV0uc3Vic3RyaW5nKGVbcl1bMV0ubGVuZ3RoIC0gZVtyIC0gMV1bMV0ubGVuZ3RoKSA9PSBlW3IgLSAxXVsxXSA/IChlW3JdWzFdID0gZVtyIC0gMV1bMV0gKyBlW3JdWzFdLnN1YnN0cmluZygwLCBlW3JdWzFdLmxlbmd0aCAtIGVbciAtIDFdWzFdLmxlbmd0aCksIGVbciArIDFdWzFdID0gZVtyIC0gMV1bMV0gKyBlW3IgKyAxXVsxXSwgZS5zcGxpY2UociAtIDEsIDEpLCBmID0gITApIDogZVtyXVsxXS5zdWJzdHJpbmcoMCwgZVtyICsgMV1bMV0ubGVuZ3RoKSA9PSBlW3IgKyAxXVsxXSAmJiAoZVtyIC0gMV1bMV0gKz0gZVtyICsgMV1bMV0sIGVbcl1bMV0gPSBlW3JdWzFdLnN1YnN0cmluZyhlW3IgKyAxXVsxXS5sZW5ndGgpICsgZVtyICsgMV1bMV0sIGUuc3BsaWNlKHIgKyAxLCAxKSwgZiA9ICEwKSksIHIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgJiYgcyhlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gcjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IHQgKyBuIC0gMTsgciA+PSAwICYmIHIgPj0gdCAtIDE7IHItLSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociArIDEgPCBlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGVbcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtyICsgMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9bMF0gPT09IGlbMV0gJiYgZS5zcGxpY2UociwgMiwgW29bMF0sIG9bMV0gKyBpWzFdXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHUuSU5TRVJUID0gMSwgdS5ERUxFVEUgPSBuLCB1LkVRVUFMID0gMCwgZS5leHBvcnRzID0gdQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBlKSB0LnB1c2gobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICB9KGUuZXhwb3J0cyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIE9iamVjdC5rZXlzID8gT2JqZWN0LmtleXMgOiBuKS5zaGltID0gbgogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAiW29iamVjdCBBcmd1bWVudHNdIiA9PSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICB9KCk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiW29iamVjdCBBcmd1bWVudHNdIiA9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAibnVtYmVyIiA9PSB0eXBlb2YgZS5sZW5ndGggJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsICJjYWxsZWUiKSAmJiAhT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsICJjYWxsZWUiKSB8fCAhMQogICAgICAgICAgICAgICAgICAgICAgICB9KHQgPSBlLmV4cG9ydHMgPSBuID8gciA6IG8pLnN1cHBvcnRlZCA9IHIsIHQudW5zdXBwb3J0ZWQgPSBvCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAifiI7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKCkge30KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mbiA9IGUsIHRoaXMuY29udGV4dCA9IHQsIHRoaXMub25jZSA9IG4gfHwgITEKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IG5ldyBvLCB0aGlzLl9ldmVudHNDb3VudCA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuY3JlYXRlICYmIChvLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCksIChuZXcgbykuX19wcm90b19fIHx8IChyID0gITEpKSwgYS5wcm90b3R5cGUuZXZlbnROYW1lcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQsIG8gPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSB0aGlzLl9ldmVudHNDb3VudCkgcmV0dXJuIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gZSA9IHRoaXMuX2V2ZW50cykgbi5jYWxsKGUsIHQpICYmIG8ucHVzaChyID8gdC5zbGljZSgxKSA6IHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBvLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpKSA6IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSwgYS5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByID8gciArIGUgOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLl9ldmVudHNbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkgcmV0dXJuICEhbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykgcmV0dXJuIFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8uZm4pIHJldHVybiBbby5mbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgYSA9IG8ubGVuZ3RoLCBzID0gbmV3IEFycmF5KGEpOyBpIDwgYTsgaSsrKSBzW2ldID0gb1tpXS5mbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbihlLCB0LCBuLCBvLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHIgPyByICsgZSA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2V2ZW50c1tzXSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUsIGwsIGMgPSB0aGlzLl9ldmVudHNbc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGFyZ3VtZW50cy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5mbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYy5vbmNlICYmIHRoaXMucmVtb3ZlTGlzdGVuZXIoZSwgYy5mbiwgdW5kZWZpbmVkLCAhMCksIGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsIHQpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsIHQsIG4pLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsIHQsIG4sIG8pLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsIHQsIG4sIG8sIGkpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsIHQsIG4sIG8sIGksIGEpLCAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSAxLCB1ID0gbmV3IEFycmF5KGYgLSAxKTsgbCA8IGY7IGwrKykgdVtsIC0gMV0gPSBhcmd1bWVudHNbbF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5mbi5hcHBseShjLmNvbnRleHQsIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkLCBwID0gYy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gMDsgbCA8IHA7IGwrKykgc3dpdGNoIChjW2xdLm9uY2UgJiYgdGhpcy5yZW1vdmVMaXN0ZW5lcihlLCBjW2xdLmZuLCB1bmRlZmluZWQsICEwKSwgZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2xdLmZuLmNhbGwoY1tsXS5jb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2xdLmZuLmNhbGwoY1tsXS5jb250ZXh0LCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2xdLmZuLmNhbGwoY1tsXS5jb250ZXh0LCB0LCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2xdLmZuLmNhbGwoY1tsXS5jb250ZXh0LCB0LCBuLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZCA9IDEsIHUgPSBuZXcgQXJyYXkoZiAtIDEpOyBkIDwgZjsgZCsrKSB1W2QgLSAxXSA9IGFyZ3VtZW50c1tkXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbbF0uZm4uYXBwbHkoY1tsXS5jb250ZXh0LCB1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9LCBhLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbmV3IGkodCwgbiB8fCB0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gciA/IHIgKyBlIDogZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmVudHNbYV0gPyB0aGlzLl9ldmVudHNbYV0uZm4gPyB0aGlzLl9ldmVudHNbYV0gPSBbdGhpcy5fZXZlbnRzW2FdLCBvXSA6IHRoaXMuX2V2ZW50c1thXS5wdXNoKG8pIDogKHRoaXMuX2V2ZW50c1thXSA9IG8sIHRoaXMuX2V2ZW50c0NvdW50KyspLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG5ldyBpKHQsIG4gfHwgdGhpcywgITApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSByID8gciArIGUgOiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50c1thXSA/IHRoaXMuX2V2ZW50c1thXS5mbiA/IHRoaXMuX2V2ZW50c1thXSA9IFt0aGlzLl9ldmVudHNbYV0sIG9dIDogdGhpcy5fZXZlbnRzW2FdLnB1c2gobykgOiAodGhpcy5fZXZlbnRzW2FdID0gbywgdGhpcy5fZXZlbnRzQ291bnQrKyksIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHIgPyByICsgZSA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2V2ZW50c1thXSkgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiAwID09IC0tdGhpcy5fZXZlbnRzQ291bnQgPyB0aGlzLl9ldmVudHMgPSBuZXcgbyA6IGRlbGV0ZSB0aGlzLl9ldmVudHNbYV0sIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMuX2V2ZW50c1thXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLmZuKSBzLmZuICE9PSB0IHx8IGkgJiYgIXMub25jZSB8fCBuICYmIHMuY29udGV4dCAhPT0gbiB8fCAoMCA9PSAtLXRoaXMuX2V2ZW50c0NvdW50ID8gdGhpcy5fZXZlbnRzID0gbmV3IG8gOiBkZWxldGUgdGhpcy5fZXZlbnRzW2FdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHUgPSAwLCBsID0gW10sIGMgPSBzLmxlbmd0aDsgdSA8IGM7IHUrKykoc1t1XS5mbiAhPT0gdCB8fCBpICYmICFzW3VdLm9uY2UgfHwgbiAmJiBzW3VdLmNvbnRleHQgIT09IG4pICYmIGwucHVzaChzW3VdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmxlbmd0aCA/IHRoaXMuX2V2ZW50c1thXSA9IDEgPT09IGwubGVuZ3RoID8gbFswXSA6IGwgOiAwID09IC0tdGhpcy5fZXZlbnRzQ291bnQgPyB0aGlzLl9ldmVudHMgPSBuZXcgbyA6IGRlbGV0ZSB0aGlzLl9ldmVudHNbYV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyAodCA9IHIgPyByICsgZSA6IGUsIHRoaXMuX2V2ZW50c1t0XSAmJiAoMCA9PSAtLXRoaXMuX2V2ZW50c0NvdW50ID8gdGhpcy5fZXZlbnRzID0gbmV3IG8gOiBkZWxldGUgdGhpcy5fZXZlbnRzW3RdKSkgOiAodGhpcy5fZXZlbnRzID0gbmV3IG8sIHRoaXMuX2V2ZW50c0NvdW50ID0gMCksIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYS5wcm90b3R5cGUub2ZmID0gYS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIsIGEucHJvdG90eXBlLmFkZExpc3RlbmVyID0gYS5wcm90b3R5cGUub24sIGEucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYS5wcmVmaXhlZCA9IHIsIGEuRXZlbnRFbWl0dGVyID0gYSwgdm9pZCAwICE9PSBlICYmIChlLmV4cG9ydHMgPSBhKQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQubWF0Y2hUZXh0ID0gdC5tYXRjaFNwYWNpbmcgPSB0Lm1hdGNoTmV3bGluZSA9IHQubWF0Y2hCbG90ID0gdC5tYXRjaEF0dHJpYnV0b3IgPSB0WyJkZWZhdWx0Il0gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiBlLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgZSAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSkgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhLCBzID0gZVtTeW1ib2wuaXRlcmF0b3JdKCk7ICEociA9IChhID0gcy5uZXh0KCkpLmRvbmUpICYmIChuLnB1c2goYS52YWx1ZSksICF0IHx8IG4ubGVuZ3RoICE9PSB0KTsgciA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEwLCBpID0gdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhciAmJiBzWyJyZXR1cm4iXSAmJiBzWyJyZXR1cm4iXSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB0aHJvdyBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gYihuKDMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBiKG4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGIobigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYihuKDUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBiKG4oMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBiKG4oOSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG4oMzYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG4oMzcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGIobigxMykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG4oMjYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG4oMzgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4oMzkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IG4oNDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGVbdF0gPSBuLCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE8gPSAoMCwgY1siZGVmYXVsdCJdKSgicXVpbGw6Y2xpcGJvYXJkIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gIl9fcWwtbWF0Y2hlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtOb2RlLlRFWFRfTk9ERSwgUl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW05vZGUuVEVYVF9OT0RFLCBMXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImJyIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUCh0LCAiXG4iKSB8fCB0Lmluc2VydCgiXG4iKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtOb2RlLkVMRU1FTlRfTk9ERSwgTF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW05vZGUuRUxFTUVOVF9OT0RFLCBNXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTm9kZS5FTEVNRU5UX05PREUsIEldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtOb2RlLkVMRU1FTlRfTk9ERSwgTl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW05vZGUuRUxFTUVOVF9OT0RFLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5zdHlsZSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuZm9udFN0eWxlICYmICJpdGFsaWMiID09PSBqKGUpLmZvbnRTdHlsZSAmJiAobi5pdGFsaWMgPSAhMCksIHIuZm9udFdlaWdodCAmJiAoaihlKS5mb250V2VpZ2h0LnN0YXJ0c1dpdGgoImJvbGQiKSB8fCBwYXJzZUludChqKGUpLmZvbnRXZWlnaHQpID49IDcwMCkgJiYgKG4uYm9sZCA9ICEwKSwgT2JqZWN0LmtleXMobikubGVuZ3RoID4gMCAmJiAodCA9IFModCwgbikpLCBwYXJzZUZsb2F0KHIudGV4dEluZGVudCB8fCAwKSA+IDAgJiYgKHQgPSAobmV3IHNbImRlZmF1bHQiXSkuaW5zZXJ0KCJcdCIpLmNvbmNhdCh0KSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImxpIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHVbImRlZmF1bHQiXS5xdWVyeShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbiB8fCAibGlzdC1pdGVtIiAhPT0gbi5ibG90TmFtZSB8fCAhUCh0LCAiXG4iKSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAtMSwgbyA9IGUucGFyZW50Tm9kZTsgIW8uY2xhc3NMaXN0LmNvbnRhaW5zKCJxbC1jbGlwYm9hcmQiKTspICJsaXN0IiA9PT0gKHVbImRlZmF1bHQiXS5xdWVyeShvKSB8fCB7fSkuYmxvdE5hbWUgJiYgKHIgKz0gMSksIG8gPSBvLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByIDw9IDAgPyB0IDogdC5jb21wb3NlKChuZXcgc1siZGVmYXVsdCJdKS5yZXRhaW4odC5sZW5ndGgoKSAtIDEpLnJldGFpbigxLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJiIiwgVC5iaW5kKFQsICJib2xkIildLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaSIsIFQuYmluZChULCAiaXRhbGljIildLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsic3R5bGUiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBzWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBbZC5BbGlnbkF0dHJpYnV0ZSwgeS5EaXJlY3Rpb25BdHRyaWJ1dGVdLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlW3Qua2V5TmFtZV0gPSB0LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwge30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IFtkLkFsaWduU3R5bGUsIHAuQmFja2dyb3VuZFN0eWxlLCBtLkNvbG9yU3R5bGUsIHkuRGlyZWN0aW9uU3R5bGUsIGcuRm9udFN0eWxlLCB2LlNpemVTdHlsZV0ucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdC5rZXlOYW1lXSA9IHQsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnF1aWxsLnJvb3QuYWRkRXZlbnRMaXN0ZW5lcigicGFzdGUiLCByLm9uUGFzdGUuYmluZChyKSksIHIuY29udGFpbmVyID0gci5xdWlsbC5hZGRDb250YWluZXIoInFsLWNsaXBib2FyZCIpLCByLmNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIsICEwKSwgci5jb250YWluZXIuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIC0xKSwgci5tYXRjaGVycyA9IFtdLCB4LmNvbmNhdChyLm9wdGlvbnMubWF0Y2hlcnMpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbyhlLCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdFswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdFsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuLm1hdGNoVmlzdWFsIHx8IGEgIT09IEkpICYmIHIuYWRkTWF0Y2hlcihpLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIGkodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkTWF0Y2hlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZXJzLnB1c2goW2UsIHRdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjb252ZXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgcmV0dXJuIHRoaXMuY29udGFpbmVyLmlubmVySFRNTCA9IGUucmVwbGFjZSgvXD5ccj9cbiArXDwvZywgIj48IiksIHRoaXMuY29udmVydCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnF1aWxsLmdldEZvcm1hdCh0aGlzLnF1aWxsLnNlbGVjdGlvbi5zYXZlZFJhbmdlLmluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0W2hbImRlZmF1bHQiXS5ibG90TmFtZV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuY29udGFpbmVyLmlubmVyVGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIuaW5uZXJIVE1MID0gIiIsIChuZXcgc1siZGVmYXVsdCJdKS5pbnNlcnQobiwgdyh7fSwgaFsiZGVmYXVsdCJdLmJsb3ROYW1lLCB0W2hbImRlZmF1bHQiXS5ibG90TmFtZV0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnByZXBhcmVNYXRjaGluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvKHIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBEKHRoaXMuY29udGFpbmVyLCBhLCB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQKGwsICJcbiIpICYmIG51bGwgPT0gbC5vcHNbbC5vcHMubGVuZ3RoIC0gMV0uYXR0cmlidXRlcyAmJiAobCA9IGwuY29tcG9zZSgobmV3IHNbImRlZmF1bHQiXSkucmV0YWluKGwubGVuZ3RoKCkgLSAxKVsiZGVsZXRlIl0oMSkpKSwgTy5sb2coImNvbnZlcnQiLCB0aGlzLmNvbnRhaW5lci5pbm5lckhUTUwsIGwpLCB0aGlzLmNvbnRhaW5lci5pbm5lckhUTUwgPSAiIiwgbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkYW5nZXJvdXNseVBhc3RlSFRNTCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogbFsiZGVmYXVsdCJdLnNvdXJjZXMuQVBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB0aGlzLnF1aWxsLnNldENvbnRlbnRzKHRoaXMuY29udmVydChlKSwgdCksIHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKDAsIGxbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuY29udmVydCh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLnVwZGF0ZUNvbnRlbnRzKChuZXcgc1siZGVmYXVsdCJdKS5yZXRhaW4oZSkuY29uY2F0KHIpLCBuKSwgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24oZSArIHIubGVuZ3RoKCksIGxbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAib25QYXN0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCAmJiB0aGlzLnF1aWxsLmlzRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gKG5ldyBzWyJkZWZhdWx0Il0pLnJldGFpbihuLmluZGV4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMucXVpbGwuc2Nyb2xsaW5nQ29udGFpbmVyLnNjcm9sbFRvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5mb2N1cygpLCB0aGlzLnF1aWxsLnNlbGVjdGlvbi51cGRhdGUobFsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UKSwgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLmNvbmNhdCh0LmNvbnZlcnQoKSlbImRlbGV0ZSJdKG4ubGVuZ3RoKSwgdC5xdWlsbC51cGRhdGVDb250ZW50cyhyLCBsWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdC5xdWlsbC5zZXRTZWxlY3Rpb24oci5sZW5ndGgoKSAtIG4ubGVuZ3RoLCBsWyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpLCB0LnF1aWxsLnNjcm9sbGluZ0NvbnRhaW5lci5zY3JvbGxUb3AgPSBvLCB0LnF1aWxsLmZvY3VzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicHJlcGFyZU1hdGNoaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXRjaGVycy5mb3JFYWNoKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBvKHIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnB1c2gocyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHVzaChzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10uZm9yRWFjaC5jYWxsKGUuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoYSksIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtfXSA9IGVbX10gfHwgW10sIGVbX10ucHVzaChzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBbdCwgbl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShmWyJkZWZhdWx0Il0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gUyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm9iamVjdCIgPT09ICh2b2lkIDAgPT09IHQgPyAidW5kZWZpbmVkIiA6IHIodCkpID8gT2JqZWN0LmtleXModCkucmVkdWNlKChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFMoZSwgbiwgdFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlKSA6IGUucmVkdWNlKChmdW5jdGlvbihlLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuYXR0cmlidXRlcyAmJiByLmF0dHJpYnV0ZXNbdF0gPyBlLnB1c2gocikgOiBlLmluc2VydChyLmluc2VydCwgKDAsIGFbImRlZmF1bHQiXSkoe30sIHcoe30sIHQsIG4pLCByLmF0dHJpYnV0ZXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG5ldyBzWyJkZWZhdWx0Il0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGooZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKSByZXR1cm4ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9ICJfX3FsLWNvbXB1dGVkLXN0eWxlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlW3RdIHx8IChlW3RdID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFAoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9ICIiLCByID0gZS5vcHMubGVuZ3RoIC0gMTsgciA+PSAwICYmIG4ubGVuZ3RoIDwgdC5sZW5ndGg7IC0tcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5vcHNbcl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBvLmluc2VydCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG8uaW5zZXJ0ICsgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2xpY2UoLTEgKiB0Lmxlbmd0aCkgPT09IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZS5jaGlsZE5vZGVzLmxlbmd0aCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBqKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsiYmxvY2siLCAibGlzdC1pdGVtIl0uaW5kZXhPZih0LmRpc3BsYXkpID4gLTEKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gRChlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5ub2RlVHlwZSA9PT0gZS5URVhUX05PREUgPyBuLnJlZHVjZSgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbmV3IHNbImRlZmF1bHQiXSkgOiBlLm5vZGVUeXBlID09PSBlLkVMRU1FTlRfTk9ERSA/IFtdLnJlZHVjZS5jYWxsKGUuY2hpbGROb2RlcyB8fCBbXSwgKGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IEQobywgdCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8ubm9kZVR5cGUgPT09IGUuRUxFTUVOVF9OT0RFICYmIChpID0gdC5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQobywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaSksIGkgPSAob1tfXSB8fCBbXSkucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0KG8sIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkpKSwgci5jb25jYXQoaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuZXcgc1siZGVmYXVsdCJdKSA6IG5ldyBzWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gVChlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUyhuLCBlLCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gTihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHVbImRlZmF1bHQiXS5BdHRyaWJ1dG9yLkF0dHJpYnV0ZS5rZXlzKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB1WyJkZWZhdWx0Il0uQXR0cmlidXRvci5DbGFzcy5rZXlzKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB1WyJkZWZhdWx0Il0uQXR0cmlidXRvci5TdHlsZS5rZXlzKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbmNhdChyKS5jb25jYXQobykuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdVsiZGVmYXVsdCJdLnF1ZXJ5KHQsIHVbImRlZmF1bHQiXS5TY29wZS5BVFRSSUJVVEUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gbiAmJiAoaVtuLmF0dHJOYW1lXSA9IG4udmFsdWUoZSksIGlbbi5hdHRyTmFtZV0pIHx8IChudWxsID09IChuID0ga1t0XSkgfHwgbi5hdHRyTmFtZSAhPT0gdCAmJiBuLmtleU5hbWUgIT09IHQgfHwgKGlbbi5hdHRyTmFtZV0gPSBuLnZhbHVlKGUpIHx8IHVuZGVmaW5lZCksIG51bGwgPT0gKG4gPSBFW3RdKSB8fCBuLmF0dHJOYW1lICE9PSB0ICYmIG4ua2V5TmFtZSAhPT0gdCB8fCAobiA9IEVbdF0sIGlbbi5hdHRyTmFtZV0gPSBuLnZhbHVlKGUpIHx8IHVuZGVmaW5lZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIE9iamVjdC5rZXlzKGkpLmxlbmd0aCA+IDAgJiYgKHQgPSBTKHQsIGkpKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBNKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdVsiZGVmYXVsdCJdLnF1ZXJ5KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbikgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5wcm90b3R5cGUgaW5zdGFuY2VvZiB1WyJkZWZhdWx0Il0uRW1iZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi52YWx1ZShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IG8gJiYgKHJbbi5ibG90TmFtZV0gPSBvLCB0ID0gKG5ldyBzWyJkZWZhdWx0Il0pLmluc2VydChyLCBuLmZvcm1hdHMoZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4uZm9ybWF0cyAmJiAodCA9IFModCwgbi5ibG90TmFtZSwgbi5mb3JtYXRzKGUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBMKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQKHQsICJcbiIpIHx8IChBKGUpIHx8IHQubGVuZ3RoKCkgPiAwICYmIGUubmV4dFNpYmxpbmcgJiYgQShlLm5leHRTaWJsaW5nKSkgJiYgdC5pbnNlcnQoIlxuIiksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gSShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQShlKSAmJiBudWxsICE9IGUubmV4dEVsZW1lbnRTaWJsaW5nICYmICFQKHQsICJcblxuIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUub2Zmc2V0SGVpZ2h0ICsgcGFyc2VGbG9hdChqKGUpLm1hcmdpblRvcCkgKyBwYXJzZUZsb2F0KGooZSkubWFyZ2luQm90dG9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm5leHRFbGVtZW50U2libGluZy5vZmZzZXRUb3AgPiBlLm9mZnNldFRvcCArIDEuNSAqIG4gJiYgdC5pbnNlcnQoIlxuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFIoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIk86UCIgPT09IGUucGFyZW50Tm9kZS50YWdOYW1lKSByZXR1cm4gdC5pbnNlcnQobi50cmltKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IG4udHJpbSgpLmxlbmd0aCAmJiBlLnBhcmVudE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJxbC1jbGlwYm9hcmQiKSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWooZS5wYXJlbnROb2RlKS53aGl0ZVNwYWNlLnN0YXJ0c1dpdGgoInByZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodCA9IHQucmVwbGFjZSgvW15cdTAwYTBdL2csICIiKSkubGVuZ3RoIDwgMSAmJiBlID8gIiAiIDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IChuID0gbi5yZXBsYWNlKC9cclxuL2csICIgIikucmVwbGFjZSgvXG4vZywgIiAiKSkucmVwbGFjZSgvXHNccysvZywgci5iaW5kKHIsICEwKSksIChudWxsID09IGUucHJldmlvdXNTaWJsaW5nICYmIEEoZS5wYXJlbnROb2RlKSB8fCBudWxsICE9IGUucHJldmlvdXNTaWJsaW5nICYmIEEoZS5wcmV2aW91c1NpYmxpbmcpKSAmJiAobiA9IG4ucmVwbGFjZSgvXlxzKy8sIHIuYmluZChyLCAhMSkpKSwgKG51bGwgPT0gZS5uZXh0U2libGluZyAmJiBBKGUucGFyZW50Tm9kZSkgfHwgbnVsbCAhPSBlLm5leHRTaWJsaW5nICYmIEEoZS5uZXh0U2libGluZykpICYmIChuID0gbi5yZXBsYWNlKC9ccyskLywgci5iaW5kKHIsICExKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pbnNlcnQobikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBDLkRFRkFVTFRTID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hWaXN1YWw6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRbImRlZmF1bHQiXSA9IEMsIHQubWF0Y2hBdHRyaWJ1dG9yID0gTiwgdC5tYXRjaEJsb3QgPSBNLCB0Lm1hdGNoTmV3bGluZSA9IEwsIHQubWF0Y2hTcGFjaW5nID0gSSwgdC5tYXRjaFRleHQgPSBSCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24gYyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogYyhvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbig2KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHModGhpcywgdCksIHUodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJvcHRpbWl6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgIm9wdGltaXplIiwgdGhpcykuY2FsbCh0aGlzLCBlKSwgdGhpcy5kb21Ob2RlLnRhZ05hbWUgIT09IHRoaXMuc3RhdGljcy50YWdOYW1lWzBdICYmIHRoaXMucmVwbGFjZVdpdGgodGhpcy5zdGF0aWNzLmJsb3ROYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCksICJjcmVhdGUiLCB0aGlzKS5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKChyID0gYSkgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5ibG90TmFtZSA9ICJib2xkIiwgbC50YWdOYW1lID0gWyJTVFJPTkciLCAiQiJdLCB0WyJkZWZhdWx0Il0gPSBsCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5hZGRDb250cm9scyA9IHRbImRlZmF1bHQiXSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIHMgPSBlW1N5bWJvbC5pdGVyYXRvcl0oKTsgIShyID0gKGEgPSBzLm5leHQoKSkuZG9uZSkgJiYgKG4ucHVzaChhLnZhbHVlKSwgIXQgfHwgbi5sZW5ndGggIT09IHQpOyByID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyICYmIHNbInJldHVybiJdICYmIHNbInJldHVybiJdKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjKG4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGMobigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYyhuKDUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBjKG4oMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBjKG4oOSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9ICgwLCB1WyJkZWZhdWx0Il0pKCJxdWlsbDp0b29sYmFyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGkgPSBmKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSwgbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpLm9wdGlvbnMuY29udGFpbmVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0oYSwgaS5vcHRpb25zLmNvbnRhaW5lciksIGUuY29udGFpbmVyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsIGUuY29udGFpbmVyKSwgaS5jb250YWluZXIgPSBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAic3RyaW5nIiA9PSB0eXBlb2YgaS5vcHRpb25zLmNvbnRhaW5lciA/IGkuY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihpLm9wdGlvbnMuY29udGFpbmVyKSA6IGkuY29udGFpbmVyID0gaS5vcHRpb25zLmNvbnRhaW5lcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuY29udGFpbmVyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyAoaS5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgicWwtdG9vbGJhciIpLCBpLmNvbnRyb2xzID0gW10sIGkuaGFuZGxlcnMgPSB7fSwgT2JqZWN0LmtleXMoaS5vcHRpb25zLmhhbmRsZXJzKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmFkZEhhbmRsZXIoZSwgaS5vcHRpb25zLmhhbmRsZXJzW2VdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIFtdLmZvckVhY2guY2FsbChpLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24sIHNlbGVjdCIpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5hdHRhY2goZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBpLnF1aWxsLm9uKHNbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPT09IHNbImRlZmF1bHQiXS5ldmVudHMuU0VMRUNUSU9OX0NIQU5HRSAmJiBpLnVwZGF0ZSh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGkucXVpbGwub24oc1siZGVmYXVsdCJdLmV2ZW50cy5TQ1JPTExfT1BUSU1JWkUsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gaS5xdWlsbC5zZWxlY3Rpb24uZ2V0UmFuZ2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gcihlLCAxKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkudXBkYXRlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgaSkgOiAobyA9IGQuZXJyb3IoIkNvbnRhaW5lciByZXF1aXJlZCBmb3IgdG9vbGJhciIsIGkub3B0aW9ucyksIGYoaSwgbykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZEhhbmRsZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVyc1tlXSA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYXR0YWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gW10uZmluZC5jYWxsKGUuY2xhc3NMaXN0LCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gZS5pbmRleE9mKCJxbC0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuLnNsaWNlKCJxbC0iLmxlbmd0aCksICJCVVRUT04iID09PSBlLnRhZ05hbWUgJiYgZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiYnV0dG9uIiksIG51bGwgPT0gdGhpcy5oYW5kbGVyc1tuXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLnF1aWxsLnNjcm9sbC53aGl0ZWxpc3QgJiYgbnVsbCA9PSB0aGlzLnF1aWxsLnNjcm9sbC53aGl0ZWxpc3Rbbl0pIHJldHVybiB2b2lkIGQud2FybigiaWdub3JpbmcgYXR0YWNoaW5nIHRvIGRpc2FibGVkIGZvcm1hdCIsIG4sIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBhWyJkZWZhdWx0Il0ucXVlcnkobikpIHJldHVybiB2b2lkIGQud2FybigiaWdub3JpbmcgYXR0YWNoaW5nIHRvIG5vbmV4aXN0ZW50IGZvcm1hdCIsIG4sIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gIlNFTEVDVCIgPT09IGUudGFnTmFtZSA/ICJjaGFuZ2UiIDogImNsaWNrIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIobywgKGZ1bmN0aW9uKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiU0VMRUNUIiA9PT0gZS50YWdOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zZWxlY3RlZEluZGV4IDwgMCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBlLm9wdGlvbnNbZS5zZWxlY3RlZEluZGV4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAhbC5oYXNBdHRyaWJ1dGUoInNlbGVjdGVkIikgJiYgKGwudmFsdWUgfHwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB1ID0gIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJxbC1hY3RpdmUiKSAmJiAoZS52YWx1ZSB8fCAhZS5oYXNBdHRyaWJ1dGUoInZhbHVlIikpLCBvLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucXVpbGwuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0LnF1aWxsLnNlbGVjdGlvbi5nZXRSYW5nZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHIoYywgMSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHQuaGFuZGxlcnNbbl0pIHQuaGFuZGxlcnNbbl0uY2FsbCh0LCB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYVsiZGVmYXVsdCJdLnF1ZXJ5KG4pLnByb3RvdHlwZSBpbnN0YW5jZW9mIGFbImRlZmF1bHQiXS5FbWJlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodSA9IHByb21wdCgiRW50ZXIgIiArIG4pKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5xdWlsbC51cGRhdGVDb250ZW50cygobmV3IGlbImRlZmF1bHQiXSkucmV0YWluKGYuaW5kZXgpWyJkZWxldGUiXShmLmxlbmd0aCkuaW5zZXJ0KGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGVbdF0gPSBuLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHt9LCBuLCB1KSksIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0LnF1aWxsLmZvcm1hdChuLCB1LCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC51cGRhdGUoZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuY29udHJvbHMucHVzaChbbiwgZV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG51bGwgPT0gZSA/IHt9IDogdGhpcy5xdWlsbC5nZXRGb3JtYXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIobiwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gb1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIlNFTEVDVCIgPT09IGEudGFnTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51bGwgPT0gdFtpXSkgcyA9IGEucXVlcnlTZWxlY3Rvcigib3B0aW9uW3NlbGVjdGVkXSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghQXJyYXkuaXNBcnJheSh0W2ldKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB0W2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyIgPT0gdHlwZW9mIHUgJiYgKHUgPSB1LnJlcGxhY2UoL1wiL2csICdcXCInKSksIHMgPSBhLnF1ZXJ5U2VsZWN0b3IoJ29wdGlvblt2YWx1ZT0iJyArIHUgKyAnIl0nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gcyA/IChhLnZhbHVlID0gIiIsIGEuc2VsZWN0ZWRJbmRleCA9IC0xKSA6IHMuc2VsZWN0ZWQgPSAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVsbCA9PSBlKSBhLmNsYXNzTGlzdC5yZW1vdmUoInFsLWFjdGl2ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGEuaGFzQXR0cmlidXRlKCJ2YWx1ZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdFtpXSA9PT0gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgfHwgbnVsbCAhPSB0W2ldICYmIHRbaV0udG9TdHJpbmcoKSA9PT0gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgfHwgbnVsbCA9PSB0W2ldICYmICFhLmdldEF0dHJpYnV0ZSgidmFsdWUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGFzc0xpc3QudG9nZ2xlKCJxbC1hY3RpdmUiLCBsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBhLmNsYXNzTGlzdC50b2dnbGUoInFsLWFjdGl2ZSIsIG51bGwgIT0gdFtpXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGxbImRlZmF1bHQiXSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNldEF0dHJpYnV0ZSgidHlwZSIsICJidXR0b24iKSwgci5jbGFzc0xpc3QuYWRkKCJxbC0iICsgdCksIG51bGwgIT0gbiAmJiAoci52YWx1ZSA9IG4pLCBlLmFwcGVuZENoaWxkKHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG0oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheSh0WzBdKSB8fCAodCA9IFt0XSksIHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY2xhc3NMaXN0LmFkZCgicWwtZm9ybWF0cyIpLCB0LmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSBoKG4sIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gT2JqZWN0LmtleXMoZSlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHIpID8gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5jbGFzc0xpc3QuYWRkKCJxbC0iICsgdCksIG4uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhMSAhPT0gZSA/IHQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIGUpIDogdC5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIiwgInNlbGVjdGVkIiksIHIuYXBwZW5kQ2hpbGQodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGUuYXBwZW5kQ2hpbGQocikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0obiwgdCwgcikgOiBoKG4sIHQsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGUuYXBwZW5kQ2hpbGQobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHAuREVGQVVMVFMgPSB7fSwgcC5ERUZBVUxUUyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5xdWlsbC5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09IHQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnF1aWxsLmdldEZvcm1hdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBhWyJkZWZhdWx0Il0ucXVlcnkodCwgYVsiZGVmYXVsdCJdLlNjb3BlLklOTElORSkgJiYgZS5xdWlsbC5mb3JtYXQodCwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5xdWlsbC5yZW1vdmVGb3JtYXQodCwgc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucXVpbGwuZ2V0Rm9ybWF0KCkuYWxpZ247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJydGwiID09PSBlICYmIG51bGwgPT0gdCA/IHRoaXMucXVpbGwuZm9ybWF0KCJhbGlnbiIsICJyaWdodCIsIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpIDogZSB8fCAicmlnaHQiICE9PSB0IHx8IHRoaXMucXVpbGwuZm9ybWF0KCJhbGlnbiIsICExLCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdGhpcy5xdWlsbC5mb3JtYXQoImRpcmVjdGlvbiIsIGUsIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMucXVpbGwuZ2V0Rm9ybWF0KHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHBhcnNlSW50KG4uaW5kZW50IHx8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIisxIiA9PT0gZSB8fCAiLTEiID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9ICIrMSIgPT09IGUgPyAxIDogLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicnRsIiA9PT0gbi5kaXJlY3Rpb24gJiYgKG8gKj0gLTEpLCB0aGlzLnF1aWxsLmZvcm1hdCgiaW5kZW50IiwgciArIG8sIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITAgPT09IGUgJiYgKGUgPSBwcm9tcHQoIkVudGVyIGxpbmsgVVJMOiIpKSwgdGhpcy5xdWlsbC5mb3JtYXQoImxpbmsiLCBlLCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5xdWlsbC5nZXRGb3JtYXQodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGVjayIgPT09IGUgPyAiY2hlY2tlZCIgPT09IG4ubGlzdCB8fCAidW5jaGVja2VkIiA9PT0gbi5saXN0ID8gdGhpcy5xdWlsbC5mb3JtYXQoImxpc3QiLCAhMSwgc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikgOiB0aGlzLnF1aWxsLmZvcm1hdCgibGlzdCIsICJ1bmNoZWNrZWQiLCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSA6IHRoaXMucXVpbGwuZm9ybWF0KCJsaXN0IiwgZSwgc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRbImRlZmF1bHQiXSA9IHAsIHQuYWRkQ29udHJvbHMgPSBtCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8cG9seWxpbmUgY2xhc3M9InFsLWV2ZW4gcWwtc3Ryb2tlIiBwb2ludHM9IjUgNyAzIDkgNSAxMSI+PC9wb2x5bGluZT4gPHBvbHlsaW5lIGNsYXNzPSJxbC1ldmVuIHFsLXN0cm9rZSIgcG9pbnRzPSIxMyA3IDE1IDkgMTMgMTEiPjwvcG9seWxpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0xMCB4Mj04IHkxPTUgeTI9MTM+PC9saW5lPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24gdShlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogdShvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbigyOCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLmxhYmVsLmlubmVySFRNTCA9IG4sIHIuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInFsLWNvbG9yLXBpY2tlciIpLCBbXS5zbGljZS5jYWxsKHIuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoIi5xbC1waWNrZXItaXRlbSIpLCAwLCA3KS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmNsYXNzTGlzdC5hZGQoInFsLXByaW1hcnkiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYnVpbGRJdGVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImJ1aWxkSXRlbSIsIHRoaXMpLmNhbGwodGhpcywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBlLmdldEF0dHJpYnV0ZSgidmFsdWUiKSB8fCAiIiwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJzZWxlY3RJdGVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJzZWxlY3RJdGVtIiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5sYWJlbC5xdWVyeVNlbGVjdG9yKCIucWwtY29sb3ItbGFiZWwiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZSAmJiBlLmdldEF0dHJpYnV0ZSgiZGF0YS12YWx1ZSIpIHx8ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciAmJiAoImxpbmUiID09PSByLnRhZ05hbWUgPyByLnN0eWxlLnN0cm9rZSA9IG8gOiByLnN0eWxlLmZpbGwgPSBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCgociA9IGEpICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIHUoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHUobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMjgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgicWwtaWNvbi1waWNrZXIiKSwgW10uZm9yRWFjaC5jYWxsKHIuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoIi5xbC1waWNrZXItaXRlbSIpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSBuW2UuZ2V0QXR0cmlidXRlKCJkYXRhLXZhbHVlIikgfHwgIiJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgci5kZWZhdWx0SXRlbSA9IHIuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoIi5xbC1zZWxlY3RlZCIpLCByLnNlbGVjdEl0ZW0oci5kZWZhdWx0SXRlbSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2VsZWN0SXRlbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAic2VsZWN0SXRlbSIsIHRoaXMpLmNhbGwodGhpcywgZSwgbiksIGUgPSBlIHx8IHRoaXMuZGVmYXVsdEl0ZW0sIHRoaXMubGFiZWwuaW5uZXJIVE1MID0gZS5pbm5lckhUTUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgoKHIgPSBhKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCBlKSwgdGhpcy5xdWlsbCA9IHQsIHRoaXMuYm91bmRzQ29udGFpbmVyID0gbiB8fCBkb2N1bWVudC5ib2R5LCB0aGlzLnJvb3QgPSB0LmFkZENvbnRhaW5lcigicWwtdG9vbHRpcCIpLCB0aGlzLnJvb3QuaW5uZXJIVE1MID0gdGhpcy5jb25zdHJ1Y3Rvci5URU1QTEFURSwgdGhpcy5xdWlsbC5yb290ID09PSB0aGlzLnF1aWxsLnNjcm9sbGluZ0NvbnRhaW5lciAmJiB0aGlzLnF1aWxsLnJvb3QuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5yb290LnN0eWxlLm1hcmdpblRvcCA9IC0xICogci5xdWlsbC5yb290LnNjcm9sbFRvcCArICJweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmhpZGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoaWRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb290LmNsYXNzTGlzdC5hZGQoInFsLWhpZGRlbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInBvc2l0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5sZWZ0ICsgZS53aWR0aCAvIDIgLSB0aGlzLnJvb3Qub2Zmc2V0V2lkdGggLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmJvdHRvbSArIHRoaXMucXVpbGwucm9vdC5zY3JvbGxUb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUubGVmdCA9IHQgKyAicHgiLCB0aGlzLnJvb3Quc3R5bGUudG9wID0gbiArICJweCIsIHRoaXMucm9vdC5jbGFzc0xpc3QucmVtb3ZlKCJxbC1mbGlwIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuYm91bmRzQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5yaWdodCA+IHIucmlnaHQgJiYgKGkgPSByLnJpZ2h0IC0gby5yaWdodCwgdGhpcy5yb290LnN0eWxlLmxlZnQgPSB0ICsgaSArICJweCIpLCBvLmxlZnQgPCByLmxlZnQgJiYgKGkgPSByLmxlZnQgLSBvLmxlZnQsIHRoaXMucm9vdC5zdHlsZS5sZWZ0ID0gdCArIGkgKyAicHgiKSwgby5ib3R0b20gPiByLmJvdHRvbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gby5ib3R0b20gLSBvLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuYm90dG9tIC0gZS50b3AgKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS50b3AgPSBuIC0gcyArICJweCIsIHRoaXMucm9vdC5jbGFzc0xpc3QuYWRkKCJxbC1mbGlwIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNob3ciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb3QuY2xhc3NMaXN0LnJlbW92ZSgicWwtZWRpdGluZyIpLCB0aGlzLnJvb3QuY2xhc3NMaXN0LnJlbW92ZSgicWwtaGlkZGVuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBvCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIHMgPSBlW1N5bWJvbC5pdGVyYXRvcl0oKTsgIShyID0gKGEgPSBzLm5leHQoKSkuZG9uZSkgJiYgKG4ucHVzaChhLnZhbHVlKSwgIXQgfHwgbi5sZW5ndGggIT09IHQpOyByID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyICYmIHNbInJldHVybiJdICYmIHNbInJldHVybiJdKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uIHcoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHcobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwKG4oMykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHAobig4KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbig0MyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcCh1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwKG4oMjcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBuKDE1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBwKG4oNDEpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG0oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB5KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogWyIxIiwgIjIiLCAiMyIsICExXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYm9sZCIsICJpdGFsaWMiLCAidW5kZXJsaW5lIiwgImxpbmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0OiAib3JkZXJlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Q6ICJidWxsZXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjbGVhbiJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCh0aGlzLCB0KSwgbnVsbCAhPSBuLm1vZHVsZXMudG9vbGJhciAmJiBudWxsID09IG4ubW9kdWxlcy50b29sYmFyLmNvbnRhaW5lciAmJiAobi5tb2R1bGVzLnRvb2xiYXIuY29udGFpbmVyID0gZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUsIG4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIucXVpbGwuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInFsLXNub3ciKSwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geSh0LCBlKSwgaSh0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJleHRlbmRUb29sYmFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInFsLXNub3ciKSwgdGhpcy5idWlsZEJ1dHRvbnMoW10uc2xpY2UuY2FsbChlLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24iKSksIGRbImRlZmF1bHQiXSksIHRoaXMuYnVpbGRQaWNrZXJzKFtdLnNsaWNlLmNhbGwoZS5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgic2VsZWN0IikpLCBkWyJkZWZhdWx0Il0pLCB0aGlzLnRvb2x0aXAgPSBuZXcgYih0aGlzLnF1aWxsLCB0aGlzLm9wdGlvbnMuYm91bmRzKSwgZS5jb250YWluZXIucXVlcnlTZWxlY3RvcigiLnFsLWxpbmsiKSAmJiB0aGlzLnF1aWxsLmtleWJvYXJkLmFkZEJpbmRpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0S2V5OiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmhhbmRsZXJzLmxpbmsuY2FsbChlLCAhbi5mb3JtYXQubGluaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGxbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHYuREVGQVVMVFMgPSAoMCwgYVsiZGVmYXVsdCJdKSghMCwge30sIGxbImRlZmF1bHQiXS5ERUZBVUxUUywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHQgfHwgMCA9PSB0Lmxlbmd0aCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMucXVpbGwuZ2V0VGV4dCh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL15cUytAXFMrXC5cUyskLy50ZXN0KG4pICYmIDAgIT09IG4uaW5kZXhPZigibWFpbHRvOiIpICYmIChuID0gIm1haWx0bzoiICsgbiksIHRoaXMucXVpbGwudGhlbWUudG9vbHRpcC5lZGl0KCJsaW5rIiwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5xdWlsbC5mb3JtYXQoImxpbmsiLCAhMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIucHJldmlldyA9IHIucm9vdC5xdWVyeVNlbGVjdG9yKCJhLnFsLXByZXZpZXciKSwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHkodCwgZSksIGkodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJsaXN0ZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAibGlzdGVuIiwgdGhpcykuY2FsbCh0aGlzKSwgdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoImEucWwtYWN0aW9uIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yb290LmNsYXNzTGlzdC5jb250YWlucygicWwtZWRpdGluZyIpID8gZS5zYXZlKCkgOiBlLmVkaXQoImxpbmsiLCBlLnByZXZpZXcudGV4dENvbnRlbnQpLCB0LnByZXZlbnREZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnJvb3QucXVlcnlTZWxlY3RvcigiYS5xbC1yZW1vdmUiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBlLmxpbmtSYW5nZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5saW5rUmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yZXN0b3JlRm9jdXMoKSwgZS5xdWlsbC5mb3JtYXRUZXh0KG4sICJsaW5rIiwgITEsIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCBkZWxldGUgZS5saW5rUmFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKSwgZS5oaWRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnF1aWxsLm9uKHNbImRlZmF1bHQiXS5ldmVudHMuU0VMRUNUSU9OX0NIQU5HRSwgKGZ1bmN0aW9uKHQsIG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gdC5sZW5ndGggJiYgbyA9PT0gc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUucXVpbGwuc2Nyb2xsLmRlc2NlbmRhbnQoY1siZGVmYXVsdCJdLCB0LmluZGV4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSByKGksIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGFbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5rUmFuZ2UgPSBuZXcgZi5SYW5nZSh0LmluZGV4IC0gbCwgdS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGNbImRlZmF1bHQiXS5mb3JtYXRzKHUuZG9tTm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5wcmV2aWV3LnRleHRDb250ZW50ID0gZCwgZS5wcmV2aWV3LnNldEF0dHJpYnV0ZSgiaHJlZiIsIGQpLCBlLnNob3coKSwgdm9pZCBlLnBvc2l0aW9uKGUucXVpbGwuZ2V0Qm91bmRzKGUubGlua1JhbmdlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBkZWxldGUgZS5saW5rUmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5oaWRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNob3ciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgInNob3ciLCB0aGlzKS5jYWxsKHRoaXMpLCB0aGlzLnJvb3QucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW1vZGUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHUuQmFzZVRvb2x0aXApOwogICAgICAgICAgICAgICAgICAgICAgICBiLlRFTVBMQVRFID0gWyc8YSBjbGFzcz0icWwtcHJldmlldyIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iYWJvdXQ6YmxhbmsiPjwvYT4nLCAnPGlucHV0IHR5cGU9InRleHQiIGRhdGEtZm9ybXVsYT0iZT1tY14yIiBkYXRhLWxpbms9Imh0dHBzOi8vcXVpbGxqcy5jb20iIGRhdGEtdmlkZW89IkVtYmVkIFVSTCI+JywgJzxhIGNsYXNzPSJxbC1hY3Rpb24iPjwvYT4nLCAnPGEgY2xhc3M9InFsLXJlbW92ZSI+PC9hPiddLmpvaW4oIiIpLCB0WyJkZWZhdWx0Il0gPSB2CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBMKG4oMjkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuKDM2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuKDM4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBMKG4oNjUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBMKG4oNjYpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuKDY3KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBMKGwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG4oMzcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG4oMjYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG4oMzkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4oNDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IEwobig1NikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEwobig2OCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IEwobigyNykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IEwobig2OSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IEwobig3MCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IEwobig3MSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IEwobig3MikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9IEwobig3MykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IG4oMTMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IEwoeCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFID0gTChuKDc0KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gTChuKDc1KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gTChuKDU3KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gTChuKDQxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gTChuKDI4KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gTChuKDU5KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEID0gTChuKDYwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUID0gTChuKDYxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOID0gTChuKDEwOCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTSA9IEwobig2MikpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gTChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJbImRlZmF1bHQiXS5yZWdpc3Rlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRvcnMvYXR0cmlidXRlL2RpcmVjdGlvbiI6IGkuRGlyZWN0aW9uQXR0cmlidXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL2NsYXNzL2FsaWduIjogby5BbGlnbkNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL2NsYXNzL2JhY2tncm91bmQiOiBmLkJhY2tncm91bmRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dG9ycy9jbGFzcy9jb2xvciI6IGQuQ29sb3JDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dG9ycy9jbGFzcy9kaXJlY3Rpb24iOiBpLkRpcmVjdGlvbkNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL2NsYXNzL2ZvbnQiOiBwLkZvbnRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dG9ycy9jbGFzcy9zaXplIjogaC5TaXplQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRvcnMvc3R5bGUvYWxpZ24iOiBvLkFsaWduU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRvcnMvc3R5bGUvYmFja2dyb3VuZCI6IGYuQmFja2dyb3VuZFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL3N0eWxlL2NvbG9yIjogZC5Db2xvclN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL3N0eWxlL2RpcmVjdGlvbiI6IGkuRGlyZWN0aW9uU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRvcnMvc3R5bGUvZm9udCI6IHAuRm9udFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL3N0eWxlL3NpemUiOiBoLlNpemVTdHlsZQogICAgICAgICAgICAgICAgICAgICAgICB9LCAhMCksIHJbImRlZmF1bHQiXS5yZWdpc3Rlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9hbGlnbiI6IG8uQWxpZ25DbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL2RpcmVjdGlvbiI6IGkuRGlyZWN0aW9uQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9pbmRlbnQiOiBhLkluZGVudENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHMvYmFja2dyb3VuZCI6IGYuQmFja2dyb3VuZFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHMvY29sb3IiOiBkLkNvbG9yU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9mb250IjogcC5Gb250Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9zaXplIjogaC5TaXplQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9ibG9ja3F1b3RlIjogc1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHMvY29kZS1ibG9jayI6IGtbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL2hlYWRlciI6IHVbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL2xpc3QiOiBjWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9ib2xkIjogbVsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHMvY29kZSI6IHguQ29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL2l0YWxpYyI6IHlbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL2xpbmsiOiBnWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9zY3JpcHQiOiB2WyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9zdHJpa2UiOiBiWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy91bmRlcmxpbmUiOiB3WyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9pbWFnZSI6IE9bImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL3ZpZGVvIjogX1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHMvbGlzdC9pdGVtIjogbC5MaXN0SXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGVzL2Zvcm11bGEiOiBFWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlcy9zeW50YXgiOiBDWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlcy90b29sYmFyIjogU1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZW1lcy9idWJibGUiOiBOWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlbWVzL3Nub3ciOiBNWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWkvaWNvbnMiOiBqWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWkvcGlja2VyIjogUFsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpL2ljb24tcGlja2VyIjogRFsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpL2NvbG9yLXBpY2tlciI6IEFbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1aS90b29sdGlwIjogVFsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sICEwKSwgdFsiZGVmYXVsdCJdID0gclsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5JbmRlbnRDbGFzcyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24gZihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogZihvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbigwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAociA9IGEpICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gbmV3KGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUodGhpcywgdCksIGwodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJhZGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiKzEiID09PSBuIHx8ICItMSIgPT09IG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy52YWx1ZShlKSB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICIrMSIgPT09IG4gPyByICsgMSA6IHIgLSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IG4gPyAodGhpcy5yZW1vdmUoZSksICEwKSA6IGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJhZGQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNhbkFkZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJjYW5BZGQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pIHx8IGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJjYW5BZGQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIHBhcnNlSW50KG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ2YWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJ2YWx1ZSIsIHRoaXMpLmNhbGwodGhpcywgZSkpIHx8IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHNbImRlZmF1bHQiXS5BdHRyaWJ1dG9yLkNsYXNzKSkoImluZGVudCIsICJxbC1pbmRlbnQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZTogc1siZGVmYXVsdCJdLlNjb3BlLkJMT0NLLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0OiBbMSwgMiwgMywgNCwgNSwgNiwgNywgOF0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuSW5kZW50Q2xhc3MgPSBjCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBuKDQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCB0KSwgYSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KCgociA9IG8pICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuYmxvdE5hbWUgPSAiYmxvY2txdW90ZSIsIHMudGFnTmFtZSA9ICJibG9ja3F1b3RlIiwgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4oNCk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKHRoaXMsIHQpLCBzKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIG51bGwsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFnTmFtZS5pbmRleE9mKGUudGFnTmFtZSkgKyAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKChyID0gaSkgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgdS5ibG90TmFtZSA9ICJoZWFkZXIiLCB1LnRhZ05hbWUgPSBbIkgxIiwgIkgyIiwgIkgzIiwgIkg0IiwgIkg1IiwgIkg2Il0sIHRbImRlZmF1bHQiXSA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0WyJkZWZhdWx0Il0gPSB0Lkxpc3RJdGVtID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbiBoKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBlICYmIChlID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8gPyB1bmRlZmluZWQgOiBoKG8sIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIHIpIHJldHVybiByLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gci5nZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGkuY2FsbChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1KG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHUobig0KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdShuKDI1KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwodGhpcywgdCksIGModGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmKHQsIGUpLCByKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICE9PSBwLmJsb3ROYW1lIHx8IG4gPyBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiZm9ybWF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKSA6IHRoaXMucmVwbGFjZVdpdGgoaVsiZGVmYXVsdCJdLmNyZWF0ZSh0aGlzLnN0YXRpY3Muc2NvcGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW1vdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PSB0aGlzLnByZXYgJiYgbnVsbCA9PSB0aGlzLm5leHQgPyB0aGlzLnBhcmVudC5yZW1vdmUoKSA6IG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJyZW1vdmUiLCB0aGlzKS5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlcGxhY2VXaXRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuaXNvbGF0ZSh0aGlzLm9mZnNldCh0aGlzLnBhcmVudCksIHRoaXMubGVuZ3RoKCkpLCBlID09PSB0aGlzLnBhcmVudC5zdGF0aWNzLmJsb3ROYW1lID8gKHRoaXMucGFyZW50LnJlcGxhY2VXaXRoKGUsIG4pLCB0aGlzKSA6ICh0aGlzLnBhcmVudC51bndyYXAoKSwgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgInJlcGxhY2VXaXRoIiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50YWdOYW1lID09PSB0aGlzLnRhZ05hbWUgPyB1bmRlZmluZWQgOiBvKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSwgImZvcm1hdHMiLCB0aGlzKS5jYWxsKHRoaXMsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oYVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZC5ibG90TmFtZSA9ICJsaXN0LWl0ZW0iLCBkLnRhZ05hbWUgPSAiTEkiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBjKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQudGFyZ2V0LnBhcmVudE5vZGUgPT09IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4uc3RhdGljcy5mb3JtYXRzKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaVsiZGVmYXVsdCJdLmZpbmQodC50YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGVja2VkIiA9PT0gciA/IG8uZm9ybWF0KCJsaXN0IiwgInVuY2hlY2tlZCIpIDogInVuY2hlY2tlZCIgPT09IHIgJiYgby5mb3JtYXQoImxpc3QiLCAiY2hlY2tlZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHIpLCBlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHIpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZih0LCBlKSwgcih0LCBudWxsLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAib3JkZXJlZCIgPT09IGUgPyAiT0wiIDogIlVMIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSwgImNyZWF0ZSIsIHRoaXMpLmNhbGwodGhpcywgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2hlY2tlZCIgIT09IGUgJiYgInVuY2hlY2tlZCIgIT09IGUgfHwgci5zZXRBdHRyaWJ1dGUoImRhdGEtY2hlY2tlZCIsICJjaGVja2VkIiA9PT0gZSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJPTCIgPT09IGUudGFnTmFtZSA/ICJvcmRlcmVkIiA6ICJVTCIgPT09IGUudGFnTmFtZSA/IGUuaGFzQXR0cmlidXRlKCJkYXRhLWNoZWNrZWQiKSA/ICJ0cnVlIiA9PT0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtY2hlY2tlZCIpID8gImNoZWNrZWQiIDogInVuY2hlY2tlZCIgOiAiYnVsbGV0IiA6IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgcih0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5sZW5ndGggPiAwICYmIHRoaXMuY2hpbGRyZW4udGFpbC5mb3JtYXQoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IHt9LCB0ID0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lLCBuID0gdGhpcy5zdGF0aWNzLmZvcm1hdHModGhpcy5kb21Ob2RlKSwgdCBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogZVt0XSA9IG4sIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImluc2VydEJlZm9yZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBkKSBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5zZXJ0QmVmb3JlIiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG51bGwgPT0gbiA/IHRoaXMubGVuZ3RoKCkgOiBuLm9mZnNldCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5zcGxpdChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkucGFyZW50Lmluc2VydEJlZm9yZShlLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIm9wdGltaXplIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAib3B0aW1pemUiLCB0aGlzKS5jYWxsKHRoaXMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMubmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBuICYmIG4ucHJldiA9PT0gdGhpcyAmJiBuLnN0YXRpY3MuYmxvdE5hbWUgPT09IHRoaXMuc3RhdGljcy5ibG90TmFtZSAmJiBuLmRvbU5vZGUudGFnTmFtZSA9PT0gdGhpcy5kb21Ob2RlLnRhZ05hbWUgJiYgbi5kb21Ob2RlLmdldEF0dHJpYnV0ZSgiZGF0YS1jaGVja2VkIikgPT09IHRoaXMuZG9tTm9kZS5nZXRBdHRyaWJ1dGUoImRhdGEtY2hlY2tlZCIpICYmIChuLm1vdmVDaGlsZHJlbih0aGlzKSwgbi5yZW1vdmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVwbGFjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuc3RhdGljcy5ibG90TmFtZSAhPT0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGlbImRlZmF1bHQiXS5jcmVhdGUodGhpcy5zdGF0aWNzLmRlZmF1bHRDaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1vdmVDaGlsZHJlbihuKSwgdGhpcy5hcHBlbmRDaGlsZChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJyZXBsYWNlIiwgdGhpcykuY2FsbCh0aGlzLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHNbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHAuYmxvdE5hbWUgPSAibGlzdCIsIHAuc2NvcGUgPSBpWyJkZWZhdWx0Il0uU2NvcGUuQkxPQ0tfQkxPVCwgcC50YWdOYW1lID0gWyJPTCIsICJVTCJdLCBwLmRlZmF1bHRDaGlsZCA9ICJsaXN0LWl0ZW0iLCBwLmFsbG93ZWRDaGlsZHJlbiA9IFtkXSwgdC5MaXN0SXRlbSA9IGQsIHRbImRlZmF1bHQiXSA9IHAKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IG4oNTYpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCB0KSwgYSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KCgociA9IG8pICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuYmxvdE5hbWUgPSAiaXRhbGljIiwgcy50YWdOYW1lID0gWyJFTSIsICJJIl0sIHRbImRlZmF1bHQiXSA9IHMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbiBjKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBlICYmIChlID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8gPyB1bmRlZmluZWQgOiBjKG8sIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIHIpIHJldHVybiByLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gci5nZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGkuY2FsbChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDYpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyh0aGlzLCB0KSwgdSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgbyh0LCBudWxsLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdXBlciIgPT09IGUgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdXAiKSA6ICJzdWIiID09PSBlID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3ViIikgOiBpKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSwgImNyZWF0ZSIsIHRoaXMpLmNhbGwodGhpcywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJTVUIiID09PSBlLnRhZ05hbWUgPyAic3ViIiA6ICJTVVAiID09PSBlLnRhZ05hbWUgPyAic3VwZXIiIDogdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKChyID0gYSkgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5ibG90TmFtZSA9ICJzY3JpcHQiLCBsLnRhZ05hbWUgPSBbIlNVQiIsICJTVVAiXSwgdFsiZGVmYXVsdCJdID0gbAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gbig2KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodGhpcywgdCksIGEodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSgoKHIgPSBvKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgICAgIH0pWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICBzLmJsb3ROYW1lID0gInN0cmlrZSIsIHMudGFnTmFtZSA9ICJTIiwgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gbig2KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodGhpcywgdCksIGEodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSgoKHIgPSBvKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgICAgIH0pWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICBzLmJsb3ROYW1lID0gInVuZGVybGluZSIsIHMudGFnTmFtZSA9ICJVIiwgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIHAoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHAobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKHIgPSBhKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBuKDI3KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IFsiYWx0IiwgImhlaWdodCIsICJ3aWR0aCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCh0aGlzLCB0KSwgYyh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgbyh0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5pbmRleE9mKGUpID4gLTEgPyBuID8gdGhpcy5kb21Ob2RlLnNldEF0dHJpYnV0ZShlLCBuKSA6IHRoaXMuZG9tTm9kZS5yZW1vdmVBdHRyaWJ1dGUoZSkgOiBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiZm9ybWF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGkodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpLCAiY3JlYXRlIiwgdGhpcykuY2FsbCh0aGlzLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiBuLnNldEF0dHJpYnV0ZSgic3JjIiwgdGhpcy5zYW5pdGl6ZShlKSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZi5yZWR1Y2UoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5oYXNBdHRyaWJ1dGUobikgJiYgKHRbbl0gPSBlLmdldEF0dHJpYnV0ZShuKSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAibWF0Y2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC9cLihqcGU/Z3xnaWZ8cG5nKSQvLnRlc3QoZSkgfHwgL15kYXRhOmltYWdlXC8uKztiYXNlNjQvLnRlc3QoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2FuaXRpemUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCB1LnNhbml0aXplKShlLCBbImh0dHAiLCAiaHR0cHMiLCAiZGF0YSJdKSA/IGUgOiAiLy86MCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidmFsdWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKCJzcmMiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHNbImRlZmF1bHQiXS5FbWJlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGQuYmxvdE5hbWUgPSAiaW1hZ2UiLCBkLnRhZ05hbWUgPSAiSU1HIiwgdFsiZGVmYXVsdCJdID0gZAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIHAoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHAobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbigyNyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gKHIgPSBzKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IFsiaGVpZ2h0IiwgIndpZHRoIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsKHRoaXMsIHQpLCBjKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLmluZGV4T2YoZSkgPiAtMSA/IG4gPyB0aGlzLmRvbU5vZGUuc2V0QXR0cmlidXRlKGUsIG4pIDogdGhpcy5kb21Ob2RlLnJlbW92ZUF0dHJpYnV0ZShlKSA6IGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJmb3JtYXQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY3JlYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gaSh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCksICJjcmVhdGUiLCB0aGlzKS5jYWxsKHRoaXMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2V0QXR0cmlidXRlKCJmcmFtZWJvcmRlciIsICIwIiksIG4uc2V0QXR0cmlidXRlKCJhbGxvd2Z1bGxzY3JlZW4iLCAhMCksIG4uc2V0QXR0cmlidXRlKCJzcmMiLCB0aGlzLnNhbml0aXplKGUpKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmLnJlZHVjZSgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmhhc0F0dHJpYnV0ZShuKSAmJiAodFtuXSA9IGUuZ2V0QXR0cmlidXRlKG4pKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJzYW5pdGl6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdVsiZGVmYXVsdCJdLnNhbml0aXplKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgic3JjIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShhLkJsb2NrRW1iZWQpOwogICAgICAgICAgICAgICAgICAgICAgICBkLmJsb3ROYW1lID0gInZpZGVvIiwgZC5jbGFzc05hbWUgPSAicWwtdmlkZW8iLCBkLnRhZ05hbWUgPSAiSUZSQU1FIiwgdFsiZGVmYXVsdCJdID0gZAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IHQuRm9ybXVsYUJsb3QgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uIGgoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IGgobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHUobigzNSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHUobig1KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdShuKDkpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCh0aGlzLCB0KSwgYyh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYodCwgZSksIHIodCwgbnVsbCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjcmVhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbyh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCksICJjcmVhdGUiLCB0aGlzKS5jYWxsKHRoaXMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgKHdpbmRvdy5rYXRleC5yZW5kZXIoZSwgbiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dPbkVycm9yOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ29sb3I6ICIjZjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbi5zZXRBdHRyaWJ1dGUoImRhdGEtdmFsdWUiLCBlKSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidmFsdWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgiZGF0YS12YWx1ZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oaVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZC5ibG90TmFtZSA9ICJmb3JtdWxhIiwgZC5jbGFzc05hbWUgPSAicWwtZm9ybXVsYSIsIGQudGFnTmFtZSA9ICJTUEFOIjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBjKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHdpbmRvdy5rYXRleCkgdGhyb3cgbmV3IEVycm9yKCJGb3JtdWxhIG1vZHVsZSByZXF1aXJlcyBLYVRlWC4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYodCwgZSksIHIodCwgbnVsbCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZWdpc3RlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhWyJkZWZhdWx0Il0ucmVnaXN0ZXIoZCwgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oc1siZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5Gb3JtdWxhQmxvdCA9IGQsIHRbImRlZmF1bHQiXSA9IHAKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0WyJkZWZhdWx0Il0gPSB0LkNvZGVUb2tlbiA9IHQuQ29kZUJsb2NrID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbiBtKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBlICYmIChlID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8gPyB1bmRlZmluZWQgOiBtKG8sIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIHIpIHJldHVybiByLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gci5nZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGkuY2FsbChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1KG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHUobig1KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdShuKDkpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCh0aGlzLCB0KSwgYyh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYodCwgZSksIHIodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZXBsYWNlV2l0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb21Ob2RlLnRleHRDb250ZW50ID0gdGhpcy5kb21Ob2RlLnRleHRDb250ZW50LCB0aGlzLmF0dGFjaCgpLCBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAicmVwbGFjZVdpdGgiLCB0aGlzKS5jYWxsKHRoaXMsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhpZ2hsaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmRvbU5vZGUudGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVkVGV4dCAhPT0gdCAmJiAoKHQudHJpbSgpLmxlbmd0aCA+IDAgfHwgbnVsbCA9PSB0aGlzLmNhY2hlZFRleHQpICYmICh0aGlzLmRvbU5vZGUuaW5uZXJIVE1MID0gZSh0KSwgdGhpcy5kb21Ob2RlLm5vcm1hbGl6ZSgpLCB0aGlzLmF0dGFjaCgpKSwgdGhpcy5jYWNoZWRUZXh0ID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSh1KG4oMTMpKVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZC5jbGFzc05hbWUgPSAicWwtc3ludGF4IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBuZXcgaVsiZGVmYXVsdCJdLkF0dHJpYnV0b3IuQ2xhc3MoInRva2VuIiwgImhsanMiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGlbImRlZmF1bHQiXS5TY29wZS5JTkxJTkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBjKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSwgbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2Ygci5vcHRpb25zLmhpZ2hsaWdodCkgdGhyb3cgbmV3IEVycm9yKCJTeW50YXggbW9kdWxlIHJlcXVpcmVzIGhpZ2hsaWdodC5qcy4gUGxlYXNlIGluY2x1ZGUgdGhlIGxpYnJhcnkgb24gdGhlIHBhZ2UgYmVmb3JlIFF1aWxsLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnF1aWxsLm9uKGFbImRlZmF1bHQiXS5ldmVudHMuU0NST0xMX09QVElNSVpFLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobyksIG8gPSBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmhpZ2hsaWdodCgpLCBvID0gbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHIub3B0aW9ucy5pbnRlcnZhbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCByLmhpZ2hsaWdodCgpLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmKHQsIGUpLCByKHQsIG51bGwsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlZ2lzdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVsiZGVmYXVsdCJdLnJlZ2lzdGVyKHAsICEwKSwgYVsiZGVmYXVsdCJdLnJlZ2lzdGVyKGQsICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCByKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhpZ2hsaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5xdWlsbC5zZWxlY3Rpb24uY29tcG9zaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC51cGRhdGUoYVsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuc2Nyb2xsLmRlc2NlbmRhbnRzKGQpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5oaWdobGlnaHQoZS5vcHRpb25zLmhpZ2hsaWdodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMucXVpbGwudXBkYXRlKGFbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCksIG51bGwgIT0gdCAmJiB0aGlzLnF1aWxsLnNldFNlbGVjdGlvbih0LCBhWyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oc1siZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgaC5ERUZBVUxUUyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogbnVsbCA9PSB3aW5kb3cuaGxqcyA/IG51bGwgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5obGpzLmhpZ2hsaWdodEF1dG8oZSkudmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbDogMWUzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQuQ29kZUJsb2NrID0gZCwgdC5Db2RlVG9rZW4gPSBwLCB0WyJkZWZhdWx0Il0gPSBoCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MyB4Mj0xNSB5MT05IHkyPTk+PC9saW5lPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MyB4Mj0xMyB5MT0xNCB5Mj0xND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0zIHgyPTkgeTE9NCB5Mj00PjwvbGluZT4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTE1IHgyPTMgeTE9OSB5Mj05PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTE0IHgyPTQgeTE9MTQgeTI9MTQ+PC9saW5lPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MTIgeDI9NiB5MT00IHkyPTQ+PC9saW5lPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MTUgeDI9MyB5MT05IHkyPTk+PC9saW5lPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MTUgeDI9NSB5MT0xNCB5Mj0xND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0xNSB4Mj05IHkxPTQgeTI9ND48L2xpbmU+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0xNSB4Mj0zIHkxPTkgeTI9OT48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0xNSB4Mj0zIHkxPTE0IHkyPTE0PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTE1IHgyPTMgeTE9NCB5Mj00PjwvbGluZT4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGcgY2xhc3M9InFsLWZpbGwgcWwtY29sb3ItbGFiZWwiPiA8cG9seWdvbiBwb2ludHM9IjYgNi44NjggNiA2IDUgNiA1IDcgNS45NDIgNyA2IDYuODY4Ij48L3BvbHlnb24+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD00IHk9ND48L3JlY3Q+IDxwb2x5Z29uIHBvaW50cz0iNi44MTcgNSA2IDUgNiA2IDYuMzggNiA2LjgxNyA1Ij48L3BvbHlnb24+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0yIHk9Nj48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0zIHk9NT48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD00IHk9Nz48L3JlY3Q+IDxwb2x5Z29uIHBvaW50cz0iNCAxMS40MzkgNCAxMSAzIDExIDMgMTIgMy43NTUgMTIgNCAxMS40MzkiPjwvcG9seWdvbj4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTIgeT0xMj48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0yIHk9OT48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0yIHk9MTU+PC9yZWN0PiA8cG9seWdvbiBwb2ludHM9IjQuNjMgMTAgNCAxMCA0IDExIDQuMTkyIDExIDQuNjMgMTAiPjwvcG9seWdvbj4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTMgeT04PjwvcmVjdD4gPHBhdGggZD1NMTAuODMyLDQuMkwxMSw0LjU4MlY0SDEwLjcwOEExLjk0OCwxLjk0OCwwLDAsMSwxMC44MzIsNC4yWj48L3BhdGg+IDxwYXRoIGQ9TTcsNC41ODJMNy4xNjgsNC4yQTEuOTI5LDEuOTI5LDAsMCwxLDcuMjkyLDRIN1Y0LjU4Mlo+PC9wYXRoPiA8cGF0aCBkPU04LDEzSDcuNjgzbC0wLjM1MS44YTEuOTMzLDEuOTMzLDAsMCwxLS4xMjQuMkg4VjEzWj48L3BhdGg+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0xMiB5PTI+PC9yZWN0PiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9MTEgeT0zPjwvcmVjdD4gPHBhdGggZD1NOSwzSDhWMy4yODJBMS45ODUsMS45ODUsMCwwLDEsOSwzWj48L3BhdGg+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0yIHk9Mz48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD02IHk9Mj48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0zIHk9Mj48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD01IHk9Mz48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD05IHk9Mj48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0xNSB5PTE0PjwvcmVjdD4gPHBvbHlnb24gcG9pbnRzPSIxMy40NDcgMTAuMTc0IDEzLjQ2OSAxMC4yMjUgMTMuNDcyIDEwLjIzMiAxMy44MDggMTEgMTQgMTEgMTQgMTAgMTMuMzcgMTAgMTMuNDQ3IDEwLjE3NCI+PC9wb2x5Z29uPiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9MTMgeT03PjwvcmVjdD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTE1IHk9NT48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0xNCB5PTY+PC9yZWN0PiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9MTUgeT04PjwvcmVjdD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTE0IHk9OT48L3JlY3Q+IDxwYXRoIGQ9TTMuNzc1LDE0SDN2MUg0VjE0LjMxNEExLjk3LDEuOTcsMCwwLDEsMy43NzUsMTRaPjwvcGF0aD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTE0IHk9Mz48L3JlY3Q+IDxwb2x5Z29uIHBvaW50cz0iMTIgNi44NjggMTIgNiAxMS42MiA2IDEyIDYuODY4Ij48L3BvbHlnb24+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0xNSB5PTI+PC9yZWN0PiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9MTIgeT01PjwvcmVjdD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTEzIHk9ND48L3JlY3Q+IDxwb2x5Z29uIHBvaW50cz0iMTIuOTMzIDkgMTMgOSAxMyA4IDEyLjQ5NSA4IDEyLjkzMyA5Ij48L3BvbHlnb24+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD05IHk9MTQ+PC9yZWN0PiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9OCB5PTE1PjwvcmVjdD4gPHBhdGggZD1NNiwxNC45MjZWMTVIN1YxNC4zMTZBMS45OTMsMS45OTMsMCwwLDEsNiwxNC45MjZaPjwvcGF0aD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTUgeT0xNT48L3JlY3Q+IDxwYXRoIGQ9TTEwLjY2OCwxMy44TDEwLjMxNywxM0gxMHYxaDAuNzkyQTEuOTQ3LDEuOTQ3LDAsMCwxLDEwLjY2OCwxMy44Wj48L3BhdGg+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0xMSB5PTE1PjwvcmVjdD4gPHBhdGggZD1NMTQuMzMyLDEyLjJhMS45OSwxLjk5LDAsMCwxLC4xNjYuOEgxNVYxMkgxNC4yNDVaPjwvcGF0aD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTE0IHk9MTU+PC9yZWN0PiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9MTUgeT0xMT48L3JlY3Q+IDwvZz4gPHBvbHlsaW5lIGNsYXNzPXFsLXN0cm9rZSBwb2ludHM9IjUuNSAxMyA5IDUgMTIuNSAxMyI+PC9wb2x5bGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTExLjYzIHgyPTYuMzggeTE9MTEgeTI9MTE+PC9saW5lPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8cmVjdCBjbGFzcz0icWwtZmlsbCBxbC1zdHJva2UiIGhlaWdodD0zIHdpZHRoPTMgeD00IHk9NT48L3JlY3Q+IDxyZWN0IGNsYXNzPSJxbC1maWxsIHFsLXN0cm9rZSIgaGVpZ2h0PTMgd2lkdGg9MyB4PTExIHk9NT48L3JlY3Q+IDxwYXRoIGNsYXNzPSJxbC1ldmVuIHFsLWZpbGwgcWwtc3Ryb2tlIiBkPU03LDhjMCw0LjAzMS0zLDUtMyw1PjwvcGF0aD4gPHBhdGggY2xhc3M9InFsLWV2ZW4gcWwtZmlsbCBxbC1zdHJva2UiIGQ9TTE0LDhjMCw0LjAzMS0zLDUtMyw1PjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtc3Ryb2tlIGQ9TTUsNEg5LjVBMi41LDIuNSwwLDAsMSwxMiw2LjV2MEEyLjUsMi41LDAsMCwxLDkuNSw5SDVBMCwwLDAsMCwxLDUsOVY0QTAsMCwwLDAsMSw1LDRaPjwvcGF0aD4gPHBhdGggY2xhc3M9cWwtc3Ryb2tlIGQ9TTUsOWg1LjVBMi41LDIuNSwwLDAsMSwxMywxMS41djBBMi41LDIuNSwwLDAsMSwxMC41LDE0SDVhMCwwLDAsMCwxLDAsMFY5QTAsMCwwLDAsMSw1LDlaPjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgY2xhc3M9IiIgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTUgeDI9MTMgeTE9MyB5Mj0zPjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTYgeDI9OS4zNSB5MT0xMiB5Mj0zPjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTExIHgyPTE1IHkxPTExIHkyPTE1PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTE1IHgyPTExIHkxPTExIHkyPTE1PjwvbGluZT4gPHJlY3QgY2xhc3M9cWwtZmlsbCBoZWlnaHQ9MSByeD0wLjUgcnk9MC41IHdpZHRoPTcgeD0yIHk9MTQ+PC9yZWN0PiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8bGluZSBjbGFzcz0icWwtY29sb3ItbGFiZWwgcWwtc3Ryb2tlIHFsLXRyYW5zcGFyZW50IiB4MT0zIHgyPTE1IHkxPTE1IHkyPTE1PjwvbGluZT4gPHBvbHlsaW5lIGNsYXNzPXFsLXN0cm9rZSBwb2ludHM9IjUuNSAxMSA5IDMgMTIuNSAxMSI+PC9wb2x5bGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTExLjYzIHgyPTYuMzggeTE9OSB5Mj05PjwvbGluZT4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBvbHlnb24gY2xhc3M9InFsLXN0cm9rZSBxbC1maWxsIiBwb2ludHM9IjMgMTEgNSA5IDMgNyAzIDExIj48L3BvbHlnb24+IDxsaW5lIGNsYXNzPSJxbC1zdHJva2UgcWwtZmlsbCIgeDE9MTUgeDI9MTEgeTE9NCB5Mj00PjwvbGluZT4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xMSwzYTMsMywwLDAsMCwwLDZoMVYzSDExWj48L3BhdGg+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTExIHdpZHRoPTEgeD0xMSB5PTQ+PC9yZWN0PiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xMSB3aWR0aD0xIHg9MTMgeT00PjwvcmVjdD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBvbHlnb24gY2xhc3M9InFsLXN0cm9rZSBxbC1maWxsIiBwb2ludHM9IjE1IDEyIDEzIDEwIDE1IDggMTUgMTIiPjwvcG9seWdvbj4gPGxpbmUgY2xhc3M9InFsLXN0cm9rZSBxbC1maWxsIiB4MT05IHgyPTUgeTE9NCB5Mj00PjwvbGluZT4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU01LDNBMywzLDAsMCwwLDUsOUg2VjNINVo+PC9wYXRoPiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xMSB3aWR0aD0xIHg9NSB5PTQ+PC9yZWN0PiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xMSB3aWR0aD0xIHg9NyB5PTQ+PC9yZWN0PiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8cGF0aCBjbGFzcz1xbC1maWxsIGQ9TTE0LDE2SDRhMSwxLDAsMCwxLDAtMkgxNEExLDEsMCwwLDEsMTQsMTZaIC8+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMTQsNEg0QTEsMSwwLDAsMSw0LDJIMTRBMSwxLDAsMCwxLDE0LDRaIC8+IDxyZWN0IGNsYXNzPXFsLWZpbGwgeD0zIHk9NiB3aWR0aD0xMiBoZWlnaHQ9NiByeD0xIHJ5PTEgLz4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xMywxNkg1YTEsMSwwLDAsMSwwLTJoOEExLDEsMCwwLDEsMTMsMTZaIC8+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMTMsNEg1QTEsMSwwLDAsMSw1LDJoOEExLDEsMCwwLDEsMTMsNFogLz4gPHJlY3QgY2xhc3M9cWwtZmlsbCB4PTIgeT02IHdpZHRoPTE0IGhlaWdodD02IHJ4PTEgcnk9MSAvPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8cGF0aCBjbGFzcz1xbC1maWxsIGQ9TTE1LDhIMTNhMSwxLDAsMCwxLDAtMmgyQTEsMSwwLDAsMSwxNSw4WiAvPiA8cGF0aCBjbGFzcz1xbC1maWxsIGQ9TTE1LDEySDEzYTEsMSwwLDAsMSwwLTJoMkExLDEsMCwwLDEsMTUsMTJaIC8+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMTUsMTZINWExLDEsMCwwLDEsMC0ySDE1QTEsMSwwLDAsMSwxNSwxNlogLz4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xNSw0SDVBMSwxLDAsMCwxLDUsMkgxNUExLDEsMCwwLDEsMTUsNFogLz4gPHJlY3QgY2xhc3M9cWwtZmlsbCB4PTIgeT02IHdpZHRoPTggaGVpZ2h0PTYgcng9MSByeT0xIC8+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NNSw4SDNBMSwxLDAsMCwxLDMsNkg1QTEsMSwwLDAsMSw1LDhaIC8+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NNSwxMkgzYTEsMSwwLDAsMSwwLTJINUExLDEsMCwwLDEsNSwxMlogLz4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xMywxNkgzYTEsMSwwLDAsMSwwLTJIMTNBMSwxLDAsMCwxLDEzLDE2WiAvPiA8cGF0aCBjbGFzcz1xbC1maWxsIGQ9TTEzLDRIM0ExLDEsMCwwLDEsMywySDEzQTEsMSwwLDAsMSwxMyw0WiAvPiA8cmVjdCBjbGFzcz1xbC1maWxsIHg9OCB5PTYgd2lkdGg9OCBoZWlnaHQ9NiByeD0xIHJ5PTEgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQgMTgpIHJvdGF0ZSgtMTgwKSIvPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8cGF0aCBjbGFzcz1xbC1maWxsIGQ9TTExLjc1OSwyLjQ4MmEyLjU2MSwyLjU2MSwwLDAsMC0zLjUzLjYwN0E3LjY1Niw3LjY1NiwwLDAsMCw2LjgsNi4yQzYuMTA5LDkuMTg4LDUuMjc1LDE0LjY3Nyw0LjE1LDE0LjkyN2ExLjU0NSwxLjU0NSwwLDAsMC0xLjMtLjkzM0EwLjkyMiwwLjkyMiwwLDAsMCwyLDE1LjAzNlMxLjk1NCwxNiw0LjExOSwxNnMzLjA5MS0yLjY5MSwzLjctNS41NTNjMC4xNzctLjgyNi4zNi0xLjcyNiwwLjU1NC0yLjZMOC43NzUsNi4yYzAuMzgxLTEuNDIxLjgwNy0yLjUyMSwxLjMwNi0yLjY3NmExLjAxNCwxLjAxNCwwLDAsMCwxLjAyLjU2QTAuOTY2LDAuOTY2LDAsMCwwLDExLjc1OSwyLjQ4Mlo+PC9wYXRoPiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xLjYgcng9MC44IHJ5PTAuOCB3aWR0aD01IHg9NS4xNSB5PTYuMj48L3JlY3Q+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMTMuNjYzLDEyLjAyN2ExLjY2MiwxLjY2MiwwLDAsMSwuMjY2LTAuMjc2cTAuMTkzLDAuMDY5LjQ1NiwwLjEzOGEyLjEsMi4xLDAsMCwwLC41MzUuMDY5LDEuMDc1LDEuMDc1LDAsMCwwLC43NjctMC4zLDEuMDQ0LDEuMDQ0LDAsMCwwLC4zMTQtMC44LDAuODQsMC44NCwwLDAsMC0uMjM4LTAuNjE5LDAuOCwwLjgsMCwwLDAtLjU5NC0wLjIzOSwxLjE1NCwxLjE1NCwwLDAsMC0uNzgxLjMsNC42MDcsNC42MDcsMCwwLDAtLjc4MSwxcS0wLjA5MS4xNS0uMjE4LDAuMzQ2bC0wLjI0Ni4zOGMtMC4wNjgtLjI4OC0wLjEzNy0wLjU4Mi0wLjIxMi0wLjg4NS0wLjQ1OS0xLjg0Ny0yLjQ5NC0uOTg0LTIuOTQxLTAuOC0wLjQ4Mi4yLS4zNTMsMC42NDctMC4wOTQsMC41MjlhMC44NjksMC44NjksMCwwLDEsMS4yODEuNTg1YzAuMjE3LDAuNzUxLjM3NywxLjQzNiwwLjUyNywyLjAzOGE1LjY4OCw1LjY4OCwwLDAsMS0uMzYyLjQ2NywyLjY5LDIuNjksMCwwLDEtLjI2NC4yNzFxLTAuMjIxLS4wOC0wLjQ3MS0wLjE0N2EyLjAyOSwyLjAyOSwwLDAsMC0uNTIyLTAuMDY2LDEuMDc5LDEuMDc5LDAsMCwwLS43NjguM0ExLjA1OCwxLjA1OCwwLDAsMCw5LDE1LjEzMWEwLjgyLDAuODIsMCwwLDAsLjgzMi44NTIsMS4xMzQsMS4xMzQsMCwwLDAsLjc4Ny0wLjMsNS4xMSw1LjExLDAsMCwwLC43NzYtMC45OTNxMC4xNDEtLjIxOS4yMTUtMC4zNGMwLjA0Ni0uMDc2LjEyMi0wLjE5NCwwLjIyMy0wLjM0NmEyLjc4NiwyLjc4NiwwLDAsMCwuOTE4LDEuNzI2LDIuNTgyLDIuNTgyLDAsMCwwLDIuMzc2LS4xODVjMC4zMTctLjE4MS4yMTItMC41NjUsMC0wLjQ5NEEwLjgwNywwLjgwNywwLDAsMSwxNC4xNzYsMTVhNS4xNTksNS4xNTksMCwwLDEtLjkxMy0yLjQ0NmwwLDBRMTMuNDg3LDEyLjI0LDEzLjY2MywxMi4wMjdaPjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld0JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xMCw0VjE0YTEsMSwwLDAsMS0yLDBWMTBIM3Y0YTEsMSwwLDAsMS0yLDBWNEExLDEsMCwwLDEsMyw0VjhIOFY0YTEsMSwwLDAsMSwyLDBabTYuMDY3ODcsOS4yMDlIMTQuOTg5NzVWNy41OTg2M2EuNTQwODUuNTQwODUsMCwwLDAtLjYwNS0uNjA1NDdoLS42Mjc0NGExLjAxMTE5LDEuMDExMTksMCwwLDAtLjc0OC4yOTY4OEwxMS42NDUsOC41NjY0MWEuNTQzNS41NDM1LDAsMCwwLS4wMjIuODU4NGwuMjg2MTMuMzA3NjJhLjUzODYxLjUzODYxLDAsMCwwLC44NDcxNy4wMzMybC4wOTkxMi0uMDg3ODlhMS4yMTM3LDEuMjEzNywwLDAsMCwuMjQxNy0uMzUyNTRoLjAyMjQ2cy0uMDExMjMuMzA4NTktLjAxMTIzLjYwNTQ3VjEzLjIwOUgxMi4wNDFhLjU0MDg1LjU0MDg1LDAsMCwwLS42MDUuNjA1NDd2LjQzOTQ1YS41NDA4NS41NDA4NSwwLDAsMCwuNjA1LjYwNTQ3aDQuMDI2ODZhLjU0MDg1LjU0MDg1LDAsMCwwLC42MDUtLjYwNTQ3di0uNDM5NDVBLjU0MDg1LjU0MDg1LDAsMCwwLDE2LjA2Nzg3LDEzLjIwOVogLz4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld0JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xNi43Mzk3NSwxMy44MTQ0NXYuNDM5NDVhLjU0MDg1LjU0MDg1LDAsMCwxLS42MDUuNjA1NDdIMTEuODU1YS41ODM5Mi41ODM5MiwwLDAsMS0uNjQ4OTMtLjYwNTQ3VjE0LjAxMjdjMC0yLjkwNTI3LDMuMzk5NDEtMy40MjE4NywzLjM5OTQxLTQuNTU0NjlhLjc3Njc1Ljc3Njc1LDAsMCwwLS44NDcxNy0uNzgxMjUsMS4xNzY4NCwxLjE3Njg0LDAsMCwwLS44MzU5NC4zODQ3N2MtLjI3NDkuMjYzNjctLjU2MS4zNzQtLjg1NzkxLjEzMTg0bC0uNDI5Mi0uMzQwODJjLS4zMDgxMS0uMjQyMTktLjM4NTI1LS41MTc1OC0uMTU0My0uODE0NDVhMi45NzE1NSwyLjk3MTU1LDAsMCwxLDIuNDUzNjEtMS4xNzY3NiwyLjQ1MzkzLDIuNDUzOTMsMCwwLDEsMi42ODQwOCwyLjQwOTE4YzAsMi40NTMxMi0zLjE3OTIsMi45MjY3Ni0zLjI3ODMyLDMuOTM4NDhoMi43OTQ0M0EuNTQwODUuNTQwODUsMCwwLDEsMTYuNzM5NzUsMTMuODE0NDVaTTksM0EuOTk5NzQuOTk5NzQsMCwwLDAsOCw0VjhIM1Y0QTEsMSwwLDAsMCwxLDRWMTRhMSwxLDAsMCwwLDIsMFYxMEg4djRhMSwxLDAsMCwwLDIsMFY0QS45OTk3NC45OTk3NCwwLDAsMCw5LDNaIC8+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT03IHgyPTEzIHkxPTQgeTI9ND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT01IHgyPTExIHkxPTE0IHkyPTE0PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTggeDI9MTAgeTE9MTQgeTI9ND48L2xpbmU+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxyZWN0IGNsYXNzPXFsLXN0cm9rZSBoZWlnaHQ9MTAgd2lkdGg9MTIgeD0zIHk9ND48L3JlY3Q+IDxjaXJjbGUgY2xhc3M9cWwtZmlsbCBjeD02IGN5PTcgcj0xPjwvY2lyY2xlPiA8cG9seWxpbmUgY2xhc3M9InFsLWV2ZW4gcWwtZmlsbCIgcG9pbnRzPSI1IDEyIDUgMTEgNyA5IDggMTAgMTEgNyAxMyA5IDEzIDEyIDUgMTIiPjwvcG9seWxpbmU+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0zIHgyPTE1IHkxPTE0IHkyPTE0PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTMgeDI9MTUgeTE9NCB5Mj00PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTkgeDI9MTUgeTE9OSB5Mj05PjwvbGluZT4gPHBvbHlsaW5lIGNsYXNzPSJxbC1maWxsIHFsLXN0cm9rZSIgcG9pbnRzPSIzIDcgMyAxMSA1IDkgMyA3Ij48L3BvbHlsaW5lPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MyB4Mj0xNSB5MT0xNCB5Mj0xND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0zIHgyPTE1IHkxPTQgeTI9ND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT05IHgyPTE1IHkxPTkgeTI9OT48L2xpbmU+IDxwb2x5bGluZSBjbGFzcz1xbC1zdHJva2UgcG9pbnRzPSI1IDcgNSAxMSAzIDkgNSA3Ij48L3BvbHlsaW5lPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9NyB4Mj0xMSB5MT03IHkyPTExPjwvbGluZT4gPHBhdGggY2xhc3M9InFsLWV2ZW4gcWwtc3Ryb2tlIiBkPU04LjksNC41NzdhMy40NzYsMy40NzYsMCwwLDEsLjM2LDQuNjc5QTMuNDc2LDMuNDc2LDAsMCwxLDQuNTc3LDguOUMzLjE4NSw3LjUsMi4wMzUsNi40LDQuMjE3LDQuMjE3UzcuNSwzLjE4NSw4LjksNC41NzdaPjwvcGF0aD4gPHBhdGggY2xhc3M9InFsLWV2ZW4gcWwtc3Ryb2tlIiBkPU0xMy40MjMsOS4xYTMuNDc2LDMuNDc2LDAsMCwwLTQuNjc5LS4zNiwzLjQ3NiwzLjQ3NiwwLDAsMCwuMzYsNC42NzljMS4zOTIsMS4zOTIsMi41LDIuNTQyLDQuNjc5LjM2UzE0LjgxNSwxMC41LDEzLjQyMyw5LjFaPjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTcgeDI9MTUgeTE9NCB5Mj00PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTcgeDI9MTUgeTE9OSB5Mj05PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTcgeDI9MTUgeTE9MTQgeTI9MTQ+PC9saW5lPiA8bGluZSBjbGFzcz0icWwtc3Ryb2tlIHFsLXRoaW4iIHgxPTIuNSB4Mj00LjUgeTE9NS41IHkyPTUuNT48L2xpbmU+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMy41LDZBMC41LDAuNSwwLDAsMSwzLDUuNVYzLjA4NWwtMC4yNzYuMTM4QTAuNSwwLjUsMCwwLDEsMi4wNTMsM2MtMC4xMjQtLjI0Ny0wLjAyMy0wLjMyNC4yMjQtMC40NDdsMS0uNUEwLjUsMC41LDAsMCwxLDQsMi41djNBMC41LDAuNSwwLDAsMSwzLjUsNlo+PC9wYXRoPiA8cGF0aCBjbGFzcz0icWwtc3Ryb2tlIHFsLXRoaW4iIGQ9TTQuNSwxMC41aC0yYzAtLjIzNCwxLjg1LTEuMDc2LDEuODUtMi4yMzRBMC45NTksMC45NTksMCwwLDAsMi41LDguMTU2PjwvcGF0aD4gPHBhdGggY2xhc3M9InFsLXN0cm9rZSBxbC10aGluIiBkPU0yLjUsMTQuODQ2YTAuOTU5LDAuOTU5LDAsMCwwLDEuODUtLjEwOUEwLjcsMC43LDAsMCwwLDMuNzUsMTRhMC42ODgsMC42ODgsMCwwLDAsLjYtMC43MzYsMC45NTksMC45NTksMCwwLDAtMS44NS0uMTA5PjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTYgeDI9MTUgeTE9NCB5Mj00PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTYgeDI9MTUgeTE9OSB5Mj05PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTYgeDI9MTUgeTE9MTQgeTI9MTQ+PC9saW5lPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MyB4Mj0zIHkxPTQgeTI9ND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0zIHgyPTMgeTE9OSB5Mj05PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTMgeDI9MyB5MT0xNCB5Mj0xND48L2xpbmU+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIGNsYXNzPSIiIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT05IHgyPTE1IHkxPTQgeTI9ND48L2xpbmU+IDxwb2x5bGluZSBjbGFzcz1xbC1zdHJva2UgcG9pbnRzPSIzIDQgNCA1IDYgMyI+PC9wb2x5bGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTkgeDI9MTUgeTE9MTQgeTI9MTQ+PC9saW5lPiA8cG9seWxpbmUgY2xhc3M9cWwtc3Ryb2tlIHBvaW50cz0iMyAxNCA0IDE1IDYgMTMiPjwvcG9seWxpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT05IHgyPTE1IHkxPTkgeTI9OT48L2xpbmU+IDxwb2x5bGluZSBjbGFzcz1xbC1zdHJva2UgcG9pbnRzPSIzIDkgNCAxMCA2IDgiPjwvcG9seWxpbmU+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMTUuNSwxNUgxMy44NjFhMy44NTgsMy44NTgsMCwwLDAsMS45MTQtMi45NzUsMS44LDEuOCwwLDAsMC0xLjYtMS43NTFBMS45MjEsMS45MjEsMCwwLDAsMTIuMDIxLDExLjdhMC41MDAxMywwLjUwMDEzLDAsMSwwLC45NTcuMjkxaDBhMC45MTQsMC45MTQsMCwwLDEsMS4wNTMtLjcyNSwwLjgxLDAuODEsMCwwLDEsLjc0NC43NjJjMCwxLjA3Ni0xLjE2OTcxLDEuODY5ODItMS45Mzk3MSwyLjQzMDgyQTEuNDU2MzksMS40NTYzOSwwLDAsMCwxMiwxNS41YTAuNSwwLjUsMCwwLDAsLjUuNWgzQTAuNSwwLjUsMCwwLDAsMTUuNSwxNVogLz4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU05LjY1LDUuMjQxYTEsMSwwLDAsMC0xLjQwOS4xMDhMNiw3Ljk2NCwzLjc1OSw1LjM0OUExLDEsMCwwLDAsMi4xOTIsNi41OTE3OFEyLjIxNTQxLDYuNjIxMywyLjI0MSw2LjY0OUw0LjY4NCw5LjUsMi4yNDEsMTIuMzVBMSwxLDAsMCwwLDMuNzEsMTMuNzA3MjJxMC4wMjU1Ny0uMDI3NjguMDQ5LTAuMDU3MjJMNiwxMS4wMzYsOC4yNDEsMTMuNjVhMSwxLDAsMSwwLDEuNTY3LTEuMjQyNzdROS43ODQ1OSwxMi4zNzc3LDkuNzU5LDEyLjM1TDcuMzE2LDkuNSw5Ljc1OSw2LjY1MUExLDEsMCwwLDAsOS42NSw1LjI0MVogLz4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xNS41LDdIMTMuODYxYTQuMDE1LDQuMDE1LDAsMCwwLDEuOTE0LTIuOTc1LDEuOCwxLjgsMCwwLDAtMS42LTEuNzUxQTEuOTIyLDEuOTIyLDAsMCwwLDEyLjAyMSwzLjdhMC41LDAuNSwwLDEsMCwuOTU3LjI5MSwwLjkxNywwLjkxNywwLDAsMSwxLjA1My0uNzI1LDAuODEsMC44MSwwLDAsMSwuNzQ0Ljc2MmMwLDEuMDc3LTEuMTY0LDEuOTI1LTEuOTM0LDIuNDg2QTEuNDIzLDEuNDIzLDAsMCwwLDEyLDcuNWEwLjUsMC41LDAsMCwwLC41LjVoM0EwLjUsMC41LDAsMCwwLDE1LjUsN1ogLz4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU05LjY1MSw1LjI0MWExLDEsMCwwLDAtMS40MS4xMDhMNiw3Ljk2NCwzLjc1OSw1LjM0OWExLDEsMCwxLDAtMS41MTksMS4zTDQuNjgzLDkuNSwyLjI0MSwxMi4zNWExLDEsMCwxLDAsMS41MTksMS4zTDYsMTEuMDM2LDguMjQxLDEzLjY1YTEsMSwwLDAsMCwxLjUxOS0xLjNMNy4zMTcsOS41LDkuNzU5LDYuNjUxQTEsMSwwLDAsMCw5LjY1MSw1LjI0MVogLz4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGxpbmUgY2xhc3M9InFsLXN0cm9rZSBxbC10aGluIiB4MT0xNS41IHgyPTIuNSB5MT04LjUgeTI9OS41PjwvbGluZT4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU05LjAwNyw4QzYuNTQyLDcuNzkxLDYsNy41MTksNiw2LjUsNiw1Ljc5Miw3LjI4Myw1LDksNWMxLjU3MSwwLDIuNzY1LjY3OSwyLjk2OSwxLjMwOWExLDEsMCwwLDAsMS45LS42MTdDMTMuMzU2LDQuMTA2LDExLjM1NCwzLDksMyw2LjIsMyw0LDQuNTM4LDQsNi41YTMuMiwzLjIsMCwwLDAsLjUsMS44NDNaPjwvcGF0aD4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU04Ljk4NCwxMEMxMS40NTcsMTAuMjA4LDEyLDEwLjQ3OSwxMiwxMS41YzAsMC43MDgtMS4yODMsMS41LTMsMS41LTEuNTcxLDAtMi43NjUtLjY3OS0yLjk2OS0xLjMwOWExLDEsMCwxLDAtMS45LjYxN0M0LjY0NCwxMy44OTQsNi42NDYsMTUsOSwxNWMyLjgsMCw1LTEuNTM4LDUtMy41YTMuMiwzLjIsMCwwLDAtLjUtMS44NDNaPjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtc3Ryb2tlIGQ9TTUsM1Y5YTQuMDEyLDQuMDEyLDAsMCwwLDQsNEg5YTQuMDEyLDQuMDEyLDAsMCwwLDQtNFYzPjwvcGF0aD4gPHJlY3QgY2xhc3M9cWwtZmlsbCBoZWlnaHQ9MSByeD0wLjUgcnk9MC41IHdpZHRoPTEyIHg9MyB5PTE1PjwvcmVjdD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHJlY3QgY2xhc3M9cWwtc3Ryb2tlIGhlaWdodD0xMiB3aWR0aD0xMiB4PTMgeT0zPjwvcmVjdD4gPHJlY3QgY2xhc3M9cWwtZmlsbCBoZWlnaHQ9MTIgd2lkdGg9MSB4PTUgeT0zPjwvcmVjdD4gPHJlY3QgY2xhc3M9cWwtZmlsbCBoZWlnaHQ9MTIgd2lkdGg9MSB4PTEyIHk9Mz48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTIgd2lkdGg9OCB4PTUgeT04PjwvcmVjdD4gPHJlY3QgY2xhc3M9cWwtZmlsbCBoZWlnaHQ9MSB3aWR0aD0zIHg9MyB5PTU+PC9yZWN0PiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xIHdpZHRoPTMgeD0zIHk9Nz48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTEgd2lkdGg9MyB4PTMgeT0xMD48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTEgd2lkdGg9MyB4PTMgeT0xMj48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTEgd2lkdGg9MyB4PTEyIHk9NT48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTEgd2lkdGg9MyB4PTEyIHk9Nz48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTEgd2lkdGg9MyB4PTEyIHk9MTA+PC9yZWN0PiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xIHdpZHRoPTMgeD0xMiB5PTEyPjwvcmVjdD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBvbHlnb24gY2xhc3M9cWwtc3Ryb2tlIHBvaW50cz0iNyAxMSA5IDEzIDExIDExIDcgMTEiPjwvcG9seWdvbj4gPHBvbHlnb24gY2xhc3M9cWwtc3Ryb2tlIHBvaW50cz0iNyA3IDkgNSAxMSA3IDcgNyI+PC9wb2x5Z29uPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gdC5CdWJibGVUb29sdGlwID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uIHYoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHYobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmKG4oMykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGYobig4KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbig0MyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZihzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuKDE1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBmKG4oNDEpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHAoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYm9sZCIsICJpdGFsaWMiLCAibGluayJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgImJsb2NrcXVvdGUiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQodGhpcywgdCksIG51bGwgIT0gbi5tb2R1bGVzLnRvb2xiYXIgJiYgbnVsbCA9PSBuLm1vZHVsZXMudG9vbGJhci5jb250YWluZXIgJiYgKG4ubW9kdWxlcy50b29sYmFyLmNvbnRhaW5lciA9IG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHAodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnF1aWxsLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJxbC1idWJibGUiKSwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCh0LCBlKSwgbyh0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJleHRlbmRUb29sYmFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IG5ldyBnKHRoaXMucXVpbGwsIHRoaXMub3B0aW9ucy5ib3VuZHMpLCB0aGlzLnRvb2x0aXAucm9vdC5hcHBlbmRDaGlsZChlLmNvbnRhaW5lciksIHRoaXMuYnVpbGRCdXR0b25zKFtdLnNsaWNlLmNhbGwoZS5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uIikpLCBjWyJkZWZhdWx0Il0pLCB0aGlzLmJ1aWxkUGlja2VycyhbXS5zbGljZS5jYWxsKGUuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoInNlbGVjdCIpKSwgY1siZGVmYXVsdCJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHVbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHkuREVGQVVMVFMgPSAoMCwgaVsiZGVmYXVsdCJdKSghMCwge30sIHVbImRlZmF1bHQiXS5ERUZBVUxUUywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID8gdGhpcy5xdWlsbC50aGVtZS50b29sdGlwLmVkaXQoKSA6IHRoaXMucXVpbGwuZm9ybWF0KCJsaW5rIiwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBwKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSwgbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnF1aWxsLm9uKGFbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRSwgKGZ1bmN0aW9uKGUsIHQsIG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT09IGFbImRlZmF1bHQiXS5ldmVudHMuU0VMRUNUSU9OX0NIQU5HRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHQgJiYgdC5sZW5ndGggPiAwICYmIG8gPT09IGFbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNob3coKSwgci5yb290LnN0eWxlLmxlZnQgPSAiMHB4Iiwgci5yb290LnN0eWxlLndpZHRoID0gIiIsIHIucm9vdC5zdHlsZS53aWR0aCA9IHIucm9vdC5vZmZzZXRXaWR0aCArICJweCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLnF1aWxsLmdldExpbmVzKHQuaW5kZXgsIHQubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gaS5sZW5ndGgpIHIucG9zaXRpb24oci5xdWlsbC5nZXRCb3VuZHModCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGlbaS5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSByLnF1aWxsLmdldEluZGV4KHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IE1hdGgubWluKHMubGVuZ3RoKCkgLSAxLCB0LmluZGV4ICsgdC5sZW5ndGggLSB1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSByLnF1aWxsLmdldEJvdW5kcyhuZXcgbC5SYW5nZSh1LCBjKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucG9zaXRpb24oZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gci50ZXh0Ym94ICYmIHIucXVpbGwuaGFzRm9jdXMoKSAmJiByLmhpZGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgodCwgZSksIG8odCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJsaXN0ZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAibGlzdGVuIiwgdGhpcykuY2FsbCh0aGlzKSwgdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoIi5xbC1jbG9zZSIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yb290LmNsYXNzTGlzdC5yZW1vdmUoInFsLWVkaXRpbmciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMucXVpbGwub24oYVsiZGVmYXVsdCJdLmV2ZW50cy5TQ1JPTExfT1BUSU1JWkUsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS5yb290LmNsYXNzTGlzdC5jb250YWlucygicWwtaGlkZGVuIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnF1aWxsLmdldFNlbGVjdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IHQgJiYgZS5wb3NpdGlvbihlLnF1aWxsLmdldEJvdW5kcyh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNhbmNlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJwb3NpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAicG9zaXRpb24iLCB0aGlzKS5jYWxsKHRoaXMsIGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKCIucWwtdG9vbHRpcC1hcnJvdyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5zdHlsZS5tYXJnaW5MZWZ0ID0gIiIsIDAgPT09IG4pIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnN0eWxlLm1hcmdpbkxlZnQgPSAtMSAqIG4gLSBvLm9mZnNldFdpZHRoIC8gMiArICJweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShzLkJhc2VUb29sdGlwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZy5URU1QTEFURSA9IFsnPHNwYW4gY2xhc3M9InFsLXRvb2x0aXAtYXJyb3ciPjwvc3Bhbj4nLCAnPGRpdiBjbGFzcz0icWwtdG9vbHRpcC1lZGl0b3IiPicsICc8aW5wdXQgdHlwZT0idGV4dCIgZGF0YS1mb3JtdWxhPSJlPW1jXjIiIGRhdGEtbGluaz0iaHR0cHM6Ly9xdWlsbGpzLmNvbSIgZGF0YS12aWRlbz0iRW1iZWQgVVJMIj4nLCAnPGEgY2xhc3M9InFsLWNsb3NlIj48L2E+JywgIjwvZGl2PiJdLmpvaW4oIiIpLCB0LkJ1YmJsZVRvb2x0aXAgPSBnLCB0WyJkZWZhdWx0Il0gPSB5CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBuKDYzKQogICAgICAgICAgICAgICAgICAgIH1dKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICB9LCBlLmV4cG9ydHMgPSB0KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNTk1MzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAociA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgZS5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIGUgIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgfSkoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHQuWiA9IHZvaWQgMDsKICAgICAgICAgICAgICAgIHZhciBvID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLl9fZXNNb2R1bGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gZSB8fCAib2JqZWN0IiAhPT0gcihlKSAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiBlKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdSgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiB0LmhhcyhlKSkgcmV0dXJuIHQuZ2V0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBpKSA6IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAmJiAoYS5nZXQgfHwgYS5zZXQpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGksIGEpIDogbltpXSA9IGVbaV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgblsiZGVmYXVsdCJdID0gZSwgdCAmJiB0LnNldChlLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9KG4oNzM2MykpLAogICAgICAgICAgICAgICAgICAgIGkgPSBzKG4oNTY5NykpLAogICAgICAgICAgICAgICAgICAgIGEgPSBzKG4oODUyNykpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KCkgewogICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiBXZWFrTWFwKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG5ldyBXZWFrTWFwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB1ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfSwgZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSByZXR1cm4gYyhlKQogICAgICAgICAgICAgICAgICAgIH0oZSkgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gQXJyYXkuZnJvbShlKQogICAgICAgICAgICAgICAgICAgIH0oZSkgfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSByZXR1cm4gYyhlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwgLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAiT2JqZWN0IiA9PT0gbiAmJiBlLmNvbnN0cnVjdG9yICYmIChuID0gZS5jb25zdHJ1Y3Rvci5uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJNYXAiID09PSBuIHx8ICJTZXQiID09PSBuKSByZXR1cm4gQXJyYXkuZnJvbShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJBcmd1bWVudHMiID09PSBuIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYyhlLCB0KQogICAgICAgICAgICAgICAgICAgIH0oZSkgfHwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpCiAgICAgICAgICAgICAgICAgICAgfSgpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgKG51bGwgPT0gdCB8fCB0ID4gZS5sZW5ndGgpICYmICh0ID0gZS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwLCByID0gbmV3IEFycmF5KHQpOyBuIDwgdDsgbisrKSByW25dID0gZVtuXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChmID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAxOyB0IDwgYXJndW1lbnRzLmxlbmd0aDsgdCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50c1t0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gbikgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sIHIpICYmIChlW3JdID0gbltyXSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgIH0pLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307CiAgICAgICAgICAgICAgICAgICAgdmFyIG4sIHIsIG8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IGUpIHJldHVybiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIHIsIG8gPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBPYmplY3Qua2V5cyhlKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gMDsgciA8IGkubGVuZ3RoOyByKyspIG4gPSBpW3JdLCB0LmluZGV4T2YobikgPj0gMCB8fCAob1tuXSA9IGVbbl0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwOyByIDwgaS5sZW5ndGg7IHIrKykgbiA9IGlbcl0sIHQuaW5kZXhPZihuKSA+PSAwIHx8IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLCBuKSAmJiAob1tuXSA9IGVbbl0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gcChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBPYmplY3Qua2V5cyhlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgKHIgPSByLmZpbHRlcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCkuZW51bWVyYWJsZQogICAgICAgICAgICAgICAgICAgICAgICB9KSkpLCBuLnB1c2guYXBwbHkobiwgcikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMTsgdCA8IGFyZ3VtZW50cy5sZW5ndGg7IHQrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG51bGwgIT0gYXJndW1lbnRzW3RdID8gYXJndW1lbnRzW3RdIDoge307CiAgICAgICAgICAgICAgICAgICAgICAgIHQgJSAyID8gcChPYmplY3QobiksICEwKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKGUsIHQsIG5bdF0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpIDogcChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sIHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBtKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24geShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gZyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChnID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuX19wcm90b19fID0gdCwgZQogICAgICAgICAgICAgICAgICAgIH0pKGUsIHQpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gdihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ1bmRlZmluZWQiID09IHR5cGVvZiBSZWZsZWN0IHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgUHJveHkpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIChmdW5jdGlvbigpIHt9KSkpLCAhMAogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCByID0gTyhlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gTyh0aGlzKS5jb25zdHJ1Y3RvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBSZWZsZWN0LmNvbnN0cnVjdChyLCBhcmd1bWVudHMsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuID0gci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYih0aGlzLCBuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBiKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT09IHIodCkgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IHcoZSkgOiB0CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gdyhlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE8oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoTyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKQogICAgICAgICAgICAgICAgICAgIH0pKGUpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gXyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSkgOiBlW3RdID0gbiwgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHggPSBbIm9uQ2hhbmdlIiwgIm9uT3BlbiIsICJvbkNsb3NlIiwgIm9uTW9udGhDaGFuZ2UiLCAib25ZZWFyQ2hhbmdlIiwgIm9uUmVhZHkiLCAib25WYWx1ZVVwZGF0ZSIsICJvbkRheUNyZWF0ZSJdLAogICAgICAgICAgICAgICAgICAgIGsgPSBpWyJkZWZhdWx0Il0ub25lT2ZUeXBlKFtpWyJkZWZhdWx0Il0uZnVuYywgaVsiZGVmYXVsdCJdLmFycmF5T2YoaVsiZGVmYXVsdCJdLmZ1bmMpXSksCiAgICAgICAgICAgICAgICAgICAgRSA9IFsib25DcmVhdGUiLCAib25EZXN0cm95Il0sCiAgICAgICAgICAgICAgICAgICAgQyA9IGlbImRlZmF1bHQiXS5mdW5jLAogICAgICAgICAgICAgICAgICAgIFMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIGcoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfShzLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIHIsIGkgPSB2KHMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSh0aGlzLCBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoLCBuID0gbmV3IEFycmF5KHQpLCByID0gMDsgciA8IHQ7IHIrKykgbltyXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfKHcoZSA9IGkuY2FsbC5hcHBseShpLCBbdGhpc10uY29uY2F0KG4pKSksICJjcmVhdGVGbGF0cGlja3JJbnN0YW5jZSIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubm9kZS5ibHVyICYmIGUubm9kZS5ibHVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvcHMub3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGoodCwgZS5wcm9wcyksIGUuZmxhdHBpY2tyID0gKDAsIGFbImRlZmF1bHQiXSkoZS5ub2RlLCB0KSwgZS5wcm9wcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKSAmJiBlLmZsYXRwaWNrci5zZXREYXRlKGUucHJvcHMudmFsdWUsICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUucHJvcHMub25DcmVhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAmJiBuKGUuZmxhdHBpY2tyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBfKHcoZSksICJkZXN0cm95RmxhdHBpY2tySW5zdGFuY2UiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnByb3BzLm9uRGVzdHJveTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ICYmIHQoZS5mbGF0cGlja3IpLCBlLmZsYXRwaWNrci5kZXN0cm95KCksIGUuZmxhdHBpY2tyID0gbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBfKHcoZSksICJoYW5kbGVOb2RlQ2hhbmdlIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm5vZGUgPSB0LCBlLmZsYXRwaWNrciAmJiAoZS5kZXN0cm95RmxhdHBpY2tySW5zdGFuY2UoKSwgZS5jcmVhdGVGbGF0cGlja3JJbnN0YW5jZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPSBzLCAobiA9IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjb21wb25lbnREaWRVcGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucHJvcHMub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUub3B0aW9uczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gaih0LCB0aGlzLnByb3BzKSwgbiA9IGoobiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLCBvID0gci5sZW5ndGggLSAxOyBvID49IDA7IG8tLSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHJbb10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAhPT0gbltpXSAmJiAoLTEgPT09IHguaW5kZXhPZihpKSB8fCBBcnJheS5pc0FycmF5KGEpIHx8IChhID0gW2FdKSwgdGhpcy5mbGF0cGlja3Iuc2V0KGksIGEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0hdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKSB8fCB0aGlzLnByb3BzLnZhbHVlICYmIEFycmF5LmlzQXJyYXkodGhpcy5wcm9wcy52YWx1ZSkgJiYgZS52YWx1ZSAmJiBBcnJheS5pc0FycmF5KGUudmFsdWUpICYmIHRoaXMucHJvcHMudmFsdWUuZXZlcnkoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtuXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSB8fCB0aGlzLnByb3BzLnZhbHVlID09PSBlLnZhbHVlIHx8IHRoaXMuZmxhdHBpY2tyLnNldERhdGUodGhpcy5wcm9wcy52YWx1ZSwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudERpZE1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZsYXRwaWNrckluc3RhbmNlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY29tcG9uZW50V2lsbFVubW91bnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveUZsYXRwaWNrckluc3RhbmNlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMucHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmRlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUudmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmNoaWxkcmVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5yZW5kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBkKGUsIFsib3B0aW9ucyIsICJkZWZhdWx0VmFsdWUiLCAidmFsdWUiLCAiY2hpbGRyZW4iLCAicmVuZGVyIl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNbZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIEUuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc1tlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYSA/IGEoaChoKHt9LCBzKSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmhhbmRsZU5vZGVDaGFuZ2UpIDogdC53cmFwID8gb1siZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImRpdiIsIGYoe30sIHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiB0aGlzLmhhbmRsZU5vZGVDaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaSkgOiBvWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgiaW5wdXQiLCBmKHt9LCBzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiB0aGlzLmhhbmRsZU5vZGVDaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0pICYmIHkodC5wcm90b3R5cGUsIG4pLCByICYmIHkodCwgciksIHMKICAgICAgICAgICAgICAgICAgICB9KG8uQ29tcG9uZW50KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBqKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGgoe30sIGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB4LmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuaGFzT3duUHJvcGVydHkoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbltlXSAmJiAhQXJyYXkuaXNBcnJheShuW2VdKSA/IG5bZV0gPSBbbltlXV0gOiBuW2VdIHx8IChuW2VdID0gW10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBBcnJheS5pc0FycmF5KHRbZV0pID8gdFtlXSA6IFt0W2VdXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyID0gbltlXSkucHVzaC5hcHBseShyLCBsKG8pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfKFMsICJwcm9wVHlwZXMiLCB7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBpWyJkZWZhdWx0Il0uc3RyaW5nLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGlbImRlZmF1bHQiXS5vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGssCiAgICAgICAgICAgICAgICAgICAgb25PcGVuOiBrLAogICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U6IGssCiAgICAgICAgICAgICAgICAgICAgb25Nb250aENoYW5nZTogaywKICAgICAgICAgICAgICAgICAgICBvblllYXJDaGFuZ2U6IGssCiAgICAgICAgICAgICAgICAgICAgb25SZWFkeTogaywKICAgICAgICAgICAgICAgICAgICBvblZhbHVlVXBkYXRlOiBrLAogICAgICAgICAgICAgICAgICAgIG9uRGF5Q3JlYXRlOiBrLAogICAgICAgICAgICAgICAgICAgIG9uQ3JlYXRlOiBDLAogICAgICAgICAgICAgICAgICAgIG9uRGVzdHJveTogQywKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaVsiZGVmYXVsdCJdLm9uZU9mVHlwZShbaVsiZGVmYXVsdCJdLnN0cmluZywgaVsiZGVmYXVsdCJdLmFycmF5LCBpWyJkZWZhdWx0Il0ub2JqZWN0LCBpWyJkZWZhdWx0Il0ubnVtYmVyXSksCiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGlbImRlZmF1bHQiXS5ub2RlLAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogaVsiZGVmYXVsdCJdLnN0cmluZywKICAgICAgICAgICAgICAgICAgICByZW5kZXI6IGlbImRlZmF1bHQiXS5mdW5jCiAgICAgICAgICAgICAgICB9KSwgXyhTLCAiZGVmYXVsdFByb3BzIiwgewogICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHt9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBQID0gUzsKICAgICAgICAgICAgICAgIHQuWiA9IFAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzkxNDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDE7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiBuKSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobiwgcikgJiYgKGVbcl0gPSBuW3JdKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICBpID0gbig3MzYzKSwKICAgICAgICAgICAgICAgICAgICBhID0gdShpKSwKICAgICAgICAgICAgICAgICAgICBzID0gdShuKDU2OTcpKTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogImhpZGRlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICJzY3JvbGwiLAogICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiAicHJlIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYyA9IFsiZXh0cmFXaWR0aCIsICJpbmplY3RTdHlsZXMiLCAiaW5wdXRDbGFzc05hbWUiLCAiaW5wdXRSZWYiLCAiaW5wdXRTdHlsZSIsICJtaW5XaWR0aCIsICJvbkF1dG9zaXplIiwgInBsYWNlaG9sZGVySXNNaW5XaWR0aCJdLAogICAgICAgICAgICAgICAgICAgIGYgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc3R5bGUuZm9udFNpemUgPSBlLmZvbnRTaXplLCB0LnN0eWxlLmZvbnRGYW1pbHkgPSBlLmZvbnRGYW1pbHksIHQuc3R5bGUuZm9udFdlaWdodCA9IGUuZm9udFdlaWdodCwgdC5zdHlsZS5mb250U3R5bGUgPSBlLmZvbnRTdHlsZSwgdC5zdHlsZS5sZXR0ZXJTcGFjaW5nID0gZS5sZXR0ZXJTcGFjaW5nLCB0LnN0eWxlLnRleHRUcmFuc2Zvcm0gPSBlLnRleHRUcmFuc2Zvcm0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGQgPSAhKCJ1bmRlZmluZWQiID09IHR5cGVvZiB3aW5kb3cgfHwgIXdpbmRvdy5uYXZpZ2F0b3IpICYmIC9NU0lFIHxUcmlkZW50XC98RWRnZVwvLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSwKICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkID8gIl8iICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDEyKSA6IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5pbnB1dFJlZiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmlucHV0ID0gZSwgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygbi5wcm9wcy5pbnB1dFJlZiAmJiBuLnByb3BzLmlucHV0UmVmKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnBsYWNlSG9sZGVyU2l6ZXJSZWYgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5wbGFjZUhvbGRlclNpemVyID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5zaXplclJlZiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNpemVyID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5zdGF0ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpZHRoOiBlLm1pbldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0SWQ6IGUuaWQgfHwgcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZJZDogZS5pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgbyh0LCBudWxsLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmlkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICE9PSB0LnByZXZJZCA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRJZDogbiB8fCBwKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZJZDogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgbyh0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY29tcG9uZW50RGlkTW91bnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW91bnRlZCA9ICEwLCB0aGlzLmNvcHlJbnB1dFN0eWxlcygpLCB0aGlzLnVwZGF0ZUlucHV0V2lkdGgoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjb21wb25lbnREaWRVcGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmlucHV0V2lkdGggIT09IHRoaXMuc3RhdGUuaW5wdXRXaWR0aCAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB0aGlzLnByb3BzLm9uQXV0b3NpemUgJiYgdGhpcy5wcm9wcy5vbkF1dG9zaXplKHRoaXMuc3RhdGUuaW5wdXRXaWR0aCksIHRoaXMudXBkYXRlSW5wdXRXaWR0aCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudFdpbGxVbm1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdW50ZWQgPSAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjb3B5SW5wdXRTdHlsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdW50ZWQgJiYgd2luZG93LmdldENvbXB1dGVkU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmlucHV0ICYmIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuaW5wdXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICYmIChmKGUsIHRoaXMuc2l6ZXIpLCB0aGlzLnBsYWNlSG9sZGVyU2l6ZXIgJiYgZihlLCB0aGlzLnBsYWNlSG9sZGVyU2l6ZXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlSW5wdXRXaWR0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW91bnRlZCAmJiB0aGlzLnNpemVyICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiB0aGlzLnNpemVyLnNjcm9sbFdpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5wcm9wcy5wbGFjZWhvbGRlciAmJiAoIXRoaXMucHJvcHMudmFsdWUgfHwgdGhpcy5wcm9wcy52YWx1ZSAmJiB0aGlzLnByb3BzLnBsYWNlaG9sZGVySXNNaW5XaWR0aCkgPyBNYXRoLm1heCh0aGlzLnNpemVyLnNjcm9sbFdpZHRoLCB0aGlzLnBsYWNlSG9sZGVyU2l6ZXIuc2Nyb2xsV2lkdGgpICsgMiA6IHRoaXMuc2l6ZXIuc2Nyb2xsV2lkdGggKyAyLCAoZSArPSAibnVtYmVyIiA9PT0gdGhpcy5wcm9wcy50eXBlICYmIHRoaXMucHJvcHMuZXh0cmFXaWR0aCA9PT0gdW5kZWZpbmVkID8gMTYgOiBwYXJzZUludCh0aGlzLnByb3BzLmV4dHJhV2lkdGgpIHx8IDApIDwgdGhpcy5wcm9wcy5taW5XaWR0aCAmJiAoZSA9IHRoaXMucHJvcHMubWluV2lkdGgpLCBlICE9PSB0aGlzLnN0YXRlLmlucHV0V2lkdGggJiYgdGhpcy5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpZHRoOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJnZXRJbnB1dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9jdXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJibHVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmJsdXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJzZWxlY3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQuc2VsZWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVyU3R5bGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMucHJvcHMuaW5qZWN0U3R5bGVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkICYmIGUgPyBhWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgic3R5bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2h0bWw6ICJpbnB1dCMiICsgdGhpcy5zdGF0ZS5pbnB1dElkICsgIjo6LW1zLWNsZWFyIHtkaXNwbGF5OiBub25lO30iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IFt0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSwgdGhpcy5wcm9wcy52YWx1ZSwgIiJdLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGUgJiYgZSAhPT0gdW5kZWZpbmVkID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gcih7fSwgdGhpcy5wcm9wcy5zdHlsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5kaXNwbGF5IHx8ICh0LmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveFNpemluZzogImNvbnRlbnQtYm94IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLnN0YXRlLmlucHV0V2lkdGggKyAicHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucHJvcHMuaW5wdXRTdHlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiBlKSB0LmluZGV4T2YocikgPj0gMCB8fCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwgcikgJiYgKG5bcl0gPSBlW3JdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcy5wcm9wcywgW10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZSBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0obyksIG8uY2xhc3NOYW1lID0gdGhpcy5wcm9wcy5pbnB1dENsYXNzTmFtZSwgby5pZCA9IHRoaXMuc3RhdGUuaW5wdXRJZCwgby5zdHlsZSA9IG4sIGFbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy5wcm9wcy5jbGFzc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5yZW5kZXJTdHlsZXMoKSwgYVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImlucHV0Iiwgcih7fSwgbywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IHRoaXMuaW5wdXRSZWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGFbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogdGhpcy5zaXplclJlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlKSwgdGhpcy5wcm9wcy5wbGFjZWhvbGRlciA/IGFbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogdGhpcy5wbGFjZUhvbGRlclNpemVyUmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucHJvcHMucGxhY2Vob2xkZXIpIDogbnVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgfShpLkNvbXBvbmVudCk7CiAgICAgICAgICAgICAgICBoLnByb3BUeXBlcyA9IHsKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHNbImRlZmF1bHQiXS5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBzWyJkZWZhdWx0Il0uYW55LAogICAgICAgICAgICAgICAgICAgIGV4dHJhV2lkdGg6IHNbImRlZmF1bHQiXS5vbmVPZlR5cGUoW3NbImRlZmF1bHQiXS5udW1iZXIsIHNbImRlZmF1bHQiXS5zdHJpbmddKSwKICAgICAgICAgICAgICAgICAgICBpZDogc1siZGVmYXVsdCJdLnN0cmluZywKICAgICAgICAgICAgICAgICAgICBpbmplY3RTdHlsZXM6IHNbImRlZmF1bHQiXS5ib29sLAogICAgICAgICAgICAgICAgICAgIGlucHV0Q2xhc3NOYW1lOiBzWyJkZWZhdWx0Il0uc3RyaW5nLAogICAgICAgICAgICAgICAgICAgIGlucHV0UmVmOiBzWyJkZWZhdWx0Il0uZnVuYywKICAgICAgICAgICAgICAgICAgICBpbnB1dFN0eWxlOiBzWyJkZWZhdWx0Il0ub2JqZWN0LAogICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBzWyJkZWZhdWx0Il0ub25lT2ZUeXBlKFtzWyJkZWZhdWx0Il0ubnVtYmVyLCBzWyJkZWZhdWx0Il0uc3RyaW5nXSksCiAgICAgICAgICAgICAgICAgICAgb25BdXRvc2l6ZTogc1siZGVmYXVsdCJdLmZ1bmMsCiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHNbImRlZmF1bHQiXS5mdW5jLAogICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBzWyJkZWZhdWx0Il0uc3RyaW5nLAogICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVySXNNaW5XaWR0aDogc1siZGVmYXVsdCJdLmJvb2wsCiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHNbImRlZmF1bHQiXS5vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNbImRlZmF1bHQiXS5hbnkKICAgICAgICAgICAgICAgIH0sIGguZGVmYXVsdFByb3BzID0gewogICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgIGluamVjdFN0eWxlczogITAKICAgICAgICAgICAgICAgIH0sIHQuWiA9IGgKICAgICAgICAgICAgfSwKICAgICAgICAgICAgOTMyMjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgciwgbyA9IG4oMzI4OCksCiAgICAgICAgICAgICAgICAgICAgaSA9IChyID0gbykgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IGlbImRlZmF1bHQiXSwgZS5leHBvcnRzID0gdFsiZGVmYXVsdCJdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDMyMDM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gewogICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRyYWNrOiAiaW5wdXQtcmFuZ2VfX3RyYWNrIGlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZElucHV0UmFuZ2U6ICJpbnB1dC1yYW5nZSBpbnB1dC1yYW5nZS0tZGlzYWJsZWQiLAogICAgICAgICAgICAgICAgICAgIGlucHV0UmFuZ2U6ICJpbnB1dC1yYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgbGFiZWxDb250YWluZXI6ICJpbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICBtYXhMYWJlbDogImlucHV0LXJhbmdlX19sYWJlbCBpbnB1dC1yYW5nZV9fbGFiZWwtLW1heCIsCiAgICAgICAgICAgICAgICAgICAgbWluTGFiZWw6ICJpbnB1dC1yYW5nZV9fbGFiZWwgaW5wdXQtcmFuZ2VfX2xhYmVsLS1taW4iLAogICAgICAgICAgICAgICAgICAgIHNsaWRlcjogImlucHV0LXJhbmdlX19zbGlkZXIiLAogICAgICAgICAgICAgICAgICAgIHNsaWRlckNvbnRhaW5lcjogImlucHV0LXJhbmdlX19zbGlkZXItY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICB0cmFjazogImlucHV0LXJhbmdlX190cmFjayBpbnB1dC1yYW5nZV9fdHJhY2stLWJhY2tncm91bmQiLAogICAgICAgICAgICAgICAgICAgIHZhbHVlTGFiZWw6ICJpbnB1dC1yYW5nZV9fbGFiZWwgaW5wdXQtcmFuZ2VfX2xhYmVsLS12YWx1ZSIKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICAzMjg4OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgIGkgPSBnKG4oNzM2MykpLAogICAgICAgICAgICAgICAgICAgIGEgPSBnKG4oNTY5NykpLAogICAgICAgICAgICAgICAgICAgIHMgPSBnKG4oNjUyMSkpLAogICAgICAgICAgICAgICAgICAgIHUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlICYmIGUuX19lc01vZHVsZSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIGUpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCBuKSAmJiAodFtuXSA9IGVbbl0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFsiZGVmYXVsdCJdID0gZSwgdAogICAgICAgICAgICAgICAgICAgIH0obigzMjMyKSksCiAgICAgICAgICAgICAgICAgICAgbCA9IGcobigzMjAzKSksCiAgICAgICAgICAgICAgICAgICAgYyA9IGcobig5MTkxKSksCiAgICAgICAgICAgICAgICAgICAgZiA9IGcobigyODA3KSksCiAgICAgICAgICAgICAgICAgICAgZCA9IGcobigyMDk3KSksCiAgICAgICAgICAgICAgICAgICAgcCA9IGcobigyNzM3KSksCiAgICAgICAgICAgICAgICAgICAgaCA9IGcobig3NTIpKSwKICAgICAgICAgICAgICAgICAgICBtID0gbig4MzAyKSwKICAgICAgICAgICAgICAgICAgICB5ID0gbig2ODc4KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBnKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gdihlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpW2VdID0gcltlXQogICAgICAgICAgICAgICAgICAgIH0pKSwgaS5lbnVtZXJhYmxlID0gISFpLmVudW1lcmFibGUsIGkuY29uZmlndXJhYmxlID0gISFpLmNvbmZpZ3VyYWJsZSwgKCJ2YWx1ZSIgaW4gaSB8fCBpLmluaXRpYWxpemVyKSAmJiAoaS53cml0YWJsZSA9ICEwKSwgaSA9IG4uc2xpY2UoKS5yZXZlcnNlKCkucmVkdWNlKChmdW5jdGlvbihuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByKGUsIHQsIG4pIHx8IG4KICAgICAgICAgICAgICAgICAgICB9KSwgaSksIG8gJiYgdm9pZCAwICE9PSBpLmluaXRpYWxpemVyICYmIChpLnZhbHVlID0gaS5pbml0aWFsaXplciA/IGkuaW5pdGlhbGl6ZXIuY2FsbChvKSA6IHZvaWQgMCwgaS5pbml0aWFsaXplciA9IHVuZGVmaW5lZCksIHZvaWQgMCA9PT0gaS5pbml0aWFsaXplciAmJiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIGkpLCBpID0gbnVsbCksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBiID0gKHYoKHIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc3RhcnRWYWx1ZSA9IG51bGwsIG4ubm9kZSA9IG51bGwsIG4udHJhY2tOb2RlID0gbnVsbCwgbi5pc1NsaWRlckRyYWdnaW5nID0gITEsIG4ubGFzdEtleU1vdmVkID0gbnVsbCwgbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgbyh0LCBudWxsLCBbewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJwcm9wVHlwZXMiLAogICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1NhbWVWYWx1ZXM6IGFbImRlZmF1bHQiXS5ib29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbGxlZGJ5OiBhWyJkZWZhdWx0Il0uc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFDb250cm9sczogYVsiZGVmYXVsdCJdLnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBhWyJkZWZhdWx0Il0ub2JqZWN0T2YoYVsiZGVmYXVsdCJdLnN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGFbImRlZmF1bHQiXS5ib29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZVRyYWNrOiBhWyJkZWZhdWx0Il0uYm9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRMYWJlbDogYVsiZGVmYXVsdCJdLmZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmFsdWU6IGZbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5WYWx1ZTogZlsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFbImRlZmF1bHQiXS5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VTdGFydDogYVsiZGVmYXVsdCJdLmZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGFbImRlZmF1bHQiXS5mdW5jLmlzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb21wbGV0ZTogYVsiZGVmYXVsdCJdLmZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcDogYVsiZGVmYXVsdCJdLm51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZFsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImRlZmF1bHRQcm9wcyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93U2FtZVZhbHVlczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogbFsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZTogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluVmFsdWU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcDogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfV0pLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudFdpbGxVbm1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVEb2N1bWVudE1vdXNlVXBMaXN0ZW5lcigpLCB0aGlzLnJlbW92ZURvY3VtZW50VG91Y2hFbmRMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldENvbXBvbmVudENsYXNzTmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmRpc2FibGVkID8gdGhpcy5wcm9wcy5jbGFzc05hbWVzLmRpc2FibGVkSW5wdXRSYW5nZSA6IHRoaXMucHJvcHMuY2xhc3NOYW1lcy5pbnB1dFJhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldFRyYWNrQ2xpZW50UmVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYWNrTm9kZS5nZXRDbGllbnRSZWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0S2V5QnlQb3NpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHUuZ2V0VmFsdWVGcm9tUHJvcHModGhpcy5wcm9wcywgdGhpcy5pc011bHRpVmFsdWUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHUuZ2V0UG9zaXRpb25zRnJvbVZhbHVlcyh0LCB0aGlzLnByb3BzLm1pblZhbHVlLCB0aGlzLnByb3BzLm1heFZhbHVlLCB0aGlzLmdldFRyYWNrQ2xpZW50UmVjdCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTXVsdGlWYWx1ZSgpICYmICgwLCBtLmRpc3RhbmNlVG8pKGUsIG4ubWluKSA8ICgwLCBtLmRpc3RhbmNlVG8pKGUsIG4ubWF4KSkgcmV0dXJuICJtaW4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtYXgiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldEtleXMiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc011bHRpVmFsdWUoKSA/IFsibWluIiwgIm1heCJdIDogWyJtYXgiXQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYXNTdGVwRGlmZmVyZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHUuZ2V0VmFsdWVGcm9tUHJvcHModGhpcy5wcm9wcywgdGhpcy5pc011bHRpVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG0ubGVuZ3RoKShlLm1pbiwgdC5taW4pID49IHRoaXMucHJvcHMuc3RlcCB8fCAoMCwgbS5sZW5ndGgpKGUubWF4LCB0Lm1heCkgPj0gdGhpcy5wcm9wcy5zdGVwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImlzTXVsdGlWYWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbS5pc09iamVjdCkodGhpcy5wcm9wcy52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaXNXaXRoaW5SYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc011bHRpVmFsdWUoKSA/IGUubWluID49IHRoaXMucHJvcHMubWluVmFsdWUgJiYgZS5tYXggPD0gdGhpcy5wcm9wcy5tYXhWYWx1ZSAmJiB0aGlzLnByb3BzLmFsbG93U2FtZVZhbHVlcyA/IGUubWluIDw9IGUubWF4IDogZS5taW4gPCBlLm1heCA6IGUubWF4ID49IHRoaXMucHJvcHMubWluVmFsdWUgJiYgZS5tYXggPD0gdGhpcy5wcm9wcy5tYXhWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJzaG91bGRVcGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNXaXRoaW5SYW5nZShlKSAmJiB0aGlzLmhhc1N0ZXBEaWZmZXJlbmNlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZVBvc2l0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdS5nZXRWYWx1ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0aGlzLmlzTXVsdGlWYWx1ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdS5nZXRQb3NpdGlvbnNGcm9tVmFsdWVzKG4sIHRoaXMucHJvcHMubWluVmFsdWUsIHRoaXMucHJvcHMubWF4VmFsdWUsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcltlXSA9IHQsIHRoaXMubGFzdEtleU1vdmVkID0gZSwgdGhpcy51cGRhdGVQb3NpdGlvbnMocikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlUG9zaXRpb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IHUuZ2V0VmFsdWVGcm9tUG9zaXRpb24oZS5taW4sIHRoaXMucHJvcHMubWluVmFsdWUsIHRoaXMucHJvcHMubWF4VmFsdWUsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHUuZ2V0VmFsdWVGcm9tUG9zaXRpb24oZS5tYXgsIHRoaXMucHJvcHMubWluVmFsdWUsIHRoaXMucHJvcHMubWF4VmFsdWUsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IHUuZ2V0U3RlcFZhbHVlRnJvbVZhbHVlKHQubWluLCB0aGlzLnByb3BzLnN0ZXApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHUuZ2V0U3RlcFZhbHVlRnJvbVZhbHVlKHQubWF4LCB0aGlzLnByb3BzLnN0ZXApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWVzKG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZVZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdS5nZXRWYWx1ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0aGlzLmlzTXVsdGlWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bZV0gPSB0LCB0aGlzLnVwZGF0ZVZhbHVlcyhuKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ1cGRhdGVWYWx1ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG91bGRVcGRhdGUoZSkgJiYgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLmlzTXVsdGlWYWx1ZSgpID8gZSA6IGUubWF4KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbmNyZW1lbnRWYWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHUuZ2V0VmFsdWVGcm9tUHJvcHModGhpcy5wcm9wcywgdGhpcy5pc011bHRpVmFsdWUoKSlbZV0gKyB0aGlzLnByb3BzLnN0ZXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImRlY3JlbWVudFZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdS5nZXRWYWx1ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0aGlzLmlzTXVsdGlWYWx1ZSgpKVtlXSAtIHRoaXMucHJvcHMuc3RlcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50TW91c2VVcExpc3RlbmVyKCksIHRoaXMubm9kZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLmhhbmRsZU1vdXNlVXApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZERvY3VtZW50VG91Y2hFbmRMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRUb3VjaEVuZExpc3RlbmVyKCksIHRoaXMubm9kZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdGhpcy5oYW5kbGVUb3VjaEVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5oYW5kbGVNb3VzZVVwKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW1vdmVEb2N1bWVudFRvdWNoRW5kTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRoaXMuaGFuZGxlVG91Y2hFbmQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVNsaWRlckRyYWciLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB1LmdldFBvc2l0aW9uRnJvbUV2ZW50KGUsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTbGlkZXJEcmFnZ2luZyA9ICEwLCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi51cGRhdGVQb3NpdGlvbih0LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVUcmFja0RyYWciLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkICYmIHRoaXMucHJvcHMuZHJhZ2dhYmxlVHJhY2sgJiYgIXRoaXMuaXNTbGlkZXJEcmFnZ2luZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4ubWF4VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLm1pblZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkubWF4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5taW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1LmdldFBvc2l0aW9uRnJvbUV2ZW50KGUsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdS5nZXRWYWx1ZUZyb21Qb3NpdGlvbihsLCBvLCByLCB0aGlzLmdldFRyYWNrQ2xpZW50UmVjdCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHUuZ2V0U3RlcFZhbHVlRnJvbVZhbHVlKGMsIHRoaXMucHJvcHMuc3RlcCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB1LmdldFBvc2l0aW9uRnJvbUV2ZW50KHQsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gdS5nZXRWYWx1ZUZyb21Qb3NpdGlvbihkLCBvLCByLCB0aGlzLmdldFRyYWNrQ2xpZW50UmVjdCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHUuZ2V0U3RlcFZhbHVlRnJvbVZhbHVlKHAsIHRoaXMucHJvcHMuc3RlcCkgLSBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluOiBzIC0gaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogYSAtIGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlcyhtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVTbGlkZXJLZXlEb3duIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wcm9wcy5kaXNhYmxlZCkgc3dpdGNoIChlLmtleUNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHkuTEVGVF9BUlJPVzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHkuRE9XTl9BUlJPVzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpLCB0aGlzLmRlY3JlbWVudFZhbHVlKHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHkuUklHSFRfQVJST1c6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB5LlVQX0FSUk9XOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuaW5jcmVtZW50VmFsdWUodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlVHJhY2tNb3VzZURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnByb3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi5tYXhWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4ubWluVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5tYXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLm1pbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB1LmdldFZhbHVlRnJvbVBvc2l0aW9uKHQsIG8sIHIsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdS5nZXRTdGVwVmFsdWVGcm9tVmFsdWUobCwgdGhpcy5wcm9wcy5zdGVwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIXRoaXMucHJvcHMuZHJhZ2dhYmxlVHJhY2sgfHwgYyA+IGEgfHwgYyA8IHMpICYmIHRoaXMudXBkYXRlUG9zaXRpb24odGhpcy5nZXRLZXlCeVBvc2l0aW9uKHQpLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVJbnRlcmFjdGlvblN0YXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZVN0YXJ0ICYmIHRoaXMucHJvcHMub25DaGFuZ2VTdGFydCh0aGlzLnByb3BzLnZhbHVlKSwgdGhpcy5wcm9wcy5vbkNoYW5nZUNvbXBsZXRlICYmICEoMCwgbS5pc0RlZmluZWQpKHRoaXMuc3RhcnRWYWx1ZSkgJiYgKHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMucHJvcHMudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUludGVyYWN0aW9uRW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NsaWRlckRyYWdnaW5nICYmICh0aGlzLmlzU2xpZGVyRHJhZ2dpbmcgPSAhMSksIHRoaXMucHJvcHMub25DaGFuZ2VDb21wbGV0ZSAmJiAoMCwgbS5pc0RlZmluZWQpKHRoaXMuc3RhcnRWYWx1ZSkgJiYgKHRoaXMuc3RhcnRWYWx1ZSAhPT0gdGhpcy5wcm9wcy52YWx1ZSAmJiB0aGlzLnByb3BzLm9uQ2hhbmdlQ29tcGxldGUodGhpcy5wcm9wcy52YWx1ZSksIHRoaXMuc3RhcnRWYWx1ZSA9IG51bGwpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUtleURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcmFjdGlvblN0YXJ0KGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUtleVVwIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25FbmQoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlTW91c2VEb3duIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25TdGFydChlKSwgdGhpcy5hZGREb2N1bWVudE1vdXNlVXBMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZU1vdXNlVXAiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcmFjdGlvbkVuZChlKSwgdGhpcy5yZW1vdmVEb2N1bWVudE1vdXNlVXBMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVRvdWNoU3RhcnQiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcmFjdGlvblN0YXJ0KGUpLCB0aGlzLmFkZERvY3VtZW50VG91Y2hFbmRMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVRvdWNoRW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25FbmQoZSksIHRoaXMucmVtb3ZlRG9jdW1lbnRUb3VjaEVuZExpc3RlbmVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVyU2xpZGVycyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdS5nZXRWYWx1ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0aGlzLmlzTXVsdGlWYWx1ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdS5nZXRQZXJjZW50YWdlc0Zyb21WYWx1ZXModCwgdGhpcy5wcm9wcy5taW5WYWx1ZSwgdGhpcy5wcm9wcy5tYXhWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMucHJvcHMuYWxsb3dTYW1lVmFsdWVzICYmICJtaW4iID09PSB0aGlzLmxhc3RLZXlNb3ZlZCA/IHRoaXMuZ2V0S2V5cygpLnJldmVyc2UoKSA6IHRoaXMuZ2V0S2V5cygpKS5tYXAoKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRbcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuW3JdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMubWF4VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzLm1pblZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibWluIiA9PT0gciA/IHUgPSB0Lm1heCA6IGwgPSB0Lm1pbiwgaVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQocFsiZGVmYXVsdCJdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbGxlZGJ5OiBlLnByb3BzLmFyaWFMYWJlbGxlZGJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhQ29udHJvbHM6IGUucHJvcHMuYXJpYUNvbnRyb2xzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBlLnByb3BzLmNsYXNzTmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdExhYmVsOiBlLnByb3BzLmZvcm1hdExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFZhbHVlOiB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5WYWx1ZTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TbGlkZXJEcmFnOiBlLmhhbmRsZVNsaWRlckRyYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2xpZGVyS2V5RG93bjogZS5oYW5kbGVTbGlkZXJLZXlEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50YWdlOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVySGlkZGVuSW5wdXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLm5hbWUpIHJldHVybiBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5pc011bHRpVmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdS5nZXRWYWx1ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEtleXMoKS5tYXAoKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG5bcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0ID8gIiIgKyBlLnByb3BzLm5hbWUgKyAoMCwgbS5jYXB0aWFsaXplKShyKSA6IGUucHJvcHMubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImlucHV0IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJoaWRkZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldENvbXBvbmVudENsYXNzTmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB1LmdldFZhbHVlRnJvbVByb3BzKHRoaXMucHJvcHMsIHRoaXMuaXNNdWx0aVZhbHVlKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB1LmdldFBlcmNlbnRhZ2VzRnJvbVZhbHVlcyhuLCB0aGlzLnByb3BzLm1pblZhbHVlLCB0aGlzLnByb3BzLm1heFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWRpc2FibGVkIjogdGhpcy5wcm9wcy5kaXNhYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5ub2RlID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5VXA6IHRoaXMuaGFuZGxlS2V5VXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd246IHRoaXMuaGFuZGxlTW91c2VEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVG91Y2hTdGFydDogdGhpcy5oYW5kbGVUb3VjaFN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudChjWyJkZWZhdWx0Il0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiB0aGlzLnByb3BzLmNsYXNzTmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0TGFiZWw6IHRoaXMucHJvcHMuZm9ybWF0TGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIm1pbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucHJvcHMubWluVmFsdWUpLCBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudChoWyJkZWZhdWx0Il0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiB0aGlzLnByb3BzLmNsYXNzTmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlVHJhY2s6IHRoaXMucHJvcHMuZHJhZ2dhYmxlVHJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudHJhY2tOb2RlID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZXM6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja0RyYWc6IHRoaXMuaGFuZGxlVHJhY2tEcmFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tNb3VzZURvd246IHRoaXMuaGFuZGxlVHJhY2tNb3VzZURvd24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucmVuZGVyU2xpZGVycygpKSwgaVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoY1siZGVmYXVsdCJdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogdGhpcy5wcm9wcy5jbGFzc05hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdExhYmVsOiB0aGlzLnByb3BzLmZvcm1hdExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJtYXgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnByb3BzLm1heFZhbHVlKSwgdGhpcy5yZW5kZXJIaWRkZW5JbnB1dHMoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgfShpWyJkZWZhdWx0Il0uQ29tcG9uZW50KSkucHJvdG90eXBlLCAiaGFuZGxlU2xpZGVyRHJhZyIsIFtzWyJkZWZhdWx0Il1dLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLCAiaGFuZGxlU2xpZGVyRHJhZyIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVUcmFja0RyYWciLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZVRyYWNrRHJhZyIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVTbGlkZXJLZXlEb3duIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVTbGlkZXJLZXlEb3duIiksIHIucHJvdG90eXBlKSwgdihyLnByb3RvdHlwZSwgImhhbmRsZVRyYWNrTW91c2VEb3duIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVUcmFja01vdXNlRG93biIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVJbnRlcmFjdGlvblN0YXJ0IiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVJbnRlcmFjdGlvblN0YXJ0IiksIHIucHJvdG90eXBlKSwgdihyLnByb3RvdHlwZSwgImhhbmRsZUludGVyYWN0aW9uRW5kIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVJbnRlcmFjdGlvbkVuZCIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVLZXlEb3duIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVLZXlEb3duIiksIHIucHJvdG90eXBlKSwgdihyLnByb3RvdHlwZSwgImhhbmRsZUtleVVwIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVLZXlVcCIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZURvd24iLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZU1vdXNlRG93biIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZVVwIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZVVwIiksIHIucHJvdG90eXBlKSwgdihyLnByb3RvdHlwZSwgImhhbmRsZVRvdWNoU3RhcnQiLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZVRvdWNoU3RhcnQiKSwgci5wcm90b3R5cGUpLCB2KHIucHJvdG90eXBlLCAiaGFuZGxlVG91Y2hFbmQiLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZVRvdWNoRW5kIiksIHIucHJvdG90eXBlKSwgcik7CiAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBiLCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNjg3ODogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB0LkRPV05fQVJST1cgPSA0MCwgdC5MRUZUX0FSUk9XID0gMzcsIHQuUklHSFRfQVJST1cgPSAzOSwgdC5VUF9BUlJPVyA9IDM4CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDkxOTE6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgIH0pLCB0WyJkZWZhdWx0Il0gPSBhOwogICAgICAgICAgICAgICAgdmFyIHIgPSBpKG4oNzM2MykpLAogICAgICAgICAgICAgICAgICAgIG8gPSBpKG4oNTY5NykpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZm9ybWF0TGFiZWwgPyBlLmZvcm1hdExhYmVsKGUuY2hpbGRyZW4sIGUudHlwZSkgOiBlLmNoaWxkcmVuOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgic3BhbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBlLmNsYXNzTmFtZXNbZS50eXBlICsgIkxhYmVsIl0KICAgICAgICAgICAgICAgICAgICB9LCByWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgic3BhbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBlLmNsYXNzTmFtZXMubGFiZWxDb250YWluZXIKICAgICAgICAgICAgICAgICAgICB9LCB0KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGEucHJvcFR5cGVzID0gewogICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBvWyJkZWZhdWx0Il0ubm9kZS5pc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IG9bImRlZmF1bHQiXS5vYmplY3RPZihvWyJkZWZhdWx0Il0uc3RyaW5nKS5pc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgIGZvcm1hdExhYmVsOiBvWyJkZWZhdWx0Il0uZnVuYywKICAgICAgICAgICAgICAgICAgICB0eXBlOiBvWyJkZWZhdWx0Il0uc3RyaW5nLmlzUmVxdWlyZWQKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICAyODA3OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5tYXhWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUubWluVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoMCwgci5pc051bWJlcikobikgfHwgISgwLCByLmlzTnVtYmVyKSh0KSkgcmV0dXJuIG5ldyBFcnJvcignIm1pblZhbHVlIiBhbmQgIm1heFZhbHVlIiBtdXN0IGJlIGEgbnVtYmVyJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4gPj0gdCkgcmV0dXJuIG5ldyBFcnJvcignIm1pblZhbHVlIiBtdXN0IGJlIHNtYWxsZXIgdGhhbiAibWF4VmFsdWUiJykKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODMwMik7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjczNzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICBpID0gbChuKDczNjMpKSwKICAgICAgICAgICAgICAgICAgICBhID0gbChuKDU2OTcpKSwKICAgICAgICAgICAgICAgICAgICBzID0gbChuKDY1MjEpKSwKICAgICAgICAgICAgICAgICAgICB1ID0gbChuKDkxOTEpKTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYyhlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpW2VdID0gcltlXQogICAgICAgICAgICAgICAgICAgIH0pKSwgaS5lbnVtZXJhYmxlID0gISFpLmVudW1lcmFibGUsIGkuY29uZmlndXJhYmxlID0gISFpLmNvbmZpZ3VyYWJsZSwgKCJ2YWx1ZSIgaW4gaSB8fCBpLmluaXRpYWxpemVyKSAmJiAoaS53cml0YWJsZSA9ICEwKSwgaSA9IG4uc2xpY2UoKS5yZXZlcnNlKCkucmVkdWNlKChmdW5jdGlvbihuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByKGUsIHQsIG4pIHx8IG4KICAgICAgICAgICAgICAgICAgICB9KSwgaSksIG8gJiYgdm9pZCAwICE9PSBpLmluaXRpYWxpemVyICYmIChpLnZhbHVlID0gaS5pbml0aWFsaXplciA/IGkuaW5pdGlhbGl6ZXIuY2FsbChvKSA6IHZvaWQgMCwgaS5pbml0aWFsaXplciA9IHVuZGVmaW5lZCksIHZvaWQgMCA9PT0gaS5pbml0aWFsaXplciAmJiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIGkpLCBpID0gbnVsbCksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBmID0gKGMoKHIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ubm9kZSA9IG51bGwsIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgbnVsbCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicHJvcFR5cGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsbGVkYnk6IGFbImRlZmF1bHQiXS5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUNvbnRyb2xzOiBhWyJkZWZhdWx0Il0uc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IGFbImRlZmF1bHQiXS5vYmplY3RPZihhWyJkZWZhdWx0Il0uc3RyaW5nKS5pc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdExhYmVsOiBhWyJkZWZhdWx0Il0uZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZTogYVsiZGVmYXVsdCJdLm51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5WYWx1ZTogYVsiZGVmYXVsdCJdLm51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNsaWRlckRyYWc6IGFbImRlZmF1bHQiXS5mdW5jLmlzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TbGlkZXJLZXlEb3duOiBhWyJkZWZhdWx0Il0uZnVuYy5pc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IGFbImRlZmF1bHQiXS5udW1iZXIuaXNSZXF1aXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBhWyJkZWZhdWx0Il0uc3RyaW5nLmlzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFbImRlZmF1bHQiXS5udW1iZXIuaXNSZXF1aXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfV0pLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudFdpbGxVbm1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVEb2N1bWVudE1vdXNlTW92ZUxpc3RlbmVyKCksIHRoaXMucmVtb3ZlRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIoKSwgdGhpcy5yZW1vdmVEb2N1bWVudFRvdWNoRW5kTGlzdGVuZXIoKSwgdGhpcy5yZW1vdmVEb2N1bWVudFRvdWNoTW92ZUxpc3RlbmVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0U3R5bGUiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDEwMCAqICh0aGlzLnByb3BzLnBlcmNlbnRhZ2UgfHwgMCkgKyAiJSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lcigpLCB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLmhhbmRsZU1vdXNlTW92ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50TW91c2VVcExpc3RlbmVyKCksIHRoaXMubm9kZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLmhhbmRsZU1vdXNlVXApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZERvY3VtZW50VG91Y2hNb3ZlTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50VG91Y2hNb3ZlTGlzdGVuZXIoKSwgdGhpcy5ub2RlLm93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgdGhpcy5oYW5kbGVUb3VjaE1vdmUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZERvY3VtZW50VG91Y2hFbmRMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRUb3VjaEVuZExpc3RlbmVyKCksIHRoaXMubm9kZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdGhpcy5oYW5kbGVUb3VjaEVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuaGFuZGxlTW91c2VNb3ZlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW1vdmVEb2N1bWVudE1vdXNlVXBMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLmhhbmRsZU1vdXNlVXApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbW92ZURvY3VtZW50VG91Y2hNb3ZlTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0aGlzLmhhbmRsZVRvdWNoTW92ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlRG9jdW1lbnRUb3VjaEVuZExpc3RlbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLmhhbmRsZVRvdWNoRW5kKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVNb3VzZURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERvY3VtZW50TW91c2VNb3ZlTGlzdGVuZXIoKSwgdGhpcy5hZGREb2N1bWVudE1vdXNlVXBMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZU1vdXNlVXAiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50TW91c2VNb3ZlTGlzdGVuZXIoKSwgdGhpcy5yZW1vdmVEb2N1bWVudE1vdXNlVXBMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZU1vdXNlTW92ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uU2xpZGVyRHJhZyhlLCB0aGlzLnByb3BzLnR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVRvdWNoU3RhcnQiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERvY3VtZW50VG91Y2hFbmRMaXN0ZW5lcigpLCB0aGlzLmFkZERvY3VtZW50VG91Y2hNb3ZlTGlzdGVuZXIoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVUb3VjaE1vdmUiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblNsaWRlckRyYWcoZSwgdGhpcy5wcm9wcy50eXBlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVUb3VjaEVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRUb3VjaE1vdmVMaXN0ZW5lcigpLCB0aGlzLnJlbW92ZURvY3VtZW50VG91Y2hFbmRMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUtleURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblNsaWRlcktleURvd24oZSwgdGhpcy5wcm9wcy50eXBlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW5kZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0U3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgic3BhbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMucHJvcHMuY2xhc3NOYW1lcy5zbGlkZXJDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubm9kZSA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCh1WyJkZWZhdWx0Il0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiB0aGlzLnByb3BzLmNsYXNzTmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0TGFiZWw6IHRoaXMucHJvcHMuZm9ybWF0TGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInZhbHVlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5wcm9wcy52YWx1ZSksIGlbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWxsZWRieSI6IHRoaXMucHJvcHMuYXJpYUxhYmVsbGVkYnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtY29udHJvbHMiOiB0aGlzLnByb3BzLmFyaWFDb250cm9scywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS12YWx1ZW1heCI6IHRoaXMucHJvcHMubWF4VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtdmFsdWVtaW4iOiB0aGlzLnByb3BzLm1pblZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLXZhbHVlbm93IjogdGhpcy5wcm9wcy52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMucHJvcHMuY2xhc3NOYW1lcy5zbGlkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlOiAiZmFsc2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duOiB0aGlzLmhhbmRsZU1vdXNlRG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRvdWNoU3RhcnQ6IHRoaXMuaGFuZGxlVG91Y2hTdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlOiAic2xpZGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleDogIjAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgfShpWyJkZWZhdWx0Il0uQ29tcG9uZW50KSkucHJvdG90eXBlLCAiaGFuZGxlTW91c2VEb3duIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZURvd24iKSwgci5wcm90b3R5cGUpLCBjKHIucHJvdG90eXBlLCAiaGFuZGxlTW91c2VVcCIsIFtzWyJkZWZhdWx0Il1dLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLCAiaGFuZGxlTW91c2VVcCIpLCByLnByb3RvdHlwZSksIGMoci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZU1vdmUiLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZU1vdXNlTW92ZSIpLCByLnByb3RvdHlwZSksIGMoci5wcm90b3R5cGUsICJoYW5kbGVUb3VjaFN0YXJ0IiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVUb3VjaFN0YXJ0IiksIHIucHJvdG90eXBlKSwgYyhyLnByb3RvdHlwZSwgImhhbmRsZVRvdWNoTW92ZSIsIFtzWyJkZWZhdWx0Il1dLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLCAiaGFuZGxlVG91Y2hNb3ZlIiksIHIucHJvdG90eXBlKSwgYyhyLnByb3RvdHlwZSwgImhhbmRsZVRvdWNoRW5kIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVUb3VjaEVuZCIpLCByLnByb3RvdHlwZSksIGMoci5wcm90b3R5cGUsICJoYW5kbGVLZXlEb3duIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVLZXlEb3duIiksIHIucHJvdG90eXBlKSwgcik7CiAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBmLCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzUyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgIGkgPSB1KG4oNzM2MykpLAogICAgICAgICAgICAgICAgICAgIGEgPSB1KG4oNTY5NykpLAogICAgICAgICAgICAgICAgICAgIHMgPSB1KG4oNjUyMSkpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKGUsIHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhyKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlbZV0gPSByW2VdCiAgICAgICAgICAgICAgICAgICAgfSkpLCBpLmVudW1lcmFibGUgPSAhIWkuZW51bWVyYWJsZSwgaS5jb25maWd1cmFibGUgPSAhIWkuY29uZmlndXJhYmxlLCAoInZhbHVlIiBpbiBpIHx8IGkuaW5pdGlhbGl6ZXIpICYmIChpLndyaXRhYmxlID0gITApLCBpID0gbi5zbGljZSgpLnJldmVyc2UoKS5yZWR1Y2UoKGZ1bmN0aW9uKG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIoZSwgdCwgbikgfHwgbgogICAgICAgICAgICAgICAgICAgIH0pLCBpKSwgbyAmJiB2b2lkIDAgIT09IGkuaW5pdGlhbGl6ZXIgJiYgKGkudmFsdWUgPSBpLmluaXRpYWxpemVyID8gaS5pbml0aWFsaXplci5jYWxsKG8pIDogdm9pZCAwLCBpLmluaXRpYWxpemVyID0gdW5kZWZpbmVkKSwgdm9pZCAwID09PSBpLmluaXRpYWxpemVyICYmIChPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgaSksIGkgPSBudWxsKSwgaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGMgPSAobCgociA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5ub2RlID0gbnVsbCwgbi50cmFja0RyYWdFdmVudCA9IG51bGwsIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgbnVsbCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicHJvcFR5cGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGFbImRlZmF1bHQiXS5ub2RlLmlzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogYVsiZGVmYXVsdCJdLm9iamVjdE9mKGFbImRlZmF1bHQiXS5zdHJpbmcpLmlzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlVHJhY2s6IGFbImRlZmF1bHQiXS5ib29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tEcmFnOiBhWyJkZWZhdWx0Il0uZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNrTW91c2VEb3duOiBhWyJkZWZhdWx0Il0uZnVuYy5pc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VzOiBhWyJkZWZhdWx0Il0ub2JqZWN0T2YoYVsiZGVmYXVsdCJdLm51bWJlcikuaXNSZXF1aXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfV0pLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldENsaWVudFJlY3QiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldEFjdGl2ZVRyYWNrU3R5bGUiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IDEwMCAqICh0aGlzLnByb3BzLnBlcmNlbnRhZ2VzLm1heCAtIHRoaXMucHJvcHMucGVyY2VudGFnZXMubWluKSArICIlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMTAwICogdGhpcy5wcm9wcy5wZXJjZW50YWdlcy5taW4gKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lcigpLCB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLmhhbmRsZU1vdXNlTW92ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50TW91c2VVcExpc3RlbmVyKCksIHRoaXMubm9kZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLmhhbmRsZU1vdXNlVXApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbW92ZURvY3VtZW50TW91c2VNb3ZlTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLmhhbmRsZU1vdXNlTW92ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5oYW5kbGVNb3VzZVVwKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVNb3VzZU1vdmUiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5kcmFnZ2FibGVUcmFjayAmJiAobnVsbCAhPT0gdGhpcy50cmFja0RyYWdFdmVudCAmJiB0aGlzLnByb3BzLm9uVHJhY2tEcmFnKGUsIHRoaXMudHJhY2tEcmFnRXZlbnQpLCB0aGlzLnRyYWNrRHJhZ0V2ZW50ID0gZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlTW91c2VVcCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZHJhZ2dhYmxlVHJhY2sgJiYgKHRoaXMucmVtb3ZlRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lcigpLCB0aGlzLnJlbW92ZURvY3VtZW50TW91c2VVcExpc3RlbmVyKCksIHRoaXMudHJhY2tEcmFnRXZlbnQgPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVNb3VzZURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogKGUudG91Y2hlcyA/IGUudG91Y2hlc1swXS5jbGllbnRYIDogZS5jbGllbnRYKSAtIHRoaXMuZ2V0Q2xpZW50UmVjdCgpLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25UcmFja01vdXNlRG93bihlLCB0KSwgdGhpcy5wcm9wcy5kcmFnZ2FibGVUcmFjayAmJiAodGhpcy5hZGREb2N1bWVudE1vdXNlTW92ZUxpc3RlbmVyKCksIHRoaXMuYWRkRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlVG91Y2hTdGFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuaGFuZGxlTW91c2VEb3duKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbmRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXRBY3RpdmVUcmFja1N0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMucHJvcHMuY2xhc3NOYW1lcy50cmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5oYW5kbGVNb3VzZURvd24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ub3VjaFN0YXJ0OiB0aGlzLmhhbmRsZVRvdWNoU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubm9kZSA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy5wcm9wcy5jbGFzc05hbWVzLmFjdGl2ZVRyYWNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5wcm9wcy5jaGlsZHJlbikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgfShpWyJkZWZhdWx0Il0uQ29tcG9uZW50KSkucHJvdG90eXBlLCAiaGFuZGxlTW91c2VNb3ZlIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZU1vdmUiKSwgci5wcm90b3R5cGUpLCBsKHIucHJvdG90eXBlLCAiaGFuZGxlTW91c2VVcCIsIFtzWyJkZWZhdWx0Il1dLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLCAiaGFuZGxlTW91c2VVcCIpLCByLnByb3RvdHlwZSksIGwoci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZURvd24iLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZU1vdXNlRG93biIpLCByLnByb3RvdHlwZSksIGwoci5wcm90b3R5cGUsICJoYW5kbGVUb3VjaFN0YXJ0IiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVUb3VjaFN0YXJ0IiksIHIucHJvdG90eXBlKSwgcik7CiAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBjLCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjA5NzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUubWF4VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLm1pblZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVt0XTsKICAgICAgICAgICAgICAgICAgICBpZiAoISgoMCwgci5pc051bWJlcikoaSkgfHwgKDAsIHIuaXNPYmplY3QpKGkpICYmICgwLCByLmlzTnVtYmVyKShpLm1pbikgJiYgKDAsIHIuaXNOdW1iZXIpKGkubWF4KSkpIHJldHVybiBuZXcgRXJyb3IoJyInICsgdCArICciIG11c3QgYmUgYSBudW1iZXIgb3IgYSByYW5nZSBvYmplY3QnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoKDAsIHIuaXNOdW1iZXIpKGkpICYmIChpIDwgbyB8fCBpID4gbikpIHJldHVybiBuZXcgRXJyb3IoJyInICsgdCArICciIG11c3QgYmUgaW4gYmV0d2VlbiAibWluVmFsdWUiIGFuZCAibWF4VmFsdWUiJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCgwLCByLmlzT2JqZWN0KShpKSAmJiAoaS5taW4gPCBvIHx8IGkubWluID4gbiB8fCBpLm1heCA8IG8gfHwgaS5tYXggPiBuKSkgcmV0dXJuIG5ldyBFcnJvcignIicgKyB0ICsgJyIgbXVzdCBiZSBpbiBiZXR3ZWVuICJtaW5WYWx1ZSIgYW5kICJtYXhWYWx1ZSInKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHZhciByID0gbig4MzAyKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICAzMjMyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDE7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhcmd1bWVudHNbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gbikgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sIHIpICYmIChlW3JdID0gbltyXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0LmdldFBlcmNlbnRhZ2VGcm9tUG9zaXRpb24gPSBpLCB0LmdldFZhbHVlRnJvbVBvc2l0aW9uID0gZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gaShlLCByKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIChuIC0gdCkgKiBvCiAgICAgICAgICAgICAgICB9LCB0LmdldFZhbHVlRnJvbVByb3BzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0KSByZXR1cm4gcih7fSwgZS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWluOiBlLm1pblZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICBtYXg6IGUudmFsdWUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0LmdldFBlcmNlbnRhZ2VGcm9tVmFsdWUgPSBhLCB0LmdldFBlcmNlbnRhZ2VzRnJvbVZhbHVlcyA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBtaW46IGEoZS5taW4sIHQsIG4pLAogICAgICAgICAgICAgICAgICAgICAgICBtYXg6IGEoZS5tYXgsIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgdC5nZXRQb3NpdGlvbkZyb21WYWx1ZSA9IHMsIHQuZ2V0UG9zaXRpb25zRnJvbVZhbHVlcyA9IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBtaW46IHMoZS5taW4sIHQsIG4sIHIpLAogICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHMoZS5tYXgsIHQsIG4sIHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgdC5nZXRQb3NpdGlvbkZyb21FdmVudCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAoZS50b3VjaGVzID8gZS50b3VjaGVzWzBdIDogZSkuY2xpZW50WDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4OiAoMCwgby5jbGFtcCkociAtIHQubGVmdCwgMCwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0LmdldFN0ZXBWYWx1ZUZyb21WYWx1ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChlIC8gdCkgKiB0CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgdmFyIG8gPSBuKDgzMDIpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC53aWR0aDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS54IC8gbiB8fCAwCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgoMCwgby5jbGFtcCkoZSwgdCwgbikgLSB0KSAvIChuIC0gdCkgfHwgMAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gci53aWR0aDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4OiBhKGUsIHQsIG4pICogbywKICAgICAgICAgICAgICAgICAgICAgICAgeTogMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjkzOTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGUuc2xpY2UoMSkKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICAyNDI2OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChlLCB0KSwgbikKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICA5NTg4OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gTWF0aC5wb3codC54IC0gZS54LCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IE1hdGgucG93KHQueSAtIGUueSwgMik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydChuICsgcikKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICA4MzAyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciByID0gbigyOTM5KTsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiY2FwdGlhbGl6ZSIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhyKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgbyA9IG4oMjQyNik7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgImNsYW1wIiwgewogICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjKG8pWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBpID0gbig5NTg4KTsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiZGlzdGFuY2VUbyIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhpKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgYSA9IG4oMjMzMCk7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgImlzRGVmaW5lZCIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhhKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgcyA9IG4oNDkpOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJpc051bWJlciIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhzKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgdSA9IG4oMTM0NCk7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgImlzT2JqZWN0IiwgewogICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjKHUpWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBsID0gbigxMzU5KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgImxlbmd0aCIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhsKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjMzMDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAhPT0gdW5kZWZpbmVkICYmIG51bGwgIT09IGUKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICA0OTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bWJlciIgPT0gdHlwZW9mIGUKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICAxMzQ0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBuID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBlCiAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiBlLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgZSAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogdHlwZW9mIGUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGUgJiYgIm9iamVjdCIgPT09ICh2b2lkIDAgPT09IGUgPyAidW5kZWZpbmVkIiA6IG4oZSkpCiAgICAgICAgICAgICAgICB9LCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTM1OTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoZSAtIHQpCiAgICAgICAgICAgICAgICB9LCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzU1NTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0ge307CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4ocikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFtyXSkgcmV0dXJuIHRbcl0uZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0W3JdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsIG8sIG8uZXhwb3J0cywgbiksIG8ubCA9ICEwLCBvLmV4cG9ydHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ubSA9IGUsIG4uYyA9IHQsIG4uZCA9IGZ1bmN0aW9uKGUsIHQsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5vKGUsIHQpIHx8IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogcgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIG4uciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBTeW1ib2wudG9TdHJpbmdUYWcgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFN5bWJvbC50b1N0cmluZ1RhZywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICJNb2R1bGUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBuLnQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxICYgdCAmJiAoZSA9IG4oZSkpLCA4ICYgdCkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICg0ICYgdCAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlICYmIGUuX19lc01vZHVsZSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4ucihyKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsICJkZWZhdWx0IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMiAmIHQgJiYgInN0cmluZyIgIT0gdHlwZW9mIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvIGluIGUpIG4uZChyLCBvLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0uYmluZChudWxsLCBvKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICAgICAgfSwgbi5uID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgJiYgZS5fX2VzTW9kdWxlID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmQodCwgImEiLCB0KSwgdAogICAgICAgICAgICAgICAgICAgIH0sIG4ubyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCB0KQogICAgICAgICAgICAgICAgICAgIH0sIG4ucCA9ICIiLCBuKG4ucyA9IDkpCiAgICAgICAgICAgICAgICB9KFtmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gbig3MzYzKQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgICAgIC8qIQogICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDE3IEplZCBXYXRzb24uCiAgICAgICAgICAgICAgICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZQogICAgICAgICAgICAgICAgICAgICAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lcwogICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9Lmhhc093blByb3BlcnR5OwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBbXSwgdCA9IDA7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGFyZ3VtZW50c1t0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHR5cGVvZiByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT09IGkgfHwgIm51bWJlciIgPT09IGkpIGUucHVzaChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyKSAmJiByLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvLmFwcGx5KG51bGwsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAmJiBlLnB1c2goYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgib2JqZWN0IiA9PT0gaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgaW4gcikgbi5jYWxsKHIsIHMpICYmIHJbc10gJiYgZS5wdXNoKHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuam9pbigiICIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID8gKG9bImRlZmF1bHQiXSA9IG8sIGUuZXhwb3J0cyA9IG8pIDogdm9pZCAwID09PSAociA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgICAgICAgICAgICAgfS5hcHBseSh0LCBbXSkpIHx8IChlLmV4cG9ydHMgPSByKQogICAgICAgICAgICAgICAgICAgIH0oKQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gL15ccyt8XHMrJC9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IC9eMGJbMDFdKyQvaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAvXjBvWzAtN10rJC9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHBhcnNlSW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9ICJvYmplY3QiID09IHR5cGVvZiB0ICYmIHQgJiYgdC5PYmplY3QgPT09IE9iamVjdCAmJiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICJvYmplY3QiID09IHR5cGVvZiBzZWxmICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHMgfHwgdSB8fCBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gbC5TeW1ib2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZiA/IGYucHJvdG90eXBlIDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGQgPyBkLnRvU3RyaW5nIDogdm9pZCAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkoZSkpIHJldHVybiBwID8gcC5jYWxsKGUpIDogIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgKyAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiMCIgPT0gdCAmJiAxIC8gZSA9PSAtMSAvIDAgPyAiLTAiIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBtKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdHlwZW9mIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFlICYmICgib2JqZWN0IiA9PSB0IHx8ICJmdW5jdGlvbiIgPT0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN5bWJvbCIgPT0gdHlwZW9mIGUgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkgJiYgIltvYmplY3QgU3ltYm9sXSIgPT0gYy5jYWxsKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGcoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyAoZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm51bWJlciIgPT0gdHlwZW9mIGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5KGUpKSByZXR1cm4gTmFOOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS52YWx1ZU9mID8gZS52YWx1ZU9mKCkgOiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gbSh0KSA/IHQgKyAiIiA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlKSByZXR1cm4gMCA9PT0gZSA/IGUgOiArZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5yZXBsYWNlKG4sICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG8udGVzdChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyB8fCBpLnRlc3QoZSkgPyBhKGUuc2xpY2UoMiksIHMgPyAyIDogOCkgOiByLnRlc3QoZSkgPyBOYU4gOiArZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlKSkgPT09IDEgLyAwIHx8IGUgPT09IC0xIC8gMCA/IDE3OTc2OTMxMzQ4NjIzMTU3ZTI5MiAqIChlIDwgMCA/IC0xIDogMSkgOiBlID09IGUgPyBlIDogMCA6IDAgPT09IGUgPyBlIDogMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvLCBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSBudWxsID09IChyID0gZSkgPyAiIiA6IGgociksIG8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBnKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdCAlIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPT0gdCA/IG4gPyB0IC0gbiA6IHQgOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KG4pLCAwLCBpID0gZS5sZW5ndGgsIG8gPT0gbyAmJiAodm9pZCAwICE9PSBpICYmIChvID0gbyA8PSBpID8gbyA6IGkpLCBvID0gbyA+PSAwID8gbyA6IDApLCBuID0gbywgdCA9IGgodCksIGUuc2xpY2UobiwgbiArIHQubGVuZ3RoKSA9PSB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KS5jYWxsKHRoaXMsIG4oMykpCiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICAgICAgbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBuID0gbiB8fCBuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdyAmJiAobiA9IHdpbmRvdykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gbgogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCByID0gL15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgdCAmJiB0Lk9iamVjdCA9PT0gT2JqZWN0ICYmIHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gIm9iamVjdCIgPT0gdHlwZW9mIHNlbGYgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbyB8fCBpIHx8IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gQXJyYXkucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IEZ1bmN0aW9uLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBPYmplY3QucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGFbIl9fY29yZS1qc19zaGFyZWRfXyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IChuID0gL1teLl0rJC8uZXhlYyhjICYmIGMua2V5cyAmJiBjLmtleXMuSUVfUFJPVE8gfHwgIiIpKSA/ICJTeW1ib2woc3JjKV8xLiIgKyBuIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdS50b1N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBsLmhhc093blByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGwudG9TdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gUmVnRXhwKCJeIiArIGQuY2FsbChwKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywgIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCAiJDEuKj8iKSArICIkIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcy5zcGxpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gRShhLCAiTWFwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gRShPYmplY3QsICJjcmVhdGUiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZSA/IGUubGVuZ3RoIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodGhpcy5jbGVhcigpOyArK3QgPCBuOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZVt0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldChyWzBdLCByWzFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUgPyBlLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHRoaXMuY2xlYXIoKTsgKyt0IDwgbjspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoclswXSwgclsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gTyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlID8gZS5sZW5ndGggOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0aGlzLmNsZWFyKCk7ICsrdCA8IG47KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHJbMF0sIHJbMV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF8oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiwgciwgbyA9IGUubGVuZ3RoOyBvLS07KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiA9IGVbb11bMF0pID09PSAociA9IHQpIHx8IG4gIT0gbiAmJiByICE9IHIpIHJldHVybiBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHgoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoIVMoZSkgfHwgKHQgPSBlLCBmICYmIGYgaW4gdCkpICYmIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBTKGUpID8gaC5jYWxsKGUpIDogIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJbb2JqZWN0IEZ1bmN0aW9uXSIgPT0gdCB8fCAiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iID09IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gZSAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiBlLnRvU3RyaW5nKSB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gISEoZSArICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkgPyBtIDogcikudGVzdChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQuY2FsbChlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gayhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciwgbyA9IGUuX19kYXRhX187CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCJzdHJpbmciID09IChyID0gdHlwZW9mKG4gPSB0KSkgfHwgIm51bWJlciIgPT0gciB8fCAic3ltYm9sIiA9PSByIHx8ICJib29sZWFuIiA9PSByID8gIl9fcHJvdG9fXyIgIT09IG4gOiBudWxsID09PSBuKSA/IG9bInN0cmluZyIgPT0gdHlwZW9mIHQgPyAic3RyaW5nIiA6ICJoYXNoIl0gOiBvLm1hcAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBFKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyB2b2lkIDAgOiBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHgobikgPyBuIDogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIGUgfHwgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdCA/IHQuYXBwbHkodGhpcywgcikgOiByWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5jYWNoZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5oYXMobykpIHJldHVybiBpLmdldChvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuYXBwbHkodGhpcywgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uY2FjaGUgPSBpLnNldChvLCBhKSwgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNhY2hlID0gbmV3KEMuQ2FjaGUgfHwgTyksIG4KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gUyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHR5cGVvZiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZSAmJiAoIm9iamVjdCIgPT0gdCB8fCAiZnVuY3Rpb24iID09IHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYi5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSB2ID8gdihudWxsKSA6IHt9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlWyJkZWxldGUiXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhcyhlKSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1tlXQogICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX187CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdFtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iID09PSBuID8gdm9pZCAwIDogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAuY2FsbCh0LCBlKSA/IHRbZV0gOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYgPyB2b2lkIDAgIT09IHRbZV0gOiBwLmNhbGwodCwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX19bZV0gPSB2ICYmIHZvaWQgMCA9PT0gdCA/ICJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiA6IHQsIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSBbXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB3LnByb3RvdHlwZVsiZGVsZXRlIl0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IF8odCwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShuIDwgMCB8fCAobiA9PSB0Lmxlbmd0aCAtIDEgPyB0LnBvcCgpIDogeS5jYWxsKHQsIG4sIDEpLCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBfKHQsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPCAwID8gdm9pZCAwIDogdFtuXVsxXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB3LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXyh0aGlzLl9fZGF0YV9fLCBlKSA+IC0xCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHcucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fX2RhdGFfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gXyhuLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByIDwgMCA/IG4ucHVzaChbZSwgdF0pIDogbltyXVsxXSA9IHQsIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgTy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaDogbmV3IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBuZXcoZyB8fCB3KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc6IG5ldyBiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIE8ucHJvdG90eXBlWyJkZWxldGUiXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrKHRoaXMsIGUpWyJkZWxldGUiXShlKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBPLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gayh0aGlzLCBlKS5nZXQoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgTy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGsodGhpcywgZSkuaGFzKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIE8ucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrKHRoaXMsIGUpLnNldChlLCB0KSwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICB9LCBDLkNhY2hlID0gTywgZS5leHBvcnRzID0gQwogICAgICAgICAgICAgICAgICAgIH0pLmNhbGwodGhpcywgbigzKSkKICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IC9eXHMrfFxzKyQvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAvXlstK10weFswLTlhLWZdKyQvaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAvXjBiWzAxXSskL2ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gL14wb1swLTddKyQvaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwYXJzZUludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiB0ICYmIHQuT2JqZWN0ID09PSBPYmplY3QgJiYgdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAib2JqZWN0IiA9PSB0eXBlb2Ygc2VsZiAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzIHx8IHUgfHwgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IE1hdGgubWF4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IE1hdGgubWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsLkRhdGUubm93KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdHlwZW9mIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFlICYmICgib2JqZWN0IiA9PSB0IHx8ICJmdW5jdGlvbiIgPT0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm51bWJlciIgPT0gdHlwZW9mIGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzeW1ib2wiID09IHR5cGVvZiBlIHx8IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlKSAmJiAiW29iamVjdCBTeW1ib2xdIiA9PSBjLmNhbGwoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpKSByZXR1cm4gTmFOOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGgoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUudmFsdWVPZiA/IGUudmFsdWVPZigpIDogZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gaCh0KSA/IHQgKyAiIiA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIDAgPT09IGUgPyBlIDogK2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5yZXBsYWNlKG4sICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gby50ZXN0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgfHwgaS50ZXN0KGUpID8gYShlLnNsaWNlKDIpLCBzID8gMiA6IDgpIDogci50ZXN0KGUpID8gTmFOIDogK2UKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgaSwgYSwgcywgdSwgbCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgZSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgPSBvID0gdm9pZCAwLCBsID0gdCwgYSA9IGUuYXBwbHkoaSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBiKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA9IGUsIHMgPSBzZXRUaW1lb3V0KE8sIHQpLCBjID8gdihlKSA6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUgLSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHUgfHwgbiA+PSB0IHx8IG4gPCAwIHx8IHkgJiYgZSAtIGwgPj0gaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE8oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcoZSkpIHJldHVybiBfKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzZXRUaW1lb3V0KE8sIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0IC0gKGUgLSB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHkgPyBkKG4sIGkgLSAoZSAtIGwpKSA6IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF8oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzID0gdm9pZCAwLCBnICYmIHIgPyB2KGUpIDogKHIgPSBvID0gdm9pZCAwLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHgoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBwKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB3KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gYXJndW1lbnRzLCBvID0gdGhpcywgdSA9IGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gcykgcmV0dXJuIGIodSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5KSByZXR1cm4gcyA9IHNldFRpbWVvdXQoTywgdCksIHYodSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gcyAmJiAocyA9IHNldFRpbWVvdXQoTywgdCkpLCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IG0odCkgfHwgMCwgaChuKSAmJiAoYyA9ICEhbi5sZWFkaW5nLCBpID0gKHkgPSAibWF4V2FpdCIgaW4gbikgPyBmKG0obi5tYXhXYWl0KSB8fCAwLCB0KSA6IGksIGcgPSAidHJhaWxpbmciIGluIG4gPyAhIW4udHJhaWxpbmcgOiBnKSwgeC5jYW5jZWwgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHMgJiYgY2xlYXJUaW1lb3V0KHMpLCBsID0gMCwgciA9IHUgPSBvID0gcyA9IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeC5mbHVzaCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHMgPyBhIDogXyhwKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB4CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KS5jYWxsKHRoaXMsIG4oMykpCiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAiW29iamVjdCBBcmd1bWVudHNdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAiW29iamVjdCBNYXBdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAiW29iamVjdCBPYmplY3RdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAiW29iamVjdCBTZXRdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAvXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAvXlx3KiQvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IC9eXC4vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IC9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IC9cXChcXCk/L2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gL15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gL14oPzowfFsxLTldXGQqKSQvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBoWyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXSA9IGhbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdID0gaFsiW29iamVjdCBJbnQ4QXJyYXldIl0gPSBoWyJbb2JqZWN0IEludDE2QXJyYXldIl0gPSBoWyJbb2JqZWN0IEludDMyQXJyYXldIl0gPSBoWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl0gPSBoWyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdID0gaFsiW29iamVjdCBVaW50MTZBcnJheV0iXSA9IGhbIltvYmplY3QgVWludDMyQXJyYXldIl0gPSAhMCwgaFtyXSA9IGhbIltvYmplY3QgQXJyYXldIl0gPSBoWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdID0gaFsiW29iamVjdCBCb29sZWFuXSJdID0gaFsiW29iamVjdCBEYXRhVmlld10iXSA9IGhbIltvYmplY3QgRGF0ZV0iXSA9IGhbIltvYmplY3QgRXJyb3JdIl0gPSBoWyJbb2JqZWN0IEZ1bmN0aW9uXSJdID0gaFtvXSA9IGhbIltvYmplY3QgTnVtYmVyXSJdID0gaFtpXSA9IGhbIltvYmplY3QgUmVnRXhwXSJdID0gaFthXSA9IGhbIltvYmplY3QgU3RyaW5nXSJdID0gaFsiW29iamVjdCBXZWFrTWFwXSJdID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgZSAmJiBlLk9iamVjdCA9PT0gT2JqZWN0ICYmIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gIm9iamVjdCIgPT0gdHlwZW9mIHNlbGYgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gbSB8fCB5IHx8IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gdCAmJiAhdC5ub2RlVHlwZSAmJiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHYgJiYgIm9iamVjdCIgPT0gdHlwZW9mIG4gJiYgbiAmJiAhbi5ub2RlVHlwZSAmJiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGIgJiYgYi5leHBvcnRzID09PSB2ICYmIG0ucHJvY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdyAmJiB3LmJpbmRpbmcoInV0aWwiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gTyAmJiBPLmlzVHlwZWRBcnJheTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHgoZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZSA/IGUubGVuZ3RoIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociAmJiBpICYmIChuID0gZVsrK29dKTsgKytvIDwgaTspIG4gPSB0KG4sIGVbb10sIG8sIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gayhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gLTEsIHIgPSBlID8gZS5sZW5ndGggOiAwOyArK24gPCByOykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodChlW25dLCBuLCBlKSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEUoZSwgdCwgbiwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8oZSwgKGZ1bmN0aW9uKGUsIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gciA/IChyID0gITEsIGUpIDogdChuLCBlLCBvLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGUgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZS50b1N0cmluZykgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gISEoZSArICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gQXJyYXkoZS5zaXplKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuWysrdF0gPSBbciwgZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbgogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBqKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IEFycmF5KGUuc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgblsrK3RdID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFAsIEEsIEQsIFQgPSBBcnJheS5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOID0gRnVuY3Rpb24ucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTSA9IE9iamVjdC5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMID0gZ1siX19jb3JlLWpzX3NoYXJlZF9fIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gKFAgPSAvW14uXSskLy5leGVjKEwgJiYgTC5rZXlzICYmIEwua2V5cy5JRV9QUk9UTyB8fCAiIikpID8gIlN5bWJvbChzcmMpXzEuIiArIFAgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBOLnRvU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IE0uaGFzT3duUHJvcGVydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGID0gTS50b1N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYgPSBSZWdFeHAoIl4iICsgUi5jYWxsKHEpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCAiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csICIkMS4qPyIpICsgIiQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSBnLlN5bWJvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUgPSBnLlVpbnQ4QXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIID0gTS5wcm9wZXJ0eUlzRW51bWVyYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSBULnNwbGljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcgPSAoQSA9IE9iamVjdC5rZXlzLCBEID0gT2JqZWN0LCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEEoRChlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSyA9IF9lKGcsICJEYXRhVmlldyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWSA9IF9lKGcsICJNYXAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEcgPSBfZShnLCAiUHJvbWlzZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCA9IF9lKGcsICJTZXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEgPSBfZShnLCAiV2Vha01hcCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWiA9IF9lKE9iamVjdCwgImNyZWF0ZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWCA9IEFlKEspLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSiA9IEFlKFkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWUgPSBBZShHKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlID0gQWUoJCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZSA9IEFlKFEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUgPSBCID8gQi5wcm90b3R5cGUgOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZSA9IHJlID8gcmUudmFsdWVPZiA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGllID0gcmUgPyByZS50b1N0cmluZyA6IHZvaWQgMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUgPyBlLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHRoaXMuY2xlYXIoKTsgKyt0IDwgbjspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoclswXSwgclsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2UoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZSA/IGUubGVuZ3RoIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodGhpcy5jbGVhcigpOyArK3QgPCBuOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZVt0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldChyWzBdLCByWzFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1ZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlID8gZS5sZW5ndGggOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0aGlzLmNsZWFyKCk7ICsrdCA8IG47KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHJbMF0sIHJbMV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGxlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUgPyBlLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHRoaXMuX19kYXRhX18gPSBuZXcgdWU7ICsrdCA8IG47KSB0aGlzLmFkZChlW3RdKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9fZGF0YV9fID0gbmV3IHNlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGZlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBlLmxlbmd0aDsgbi0tOykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVGUoZVtuXVswXSwgdCkpIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYWUucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9fZGF0YV9fID0gWiA/IFoobnVsbCkgOiB7fQogICAgICAgICAgICAgICAgICAgICAgICB9LCBhZS5wcm90b3R5cGVbImRlbGV0ZSJdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzKGUpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2VdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGFlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX187CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoWikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdFtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iID09PSBuID8gdm9pZCAwIDogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHEuY2FsbCh0LCBlKSA/IHRbZV0gOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYWUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fX2RhdGFfXzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBaID8gdm9pZCAwICE9PSB0W2VdIDogcS5jYWxsKHQsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGFlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFfX1tlXSA9IFogJiYgdm9pZCAwID09PSB0ID8gIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iIDogdCwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICB9LCBzZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSBbXQogICAgICAgICAgICAgICAgICAgICAgICB9LCBzZS5wcm90b3R5cGVbImRlbGV0ZSJdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmZSh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKG4gPCAwIHx8IChuID09IHQubGVuZ3RoIC0gMSA/IHQucG9wKCkgOiB6LmNhbGwodCwgbiwgMSksIDApKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmZSh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuIDwgMCA/IHZvaWQgMCA6IHRbbl1bMV0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2UucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmZSh0aGlzLl9fZGF0YV9fLCBlKSA+IC0xCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX19kYXRhX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGZlKG4sIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgPCAwID8gbi5wdXNoKFtlLCB0XSkgOiBuW3JdWzFdID0gdCwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICB9LCB1ZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaDogbmV3IGFlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogbmV3KFkgfHwgc2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzogbmV3IGFlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVlLnByb3RvdHlwZVsiZGVsZXRlIl0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2UodGhpcywgZSlbImRlbGV0ZSJdKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2UodGhpcywgZSkuZ2V0KGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2UodGhpcywgZSkuaGFzKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2UodGhpcywgZSkuc2V0KGUsIHQpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGxlLnByb3RvdHlwZS5hZGQgPSBsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLnNldChlLCAiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGxlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgY2UucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9fZGF0YV9fID0gbmV3IHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNlLnByb3RvdHlwZVsiZGVsZXRlIl0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFfX1siZGVsZXRlIl0oZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgY2UucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChlKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBjZS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX19kYXRhX187CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghWSB8fCByLmxlbmd0aCA8IDE5OSkgcmV0dXJuIHIucHVzaChbZSwgdF0pLCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9fZGF0YV9fID0gbmV3IHVlKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zZXQoZSwgdCksIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlLCBwZSA9IChkZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBoZShlLCB0LCBVZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUxlKGUpKSByZXR1cm4gZGUoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IGUubGVuZ3RoLCByID0gLTEsIG8gPSBPYmplY3QoZSk7ICsrciA8IG4gJiYgITEgIT09IHQob1tyXSwgciwgbyk7KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gLTEsIG8gPSBPYmplY3QoZSksIGkgPSBuKGUpLCBhID0gaS5sZW5ndGg7IGEtLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBpWysrcl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMSA9PT0gdChvW3NdLCBzLCBvKSkgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBtZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMCwgciA9ICh0ID0gRWUodCwgZSkgPyBbdF0gOiBiZSh0KSkubGVuZ3RoOyBudWxsICE9IGUgJiYgbiA8IHI7KSBlID0gZVtQZSh0W24rK10pXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIG4gPT0gciA/IGUgOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geWUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiB0IGluIE9iamVjdChlKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBnZShlLCB0LCBuLCBzLCB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdCB8fCAobnVsbCA9PSBlIHx8IG51bGwgPT0gdCB8fCAhcWUoZSkgJiYgIUZlKHQpID8gZSAhPSBlICYmIHQgIT0gdCA6IGZ1bmN0aW9uKGUsIHQsIG4sIHMsIHUsIGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IE1lKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gTWUodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAiW29iamVjdCBBcnJheV0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gIltvYmplY3QgQXJyYXldIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjIHx8IChkID0gKGQgPSB4ZShlKSkgPT0gciA/IGkgOiBkKSwgZiB8fCAocCA9IChwID0geGUodCkpID09IHIgPyBpIDogcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBkID09IGkgJiYgIUMoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBwID09IGkgJiYgIUModCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBkID09IHA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgJiYgIWgpIHJldHVybiBsIHx8IChsID0gbmV3IGNlKSwgYyB8fCBCZShlKSA/IHdlKGUsIHQsIG4sIHMsIHUsIGwpIDogZnVuY3Rpb24oZSwgdCwgbiwgciwgaSwgcywgdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgRGF0YVZpZXddIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5ieXRlTGVuZ3RoICE9IHQuYnl0ZUxlbmd0aCB8fCBlLmJ5dGVPZmZzZXQgIT0gdC5ieXRlT2Zmc2V0KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUuYnVmZmVyLCB0ID0gdC5idWZmZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IEFycmF5QnVmZmVyXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoZS5ieXRlTGVuZ3RoICE9IHQuYnl0ZUxlbmd0aCB8fCAhcihuZXcgVShlKSwgbmV3IFUodCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgQm9vbGVhbl0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiW29iamVjdCBEYXRlXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IE51bWJlcl0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUZSgrZSwgK3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiW29iamVjdCBFcnJvcl0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm5hbWUgPT0gdC5uYW1lICYmIGUubWVzc2FnZSA9PSB0Lm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IFJlZ0V4cF0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiW29iamVjdCBTdHJpbmddIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PSB0ICsgIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG86CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBTOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gMiAmIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgfHwgKGwgPSBqKSwgZS5zaXplICE9IHQuc2l6ZSAmJiAhYykgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gdS5nZXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYpIHJldHVybiBmID09IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyB8PSAxLCB1LnNldChlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHdlKGwoZSksIGwodCksIHIsIGksIHMsIHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1WyJkZWxldGUiXShlKSwgZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgU3ltYm9sXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9lKSByZXR1cm4gb2UuY2FsbChlKSA9PSBvZS5jYWxsKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0LCBkLCBuLCBzLCB1LCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgyICYgdSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBoICYmIHEuY2FsbChlLCAiX193cmFwcGVkX18iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBtICYmIHEuY2FsbCh0LCAiX193cmFwcGVkX18iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgfHwgdikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBnID8gZS52YWx1ZSgpIDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gdiA/IHQudmFsdWUoKSA6IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCB8fCAobCA9IG5ldyBjZSksIG4oYiwgdywgcywgdSwgbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF5ICYmIChsIHx8IChsID0gbmV3IGNlKSwgZnVuY3Rpb24oZSwgdCwgbiwgciwgbywgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IDIgJiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFVlKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSAhPSBVZSh0KS5sZW5ndGggJiYgIWEpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IHU7IGwtLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gc1tsXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGEgPyBjIGluIHQgOiBxLmNhbGwodCwgYykpKSByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGkuZ2V0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiAmJiBpLmdldCh0KSkgcmV0dXJuIGYgPT0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5zZXQoZSwgdCksIGkuc2V0KHQsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwID0gYTsgKytsIDwgdTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gZVtjID0gc1tsXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHRbY107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgdmFyIHkgPSBhID8gcihtLCBoLCBjLCB0LCBlLCBpKSA6IHIoaCwgbSwgYywgZSwgdCwgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh2b2lkIDAgPT09IHkgPyBoID09PSBtIHx8IG4oaCwgbSwgciwgbywgaSkgOiB5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCB8fCAocCA9ICJjb25zdHJ1Y3RvciIgPT0gYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCAmJiAhcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBlLmNvbnN0cnVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0LmNvbnN0cnVjdG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9PSB2IHx8ICEoImNvbnN0cnVjdG9yIiBpbiBlKSB8fCAhKCJjb25zdHJ1Y3RvciIgaW4gdCkgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZyAmJiBnIGluc3RhbmNlb2YgZyAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB2ICYmIHYgaW5zdGFuY2VvZiB2IHx8IChkID0gITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlbImRlbGV0ZSJdKGUpLCBpWyJkZWxldGUiXSh0KSwgZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCwgbiwgcywgdSwgbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQsIGdlLCBuLCBzLCB1KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgPyBlIDogbnVsbCA9PSBlID8gSGUgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSA/IE1lKGUpID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFZShlKSAmJiBDZSh0KSA/IFNlKFBlKGUpLCB0KSA6IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG51bGwgPT0gZSA/IHZvaWQgMCA6IG1lKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gciA/IHZvaWQgMCA6IHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShuLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gciAmJiByID09PSB0ID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciwgbyA9IC0xLCBpID0gKHQgPSBFZSh0LCBlKSA/IFt0XSA6IGJlKHQpKS5sZW5ndGg7ICsrbyA8IGk7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gUGUodFtvXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHIgPSBudWxsICE9IGUgJiYgbihlLCBhKSkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZVthXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gciB8fCAhIShpID0gZSA/IGUubGVuZ3RoIDogMCkgJiYgUmUoaSkgJiYga2UoYSwgaSkgJiYgKE1lKGUpIHx8IE5lKGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0LCB5ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShuLCBlKSA6IGdlKHQsIHIsIHZvaWQgMCwgMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGVbMF0sIGVbMV0pIDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gVWUoZSksIG4gPSB0Lmxlbmd0aDsgbi0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlW3JdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFtuXSA9IFtyLCBvLCBDZShvKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgPT0gdC5sZW5ndGggJiYgdFswXVsyXSA/IFNlKHRbMF1bMF0sIHRbMF1bMV0pIDogZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA9PT0gZSB8fCBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcmV0dXJuICFpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gT2JqZWN0KGUpOyBvLS07KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuW29dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhWzJdID8gYVsxXSAhPT0gZVthWzBdXSA6ICEoYVswXSBpbiBlKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgKytvIDwgaTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IChhID0gbltvXSlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlW3NdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYVsyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSB1ICYmICEocyBpbiBlKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMsIGYgPSBuZXcgY2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHZvaWQgMCA9PT0gYyA/IGdlKGwsIHUsIHIsIDMsIGYpIDogYykpIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KG4sIDAsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlKSA6IEVlKHQgPSBlKSA/IChuID0gUGUodCksIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gdm9pZCAwIDogZVtuXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lKHQsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0LCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGJlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNZShlKSA/IGUgOiBqZShlKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3ZShlLCB0LCBuLCByLCBvLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IDIgJiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyAhPSB1ICYmICEoYSAmJiB1ID4gcykpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gaS5nZXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCAmJiBpLmdldCh0KSkgcmV0dXJuIGwgPT0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAxICYgbyA/IG5ldyBsZSA6IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaS5zZXQoZSwgdCksIGkuc2V0KHQsIGUpOyArK2MgPCBzOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gZVtjXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRbY107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHZhciBtID0gYSA/IHIoaCwgcCwgYywgdCwgZSwgaSkgOiByKHAsIGgsIGMsIGUsIHQsIGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0pIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghayh0LCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZC5oYXModCkgJiYgKHAgPT09IGUgfHwgbihwLCBlLCByLCBvLCBpKSkpIHJldHVybiBkLmFkZCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwICE9PSBoICYmICFuKHAsIGgsIHIsIG8sIGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVsiZGVsZXRlIl0oZSksIGlbImRlbGV0ZSJdKHQpLCBmCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE9lKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCByLCBvID0gZS5fX2RhdGFfXzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoInN0cmluZyIgPT0gKHIgPSB0eXBlb2YobiA9IHQpKSB8fCAibnVtYmVyIiA9PSByIHx8ICJzeW1ib2wiID09IHIgfHwgImJvb2xlYW4iID09IHIgPyAiX19wcm90b19fIiAhPT0gbiA6IG51bGwgPT09IG4pID8gb1sic3RyaW5nIiA9PSB0eXBlb2YgdCA/ICJzdHJpbmciIDogImhhc2giXSA6IG8ubWFwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9lKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyB2b2lkIDAgOiBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISghcWUoZSkgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFJICYmIEkgaW4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkpICYmIChJZShlKSB8fCBDKGUpID8gViA6IGQpLnRlc3QoQWUoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KG4pID8gbiA6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGLmNhbGwoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGtlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhISh0ID0gbnVsbCA9PSB0ID8gOTAwNzE5OTI1NDc0MDk5MSA6IHQpICYmICgibnVtYmVyIiA9PSB0eXBlb2YgZSB8fCBwLnRlc3QoZSkpICYmIGUgPiAtMSAmJiBlICUgMSA9PSAwICYmIGUgPCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEVlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNZShlKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0eXBlb2YgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKCJudW1iZXIiICE9IG4gJiYgInN5bWJvbCIgIT0gbiAmJiAiYm9vbGVhbiIgIT0gbiAmJiBudWxsICE9IGUgJiYgIVZlKGUpKSB8fCB1LnRlc3QoZSkgfHwgIXMudGVzdChlKSB8fCBudWxsICE9IHQgJiYgZSBpbiBPYmplY3QodCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQ2UoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT0gZSAmJiAhcWUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gU2UoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBuICYmIG5bZV0gPT09IHQgJiYgKHZvaWQgMCAhPT0gdCB8fCBlIGluIE9iamVjdChuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfShLICYmICJbb2JqZWN0IERhdGFWaWV3XSIgIT0geGUobmV3IEsobmV3IEFycmF5QnVmZmVyKDEpKSkgfHwgWSAmJiB4ZShuZXcgWSkgIT0gbyB8fCBHICYmICJbb2JqZWN0IFByb21pc2VdIiAhPSB4ZShHLnJlc29sdmUoKSkgfHwgJCAmJiB4ZShuZXcgJCkgIT0gYSB8fCBRICYmICJbb2JqZWN0IFdlYWtNYXBdIiAhPSB4ZShuZXcgUSkpICYmICh4ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gRi5jYWxsKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0ID09IGkgPyBlLmNvbnN0cnVjdG9yIDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuID8gQWUobikgOiB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgc3dpdGNoIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBYOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIltvYmplY3QgRGF0YVZpZXddIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEo6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZWU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiW29iamVjdCBQcm9taXNlXSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBuZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJbb2JqZWN0IFdlYWtNYXBdIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqZSA9IERlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBudWxsID09ICh0ID0gZSkgPyAiIiA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWZShlKSkgcmV0dXJuIGllID8gaWUuY2FsbChlKSA6ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZSArICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiMCIgPT0gdCAmJiAxIC8gZSA9PSAtMSAvIDAgPyAiLTAiIDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbC50ZXN0KGUpICYmIG4ucHVzaCgiIiksIGUucmVwbGFjZShjLCAoZnVuY3Rpb24oZSwgdCwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucHVzaChyID8gby5yZXBsYWNlKGYsICIkMSIpIDogdCB8fCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFBlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSB8fCBWZShlKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgKyAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiMCIgPT0gdCAmJiAxIC8gZSA9PSAtMSAvIDAgPyAiLTAiIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBBZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFIuY2FsbChlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gRGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIGUgfHwgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdCA/IHQuYXBwbHkodGhpcywgcikgOiByWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5jYWNoZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5oYXMobykpIHJldHVybiBpLmdldChvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuYXBwbHkodGhpcywgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uY2FjaGUgPSBpLnNldChvLCBhKSwgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNhY2hlID0gbmV3KERlLkNhY2hlIHx8IHVlKSwgbgogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBUZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdCB8fCBlICE9IGUgJiYgdCAhPSB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE5lKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZlKGUpICYmIExlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpICYmIHEuY2FsbChlLCAiY2FsbGVlIikgJiYgKCFILmNhbGwoZSwgImNhbGxlZSIpIHx8IEYuY2FsbChlKSA9PSByKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIERlLkNhY2hlID0gdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBNZSA9IEFycmF5LmlzQXJyYXk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBMZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYmIFJlKGUubGVuZ3RoKSAmJiAhSWUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gSWUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBxZShlKSA/IEYuY2FsbChlKSA6ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJbb2JqZWN0IEZ1bmN0aW9uXSIgPT0gdCB8fCAiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iID09IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gUmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJudW1iZXIiID09IHR5cGVvZiBlICYmIGUgPiAtMSAmJiBlICUgMSA9PSAwICYmIGUgPD0gOTAwNzE5OTI1NDc0MDk5MQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBxZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHR5cGVvZiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZSAmJiAoIm9iamVjdCIgPT0gdCB8fCAiZnVuY3Rpb24iID09IHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEZlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gVmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzeW1ib2wiID09IHR5cGVvZiBlIHx8IEZlKGUpICYmICJbb2JqZWN0IFN5bWJvbF0iID09IEYuY2FsbChlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZSA9IF8gPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0oXykgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmUoZSkgJiYgUmUoZS5sZW5ndGgpICYmICEhaFtGLmNhbGwoZSldCiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBVZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTGUoZSkgPyBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBNZShlKSB8fCBOZShlKSA/IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAtMSwgciA9IEFycmF5KGUpOyArK24gPCBlOykgcltuXSA9IHQobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUubGVuZ3RoLCBTdHJpbmcpIDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEhcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGUpICF0ICYmICFxLmNhbGwoZSwgaSkgfHwgbyAmJiAoImxlbmd0aCIgPT0gaSB8fCBrZShpLCByKSkgfHwgbi5wdXNoKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpIDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gKHQgPSBlKSAmJiB0LmNvbnN0cnVjdG9yLCB0ICE9PSAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiAmJiBuLnByb3RvdHlwZSB8fCBNKSkgcmV0dXJuIFcoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIHIgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvIGluIE9iamVjdChlKSkgcS5jYWxsKGUsIG8pICYmICJjb25zdHJ1Y3RvciIgIT0gbyAmJiByLnB1c2gobyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gSGUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBuLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE1lKGUpID8geCA6IEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGFyZ3VtZW50cy5sZW5ndGggPCAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIoZSwgdmUodCksIG4sIG8sIHBlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkuY2FsbCh0aGlzLCBuKDMpLCBuKDcpKGUpKQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUud2VicGFja1BvbHlmaWxsIHx8IChlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkge30sIGUucGF0aHMgPSBbXSwgZS5jaGlsZHJlbiB8fCAoZS5jaGlsZHJlbiA9IFtdKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJsb2FkZWQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUubAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJpZCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLndlYnBhY2tQb2x5ZmlsbCA9IDEpLCBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIFN0cmluZy5wcm90b3R5cGUucGFkRW5kIHx8IChTdHJpbmcucHJvdG90eXBlLnBhZEVuZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPj49IDAsIHQgPSBTdHJpbmcodm9pZCAwICE9PSB0ID8gdCA6ICIgIiksIHRoaXMubGVuZ3RoID4gZSA/IFN0cmluZyh0aGlzKSA6ICgoZSAtPSB0aGlzLmxlbmd0aCkgPiB0Lmxlbmd0aCAmJiAodCArPSB0LnJlcGVhdChlIC8gdC5sZW5ndGgpKSwgU3RyaW5nKHRoaXMpICsgdC5zbGljZSgwLCBlKSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBlW3RdID0gbiwgZQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpIHx8ICJbb2JqZWN0IEFyZ3VtZW50c10iID09PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpIHJldHVybiBBcnJheS5mcm9tKGUpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSBuZXcgQXJyYXkoZS5sZW5ndGgpOyB0IDwgZS5sZW5ndGg7IHQrKykgblt0XSA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfShlKSB8fCBvKGUpIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKQogICAgICAgICAgICAgICAgICAgICAgICB9KCkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGMgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgInN5bWJvbCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmIGUuY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBlICE9PSBTeW1ib2wucHJvdG90eXBlID8gInN5bWJvbCIgOiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgICAgICB9KShlKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZiA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PT0gYyhTeW1ib2wuaXRlcmF0b3IpID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiBlLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgZSAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogYyhlKQogICAgICAgICAgICAgICAgICAgICAgICB9KShlKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBwKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKQogICAgICAgICAgICAgICAgICAgICAgICB9KShlKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaCA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5fX3Byb3RvX18gPSB0LCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4ucih0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBuLm4obSksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBuKDUpLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gbi5uKGcpLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gbig0KSwKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG4ubihiKSwKICAgICAgICAgICAgICAgICAgICAgICAgTyA9IG4oNiksCiAgICAgICAgICAgICAgICAgICAgICAgIF8gPSBuLm4oTyksCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBuKDIpLAogICAgICAgICAgICAgICAgICAgICAgICBrID0gbi5uKHgpLAogICAgICAgICAgICAgICAgICAgICAgICBFID0gbigxKSwKICAgICAgICAgICAgICAgICAgICAgICAgQyA9IG4ubihFKTsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gUyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKGUpIHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhLCBzID0gZVtTeW1ib2wuaXRlcmF0b3JdKCk7ICEociA9IChhID0gcy5uZXh0KCkpLmRvbmUpICYmIChuLnB1c2goYS52YWx1ZSksICF0IHx8IG4ubGVuZ3RoICE9PSB0KTsgciA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgfHwgbnVsbCA9PSBzWyJyZXR1cm4iXSB8fCBzWyJyZXR1cm4iXSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpIHx8IHMoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBuKDgpOwogICAgICAgICAgICAgICAgICAgIHZhciBqID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJBZmdoYW5pc3RhbiIsIFsiYXNpYSJdLCAiYWYiLCAiOTMiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQWxiYW5pYSIsIFsiZXVyb3BlIl0sICJhbCIsICIzNTUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQWxnZXJpYSIsIFsiYWZyaWNhIiwgIm5vcnRoLWFmcmljYSJdLCAiZHoiLCAiMjEzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkFuZG9ycmEiLCBbImV1cm9wZSJdLCAiYWQiLCAiMzc2Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkFuZ29sYSIsIFsiYWZyaWNhIl0sICJhbyIsICIyNDQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQW50aWd1YSBhbmQgQmFyYnVkYSIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgImFnIiwgIjEyNjgiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQXJnZW50aW5hIiwgWyJhbWVyaWNhIiwgInNvdXRoLWFtZXJpY2EiXSwgImFyIiwgIjU0IiwgIiguLikgLi4uLi4uLi4iLCAwLCBbIjExIiwgIjIyMSIsICIyMjMiLCAiMjYxIiwgIjI2NCIsICIyNjUyIiwgIjI4MCIsICIyOTA1IiwgIjI5MSIsICIyOTIwIiwgIjI5NjYiLCAiMjk5IiwgIjM0MSIsICIzNDIiLCAiMzQzIiwgIjM1MSIsICIzNzYiLCAiMzc5IiwgIjM4MSIsICIzODMzIiwgIjM4NSIsICIzODciLCAiMzg4Il1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJBcm1lbmlhIiwgWyJhc2lhIiwgImV4LXVzc3IiXSwgImFtIiwgIjM3NCIsICIuLiAuLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQXJ1YmEiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJhdyIsICIyOTciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQXVzdHJhbGlhIiwgWyJvY2VhbmlhIl0sICJhdSIsICI2MSIsICIoLi4pIC4uLi4gLi4uLiIsIDAsIFsiMiIsICIzIiwgIjQiLCAiNyIsICI4IiwgIjAyIiwgIjAzIiwgIjA0IiwgIjA3IiwgIjA4Il1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJBdXN0cmlhIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iXSwgImF0IiwgIjQzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkF6ZXJiYWlqYW4iLCBbImFzaWEiLCAiZXgtdXNzciJdLCAiYXoiLCAiOTk0IiwgIiguLikgLi4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJhaGFtYXMiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJicyIsICIxMjQyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJhaHJhaW4iLCBbIm1pZGRsZS1lYXN0Il0sICJiaCIsICI5NzMiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQmFuZ2xhZGVzaCIsIFsiYXNpYSJdLCAiYmQiLCAiODgwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJhcmJhZG9zIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiYmIiLCAiMTI0NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCZWxhcnVzIiwgWyJldXJvcGUiLCAiZXgtdXNzciJdLCAiYnkiLCAiMzc1IiwgIiguLikgLi4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJlbGdpdW0iLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAiYmUiLCAiMzIiLCAiLi4uIC4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJlbGl6ZSIsIFsiYW1lcmljYSIsICJjZW50cmFsLWFtZXJpY2EiXSwgImJ6IiwgIjUwMSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCZW5pbiIsIFsiYWZyaWNhIl0sICJiaiIsICIyMjkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQmh1dGFuIiwgWyJhc2lhIl0sICJidCIsICI5NzUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQm9saXZpYSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJibyIsICI1OTEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYSIsIFsiZXVyb3BlIiwgImV4LXl1Z29zIl0sICJiYSIsICIzODciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQm90c3dhbmEiLCBbImFmcmljYSJdLCAiYnciLCAiMjY3Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJyYXppbCIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJiciIsICI1NSIsICIoLi4pIC4uLi4uLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnkiLCBbImFzaWEiXSwgImlvIiwgIjI0NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCcnVuZWkiLCBbImFzaWEiXSwgImJuIiwgIjY3MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCdWxnYXJpYSIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJiZyIsICIzNTkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQnVya2luYSBGYXNvIiwgWyJhZnJpY2EiXSwgImJmIiwgIjIyNiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCdXJ1bmRpIiwgWyJhZnJpY2EiXSwgImJpIiwgIjI1NyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDYW1ib2RpYSIsIFsiYXNpYSJdLCAia2giLCAiODU1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNhbWVyb29uIiwgWyJhZnJpY2EiXSwgImNtIiwgIjIzNyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDYW5hZGEiLCBbImFtZXJpY2EiLCAibm9ydGgtYW1lcmljYSJdLCAiY2EiLCAiMSIsICIoLi4uKSAuLi4tLi4uLiIsIDEsIFsiMjA0IiwgIjIyNiIsICIyMzYiLCAiMjQ5IiwgIjI1MCIsICIyODkiLCAiMzA2IiwgIjM0MyIsICIzNjUiLCAiMzg3IiwgIjQwMyIsICI0MTYiLCAiNDE4IiwgIjQzMSIsICI0MzciLCAiNDM4IiwgIjQ1MCIsICI1MDYiLCAiNTE0IiwgIjUxOSIsICI1NDgiLCAiNTc5IiwgIjU4MSIsICI1ODciLCAiNjA0IiwgIjYxMyIsICI2MzkiLCAiNjQ3IiwgIjY3MiIsICI3MDUiLCAiNzA5IiwgIjc0MiIsICI3NzgiLCAiNzgwIiwgIjc4MiIsICI4MDciLCAiODE5IiwgIjgyNSIsICI4NjciLCAiODczIiwgIjkwMiIsICI5MDUiXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNhcGUgVmVyZGUiLCBbImFmcmljYSJdLCAiY3YiLCAiMjM4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNhcmliYmVhbiBOZXRoZXJsYW5kcyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgImJxIiwgIjU5OSIsICIiLCAxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljIiwgWyJhZnJpY2EiXSwgImNmIiwgIjIzNiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDaGFkIiwgWyJhZnJpY2EiXSwgInRkIiwgIjIzNSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDaGlsZSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJjbCIsICI1NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDaGluYSIsIFsiYXNpYSJdLCAiY24iLCAiODYiLCAiLi4tLi4uLi4uLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNvbG9tYmlhIiwgWyJhbWVyaWNhIiwgInNvdXRoLWFtZXJpY2EiXSwgImNvIiwgIjU3IiwgIi4uLiAuLi4gLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDb21vcm9zIiwgWyJhZnJpY2EiXSwgImttIiwgIjI2OSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDb25nbyIsIFsiYWZyaWNhIl0sICJjZCIsICIyNDMiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQ29uZ28iLCBbImFmcmljYSJdLCAiY2ciLCAiMjQyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNvc3RhIFJpY2EiLCBbImFtZXJpY2EiLCAiY2VudHJhbC1hbWVyaWNhIl0sICJjciIsICI1MDYiLCAiLi4uLi0uLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkPDtHRlIGTigJlJdm9pcmUiLCBbImFmcmljYSJdLCAiY2kiLCAiMjI1IiwgIi4uIC4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNyb2F0aWEiLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJleC15dWdvcyJdLCAiaHIiLCAiMzg1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkN1YmEiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJjdSIsICI1MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDdXJhw6dhbyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgImN3IiwgIjU5OSIsICIiLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQ3lwcnVzIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iXSwgImN5IiwgIjM1NyIsICIuLiAuLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQ3plY2ggUmVwdWJsaWMiLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAiY3oiLCAiNDIwIiwgIi4uLiAuLi4gLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkRlbm1hcmsiLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJiYWx0aWMiXSwgImRrIiwgIjQ1IiwgIi4uIC4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkRqaWJvdXRpIiwgWyJhZnJpY2EiXSwgImRqIiwgIjI1MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJEb21pbmljYSIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgImRtIiwgIjE3NjciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRG9taW5pY2FuIFJlcHVibGljIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiZG8iLCAiMSIsICIiLCAyLCBbIjgwOSIsICI4MjkiLCAiODQ5Il1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJFY3VhZG9yIiwgWyJhbWVyaWNhIiwgInNvdXRoLWFtZXJpY2EiXSwgImVjIiwgIjU5MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJFZ3lwdCIsIFsiYWZyaWNhIiwgIm5vcnRoLWFmcmljYSJdLCAiZWciLCAiMjAiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRWwgU2FsdmFkb3IiLCBbImFtZXJpY2EiLCAiY2VudHJhbC1hbWVyaWNhIl0sICJzdiIsICI1MDMiLCAiLi4uLi0uLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkVxdWF0b3JpYWwgR3VpbmVhIiwgWyJhZnJpY2EiXSwgImdxIiwgIjI0MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJFcml0cmVhIiwgWyJhZnJpY2EiXSwgImVyIiwgIjI5MSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJFc3RvbmlhIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iLCAiZXgtdXNzciIsICJiYWx0aWMiXSwgImVlIiwgIjM3MiIsICIuLi4uIC4uLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJFdGhpb3BpYSIsIFsiYWZyaWNhIl0sICJldCIsICIyNTEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRmlqaSIsIFsib2NlYW5pYSJdLCAiZmoiLCAiNjc5Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkZpbmxhbmQiLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJiYWx0aWMiXSwgImZpIiwgIjM1OCIsICIuLiAuLi4gLi4gLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRnJhbmNlIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iXSwgImZyIiwgIjMzIiwgIi4gLi4gLi4gLi4gLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRnJlbmNoIEd1aWFuYSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJnZiIsICI1OTQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRnJlbmNoIFBvbHluZXNpYSIsIFsib2NlYW5pYSJdLCAicGYiLCAiNjg5Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkdhYm9uIiwgWyJhZnJpY2EiXSwgImdhIiwgIjI0MSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHYW1iaWEiLCBbImFmcmljYSJdLCAiZ20iLCAiMjIwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkdlb3JnaWEiLCBbImFzaWEiLCAiZXgtdXNzciJdLCAiZ2UiLCAiOTk1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkdlcm1hbnkiLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJiYWx0aWMiXSwgImRlIiwgIjQ5IiwgIi4uLi4gLi4uLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiR2hhbmEiLCBbImFmcmljYSJdLCAiZ2giLCAiMjMzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkdyZWVjZSIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJnciIsICIzMCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHcmVuYWRhIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiZ2QiLCAiMTQ3MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHdWFkZWxvdXBlIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiZ3AiLCAiNTkwIiwgIiIsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHdWFtIiwgWyJvY2VhbmlhIl0sICJndSIsICIxNjcxIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkd1YXRlbWFsYSIsIFsiYW1lcmljYSIsICJjZW50cmFsLWFtZXJpY2EiXSwgImd0IiwgIjUwMiIsICIuLi4uLS4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiR3VpbmVhIiwgWyJhZnJpY2EiXSwgImduIiwgIjIyNCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHdWluZWEtQmlzc2F1IiwgWyJhZnJpY2EiXSwgImd3IiwgIjI0NSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHdXlhbmEiLCBbImFtZXJpY2EiLCAic291dGgtYW1lcmljYSJdLCAiZ3kiLCAiNTkyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkhhaXRpIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiaHQiLCAiNTA5IiwgIi4uLi4tLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJIb25kdXJhcyIsIFsiYW1lcmljYSIsICJjZW50cmFsLWFtZXJpY2EiXSwgImhuIiwgIjUwNCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJIb25nIEtvbmciLCBbImFzaWEiXSwgImhrIiwgIjg1MiIsICIuLi4uIC4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiSHVuZ2FyeSIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJodSIsICIzNiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJJY2VsYW5kIiwgWyJldXJvcGUiXSwgImlzIiwgIjM1NCIsICIuLi4gLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJJbmRpYSIsIFsiYXNpYSJdLCAiaW4iLCAiOTEiLCAiLi4uLi4tLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiSW5kb25lc2lhIiwgWyJhc2lhIl0sICJpZCIsICI2MiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJJcmFuIiwgWyJtaWRkbGUtZWFzdCJdLCAiaXIiLCAiOTgiLCAiLi4uIC4uLiAuLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIklyYXEiLCBbIm1pZGRsZS1lYXN0Il0sICJpcSIsICI5NjQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiSXJlbGFuZCIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJpZSIsICIzNTMiLCAiLi4gLi4uLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJJc3JhZWwiLCBbIm1pZGRsZS1lYXN0Il0sICJpbCIsICI5NzIiLCAiLi4uIC4uLiAuLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkl0YWx5IiwgWyJldXJvcGUiLCAiZXUtdW5pb24iXSwgIml0IiwgIjM5IiwgIi4uLiAuLi4uLi4uIiwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkphbWFpY2EiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJqbSIsICIxODc2Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkphcGFuIiwgWyJhc2lhIl0sICJqcCIsICI4MSIsICIuLiAuLi4uIC4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiSm9yZGFuIiwgWyJtaWRkbGUtZWFzdCJdLCAiam8iLCAiOTYyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkthemFraHN0YW4iLCBbImFzaWEiLCAiZXgtdXNzciJdLCAia3oiLCAiNyIsICIuLi4gLi4uLS4uLS4uIiwgMSwgWyIzMTAiLCAiMzExIiwgIjMxMiIsICIzMTMiLCAiMzE1IiwgIjMxOCIsICIzMjEiLCAiMzI0IiwgIjMyNSIsICIzMjYiLCAiMzI3IiwgIjMzNiIsICI3MTcyIiwgIjczNjIyIl1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJLZW55YSIsIFsiYWZyaWNhIl0sICJrZSIsICIyNTQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiS2lyaWJhdGkiLCBbIm9jZWFuaWEiXSwgImtpIiwgIjY4NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJLb3Nvdm8iLCBbImV1cm9wZSIsICJleC15dWdvcyJdLCAieGsiLCAiMzgzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkt1d2FpdCIsIFsibWlkZGxlLWVhc3QiXSwgImt3IiwgIjk2NSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJLeXJneXpzdGFuIiwgWyJhc2lhIiwgImV4LXVzc3IiXSwgImtnIiwgIjk5NiIsICIuLi4gLi4uIC4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJMYW9zIiwgWyJhc2lhIl0sICJsYSIsICI4NTYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTGF0dmlhIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iLCAiZXgtdXNzciIsICJiYWx0aWMiXSwgImx2IiwgIjM3MSIsICIuLiAuLi4gLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkxlYmFub24iLCBbIm1pZGRsZS1lYXN0Il0sICJsYiIsICI5NjEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTGVzb3RobyIsIFsiYWZyaWNhIl0sICJscyIsICIyNjYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTGliZXJpYSIsIFsiYWZyaWNhIl0sICJsciIsICIyMzEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTGlieWEiLCBbImFmcmljYSIsICJub3J0aC1hZnJpY2EiXSwgImx5IiwgIjIxOCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJMaWVjaHRlbnN0ZWluIiwgWyJldXJvcGUiXSwgImxpIiwgIjQyMyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJMaXRodWFuaWEiLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJleC11c3NyIiwgImJhbHRpYyJdLCAibHQiLCAiMzcwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkx1eGVtYm91cmciLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAibHUiLCAiMzUyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1hY2F1IiwgWyJhc2lhIl0sICJtbyIsICI4NTMiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTWFjZWRvbmlhIiwgWyJldXJvcGUiLCAiZXgteXVnb3MiXSwgIm1rIiwgIjM4OSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNYWRhZ2FzY2FyIiwgWyJhZnJpY2EiXSwgIm1nIiwgIjI2MSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNYWxhd2kiLCBbImFmcmljYSJdLCAibXciLCAiMjY1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1hbGF5c2lhIiwgWyJhc2lhIl0sICJteSIsICI2MCIsICIuLi0uLi4uLS4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTWFsZGl2ZXMiLCBbImFzaWEiXSwgIm12IiwgIjk2MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNYWxpIiwgWyJhZnJpY2EiXSwgIm1sIiwgIjIyMyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNYWx0YSIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJtdCIsICIzNTYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTWFyc2hhbGwgSXNsYW5kcyIsIFsib2NlYW5pYSJdLCAibWgiLCAiNjkyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1hcnRpbmlxdWUiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJtcSIsICI1OTYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTWF1cml0YW5pYSIsIFsiYWZyaWNhIl0sICJtciIsICIyMjIiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTWF1cml0aXVzIiwgWyJhZnJpY2EiXSwgIm11IiwgIjIzMCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNZXhpY28iLCBbImFtZXJpY2EiLCAiY2VudHJhbC1hbWVyaWNhIl0sICJteCIsICI1MiIsICIuLi4gLi4uIC4uLi4iLCAwLCBbIjU1IiwgIjgxIiwgIjMzIiwgIjY1NiIsICI2NjQiLCAiOTk4IiwgIjc3NCIsICIyMjkiXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1pY3JvbmVzaWEiLCBbIm9jZWFuaWEiXSwgImZtIiwgIjY5MSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNb2xkb3ZhIiwgWyJldXJvcGUiXSwgIm1kIiwgIjM3MyIsICIoLi4pIC4uLS4uLS4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1vbmFjbyIsIFsiZXVyb3BlIl0sICJtYyIsICIzNzciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTW9uZ29saWEiLCBbImFzaWEiXSwgIm1uIiwgIjk3NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNb250ZW5lZ3JvIiwgWyJldXJvcGUiLCAiZXgteXVnb3MiXSwgIm1lIiwgIjM4MiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNb3JvY2NvIiwgWyJhZnJpY2EiLCAibm9ydGgtYWZyaWNhIl0sICJtYSIsICIyMTIiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTW96YW1iaXF1ZSIsIFsiYWZyaWNhIl0sICJteiIsICIyNTgiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTXlhbm1hciIsIFsiYXNpYSJdLCAibW0iLCAiOTUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTmFtaWJpYSIsIFsiYWZyaWNhIl0sICJuYSIsICIyNjQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTmF1cnUiLCBbImFmcmljYSJdLCAibnIiLCAiNjc0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5lcGFsIiwgWyJhc2lhIl0sICJucCIsICI5NzciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTmV0aGVybGFuZHMiLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAibmwiLCAiMzEiLCAiLi4gLi4uLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTmV3IENhbGVkb25pYSIsIFsib2NlYW5pYSJdLCAibmMiLCAiNjg3Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5ldyBaZWFsYW5kIiwgWyJvY2VhbmlhIl0sICJueiIsICI2NCIsICIuLi4tLi4uLS4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTmljYXJhZ3VhIiwgWyJhbWVyaWNhIiwgImNlbnRyYWwtYW1lcmljYSJdLCAibmkiLCAiNTA1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5pZ2VyIiwgWyJhZnJpY2EiXSwgIm5lIiwgIjIyNyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJOaWdlcmlhIiwgWyJhZnJpY2EiXSwgIm5nIiwgIjIzNCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJOb3J0aCBLb3JlYSIsIFsiYXNpYSJdLCAia3AiLCAiODUwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5vcndheSIsIFsiZXVyb3BlIiwgImJhbHRpYyJdLCAibm8iLCAiNDciLCAiLi4uIC4uIC4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJPbWFuIiwgWyJtaWRkbGUtZWFzdCJdLCAib20iLCAiOTY4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlBha2lzdGFuIiwgWyJhc2lhIl0sICJwayIsICI5MiIsICIuLi4tLi4uLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJQYWxhdSIsIFsib2NlYW5pYSJdLCAicHciLCAiNjgwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlBhbGVzdGluZSIsIFsibWlkZGxlLWVhc3QiXSwgInBzIiwgIjk3MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJQYW5hbWEiLCBbImFtZXJpY2EiLCAiY2VudHJhbC1hbWVyaWNhIl0sICJwYSIsICI1MDciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUGFwdWEgTmV3IEd1aW5lYSIsIFsib2NlYW5pYSJdLCAicGciLCAiNjc1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlBhcmFndWF5IiwgWyJhbWVyaWNhIiwgInNvdXRoLWFtZXJpY2EiXSwgInB5IiwgIjU5NSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJQZXJ1IiwgWyJhbWVyaWNhIiwgInNvdXRoLWFtZXJpY2EiXSwgInBlIiwgIjUxIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlBoaWxpcHBpbmVzIiwgWyJhc2lhIl0sICJwaCIsICI2MyIsICIuLi4uIC4uLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUG9sYW5kIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iLCAiYmFsdGljIl0sICJwbCIsICI0OCIsICIuLi4tLi4uLS4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJQb3J0dWdhbCIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJwdCIsICIzNTEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUHVlcnRvIFJpY28iLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJwciIsICIxIiwgIiIsIDMsIFsiNzg3IiwgIjkzOSJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUWF0YXIiLCBbIm1pZGRsZS1lYXN0Il0sICJxYSIsICI5NzQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUsOpdW5pb24iLCBbImFmcmljYSJdLCAicmUiLCAiMjYyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlJvbWFuaWEiLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAicm8iLCAiNDAiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUnVzc2lhIiwgWyJldXJvcGUiLCAiYXNpYSIsICJleC11c3NyIiwgImJhbHRpYyJdLCAicnUiLCAiNyIsICIoLi4uKSAuLi4tLi4tLi4iLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUndhbmRhIiwgWyJhZnJpY2EiXSwgInJ3IiwgIjI1MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTYWludCBLaXR0cyBhbmQgTmV2aXMiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJrbiIsICIxODY5Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNhaW50IEx1Y2lhIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAibGMiLCAiMTc1OCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgInZjIiwgIjE3ODQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU2Ftb2EiLCBbIm9jZWFuaWEiXSwgIndzIiwgIjY4NSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTYW4gTWFyaW5vIiwgWyJldXJvcGUiXSwgInNtIiwgIjM3OCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTw6NvIFRvbcOpIGFuZCBQcsOtbmNpcGUiLCBbImFmcmljYSJdLCAic3QiLCAiMjM5Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNhdWRpIEFyYWJpYSIsIFsibWlkZGxlLWVhc3QiXSwgInNhIiwgIjk2NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTZW5lZ2FsIiwgWyJhZnJpY2EiXSwgInNuIiwgIjIyMSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTZXJiaWEiLCBbImV1cm9wZSIsICJleC15dWdvcyJdLCAicnMiLCAiMzgxIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNleWNoZWxsZXMiLCBbImFmcmljYSJdLCAic2MiLCAiMjQ4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNpZXJyYSBMZW9uZSIsIFsiYWZyaWNhIl0sICJzbCIsICIyMzIiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU2luZ2Fwb3JlIiwgWyJhc2lhIl0sICJzZyIsICI2NSIsICIuLi4uLS4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU2xvdmFraWEiLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAic2siLCAiNDIxIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNsb3ZlbmlhIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iLCAiZXgteXVnb3MiXSwgInNpIiwgIjM4NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTb2xvbW9uIElzbGFuZHMiLCBbIm9jZWFuaWEiXSwgInNiIiwgIjY3NyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTb21hbGlhIiwgWyJhZnJpY2EiXSwgInNvIiwgIjI1MiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTb3V0aCBBZnJpY2EiLCBbImFmcmljYSJdLCAiemEiLCAiMjciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU291dGggS29yZWEiLCBbImFzaWEiXSwgImtyIiwgIjgyIiwgIi4uLiAuLi4uIC4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU291dGggU3VkYW4iLCBbImFmcmljYSIsICJub3J0aC1hZnJpY2EiXSwgInNzIiwgIjIxMSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTcGFpbiIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJlcyIsICIzNCIsICIuLi4gLi4uIC4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTcmkgTGFua2EiLCBbImFzaWEiXSwgImxrIiwgIjk0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlN1ZGFuIiwgWyJhZnJpY2EiXSwgInNkIiwgIjI0OSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTdXJpbmFtZSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJzciIsICI1OTciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU3dhemlsYW5kIiwgWyJhZnJpY2EiXSwgInN6IiwgIjI2OCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTd2VkZW4iLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJiYWx0aWMiXSwgInNlIiwgIjQ2IiwgIiguLi4pIC4uLi0uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU3dpdHplcmxhbmQiLCBbImV1cm9wZSJdLCAiY2giLCAiNDEiLCAiLi4gLi4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlN5cmlhIiwgWyJtaWRkbGUtZWFzdCJdLCAic3kiLCAiOTYzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlRhaXdhbiIsIFsiYXNpYSJdLCAidHciLCAiODg2Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlRhamlraXN0YW4iLCBbImFzaWEiLCAiZXgtdXNzciJdLCAidGoiLCAiOTkyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlRhbnphbmlhIiwgWyJhZnJpY2EiXSwgInR6IiwgIjI1NSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJUaGFpbGFuZCIsIFsiYXNpYSJdLCAidGgiLCAiNjYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVGltb3ItTGVzdGUiLCBbImFzaWEiXSwgInRsIiwgIjY3MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJUb2dvIiwgWyJhZnJpY2EiXSwgInRnIiwgIjIyOCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJUb25nYSIsIFsib2NlYW5pYSJdLCAidG8iLCAiNjc2Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlRyaW5pZGFkIGFuZCBUb2JhZ28iLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJ0dCIsICIxODY4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlR1bmlzaWEiLCBbImFmcmljYSIsICJub3J0aC1hZnJpY2EiXSwgInRuIiwgIjIxNiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJUdXJrZXkiLCBbImV1cm9wZSJdLCAidHIiLCAiOTAiLCAiLi4uIC4uLiAuLiAuLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJUdXJrbWVuaXN0YW4iLCBbImFzaWEiLCAiZXgtdXNzciJdLCAidG0iLCAiOTkzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlR1dmFsdSIsIFsiYXNpYSJdLCAidHYiLCAiNjg4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlVnYW5kYSIsIFsiYWZyaWNhIl0sICJ1ZyIsICIyNTYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVWtyYWluZSIsIFsiZXVyb3BlIiwgImV4LXVzc3IiXSwgInVhIiwgIjM4MCIsICIoLi4pIC4uLiAuLiAuLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJVbml0ZWQgQXJhYiBFbWlyYXRlcyIsIFsibWlkZGxlLWVhc3QiXSwgImFlIiwgIjk3MSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJVbml0ZWQgS2luZ2RvbSIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJnYiIsICI0NCIsICIuLi4uIC4uLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJVbml0ZWQgU3RhdGVzIiwgWyJhbWVyaWNhIiwgIm5vcnRoLWFtZXJpY2EiXSwgInVzIiwgIjEiLCAiKC4uLikgLi4uLS4uLi4iLCAwLCBbIjkwNyIsICIyMDUiLCAiMjUxIiwgIjI1NiIsICIzMzQiLCAiNDc5IiwgIjUwMSIsICI4NzAiLCAiNDgwIiwgIjUyMCIsICI2MDIiLCAiNjIzIiwgIjkyOCIsICIyMDkiLCAiMjEzIiwgIjMxMCIsICIzMjMiLCAiNDA4IiwgIjQxNSIsICI1MTAiLCAiNTMwIiwgIjU1OSIsICI1NjIiLCAiNjE5IiwgIjYyNiIsICI2NTAiLCAiNjYxIiwgIjcwNyIsICI3MTQiLCAiNzYwIiwgIjgwNSIsICI4MTgiLCAiODMxIiwgIjg1OCIsICI5MDkiLCAiOTE2IiwgIjkyNSIsICI5NDkiLCAiOTUxIiwgIjMwMyIsICI3MTkiLCAiOTcwIiwgIjIwMyIsICI4NjAiLCAiMjAyIiwgIjMwMiIsICIyMzkiLCAiMzA1IiwgIjMyMSIsICIzNTIiLCAiMzg2IiwgIjQwNyIsICI1NjEiLCAiNzI3IiwgIjc3MiIsICI4MTMiLCAiODUwIiwgIjg2MyIsICI5MDQiLCAiOTQxIiwgIjk1NCIsICIyMjkiLCAiNDA0IiwgIjQ3OCIsICI3MDYiLCAiNzcwIiwgIjkxMiIsICI4MDgiLCAiMzE5IiwgIjUxNSIsICI1NjMiLCAiNjQxIiwgIjcxMiIsICIyMDgiLCAiMjE3IiwgIjMwOSIsICIzMTIiLCAiNjE4IiwgIjYzMCIsICI3MDgiLCAiNzczIiwgIjgxNSIsICI4NDciLCAiMjE5IiwgIjI2MCIsICIzMTciLCAiNTc0IiwgIjc2NSIsICI4MTIiLCAiMzE2IiwgIjYyMCIsICI3ODUiLCAiOTEzIiwgIjI3MCIsICI1MDIiLCAiNjA2IiwgIjg1OSIsICIyMjUiLCAiMzE4IiwgIjMzNyIsICI1MDQiLCAiOTg1IiwgIjQxMyIsICI1MDgiLCAiNjE3IiwgIjc4MSIsICI5NzgiLCAiMzAxIiwgIjQxMCIsICIyMDciLCAiMjMxIiwgIjI0OCIsICIyNjkiLCAiMzEzIiwgIjUxNyIsICI1ODYiLCAiNjE2IiwgIjczNCIsICI4MTAiLCAiOTA2IiwgIjk4OSIsICIyMTgiLCAiMzIwIiwgIjUwNyIsICI2MTIiLCAiNjUxIiwgIjc2MyIsICI5NTIiLCAiMzE0IiwgIjQxNyIsICI1NzMiLCAiNjM2IiwgIjY2MCIsICI4MTYiLCAiMjI4IiwgIjYwMSIsICI2NjIiLCAiNDA2IiwgIjI1MiIsICIzMzYiLCAiNzA0IiwgIjgyOCIsICI5MTAiLCAiOTE5IiwgIjcwMSIsICIzMDgiLCAiNDAyIiwgIjYwMyIsICIyMDEiLCAiNjA5IiwgIjczMiIsICI4NTYiLCAiOTA4IiwgIjk3MyIsICI1MDUiLCAiNTc1IiwgIjcwMiIsICI3NzUiLCAiMjEyIiwgIjMxNSIsICI1MTYiLCAiNTE4IiwgIjU4NSIsICI2MDciLCAiNjMxIiwgIjcxNiIsICI3MTgiLCAiODQ1IiwgIjkxNCIsICIyMTYiLCAiMzMwIiwgIjQxOSIsICI0NDAiLCAiNTEzIiwgIjYxNCIsICI3NDAiLCAiOTM3IiwgIjQwNSIsICI1ODAiLCAiOTE4IiwgIjUwMyIsICI1NDEiLCAiMjE1IiwgIjQxMiIsICI1NzAiLCAiNjEwIiwgIjcxNyIsICI3MjQiLCAiODE0IiwgIjQwMSIsICI4MDMiLCAiODQzIiwgIjg2NCIsICI2MDUiLCAiNDIzIiwgIjYxNSIsICI3MzEiLCAiODY1IiwgIjkwMSIsICI5MzEiLCAiMjEwIiwgIjIxNCIsICIyNTQiLCAiMjgxIiwgIjMyNSIsICIzNjEiLCAiNDA5IiwgIjQzMiIsICI1MTIiLCAiNzEzIiwgIjgwNiIsICI4MTciLCAiODMwIiwgIjkwMyIsICI5MTUiLCAiOTM2IiwgIjk0MCIsICI5NTYiLCAiOTcyIiwgIjk3OSIsICI0MzUiLCAiODAxIiwgIjI3NiIsICI0MzQiLCAiNTQwIiwgIjcwMyIsICI3NTciLCAiODA0IiwgIjgwMiIsICIyMDYiLCAiMjUzIiwgIjM2MCIsICI0MjUiLCAiNTA5IiwgIjI2MiIsICI0MTQiLCAiNjA4IiwgIjcxNSIsICI5MjAiLCAiMzA0IiwgIjMwNyJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVXJ1Z3VheSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJ1eSIsICI1OTgiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVXpiZWtpc3RhbiIsIFsiYXNpYSIsICJleC11c3NyIl0sICJ1eiIsICI5OTgiLCAiLi4gLi4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlZhbnVhdHUiLCBbIm9jZWFuaWEiXSwgInZ1IiwgIjY3OCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJWYXRpY2FuIENpdHkiLCBbImV1cm9wZSJdLCAidmEiLCAiMzkiLCAiLi4gLi4uLiAuLi4uIiwgMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlZlbmV6dWVsYSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJ2ZSIsICI1OCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJWaWV0bmFtIiwgWyJhc2lhIl0sICJ2biIsICI4NCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJZZW1lbiIsIFsibWlkZGxlLWVhc3QiXSwgInllIiwgIjk2NyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJaYW1iaWEiLCBbImFmcmljYSJdLCAiem0iLCAiMjYwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlppbWJhYndlIiwgWyJhZnJpY2EiXSwgInp3IiwgIjI2MyJdCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFAgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkFtZXJpY2FuIFNhbW9hIiwgWyJvY2VhbmlhIl0sICJhcyIsICIxNjg0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkFuZ3VpbGxhIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiYWkiLCAiMTI2NCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCZXJtdWRhIiwgWyJhbWVyaWNhIiwgIm5vcnRoLWFtZXJpY2EiXSwgImJtIiwgIjE0NDEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQnJpdGlzaCBWaXJnaW4gSXNsYW5kcyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgInZnIiwgIjEyODQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQ2F5bWFuIElzbGFuZHMiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJreSIsICIxMzQ1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNvb2sgSXNsYW5kcyIsIFsib2NlYW5pYSJdLCAiY2siLCAiNjgyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkZhbGtsYW5kIElzbGFuZHMiLCBbImFtZXJpY2EiLCAic291dGgtYW1lcmljYSJdLCAiZmsiLCAiNTAwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkZhcm9lIElzbGFuZHMiLCBbImV1cm9wZSJdLCAiZm8iLCAiMjk4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkdpYnJhbHRhciIsIFsiZXVyb3BlIl0sICJnaSIsICIzNTAiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiR3JlZW5sYW5kIiwgWyJhbWVyaWNhIl0sICJnbCIsICIyOTkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiSmVyc2V5IiwgWyJldXJvcGUiLCAiZXUtdW5pb24iXSwgImplIiwgIjQ0IiwgIi4uLi4gLi4uLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1vbnRzZXJyYXQiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJtcyIsICIxNjY0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5pdWUiLCBbImFzaWEiXSwgIm51IiwgIjY4MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJOb3Jmb2xrIElzbGFuZCIsIFsib2NlYW5pYSJdLCAibmYiLCAiNjcyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5vcnRoZXJuIE1hcmlhbmEgSXNsYW5kcyIsIFsib2NlYW5pYSJdLCAibXAiLCAiMTY3MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTYWludCBCYXJ0aMOpbGVteSIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgImJsIiwgIjU5MCIsICIiLCAxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU2FpbnQgSGVsZW5hIiwgWyJhZnJpY2EiXSwgInNoIiwgIjI5MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTYWludCBNYXJ0aW4iLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJtZiIsICI1OTAiLCAiIiwgMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNhaW50IFBpZXJyZSBhbmQgTWlxdWVsb24iLCBbImFtZXJpY2EiLCAibm9ydGgtYW1lcmljYSJdLCAicG0iLCAiNTA4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNpbnQgTWFhcnRlbiIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgInN4IiwgIjE3MjEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVG9rZWxhdSIsIFsib2NlYW5pYSJdLCAidGsiLCAiNjkwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kcyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgInRjIiwgIjE2NDkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVS5TLiBWaXJnaW4gSXNsYW5kcyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgInZpIiwgIjEzNDAiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiV2FsbGlzIGFuZCBGdXR1bmEiLCBbIm9jZWFuaWEiXSwgIndmIiwgIjY4MSJdCiAgICAgICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEEoZSwgdCwgbiwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIW4gfHwgbyA/IGUgKyAiIi5wYWRFbmQodC5sZW5ndGgsICIuIikgKyAiICIgKyByIDogZSArICIiLnBhZEVuZCh0Lmxlbmd0aCwgIi4iKSArICIgIiArIG4KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEQoZSwgdCwgbiwgbywgYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcywgdSwgbCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA9ICEwID09PSB0LCBbKHMgPSBbXSkuY29uY2F0LmFwcGx5KHMsIGkoZS5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb25zOiBlWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc28yOiBlWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogZVszXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbENvZGU6IGVbM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogQShuLCBlWzNdLCBlWzRdLCBvLCBhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IGVbNV0gfHwgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbNl0gJiYgZVs2XS5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDE7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbnVsbCAhPSBhcmd1bWVudHNbdF0gPyBhcmd1bWVudHNbdF0gOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gT2JqZWN0LmtleXMobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmIChvID0gby5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLCBlKS5lbnVtZXJhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpKSwgby5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcihlLCB0LCBuW3RdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHt9LCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmRpYWxDb2RlID0gZVszXSArIHQsIG4uaXNBcmVhQ29kZSA9ICEwLCBuLmFyZWFDb2RlTGVuZ3RoID0gdC5sZW5ndGgsIHMucHVzaChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBzLmxlbmd0aCA+IDAgPyAoaS5tYWluQ29kZSA9ICEwLCB1IHx8ICJBcnJheSIgPT09IHQuY29uc3RydWN0b3IubmFtZSAmJiB0LmluY2x1ZGVzKGVbMl0pID8gKGkuaGFzQXJlYUNvZGVzID0gITAsIFtpXS5jb25jYXQocykpIDogKGwgPSBsLmNvbmNhdChzKSwgW2ldKSkgOiBbaV0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSksIGxdCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBUKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmtleXMobiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IE9iamVjdC52YWx1ZXMobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmZvckVhY2goKGZ1bmN0aW9uKG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgcmV0dXJuIGUucHVzaChbbiwgaVtvXV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbMF0gPT09IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0xID09PSBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gW25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzW3RdID0gaVtvXSwgZS5wdXNoKHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGVbYV1bdF0gPSBpW29dCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gTihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSB0Lmxlbmd0aCA/IGUgOiBlLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmZpbmRJbmRleCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0WzBdID09PSBlWzJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgPT09IG4pIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJbMV0gJiYgKGVbNF0gPSByWzFdKSwgclszXSAmJiAoZVs1XSA9IHJbM10pLCByWzJdICYmIChlWzZdID0gclsyXSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBNID0gZnVuY3Rpb24gSShlLCB0LCBuLCByLCBvLCBhLCBzLCBsLCBjLCBmLCBkLCBwLCBoLCBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KHRoaXMsIEkpLCB0aGlzLmZpbHRlclJlZ2lvbnMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZWdpb25zLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5yZWdpb25zLnNvbWUoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9PT0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuc29ydFRlcnJpdG9yaWVzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10uY29uY2F0KGkoZSksIGkodCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNvcnQoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUubmFtZSA8IHQubmFtZSA/IC0xIDogZS5uYW1lID4gdC5uYW1lID8gMSA6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZ2V0RmlsdGVyZWRDb3VudHJ5TGlzdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gZS5sZW5ndGggPyB0IDogbiA/IGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5maW5kKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pc28yID09PSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4pIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IHQuZmlsdGVyKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSB0LmlzbzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmxvY2FsaXplQ291bnRyaWVzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykgdm9pZCAwICE9PSB0W2Vbcl0uaXNvMl0gPyBlW3JdLmxvY2FsTmFtZSA9IHRbZVtyXS5pc28yXSA6IHZvaWQgMCAhPT0gdFtlW3JdLm5hbWVdICYmIChlW3JdLmxvY2FsTmFtZSA9IHRbZVtyXS5uYW1lXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gfHwgZS5zb3J0KChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmxvY2FsTmFtZSA8IHQubG9jYWxOYW1lID8gLTEgOiBlLmxvY2FsTmFtZSA+IHQubG9jYWxOYW1lID8gMSA6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZ2V0Q3VzdG9tQXJlYXMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IFtdLCByID0gMDsgciA8IHQubGVuZ3RoOyByKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5kaWFsQ29kZSArPSB0W3JdLCBuLnB1c2gobykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZXhjbHVkZUNvdW50cmllcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdC5sZW5ndGggPyBlIDogZS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0LmluY2x1ZGVzKGUuaXNvMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFQociwgMSwgZSwgITApLCBUKHIsIDMsIHQpLCBUKHIsIDIsIG4pLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShsLCBjLCBmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gTihKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGopKSwgeSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IE4oSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShQKSksIHkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBTKEQoZywgZSwgcCwgaCwgbSksIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBiWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBiWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgXyA9IFMoRCh2LCBlLCBwLCBoLCBtKSwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBfWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9bMV0sIHcgPSB0aGlzLnNvcnRUZXJyaXRvcmllcyh4LCB3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAmJiAodyA9IHRoaXMuZmlsdGVyUmVnaW9ucyhuLCB3KSksIHRoaXMub25seUNvdW50cmllcyA9IHRoaXMubG9jYWxpemVDb3VudHJpZXModGhpcy5leGNsdWRlQ291bnRyaWVzKHRoaXMuZ2V0RmlsdGVyZWRDb3VudHJ5TGlzdChyLCB3LCBzLmluY2x1ZGVzKCJvbmx5Q291bnRyaWVzIikpLCBhKSwgZCwgcy5pbmNsdWRlcygib25seUNvdW50cmllcyIpKSwgdGhpcy5wcmVmZXJyZWRDb3VudHJpZXMgPSAwID09PSBvLmxlbmd0aCA/IFtdIDogdGhpcy5sb2NhbGl6ZUNvdW50cmllcyh0aGlzLmdldEZpbHRlcmVkQ291bnRyeUxpc3Qobywgdywgcy5pbmNsdWRlcygicHJlZmVycmVkQ291bnRyaWVzIikpLCBkLCBzLmluY2x1ZGVzKCJwcmVmZXJyZWRDb3VudHJpZXMiKSksIHRoaXMuaGlkZGVuQXJlYUNvZGVzID0gdGhpcy5leGNsdWRlQ291bnRyaWVzKHRoaXMuZ2V0RmlsdGVyZWRDb3VudHJ5TGlzdChyLCBPKSwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgTCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUodGhpcywgdCksIChuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT09IGYodCkgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGQoZSkgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCBwKHQpLmNhbGwodGhpcywgZSkpKS5nZXRQcm9iYWJsZUNhbmRpZGF0ZSA9IHcoKSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAwICE9PSBlLmxlbmd0aCA/IG4uc3RhdGUub25seUNvdW50cmllcy5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrKCkodC5uYW1lLnRvTG93ZXJDYXNlKCksIGUudG9Mb3dlckNhc2UoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGQoZChuKSkpWzBdIDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbi5ndWVzc1NlbGVjdGVkQ291bnRyeSA9IHcoKSgoZnVuY3Rpb24oZSwgdCwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCExID09PSBuLnByb3BzLmVuYWJsZUFyZWFDb2RlcyAmJiAoby5zb21lKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsoKShlLCB0LmRpYWxDb2RlKSkgcmV0dXJuIHIuc29tZSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5pc28yID09PSBlLmlzbzIgJiYgZS5tYWluQ29kZSkgcmV0dXJuIGkgPSBlLCAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgaSkpIHJldHVybiBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHIuZmluZCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaXNvMiA9PSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIiID09PSBlLnRyaW0oKSkgcmV0dXJuIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gci5yZWR1Y2UoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrKCkoZSwgbi5kaWFsQ29kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5kaWFsQ29kZS5sZW5ndGggPiB0LmRpYWxDb2RlLmxlbmd0aCkgcmV0dXJuIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uZGlhbENvZGUubGVuZ3RoID09PSB0LmRpYWxDb2RlLmxlbmd0aCAmJiBuLnByaW9yaXR5IDwgdC5wcmlvcml0eSkgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsQ29kZTogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogMTAwMDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZChkKG4pKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzLm5hbWUgPyBzIDogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbi51cGRhdGVDb3VudHJ5ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgciA9IG4uc3RhdGUub25seUNvdW50cmllczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQgPSBlLmluZGV4T2YoMCkgPj0gIjAiICYmIGUuaW5kZXhPZigwKSA8PSAiOSIgPyByLmZpbmQoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmRpYWxDb2RlID09ICtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IHIuZmluZCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuaXNvMiA9PSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkgJiYgdC5kaWFsQ29kZSAmJiBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnRyeTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZE51bWJlcjogbi5wcm9wcy5kaXNhYmxlQ291bnRyeUNvZGUgPyAiIiA6IG4uZm9ybWF0TnVtYmVyKHQuZGlhbENvZGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5zY3JvbGxUbyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbi5kcm9wZG93blJlZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICYmIGRvY3VtZW50LmJvZHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIub2Zmc2V0SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkgKyBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzLm9mZnNldEhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHUudG9wICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBjICsgbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGMgLSBpICsgci5zY3JvbGxUb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvIC8gMiAtIGwgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLnByb3BzLmVuYWJsZVNlYXJjaCA/IGMgPCBpICsgMzIgOiBjIDwgaSkgdCAmJiAoZCAtPSBwKSwgci5zY3JvbGxUb3AgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGYgPiBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgKGQgKz0gcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gbyAtIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuc2Nyb2xsVG9wID0gZCAtIGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnNjcm9sbFRvVG9wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5kcm9wZG93blJlZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiBkb2N1bWVudC5ib2R5ICYmIChlLnNjcm9sbFRvcCA9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5mb3JtYXROdW1iZXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBpID0gdC5mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1LmRpc2FibGVDb3VudHJ5Q29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB1LmVuYWJsZUFyZWFDb2RlU3RyZXRjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB1LmVuYWJsZUxvbmdOdW1iZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHUuYXV0b0Zvcm1hdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPyAoKHIgPSBpLnNwbGl0KCIgIikpLnNoaWZ0KCksIHIgPSByLmpvaW4oIiAiKSkgOiBjICYmIHQuaXNBcmVhQ29kZSA/ICgociA9IGkuc3BsaXQoIiAiKSlbMV0gPSByWzFdLnJlcGxhY2UoL1wuKy8sICIiLnBhZEVuZCh0LmFyZWFDb2RlTGVuZ3RoLCAiLiIpKSwgciA9IHIuam9pbigiICIpKSA6IHIgPSBpLCAhZSB8fCAwID09PSBlLmxlbmd0aCkgcmV0dXJuIGwgPyAiIiA6IG4ucHJvcHMucHJlZml4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLmxlbmd0aCA8IDIgfHwgIXIgfHwgIWQpIHJldHVybiBsID8gZSA6IG4ucHJvcHMucHJlZml4ICsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAsIGggPSBfKCkociwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBlLnJlbWFpbmluZ1RleHQubGVuZ3RoKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiLiIgIT09IHQpIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVGV4dDogZS5mb3JtYXR0ZWRUZXh0ICsgdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdUZXh0OiBlLnJlbWFpbmluZ1RleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciA9IGEobiA9IGUucmVtYWluaW5nVGV4dCkgfHwgbyhuKSB8fCBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHJbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHIuc2xpY2UoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFRleHQ6IGUuZm9ybWF0dGVkVGV4dCArIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nVGV4dDogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVGV4dDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdUZXh0OiBlLnNwbGl0KCIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwID0gZiA/IGguZm9ybWF0dGVkVGV4dCArIGgucmVtYWluaW5nVGV4dC5qb2luKCIiKSA6IGguZm9ybWF0dGVkVGV4dCkuaW5jbHVkZXMoIigiKSAmJiAhcC5pbmNsdWRlcygiKSIpICYmIChwICs9ICIpIiksIHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmN1cnNvclRvRW5kID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5udW1iZXJJbnB1dFJlZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS52YWx1ZS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKSIgPT09IGUudmFsdWUuY2hhckF0KHQgLSAxKSAmJiAodCAtPSAxKSwgZS5zZXRTZWxlY3Rpb25SYW5nZSh0LCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5nZXRFbGVtZW50ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gblsiZmxhZ19ub18iLmNvbmNhdChlKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmdldENvdW50cnlEYXRhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnN0YXRlLnNlbGVjdGVkQ291bnRyeSA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG4uc3RhdGUuc2VsZWN0ZWRDb3VudHJ5Lm5hbWUgfHwgIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsQ29kZTogbi5zdGF0ZS5zZWxlY3RlZENvdW50cnkuZGlhbENvZGUgfHwgIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogbi5zdGF0ZS5zZWxlY3RlZENvdW50cnkuaXNvMiB8fCAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogbi5zdGF0ZS5zZWxlY3RlZENvdW50cnkuZm9ybWF0IHx8ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlRmxhZ0Ryb3Bkb3duQ2xpY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KCksIG4uc3RhdGUuc2hvd0Ryb3Bkb3duIHx8ICFuLnByb3BzLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG4uc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQucHJlZmVycmVkQ291bnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0Lm9ubHlDb3VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWRDb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmNvbmNhdFByZWZlcnJlZENvdW50cmllcyhyLCBvKS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZGlhbENvZGUgPT09IGkuZGlhbENvZGUgJiYgZS5pc28yID09PSBpLmlzbzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RHJvcGRvd246ICFuLnN0YXRlLnNob3dEcm9wZG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRDb3VudHJ5SW5kZXg6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnN0YXRlLnNob3dEcm9wZG93biAmJiBuLnNjcm9sbFRvKG4uZ2V0RWxlbWVudChuLnN0YXRlLmhpZ2hsaWdodENvdW50cnlJbmRleCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlSW5wdXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS50YXJnZXQudmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLnByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByLm9uQ2hhbmdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4ucHJvcHMuZGlzYWJsZUNvdW50cnlDb2RlID8gIiIgOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4uc3RhdGUuc2VsZWN0ZWRDb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4uc3RhdGUuZnJlZXplU2VsZWN0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4ucHJvcHMuY291bnRyeUNvZGVFZGl0YWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBvICsgKHMuaGFzQXJlYUNvZGVzID8gbi5zdGF0ZS5vbmx5Q291bnRyaWVzLmZpbmQoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5pc28yID09PSBzLmlzbzIgJiYgZS5tYWluQ29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmRpYWxDb2RlIDogcy5kaWFsQ29kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zbGljZSgwLCBsLmxlbmd0aCkgIT09IGwpIHJldHVybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID09PSBvKSByZXR1cm4gaSAmJiBpKCIiLCBuLmdldENvdW50cnlEYXRhKCksIGUsICIiKSwgbi5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWROdW1iZXI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5yZXBsYWNlKC9cRC9nLCAiIikubGVuZ3RoID4gMTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMSA9PT0gbi5wcm9wcy5lbmFibGVMb25nTnVtYmVycykgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJudW1iZXIiID09IHR5cGVvZiBuLnByb3BzLmVuYWJsZUxvbmdOdW1iZXJzICYmIHQucmVwbGFjZSgvXEQvZywgIiIpLmxlbmd0aCA+IG4ucHJvcHMuZW5hYmxlTG9uZ051bWJlcnMpIHJldHVybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ICE9PSBuLnN0YXRlLmZvcm1hdHRlZE51bWJlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCA/IGUucHJldmVudERlZmF1bHQoKSA6IGUucmV0dXJuVmFsdWUgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gbi5wcm9wcy5jb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBuLnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmLm9ubHlDb3VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGYuc2VsZWN0ZWRDb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmLmhpZGRlbkFyZWFDb2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICYmIGUucGVyc2lzdCgpLCB0Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IHQucmVwbGFjZSgvXEQvZywgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghbi5zdGF0ZS5mcmVlemVTZWxlY3Rpb24gfHwgcCAmJiBwLmRpYWxDb2RlLmxlbmd0aCA+IG0ubGVuZ3RoKSAmJiAocyA9IG4ucHJvcHMuZGlzYWJsZUNvdW50cnlHdWVzcyA/IHAgOiBuLmd1ZXNzU2VsZWN0ZWRDb3VudHJ5KG0uc3Vic3RyaW5nKDAsIDYpLCBjLCBkLCBoKSB8fCBwLCB1ID0gITEpLCBhID0gbi5mb3JtYXROdW1iZXIobSwgcyksIHMgPSBzLmRpYWxDb2RlID8gcyA6IHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBuLnN0YXRlLmZvcm1hdHRlZE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gYS5sZW5ndGggLSB2Lmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZE51bWJlcjogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlemVTZWxlY3Rpb246IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudHJ5OiBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA+IDAgJiYgKGcgLT0gYiksICIpIiA9PSBhLmNoYXJBdChhLmxlbmd0aCAtIDEpID8gbi5udW1iZXJJbnB1dFJlZi5zZXRTZWxlY3Rpb25SYW5nZShhLmxlbmd0aCAtIDEsIGEubGVuZ3RoIC0gMSkgOiBnID4gMCAmJiB2Lmxlbmd0aCA+PSBhLmxlbmd0aCA/IG4ubnVtYmVySW5wdXRSZWYuc2V0U2VsZWN0aW9uUmFuZ2UoZywgZykgOiB5IDwgdi5sZW5ndGggJiYgbi5udW1iZXJJbnB1dFJlZi5zZXRTZWxlY3Rpb25SYW5nZSh5LCB5KSwgaSAmJiBpKGEucmVwbGFjZSgvW14wLTldKy9nLCAiIiksIG4uZ2V0Q291bnRyeURhdGEoKSwgZSwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5oYW5kbGVJbnB1dENsaWNrID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dEcm9wZG93bjogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4ucHJvcHMub25DbGljayAmJiBuLnByb3BzLm9uQ2xpY2soZSwgbi5nZXRDb3VudHJ5RGF0YSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlRG91YmxlQ2xpY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS50YXJnZXQudmFsdWUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZSgwLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlRmxhZ0l0ZW1DbGljayA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLnN0YXRlLnNlbGVjdGVkQ291bnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLnN0YXRlLm9ubHlDb3VudHJpZXMuZmluZCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID09IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gbi5zdGF0ZS5mb3JtYXR0ZWROdW1iZXIucmVwbGFjZSgiICIsICIiKS5yZXBsYWNlKCIoIiwgIiIpLnJlcGxhY2UoIikiLCAiIikucmVwbGFjZSgiLSIsICIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5sZW5ndGggPiAxID8gaS5yZXBsYWNlKHIuZGlhbENvZGUsIG8uZGlhbENvZGUpIDogby5kaWFsQ29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5mb3JtYXROdW1iZXIoYS5yZXBsYWNlKC9cRC9nLCAiIiksIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Ryb3Bkb3duOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50cnk6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZXplU2VsZWN0aW9uOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWROdW1iZXI6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jdXJzb3JUb0VuZCgpLCBuLnByb3BzLm9uQ2hhbmdlICYmIG4ucHJvcHMub25DaGFuZ2Uocy5yZXBsYWNlKC9bXjAtOV0rL2csICIiKSwgbi5nZXRDb3VudHJ5RGF0YSgpLCB0LCBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmhhbmRsZUlucHV0Rm9jdXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ubnVtYmVySW5wdXRSZWYgJiYgbi5udW1iZXJJbnB1dFJlZi52YWx1ZSA9PT0gbi5wcm9wcy5wcmVmaXggJiYgbi5zdGF0ZS5zZWxlY3RlZENvdW50cnkgJiYgIW4ucHJvcHMuZGlzYWJsZUNvdW50cnlDb2RlICYmIG4uc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyOiBuLnByb3BzLnByZWZpeCArIG4uc3RhdGUuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucHJvcHMuanVtcEN1cnNvclRvRW5kICYmIHNldFRpbWVvdXQobi5jdXJzb3JUb0VuZCwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbi5wcm9wcy5vbkZvY3VzICYmIG4ucHJvcHMub25Gb2N1cyhlLCBuLmdldENvdW50cnlEYXRhKCkpLCBuLnByb3BzLmp1bXBDdXJzb3JUb0VuZCAmJiBzZXRUaW1lb3V0KG4uY3Vyc29yVG9FbmQsIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5oYW5kbGVJbnB1dEJsdXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlIHx8IG4uc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IG4ucHJvcHMucGxhY2Vob2xkZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4ucHJvcHMub25CbHVyICYmIG4ucHJvcHMub25CbHVyKGUsIG4uZ2V0Q291bnRyeURhdGEoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmhhbmRsZUlucHV0Q29weSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4ucHJvcHMuY29weU51bWJlcnNPbmx5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1teMC05XSsvZywgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvcGxhaW4iLCB0KSwgZS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmdldEhpZ2hsaWdodENvdW50cnlJbmRleCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuLnN0YXRlLmhpZ2hsaWdodENvdW50cnlJbmRleCArIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IDwgMCB8fCB0ID49IG4uc3RhdGUub25seUNvdW50cmllcy5sZW5ndGggKyBuLnN0YXRlLnByZWZlcnJlZENvdW50cmllcy5sZW5ndGggPyB0IC0gZSA6IG4ucHJvcHMuZW5hYmxlU2VhcmNoICYmIHQgPiBuLmdldFNlYXJjaEZpbHRlcmVkQ291bnRyaWVzKCkubGVuZ3RoID8gMCA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnNlYXJjaENvdW50cnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuLmdldFByb2JhYmxlQ2FuZGlkYXRlKG4uc3RhdGUucXVlcnlTdHJpbmcpIHx8IG4uc3RhdGUub25seUNvdW50cmllc1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBuLnN0YXRlLm9ubHlDb3VudHJpZXMuZmluZEluZGV4KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPT0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpICsgbi5zdGF0ZS5wcmVmZXJyZWRDb3VudHJpZXMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNjcm9sbFRvKG4uZ2V0RWxlbWVudCh0KSwgITApLCBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodENvdW50cnlJbmRleDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlS2V5ZG93biA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuLnByb3BzLmtleXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS50YXJnZXQuY2xhc3NOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5pbmNsdWRlcygic2VsZWN0ZWQtZmxhZyIpICYmIGUud2hpY2ggPT09IHQuRU5URVIgJiYgIW4uc3RhdGUuc2hvd0Ryb3Bkb3duKSByZXR1cm4gbi5oYW5kbGVGbGFnRHJvcGRvd25DbGljayhlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuaW5jbHVkZXMoImZvcm0tY29udHJvbCIpICYmIChlLndoaWNoID09PSB0LkVOVEVSIHx8IGUud2hpY2ggPT09IHQuRVNDKSkgcmV0dXJuIGUudGFyZ2V0LmJsdXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uc3RhdGUuc2hvd0Ryb3Bkb3duICYmICFuLnByb3BzLmRpc2FibGVkICYmICghci5pbmNsdWRlcygic2VhcmNoLWJveCIpIHx8IGUud2hpY2ggPT09IHQuVVAgfHwgZS53aGljaCA9PT0gdC5ET1dOIHx8IGUud2hpY2ggPT09IHQuRU5URVIgfHwgZS53aGljaCA9PT0gdC5FU0MgJiYgIiIgPT09IGUudGFyZ2V0LnZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCA/IGUucHJldmVudERlZmF1bHQoKSA6IGUucmV0dXJuVmFsdWUgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRDb3VudHJ5SW5kZXg6IG4uZ2V0SGlnaGxpZ2h0Q291bnRyeUluZGV4KGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNjcm9sbFRvKG4uZ2V0RWxlbWVudChuLnN0YXRlLmhpZ2hsaWdodENvdW50cnlJbmRleCksICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS53aGljaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdC5ET1dOOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHQuVVA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8oLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHQuRU5URVI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucHJvcHMuZW5hYmxlU2VhcmNoID8gbi5oYW5kbGVGbGFnSXRlbUNsaWNrKG4uZ2V0U2VhcmNoRmlsdGVyZWRDb3VudHJpZXMoKVtuLnN0YXRlLmhpZ2hsaWdodENvdW50cnlJbmRleF0gfHwgbi5nZXRTZWFyY2hGaWx0ZXJlZENvdW50cmllcygpWzBdLCBlKSA6IG4uaGFuZGxlRmxhZ0l0ZW1DbGljayhbXS5jb25jYXQoaShuLnN0YXRlLnByZWZlcnJlZENvdW50cmllcyksIGkobi5zdGF0ZS5vbmx5Q291bnRyaWVzKSlbbi5zdGF0ZS5oaWdobGlnaHRDb3VudHJ5SW5kZXhdLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB0LkVTQzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHQuVEFCOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dEcm9wZG93bjogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5jdXJzb3JUb0VuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLndoaWNoID49IHQuQSAmJiBlLndoaWNoIDw9IHQuWiB8fCBlLndoaWNoID09PSB0LlNQQUNFKSAmJiBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nOiBuLnN0YXRlLnF1ZXJ5U3RyaW5nICsgU3RyaW5nLmZyb21DaGFyQ29kZShlLndoaWNoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnN0YXRlLmRlYm91bmNlZFF1ZXJ5U3RpbmdTZWFyY2hlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlSW5wdXRLZXlEb3duID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG4ucHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdC5rZXlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQub25FbnRlcktleVByZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQub25LZXlEb3duOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLndoaWNoID09PSByLkVOVEVSICYmIG8gJiYgbyhlKSwgaSAmJiBpKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5oYW5kbGVDbGlja091dHNpZGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uZHJvcGRvd25SZWYgJiYgIW4uZHJvcGRvd25Db250YWluZXJSZWYuY29udGFpbnMoZS50YXJnZXQpICYmIG4uc3RhdGUuc2hvd0Ryb3Bkb3duICYmIG4uc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Ryb3Bkb3duOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlU2VhcmNoQ2hhbmdlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIucHJlZmVycmVkQ291bnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHIuc2VsZWN0ZWRDb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiIiA9PT0gdCAmJiBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG4uc3RhdGUub25seUNvdW50cmllczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmNvbmNhdFByZWZlcnJlZENvdW50cmllcyhvLCBzKS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PSBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNjcm9sbFRvKG4uZ2V0RWxlbWVudChhKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAxMDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodENvdW50cnlJbmRleDogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uY29uY2F0UHJlZmVycmVkQ291bnRyaWVzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5sZW5ndGggPiAwID8gaShuZXcgU2V0KGUuY29uY2F0KHQpKSkgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5nZXREcm9wZG93bkNvdW50cnlOYW1lID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5sb2NhbE5hbWUgfHwgZS5uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5nZXRTZWFyY2hGaWx0ZXJlZENvdW50cmllcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG4uc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS5wcmVmZXJyZWRDb3VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5vbmx5Q291bnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuc2VhcmNoVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbi5wcm9wcy5lbmFibGVTZWFyY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5jb25jYXRQcmVmZXJyZWRDb3VudHJpZXModCwgciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gby50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCIrIiwgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSAmJiB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoL15cZCskLy50ZXN0KHUpKSByZXR1cm4gcy5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZGlhbENvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsiIi5jb25jYXQodCldLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBzLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuaXNvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsiIi5jb25jYXQodCldLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmxvY2FsTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaXNvMiwgWyIiLmNvbmNhdCh0KSwgIiIuY29uY2F0KG4gfHwgIiIpXS5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNjcm9sbFRvVG9wKCksIGkobmV3IFNldChbXS5jb25jYXQobCwgYykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5nZXRDb3VudHJ5RHJvcGRvd25MaXN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLnByZWZlcnJlZENvdW50cmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLmhpZ2hsaWdodENvdW50cnlJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLnNob3dEcm9wZG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLnNlYXJjaFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4ucHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gcy5kaXNhYmxlRHJvcGRvd24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcy5wcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbi5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBjLmVuYWJsZVNlYXJjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjLnNlYXJjaE5vdEZvdW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGMuZGlzYWJsZVNlYXJjaEljb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gYy5zZWFyY2hDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBjLnNlYXJjaFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGMuc2VhcmNoUGxhY2Vob2xkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gYy5hdXRvY29tcGxldGVTZWFyY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gbi5nZXRTZWFyY2hGaWx0ZXJlZENvdW50cmllcygpLm1hcCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbyA9PT0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IEMoKSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZlcnJlZDogInVzIiA9PT0gZS5pc28yIHx8ICJnYiIgPT09IGUuaXNvMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogInVzIiA9PT0gZS5pc28yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gImZsYWcgIi5jb25jYXQoZS5pc28yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geS5hLmNyZWF0ZUVsZW1lbnQoImxpIiwgT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5bImZsYWdfbm9fIi5jb25jYXQodCldID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmbGFnX25vXyIuY29uY2F0KHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS1mbGFnLWtleSI6ICJmbGFnX25vXyIuY29uY2F0KHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhLWRpYWwtY29kZSI6ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg6IHUgPyAiLTEiIDogIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS1jb3VudHJ5LWNvZGUiOiBlLmlzbzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmhhbmRsZUZsYWdJdGVtQ2xpY2soZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogIm9wdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1zZWxlY3RlZCI6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IHt9KSwgeS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHkuYS5jcmVhdGVFbGVtZW50KCJzcGFuIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJjb3VudHJ5LW5hbWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5nZXREcm9wZG93bkNvdW50cnlOYW1lKGUpKSwgeS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImRpYWwtY29kZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLmZvcm1hdCA/IG4uZm9ybWF0TnVtYmVyKGUuZGlhbENvZGUsIGUpIDogbCArIGUuZGlhbENvZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHkuYS5jcmVhdGVFbGVtZW50KCJsaSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkYXNoZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImRpdmlkZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5sZW5ndGggPiAwICYmICghZiB8fCBmICYmICFhLnRyaW0oKSkgJiYgYi5zcGxpY2UodC5sZW5ndGgsIDAsIHcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgTyA9IEMoKShyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VudHJ5LWxpc3QiOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGU6ICFpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4ucHJvcHMuZHJvcGRvd25DbGFzcywgITApKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHkuYS5jcmVhdGVFbGVtZW50KCJ1bCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhZiAmJiBlICYmIGUuZm9jdXMoKSwgbi5kcm9wZG93blJlZiA9IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IE8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogbi5wcm9wcy5kcm9wZG93blN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogImxpc3Rib3giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg6ICIwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmICYmIHkuYS5jcmVhdGVFbGVtZW50KCJsaSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogQygpKHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaDogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGgsIGgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAhcCAmJiB5LmEuY3JlYXRlRWxlbWVudCgic3BhbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogQygpKHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWFyY2gtZW1vamkiOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgIiIuY29uY2F0KGgsICItZW1vamkiKSwgaCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogImltZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1sYWJlbCI6ICJNYWduaWZ5aW5nIGdsYXNzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAi8J+UjiIpLCB5LmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IEMoKShyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VhcmNoLWJveCI6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAiIi5jb25jYXQoaCwgIi1ib3giKSwgaCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAic2VhcmNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZTogdiA/ICJvbiIgOiAib2ZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG4uaGFuZGxlU2VhcmNoQ2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYi5sZW5ndGggPiAwID8gYiA6IHkuYS5jcmVhdGVFbGVtZW50KCJsaSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogIm5vLWVudHJpZXMtbWVzc2FnZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLCBudWxsLCBkKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCwgYyA9IG5ldyBNKGUuZW5hYmxlQXJlYUNvZGVzLCBlLmVuYWJsZVRlcnJpdG9yaWVzLCBlLnJlZ2lvbnMsIGUub25seUNvdW50cmllcywgZS5wcmVmZXJyZWRDb3VudHJpZXMsIGUuZXhjbHVkZUNvdW50cmllcywgZS5wcmVzZXJ2ZU9yZGVyLCBlLm1hc2tzLCBlLnByaW9yaXR5LCBlLmFyZWFDb2RlcywgZS5sb2NhbGl6YXRpb24sIGUucHJlZml4LCBlLmRlZmF1bHRNYXNrLCBlLmFsd2F5c0RlZmF1bHRNYXNrKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGMub25seUNvdW50cmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGMucHJlZmVycmVkQ291bnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gYy5oaWRkZW5BcmVhQ29kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBlLnZhbHVlID8gZS52YWx1ZS5yZXBsYWNlKC9cRC9nLCAiIikgOiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZS5kaXNhYmxlSW5pdGlhbENvdW50cnlHdWVzcyA/IDAgOiBiLmxlbmd0aCA+IDEgPyBuLmd1ZXNzU2VsZWN0ZWRDb3VudHJ5KGIuc3Vic3RyaW5nKDAsIDYpLCBlLmNvdW50cnksIGgsIGcpIHx8IDAgOiBlLmNvdW50cnkgJiYgaC5maW5kKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmlzbzIgPT0gZS5jb3VudHJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE8sIHggPSBiLmxlbmd0aCA8IDIgJiYgbCAmJiAhaygpKGIsIGwuZGlhbENvZGUpID8gbC5kaWFsQ29kZSA6ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSAiIiA9PT0gYiAmJiAwID09PSBsID8gIiIgOiBuLmZvcm1hdE51bWJlcigoZS5kaXNhYmxlQ291bnRyeUNvZGUgPyAiIiA6IHgpICsgYiwgbC5uYW1lID8gbCA6IHZvaWQgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEUgPSBoLmZpbmRJbmRleCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PSBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnN0YXRlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RHJvcGRvd246IGUuc2hvd0Ryb3Bkb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWROdW1iZXI6IE8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlDb3VudHJpZXM6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZlcnJlZENvdW50cmllczogbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuQXJlYUNvZGVzOiBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50cnk6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodENvdW50cnlJbmRleDogRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlTdHJpbmc6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlemVTZWxlY3Rpb246ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZWRRdWVyeVN0aW5nU2VhcmNoZXI6IHYoKShuLnNlYXJjaENvdW50cnksIDI1MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIGgoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG4gPSB0LCAoYyA9IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY29tcG9uZW50RGlkTW91bnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciAmJiB0aGlzLnByb3BzLmVuYWJsZUNsaWNrT3V0c2lkZSAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZSksIHRoaXMucHJvcHMub25Nb3VudCAmJiB0aGlzLnByb3BzLm9uTW91bnQodGhpcy5zdGF0ZS5mb3JtYXR0ZWROdW1iZXIucmVwbGFjZSgvW14wLTldKy9nLCAiIiksIHRoaXMuZ2V0Q291bnRyeURhdGEoKSwgdGhpcy5zdGF0ZS5mb3JtYXR0ZWROdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudFdpbGxVbm1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgdGhpcy5wcm9wcy5lbmFibGVDbGlja091dHNpZGUgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5oYW5kbGVDbGlja091dHNpZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudERpZFVwZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jb3VudHJ5ICE9PSB0aGlzLnByb3BzLmNvdW50cnkgPyB0aGlzLnVwZGF0ZUNvdW50cnkodGhpcy5wcm9wcy5jb3VudHJ5KSA6IGUudmFsdWUgIT09IHRoaXMucHJvcHMudmFsdWUgJiYgdGhpcy51cGRhdGVGb3JtYXR0ZWROdW1iZXIodGhpcy5wcm9wcy52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlRm9ybWF0dGVkTnVtYmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gZSkgcmV0dXJuIHRoaXMuc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudHJ5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQub25seUNvdW50cmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnNlbGVjdGVkQ291bnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmhpZGRlbkFyZWFDb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnByb3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuY291bnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLnByZWZpeDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIiID09PSBlKSByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50cnk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWROdW1iZXI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSwgbCwgYyA9IGUucmVwbGFjZSgvXEQvZywgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociAmJiBrKCkoZSwgcyArIHIuZGlhbENvZGUpKSBsID0gdGhpcy5mb3JtYXROdW1iZXIoYywgciksIHRoaXMuc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyOiBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gKHUgPSB0aGlzLnByb3BzLmRpc2FibGVDb3VudHJ5R3Vlc3MgPyByIDogdGhpcy5ndWVzc1NlbGVjdGVkQ291bnRyeShjLnN1YnN0cmluZygwLCA2KSwgYSwgbiwgbykgfHwgcikgJiYgaygpKGMsIHMgKyB1LmRpYWxDb2RlKSA/IHUuZGlhbENvZGUgOiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLmZvcm1hdE51bWJlcigodGhpcy5wcm9wcy5kaXNhYmxlQ291bnRyeUNvZGUgPyAiIiA6IGYpICsgYywgdSB8fCB2b2lkIDApLCB0aGlzLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50cnk6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyOiBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbmRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiwgbyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLm9ubHlDb3VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5zZWxlY3RlZENvdW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gaS5zaG93RHJvcGRvd24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gaS5mb3JtYXR0ZWROdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gaS5oaWRkZW5BcmVhQ29kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdGhpcy5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmLmRpc2FibGVEcm9wZG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBmLnJlbmRlclN0cmluZ0FzRmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmLmlzVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gZi5kZWZhdWx0RXJyb3JNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGYuc3BlY2lhbExhYmVsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImJvb2xlYW4iID09IHR5cGVvZiBoKSB0ID0gaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IGgobC5yZXBsYWNlKC9cRC9nLCAiIiksIHMsIGEsIGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2xlYW4iID09IHR5cGVvZiB2ID8gITEgPT09ICh0ID0gdikgJiYgKG4gPSBtKSA6ICh0ID0gITEsIG4gPSB2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gQygpKChyKGUgPSB7fSwgdGhpcy5wcm9wcy5jb250YWluZXJDbGFzcywgITApLCByKGUsICJyZWFjdC10ZWwtaW5wdXQiLCAhMCksIGUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBDKCkoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycm93OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cDogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPID0gQygpKHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtLWNvbnRyb2wiOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZC1udW1iZXIiOiAhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnByb3BzLmlucHV0Q2xhc3MsICEwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gQygpKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZWN0ZWQtZmxhZyI6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IEMoKShyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxhZy1kcm9wZG93biI6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkLW51bWJlciI6ICF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucHJvcHMuYnV0dG9uQ2xhc3MsICEwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gImZsYWcgIi5jb25jYXQocyAmJiBzLmlzbzIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogIiIuY29uY2F0KGIsICIgIikuY29uY2F0KHRoaXMucHJvcHMuY2xhc3NOYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0aGlzLnByb3BzLnN0eWxlIHx8IHRoaXMucHJvcHMuY29udGFpbmVyU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlS2V5ZG93bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBnICYmIHkuYS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJzcGVjaWFsLWxhYmVsIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBnKSwgbiAmJiB5LmEuY3JlYXRlRWxlbWVudCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiaW52YWxpZC1udW1iZXItbWVzc2FnZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbiksIHkuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIsIE9iamVjdC5hc3NpZ24oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBPLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHRoaXMucHJvcHMuaW5wdXRTdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZUlucHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVJbnB1dENsaWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3VibGVDbGljazogdGhpcy5oYW5kbGVEb3VibGVDbGljaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM6IHRoaXMuaGFuZGxlSW5wdXRGb2N1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogdGhpcy5oYW5kbGVJbnB1dEJsdXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvcHk6IHRoaXMuaGFuZGxlSW5wdXRDb3B5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlSW5wdXRLZXlEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucHJvcHMucGxhY2Vob2xkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5wcm9wcy5kaXNhYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJ0ZWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucHJvcHMuaW5wdXRQcm9wcywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5udW1iZXJJbnB1dFJlZiA9IGUsICJmdW5jdGlvbiIgPT0gdHlwZW9mIG8ucHJvcHMuaW5wdXRQcm9wcy5yZWYgPyBvLnByb3BzLmlucHV0UHJvcHMucmVmKGUpIDogIm9iamVjdCIgPT0gdHlwZW9mIG8ucHJvcHMuaW5wdXRQcm9wcy5yZWYgJiYgKG8ucHJvcHMuaW5wdXRQcm9wcy5yZWYuY3VycmVudCA9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgeS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0aGlzLnByb3BzLmJ1dHRvblN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uZHJvcGRvd25Db250YWluZXJSZWYgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHAgPyB5LmEuY3JlYXRlRWxlbWVudCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBfCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHApIDogeS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGQgPyB2b2lkIDAgOiB0aGlzLmhhbmRsZUZsYWdEcm9wZG93bkNsaWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHMgPyAiIi5jb25jYXQocy5sb2NhbE5hbWUgfHwgcy5uYW1lLCAiOiArICIpLmNvbmNhdChzLmRpYWxDb2RlKSA6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg6IGQgPyAiLTEiIDogIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogImJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1oYXNwb3B1cCI6ICJsaXN0Ym94IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWV4cGFuZGVkIjogISF1IHx8IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB5LmEuY3JlYXRlRWxlbWVudCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICFkICYmIHkuYS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSwgdSAmJiB0aGlzLmdldENvdW50cnlEcm9wZG93bkxpc3QoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pICYmIGwobi5wcm90b3R5cGUsIGMpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oeS5hLkNvbXBvbmVudCk7CiAgICAgICAgICAgICAgICAgICAgTC5kZWZhdWx0UHJvcHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlDb3VudHJpZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBwcmVmZXJyZWRDb3VudHJpZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlQ291bnRyaWVzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICIxICg3MDIpIDEyMy00NTY3IiwKICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICJzZWFyY2giLAogICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hOb3RGb3VuZDogIk5vIGVudHJpZXMgdG8gc2hvdyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzSW1hZ2VQYXRoOiAiLi9mbGFncy5wbmciLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclN0eWxlOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRTdHlsZToge30sCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25TdHlsZToge30sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFN0eWxlOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyQ2xhc3M6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENsYXNzOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xhc3M6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBkcm9wZG93bkNsYXNzOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQ2xhc3M6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9ybWF0OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQXJlYUNvZGVzOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlVGVycml0b3JpZXM6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlQ291bnRyeUNvZGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlRHJvcGRvd246ICExLAogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVMb25nTnVtYmVyczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlRWRpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVTZWFyY2g6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlU2VhcmNoSWNvbjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVJbml0aWFsQ291bnRyeUd1ZXNzOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUNvdW50cnlHdWVzczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbnM6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxpemF0aW9uOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgbWFza3M6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBhcmVhQ29kZXM6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlT3JkZXI6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWFzazogIi4uLiAuLi4gLi4uIC4uLiAuLiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5c0RlZmF1bHRNYXNrOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAiKyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOdW1iZXJzT25seTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclN0cmluZ0FzRmxhZzogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZVNlYXJjaDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGp1bXBDdXJzb3JUb0VuZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUFyZWFDb2RlU3RyZXRjaDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUNsaWNrT3V0c2lkZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dEcm9wZG93bjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RXJyb3JNZXNzYWdlOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbExhYmVsOiAiUGhvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICBvbkVudGVyS2V5UHJlc3M6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGtleXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVQOiAzOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPV046IDQwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUklHSFQ6IDM5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVGVDogMzcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTlRFUjogMTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU0M6IDI3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUExVUzogNDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiA2NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFo6IDkwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BBQ0U6IDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCOiA5CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB0WyJkZWZhdWx0Il0gPSBMCiAgICAgICAgICAgICAgICB9XSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTE2NzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHIgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJvdG9fXzogW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX19wcm90b19fID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB8fCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiB0KSB0Lmhhc093blByb3BlcnR5KG4pICYmIChlW25dID0gdFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzICYmIHRoaXMuX19hc3NpZ24gfHwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaSA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCwgbiA9IDEsIHIgPSBhcmd1bWVudHMubGVuZ3RoOyBuIDwgcjsgbisrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gaW4gdCA9IGFyZ3VtZW50c1tuXSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIG8pICYmIChlW29dID0gdFtvXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICB9KS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhID0gdGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXlzIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMCwgdCA9IDAsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyB0IDwgbjsgdCsrKSBlICs9IGFyZ3VtZW50c1t0XS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gQXJyYXkoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IG47IHQrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBhcmd1bWVudHNbdF0sIGEgPSAwLCBzID0gaS5sZW5ndGg7IGEgPCBzOyBhKyssIG8rKykgcltvXSA9IGlbYV07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzID0gdGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdSA9IHMobig3MzYzKSksCiAgICAgICAgICAgICAgICAgICAgbCA9IHMobigxNTMzKSksCiAgICAgICAgICAgICAgICAgICAgYyA9IHMobig4NDQ2KSksCiAgICAgICAgICAgICAgICAgICAgZiA9IHMobig2MDk1KSksCiAgICAgICAgICAgICAgICAgICAgZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuY2FsbCh0aGlzLCB0KSB8fCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5kaXJ0eVByb3BzID0gWyJtb2R1bGVzIiwgImZvcm1hdHMiLCAiYm91bmRzIiwgInRoZW1lIiwgImNoaWxkcmVuIl0sIG4uY2xlYW5Qcm9wcyA9IFsiaWQiLCAiY2xhc3NOYW1lIiwgInN0eWxlIiwgInBsYWNlaG9sZGVyIiwgInRhYkluZGV4IiwgIm9uQ2hhbmdlIiwgIm9uQ2hhbmdlU2VsZWN0aW9uIiwgIm9uRm9jdXMiLCAib25CbHVyIiwgIm9uS2V5UHJlc3MiLCAib25LZXlEb3duIiwgIm9uS2V5VXAiXSwgbi5zdGF0ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnNlbGVjdGlvbiA9IG51bGwsIG4ub25FZGl0b3JDaGFuZ2UgPSBmdW5jdGlvbihlLCB0LCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEsIHMsIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQtY2hhbmdlIiA9PT0gZSA/IG51bGwgPT09IChhID0gKGkgPSBuKS5vbkVkaXRvckNoYW5nZVRleHQpIHx8IHZvaWQgMCA9PT0gYSB8fCBhLmNhbGwoaSwgbi5lZGl0b3Iucm9vdC5pbm5lckhUTUwsIHQsIG8sIG4udW5wcml2aWxlZ2VkRWRpdG9yKSA6ICJzZWxlY3Rpb24tY2hhbmdlIiA9PT0gZSAmJiAobnVsbCA9PT0gKHUgPSAocyA9IG4pLm9uRWRpdG9yQ2hhbmdlU2VsZWN0aW9uKSB8fCB2b2lkIDAgPT09IHUgfHwgdS5jYWxsKHMsIHQsIG8sIG4udW5wcml2aWxlZ2VkRWRpdG9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4uaXNDb250cm9sbGVkKCkgPyB0LnZhbHVlIDogdC5kZWZhdWx0VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi52YWx1ZSA9IG51bGwgIT0gciA/IHIgOiAiIiwgbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LnByb3RvdHlwZS52YWxpZGF0ZVByb3BzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodVsiZGVmYXVsdCJdLkNoaWxkcmVuLmNvdW50KGUuY2hpbGRyZW4pID4gMSkgdGhyb3cgbmV3IEVycm9yKCJUaGUgUXVpbGwgZWRpdGluZyBhcmVhIGNhbiBvbmx5IGJlIGNvbXBvc2VkIG9mIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodVsiZGVmYXVsdCJdLkNoaWxkcmVuLmNvdW50KGUuY2hpbGRyZW4pICYmICJ0ZXh0YXJlYSIgPT09IChudWxsID09PSAodCA9IHVbImRlZmF1bHQiXS5DaGlsZHJlbi5vbmx5KGUuY2hpbGRyZW4pKSB8fCB2b2lkIDAgPT09IHQgPyB2b2lkIDAgOiB0LnR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoIlF1aWxsIGRvZXMgbm90IHN1cHBvcnQgZWRpdGluZyBvbiBhIDx0ZXh0YXJlYT4uIFVzZSBhIDxkaXY+IGluc3RlYWQuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sYXN0RGVsdGFDaGFuZ2VTZXQgJiYgZS52YWx1ZSA9PT0gdGhpcy5sYXN0RGVsdGFDaGFuZ2VTZXQpIHRocm93IG5ldyBFcnJvcigiWW91IGFyZSBwYXNzaW5nIHRoZSBgZGVsdGFgIG9iamVjdCBmcm9tIHRoZSBgb25DaGFuZ2VgIGV2ZW50IGJhY2sgYXMgYHZhbHVlYC4gWW91IG1vc3QgcHJvYmFibHkgd2FudCBgZWRpdG9yLmdldENvbnRlbnRzKClgIGluc3RlYWQuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3plbm9hbWFyby9yZWFjdC1xdWlsbCN1c2luZy1kZWx0YXMiKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0ZVByb3BzKGUpLCAhdGhpcy5lZGl0b3IgfHwgdGhpcy5zdGF0ZS5nZW5lcmF0aW9uICE9PSB0LmdlbmVyYXRpb24pIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuZ2V0RWRpdG9yQ29udGVudHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG51bGwgIT0gKG4gPSBlLnZhbHVlKSA/IG4gOiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRXF1YWxWYWx1ZShpLCBvKSB8fCB0aGlzLnNldEVkaXRvckNvbnRlbnRzKHRoaXMuZWRpdG9yLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucmVhZE9ubHkgIT09IHRoaXMucHJvcHMucmVhZE9ubHkgJiYgdGhpcy5zZXRFZGl0b3JSZWFkT25seSh0aGlzLmVkaXRvciwgZS5yZWFkT25seSksIGEodGhpcy5jbGVhblByb3BzLCB0aGlzLmRpcnR5UHJvcHMpLnNvbWUoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWNbImRlZmF1bHQiXShlW3RdLCByLnByb3BzW3RdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFJlZ2VuZXJhdGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXJ0eVByb3BzLnNvbWUoKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWNbImRlZmF1bHQiXShlW25dLCB0LnByb3BzW25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbnRpYXRlRWRpdG9yKCksIHRoaXMuc2V0RWRpdG9yQ29udGVudHModGhpcy5lZGl0b3IsIHRoaXMuZ2V0RWRpdG9yQ29udGVudHMoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveUVkaXRvcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLnNob3VsZENvbXBvbmVudFJlZ2VuZXJhdGUoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuZWRpdG9yLmdldENvbnRlbnRzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmVkaXRvci5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2VuZXJhdGlvblNuYXBzaG90ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpb246IHRoaXMuc3RhdGUuZ2VuZXJhdGlvbiArIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5kZXN0cm95RWRpdG9yKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmdlbmVyYXRpb24gIT09IHQuZ2VuZXJhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5yZWdlbmVyYXRpb25TbmFwc2hvdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IChyID0gaS5kZWx0YSwgaS5zZWxlY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnJlZ2VuZXJhdGlvblNuYXBzaG90LCB0aGlzLmluc3RhbnRpYXRlRWRpdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLmVkaXRvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnNldENvbnRlbnRzKHIpLCBwKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2V0RWRpdG9yU2VsZWN0aW9uKHMsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmluc3RhbnRpYXRlRWRpdG9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvciA/IHRoaXMuaG9va0VkaXRvcih0aGlzLmVkaXRvcikgOiB0aGlzLmVkaXRvciA9IHRoaXMuY3JlYXRlRWRpdG9yKHRoaXMuZ2V0RWRpdGluZ0FyZWEoKSwgdGhpcy5nZXRFZGl0b3JDb25maWcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZGVzdHJveUVkaXRvciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IgJiYgdGhpcy51bmhvb2tFZGl0b3IodGhpcy5lZGl0b3IpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmlzQ29udHJvbGxlZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ2YWx1ZSIgaW4gdGhpcy5wcm9wcwogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5nZXRFZGl0b3JDb25maWcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzOiB0aGlzLnByb3BzLmJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRzOiB0aGlzLnByb3BzLmZvcm1hdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogdGhpcy5wcm9wcy5tb2R1bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnByb3BzLnBsYWNlaG9sZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5OiB0aGlzLnByb3BzLnJlYWRPbmx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGluZ0NvbnRhaW5lcjogdGhpcy5wcm9wcy5zY3JvbGxpbmdDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg6IHRoaXMucHJvcHMudGFiSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU6IHRoaXMucHJvcHMudGhlbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZ2V0RWRpdG9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKSB0aHJvdyBuZXcgRXJyb3IoIkFjY2Vzc2luZyBub24taW5zdGFudGlhdGVkIGVkaXRvciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmNyZWF0ZUVkaXRvciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IGZbImRlZmF1bHQiXShlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQudGFiSW5kZXggJiYgdGhpcy5zZXRFZGl0b3JUYWJJbmRleChuLCB0LnRhYkluZGV4KSwgdGhpcy5ob29rRWRpdG9yKG4pLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmhvb2tFZGl0b3IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVucHJpdmlsZWdlZEVkaXRvciA9IHRoaXMubWFrZVVucHJpdmlsZWdlZEVkaXRvcihlKSwgZS5vbigiZWRpdG9yLWNoYW5nZSIsIHRoaXMub25FZGl0b3JDaGFuZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVuaG9va0VkaXRvciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUub2ZmKCJlZGl0b3ItY2hhbmdlIiwgdGhpcy5vbkVkaXRvckNoYW5nZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZ2V0RWRpdG9yQ29udGVudHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmdldEVkaXRvclNlbGVjdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmlzRGVsdGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLm9wcwogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5pc0VxdWFsVmFsdWUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0RlbHRhKGUpICYmIHRoaXMuaXNEZWx0YSh0KSA/IGNbImRlZmF1bHQiXShlLm9wcywgdC5vcHMpIDogY1siZGVmYXVsdCJdKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnNldEVkaXRvckNvbnRlbnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuZ2V0RWRpdG9yU2VsZWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgdCA/IGUuc2V0Q29udGVudHMoZS5jbGlwYm9hcmQuY29udmVydCh0KSkgOiBlLnNldENvbnRlbnRzKHQpLCBwKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zZXRFZGl0b3JTZWxlY3Rpb24oZSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zZXRFZGl0b3JTZWxlY3Rpb24gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gPSB0LCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmdldExlbmd0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0LmluZGV4LCBuIC0gMSkpLCB0Lmxlbmd0aCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHQubGVuZ3RoLCBuIC0gMSAtIHQuaW5kZXgpKSwgZS5zZXRTZWxlY3Rpb24odCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuc2V0RWRpdG9yVGFiSW5kZXggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09PSAociA9IG51bGwgPT09IChuID0gZSkgfHwgdm9pZCAwID09PSBuID8gdm9pZCAwIDogbi5zY3JvbGwpIHx8IHZvaWQgMCA9PT0gciA/IHZvaWQgMCA6IHIuZG9tTm9kZSkgJiYgKGUuc2Nyb2xsLmRvbU5vZGUudGFiSW5kZXggPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zZXRFZGl0b3JSZWFkT25seSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPyBlLmRpc2FibGUoKSA6IGUuZW5hYmxlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUubWFrZVVucHJpdmlsZWdlZEVkaXRvciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SFRNTDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnJvb3QuaW5uZXJIVE1MCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMZW5ndGg6IHQuZ2V0TGVuZ3RoLmJpbmQodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGV4dDogdC5nZXRUZXh0LmJpbmQodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGVudHM6IHQuZ2V0Q29udGVudHMuYmluZCh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWxlY3Rpb246IHQuZ2V0U2VsZWN0aW9uLmJpbmQodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Qm91bmRzOiB0LmdldEJvdW5kcy5iaW5kKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmdldEVkaXRpbmdBcmVhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWRpdGluZ0FyZWEpIHRocm93IG5ldyBFcnJvcigiSW5zdGFudGlhdGluZyBvbiBtaXNzaW5nIGVkaXRpbmcgYXJlYSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBsWyJkZWZhdWx0Il0uZmluZERPTU5vZGUodGhpcy5lZGl0aW5nQXJlYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZWxlbWVudCBmb3IgZWRpdGluZyBhcmVhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMyA9PT0gZS5ub2RlVHlwZSkgdGhyb3cgbmV3IEVycm9yKCJFZGl0aW5nIGFyZWEgY2Fubm90IGJlIGEgdGV4dCBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5yZW5kZXJFZGl0aW5nQXJlYSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLnByb3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LmNoaWxkcmVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnByZXNlcnZlV2hpdGVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMuc3RhdGUuZ2VuZXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmVkaXRpbmdBcmVhID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1WyJkZWZhdWx0Il0uQ2hpbGRyZW4uY291bnQobikgPyB1WyJkZWZhdWx0Il0uY2xvbmVFbGVtZW50KHVbImRlZmF1bHQiXS5DaGlsZHJlbi5vbmx5KG4pLCBvKSA6IHIgPyB1WyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgicHJlIiwgaSh7fSwgbykpIDogdVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImRpdiIsIGkoe30sIG8pKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucHJvcHMuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHRoaXMucHJvcHMuc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0aGlzLnN0YXRlLmdlbmVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAicXVpbGwgIiArIChlID0gdGhpcy5wcm9wcy5jbGFzc05hbWUsIG51bGwgIT0gZSA/IGUgOiAiIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlQcmVzczogdGhpcy5wcm9wcy5vbktleVByZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5wcm9wcy5vbktleURvd24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlVcDogdGhpcy5wcm9wcy5vbktleVVwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnJlbmRlckVkaXRpbmdBcmVhKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLm9uRWRpdG9yQ2hhbmdlVGV4dCA9IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvLCBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZWRpdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLmlzRGVsdGEodGhpcy52YWx1ZSkgPyByLmdldENvbnRlbnRzKCkgOiByLmdldEhUTUwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhICE9PSB0aGlzLmdldEVkaXRvckNvbnRlbnRzKCkgJiYgKHRoaXMubGFzdERlbHRhQ2hhbmdlU2V0ID0gdCwgdGhpcy52YWx1ZSA9IGEsIG51bGwgPT09IChpID0gKG8gPSB0aGlzLnByb3BzKS5vbkNoYW5nZSkgfHwgdm9pZCAwID09PSBpIHx8IGkuY2FsbChvLCBlLCB0LCBuLCByKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUub25FZGl0b3JDaGFuZ2VTZWxlY3Rpb24gPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgaSwgYSwgcywgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdGhpcy5nZXRFZGl0b3JTZWxlY3Rpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9ICFsICYmIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBsICYmICFlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbImRlZmF1bHQiXShlLCBsKSB8fCAodGhpcy5zZWxlY3Rpb24gPSBlLCBudWxsID09PSAobyA9IChyID0gdGhpcy5wcm9wcykub25DaGFuZ2VTZWxlY3Rpb24pIHx8IHZvaWQgMCA9PT0gbyB8fCBvLmNhbGwociwgZSwgdCwgbiksIGYgPyBudWxsID09PSAoYSA9IChpID0gdGhpcy5wcm9wcykub25Gb2N1cykgfHwgdm9pZCAwID09PSBhIHx8IGEuY2FsbChpLCBlLCB0LCBuKSA6IGQgJiYgKG51bGwgPT09ICh1ID0gKHMgPSB0aGlzLnByb3BzKS5vbkJsdXIpIHx8IHZvaWQgMCA9PT0gdSB8fCB1LmNhbGwocywgbCwgdCwgbikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5mb2N1cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IgJiYgdGhpcy5lZGl0b3IuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5ibHVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvciAmJiAodGhpcy5zZWxlY3Rpb24gPSBudWxsLCB0aGlzLmVkaXRvci5ibHVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQuZGlzcGxheU5hbWUgPSAiUmVhY3QgUXVpbGwiLCB0LlF1aWxsID0gZlsiZGVmYXVsdCJdLCB0LmRlZmF1bHRQcm9wcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lOiAic25vdyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5OiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0CiAgICAgICAgICAgICAgICAgICAgfSh1WyJkZWZhdWx0Il0uQ29tcG9uZW50KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBwKGUpIHsKICAgICAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBkCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDYwNzM6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gKHIgPSBuKDczNjMpLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuW3JdKSByZXR1cm4gbltyXS5leHBvcnRzOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG5bcl0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cywgbywgby5leHBvcnRzLCB0KSwgby5sb2FkZWQgPSAhMCwgby5leHBvcnRzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBuID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubSA9IGUsIHQuYyA9IG4sIHQucCA9ICIiLCB0KDApCiAgICAgICAgICAgICAgICB9KFtmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gbigyKQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIHIsIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKHRoaXMsIGUpLCB0aGlzLnN0YXJ0UG9pbnQgPSB0LCB0aGlzLmNvbnRyb2wxID0gciwgdGhpcy5jb250cm9sMiA9IG8sIHRoaXMuZW5kUG9pbnQgPSBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxlbmd0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiwgciwgbywgaSwgYSwgcywgdSA9IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IHUgPj0gZTsgZSsrKSB0ID0gZSAvIHUsIG4gPSB0aGlzLl9wb2ludCh0LCB0aGlzLnN0YXJ0UG9pbnQueCwgdGhpcy5jb250cm9sMS54LCB0aGlzLmNvbnRyb2wyLngsIHRoaXMuZW5kUG9pbnQueCksIHIgPSB0aGlzLl9wb2ludCh0LCB0aGlzLnN0YXJ0UG9pbnQueSwgdGhpcy5jb250cm9sMS55LCB0aGlzLmNvbnRyb2wyLnksIHRoaXMuZW5kUG9pbnQueSksIGUgPiAwICYmIChhID0gbiAtIG8sIHMgPSByIC0gaSwgbCArPSBNYXRoLnNxcnQoYSAqIGEgKyBzICogcykpLCBvID0gbiwgaSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9wb2ludCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKiAoMSAtIGUpICogKDEgLSBlKSAqICgxIC0gZSkgKyAzICogbiAqICgxIC0gZSkgKiAoMSAtIGUpICogZSArIDMgKiByICogKDEgLSBlKSAqIGUgKiBlICsgbyAqIGUgKiBlICogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgZQogICAgICAgICAgICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gbywgZS5leHBvcnRzID0gdFsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9ICEwOyByOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBsID0gdSA9IHZvaWQgMCwgciA9ICExLCBudWxsID09PSBvICYmIChvID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiBzKSByZXR1cm4gcy52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBzLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdSA/IHZvaWQgMCA6IHUuY2FsbChhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gbCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBsLCB0ID0gaSwgbiA9IGEsIHIgPSAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gcihuKDQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHIobigxKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSByKG4oMykpLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0aGlzLCB0KSwgcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiY29uc3RydWN0b3IiLCB0aGlzKS5jYWxsKHRoaXMsIGUpLCB0aGlzLnZlbG9jaXR5RmlsdGVyV2VpZ2h0ID0gdGhpcy5wcm9wcy52ZWxvY2l0eUZpbHRlcldlaWdodCB8fCAuNywgdGhpcy5taW5XaWR0aCA9IHRoaXMucHJvcHMubWluV2lkdGggfHwgLjUsIHRoaXMubWF4V2lkdGggPSB0aGlzLnByb3BzLm1heFdpZHRoIHx8IDIuNSwgdGhpcy5kb3RTaXplID0gdGhpcy5wcm9wcy5kb3RTaXplIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMubWluV2lkdGggKyB0aGlzLm1heFdpZHRoKSAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnBlbkNvbG9yID0gdGhpcy5wcm9wcy5wZW5Db2xvciB8fCAiYmxhY2siLCB0aGlzLmJhY2tncm91bmRDb2xvciA9IHRoaXMucHJvcHMuYmFja2dyb3VuZENvbG9yIHx8ICJyZ2JhKDAsMCwwLDApIiwgdGhpcy5vbkVuZCA9IHRoaXMucHJvcHMub25FbmQsIHRoaXMub25CZWdpbiA9IHRoaXMucHJvcHMub25CZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodCwgZSksIGEodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjb21wb25lbnREaWRNb3VudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYW52YXMgPSB0aGlzLnJlZnMuY3YsIHRoaXMuX2N0eCA9IHRoaXMuX2NhbnZhcy5nZXRDb250ZXh0KCIyZCIpLCB0aGlzLmNsZWFyKCksIHRoaXMuX2hhbmRsZU1vdXNlRXZlbnRzKCksIHRoaXMuX2hhbmRsZVRvdWNoRXZlbnRzKCksIHRoaXMuX3Jlc2l6ZUNhbnZhcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudFdpbGxVbm1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2ZmKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY2xlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9jYW52YXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZmlsbFN0eWxlID0gdGhpcy5iYWNrZ3JvdW5kQ29sb3IsIHQuY2xlYXJSZWN0KDAsIDAsIG4ud2lkdGgsIG4uaGVpZ2h0KSwgdC5maWxsUmVjdCgwLCAwLCBuLndpZHRoLCBuLmhlaWdodCksIHRoaXMuX3Jlc2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidG9EYXRhVVJMIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX2NhbnZhczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udG9EYXRhVVJMLmFwcGx5KG4sIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZnJvbURhdGFVUkwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuZXcgSW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLl9jYW52YXMud2lkdGggLyByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuX2NhbnZhcy5oZWlnaHQgLyByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNldCgpLCBuLnNyYyA9IGUsIG4ub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9jdHguZHJhd0ltYWdlKG4sIDAsIDAsIG8sIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuX2lzRW1wdHkgPSAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpc0VtcHR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0VtcHR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9yZXNpemVDYW52YXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5fY2FudmFzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IE1hdGgubWF4KHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDEsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LndpZHRoID0gdC5vZmZzZXRXaWR0aCAqIG4sIHQuaGVpZ2h0ID0gdC5vZmZzZXRIZWlnaHQgKiBuLCBlLnNjYWxlKG4sIG4pLCB0aGlzLl9pc0VtcHR5ID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX3Jlc2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzID0gW10sIHRoaXMuX2xhc3RWZWxvY2l0eSA9IDAsIHRoaXMuX2xhc3RXaWR0aCA9ICh0aGlzLm1pbldpZHRoICsgdGhpcy5tYXhXaWR0aCkgLyAyLCB0aGlzLl9pc0VtcHR5ID0gITAsIHRoaXMuX2N0eC5maWxsU3R5bGUgPSB0aGlzLnBlbkNvbG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9oYW5kbGVNb3VzZUV2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3VzZUJ1dHRvbkRvd24gPSAhMSwgdGhpcy5fY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKSwgdGhpcy5fY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTW92ZS5iaW5kKHRoaXMpKSwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX2hhbmRsZU1vdXNlVXAuYmluZCh0aGlzKSksIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9yZXNpemVDYW52YXMuYmluZCh0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2hhbmRsZVRvdWNoRXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbnZhcy5zdHlsZS5tc1RvdWNoQWN0aW9uID0gIm5vbmUiLCB0aGlzLl9jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQuYmluZCh0aGlzKSksIHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0aGlzLl9oYW5kbGVUb3VjaE1vdmUuYmluZCh0aGlzKSksIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdGhpcy5faGFuZGxlVG91Y2hFbmQuYmluZCh0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAib2ZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24pLCB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5faGFuZGxlTW91c2VNb3ZlKSwgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX2hhbmRsZU1vdXNlVXApLCB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQpLCB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgdGhpcy5faGFuZGxlVG91Y2hNb3ZlKSwgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLl9oYW5kbGVUb3VjaEVuZCksIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9yZXNpemVDYW52YXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9oYW5kbGVNb3VzZURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IGUud2hpY2ggJiYgKHRoaXMuX21vdXNlQnV0dG9uRG93biA9ICEwLCB0aGlzLl9zdHJva2VCZWdpbihlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2hhbmRsZU1vdXNlTW92ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW91c2VCdXR0b25Eb3duICYmIHRoaXMuX3N0cm9rZVVwZGF0ZShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfaGFuZGxlTW91c2VVcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9PT0gZS53aGljaCAmJiB0aGlzLl9tb3VzZUJ1dHRvbkRvd24gJiYgKHRoaXMuX21vdXNlQnV0dG9uRG93biA9ICExLCB0aGlzLl9zdHJva2VFbmQoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9oYW5kbGVUb3VjaFN0YXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuY2hhbmdlZFRvdWNoZXNbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0cm9rZUJlZ2luKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9oYW5kbGVUb3VjaE1vdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmNoYW5nZWRUb3VjaGVzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHJva2VVcGRhdGUodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2hhbmRsZVRvdWNoRW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldCA9PT0gdGhpcy5fY2FudmFzICYmIHRoaXMuX3N0cm9rZUVuZChlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfc3Ryb2tlVXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2NyZWF0ZVBvaW50KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRQb2ludCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfc3Ryb2tlQmVnaW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0KCksIHRoaXMuX3N0cm9rZVVwZGF0ZShlKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5vbkJlZ2luICYmIHRoaXMub25CZWdpbihlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfc3Ryb2tlRHJhdyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5kb3RTaXplID8gdGhpcy5kb3RTaXplKCkgOiB0aGlzLmRvdFNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuYmVnaW5QYXRoKCksIHRoaXMuX2RyYXdQb2ludChlLngsIGUueSwgbiksIHQuY2xvc2VQYXRoKCksIHQuZmlsbCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9zdHJva2VFbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5wb2ludHMubGVuZ3RoID4gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLnBvaW50c1swXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXQgJiYgbiAmJiB0aGlzLl9zdHJva2VEcmF3KG4pLCAiZnVuY3Rpb24iID09IHR5cGVvZiB0aGlzLm9uRW5kICYmIHRoaXMub25FbmQoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2NyZWF0ZVBvaW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2NhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBjWyJkZWZhdWx0Il0oZS5jbGllbnRYIC0gdC5sZWZ0LCBlLmNsaWVudFkgLSB0LnRvcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2FkZFBvaW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgciwgbyA9IHRoaXMucG9pbnRzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnB1c2goZSksIG8ubGVuZ3RoID4gMiAmJiAoMyA9PT0gby5sZW5ndGggJiYgby51bnNoaWZ0KG9bMF0pLCB0ID0gdGhpcy5fY2FsY3VsYXRlQ3VydmVDb250cm9sUG9pbnRzKG9bMF0sIG9bMV0sIG9bMl0pLmMyLCBuID0gdGhpcy5fY2FsY3VsYXRlQ3VydmVDb250cm9sUG9pbnRzKG9bMV0sIG9bMl0sIG9bM10pLmMxLCByID0gbmV3IGxbImRlZmF1bHQiXShvWzFdLCB0LCBuLCBvWzJdKSwgdGhpcy5fYWRkQ3VydmUociksIG8uc2hpZnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2NhbGN1bGF0ZUN1cnZlQ29udHJvbFBvaW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLnggLSB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZS55IC0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQueCAtIG4ueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnkgLSBuLnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IChlLnggKyB0LngpIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAoZS55ICsgdC55KSAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6ICh0LnggKyBuLngpIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAodC55ICsgbi55KSAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5zcXJ0KHIgKiByICsgbyAqIG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IE1hdGguc3FydChpICogaSArIGEgKiBhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBzLnggLSB1LngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcy55IC0gdS55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGYgLyAobCArIGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB1LnggKyBkICogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB1LnkgKyBwICogaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB0LnggLSBtLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gdC55IC0gbS55OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzE6IG5ldyBjWyJkZWZhdWx0Il0ocy54ICsgeSwgcy55ICsgZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMjogbmV3IGNbImRlZmF1bHQiXSh1LnggKyB5LCB1LnkgKyBnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9hZGRDdXJ2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIHIgPSBlLnN0YXJ0UG9pbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLmVuZFBvaW50LnZlbG9jaXR5RnJvbShyKSwgdCA9IHRoaXMudmVsb2NpdHlGaWx0ZXJXZWlnaHQgKiB0ICsgKDEgLSB0aGlzLnZlbG9jaXR5RmlsdGVyV2VpZ2h0KSAqIHRoaXMuX2xhc3RWZWxvY2l0eSwgbiA9IHRoaXMuX3N0cm9rZVdpZHRoKHQpLCB0aGlzLl9kcmF3Q3VydmUoZSwgdGhpcy5fbGFzdFdpZHRoLCBuKSwgdGhpcy5fbGFzdFZlbG9jaXR5ID0gdCwgdGhpcy5fbGFzdFdpZHRoID0gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfZHJhd1BvaW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuX2N0eDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5tb3ZlVG8oZSwgdCksIHIuYXJjKGUsIHQsIG4sIDAsIDIgKiBNYXRoLlBJLCAhMSksIHRoaXMuX2lzRW1wdHkgPSAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfZHJhd0N1cnZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgaSwgYSwgcywgdSwgbCwgYywgZiwgZCwgcCwgaCA9IHRoaXMuX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBuIC0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gTWF0aC5mbG9vcihlLmxlbmd0aCgpKSwgaC5iZWdpblBhdGgoKSwgaSA9IDA7IHIgPiBpOyBpKyspIHUgPSAocyA9IChhID0gaSAvIHIpICogYSkgKiBhLCBkID0gKGYgPSAoYyA9IChsID0gMSAtIGEpICogbCkgKiBsKSAqIGUuc3RhcnRQb2ludC54LCBkICs9IDMgKiBjICogYSAqIGUuY29udHJvbDEueCwgZCArPSAzICogbCAqIHMgKiBlLmNvbnRyb2wyLngsIGQgKz0gdSAqIGUuZW5kUG9pbnQueCwgcCA9IGYgKiBlLnN0YXJ0UG9pbnQueSwgcCArPSAzICogYyAqIGEgKiBlLmNvbnRyb2wxLnksIHAgKz0gMyAqIGwgKiBzICogZS5jb250cm9sMi55LCBwICs9IHUgKiBlLmVuZFBvaW50LnksIG8gPSB0ICsgdSAqIG0sIHRoaXMuX2RyYXdQb2ludChkLCBwLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5jbG9zZVBhdGgoKSwgaC5maWxsKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX3N0cm9rZVdpZHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy5tYXhXaWR0aCAvIChlICsgMSksIHRoaXMubWluV2lkdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbmRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAic2lnbmF0dXJlLXBhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJtLXNpZ25hdHVyZS1wYWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJtLXNpZ25hdHVyZS1wYWQtLWJvZHkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJjYW52YXMiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6ICJjdiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnByb3BzLmNsZWFyQnV0dG9uICYmIHVbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJtLXNpZ25hdHVyZS1wYWQtLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJ0biBidG4tZGVmYXVsdCBidXR0b24gY2xlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogdGhpcy5jbGVhci5iaW5kKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICJDbGVhciIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSh1WyJkZWZhdWx0Il0uQ29tcG9uZW50KTsKICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBmLCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZSh0LCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbih0aGlzLCBlKSwgdGhpcy54ID0gdCwgdGhpcy55ID0gciwgdGhpcy50aW1lID0gbyB8fCAobmV3IERhdGUpLmdldFRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIoZSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ2ZWxvY2l0eUZyb20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRpbWUgIT09IGUudGltZSA/IHRoaXMuZGlzdGFuY2VUbyhlKSAvICh0aGlzLnRpbWUgLSBlLnRpbWUpIDogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkaXN0YW5jZVRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHRoaXMueCAtIGUueCwgMikgKyBNYXRoLnBvdyh0aGlzLnkgLSBlLnksIDIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgZQogICAgICAgICAgICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gbywgZS5leHBvcnRzID0gdFsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICAgICAgfV0pKQogICAgICAgICAgICB9LAogICAgICAgICAgICA3MzYzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBSZWFjdAogICAgICAgICAgICB9LAogICAgICAgICAgICAxNTMzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBSZWFjdERPTQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB0ID0ge307CgogICAgZnVuY3Rpb24gbihyKSB7CiAgICAgICAgdmFyIG8gPSB0W3JdOwogICAgICAgIGlmIChvICE9PSB1bmRlZmluZWQpIHJldHVybiBvLmV4cG9ydHM7CiAgICAgICAgdmFyIGkgPSB0W3JdID0gewogICAgICAgICAgICBpZDogciwKICAgICAgICAgICAgbG9hZGVkOiAhMSwKICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICB9OwogICAgICAgIHJldHVybiBlW3JdLmNhbGwoaS5leHBvcnRzLCBpLCBpLmV4cG9ydHMsIG4pLCBpLmxvYWRlZCA9ICEwLCBpLmV4cG9ydHMKICAgIH0KICAgIG4ubiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlICYmIGUuX19lc01vZHVsZSA/IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGVbImRlZmF1bHQiXQogICAgICAgICAgICB9IDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9OwogICAgICAgICAgICByZXR1cm4gbi5kKHQsIHsKICAgICAgICAgICAgICAgIGE6IHQKICAgICAgICAgICAgfSksIHQKICAgICAgICB9LCBuLmQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGZvciAodmFyIHIgaW4gdCkgbi5vKHQsIHIpICYmICFuLm8oZSwgcikgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHsKICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgZ2V0OiB0W3JdCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgbi5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZ2xvYmFsVGhpcykgcmV0dXJuIGdsb2JhbFRoaXM7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKQogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdykgcmV0dXJuIHdpbmRvdwogICAgICAgICAgICB9CiAgICAgICAgfSgpLCBuLm8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwgdCkKICAgICAgICB9LCBuLnIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBTeW1ib2wgJiYgU3ltYm9sLnRvU3RyaW5nVGFnICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAiTW9kdWxlIgogICAgICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgbi5ubWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlLnBhdGhzID0gW10sIGUuY2hpbGRyZW4gfHwgKGUuY2hpbGRyZW4gPSBbXSksIGUKICAgICAgICB9LAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBlID0gbig3MzYzKSwKICAgICAgICAgICAgICAgIHQgPSBuLm4oZSksCiAgICAgICAgICAgICAgICByID0gZSA9PiBlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7CiAgICAgICAgICAgIGNvbnN0IG8gPSAiYmx1ciIsCiAgICAgICAgICAgICAgICBpID0gImNoYW5nZSIsCiAgICAgICAgICAgICAgICBhID0gImlucHV0IiwKICAgICAgICAgICAgICAgIHMgPSAib25CbHVyIiwKICAgICAgICAgICAgICAgIHUgPSAib25DaGFuZ2UiLAogICAgICAgICAgICAgICAgbCA9ICJvblN1Ym1pdCIsCiAgICAgICAgICAgICAgICBjID0gIm9uVG91Y2hlZCIsCiAgICAgICAgICAgICAgICBmID0gImFsbCIsCiAgICAgICAgICAgICAgICBkID0gInVuZGVmaW5lZCIsCiAgICAgICAgICAgICAgICBwID0gIm1heCIsCiAgICAgICAgICAgICAgICBoID0gIm1pbiIsCiAgICAgICAgICAgICAgICBtID0gIm1heExlbmd0aCIsCiAgICAgICAgICAgICAgICB5ID0gIm1pbkxlbmd0aCIsCiAgICAgICAgICAgICAgICBnID0gInBhdHRlcm4iLAogICAgICAgICAgICAgICAgdiA9ICJyZXF1aXJlZCIsCiAgICAgICAgICAgICAgICBiID0gInZhbGlkYXRlIjsKICAgICAgICAgICAgdmFyIHcgPSBlID0+IG51bGwgPT0gZTsKICAgICAgICAgICAgY29uc3QgTyA9IGUgPT4gIm9iamVjdCIgPT0gdHlwZW9mIGU7CiAgICAgICAgICAgIHZhciBfID0gZSA9PiAhdyhlKSAmJiAhQXJyYXkuaXNBcnJheShlKSAmJiBPKGUpICYmICEoZSBpbnN0YW5jZW9mIERhdGUpLAogICAgICAgICAgICAgICAgeCA9IGUgPT4gL15cdyokLy50ZXN0KGUpLAogICAgICAgICAgICAgICAgayA9IGUgPT4gZS5maWx0ZXIoQm9vbGVhbiksCiAgICAgICAgICAgICAgICBFID0gZSA9PiBrKGUucmVwbGFjZSgvWyJ8J10vZywgIiIpLnJlcGxhY2UoL1xbL2csICIuIikucmVwbGFjZSgvXF0vZywgIiIpLnNwbGl0KCIuIikpOwoKICAgICAgICAgICAgZnVuY3Rpb24gQyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBsZXQgciA9IC0xOwogICAgICAgICAgICAgICAgY29uc3QgbyA9IHgodCkgPyBbdF0gOiBFKHQpLAogICAgICAgICAgICAgICAgICAgIGkgPSBvLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICBhID0gaSAtIDE7CiAgICAgICAgICAgICAgICBmb3IgKDsgKytyIDwgaTspIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gb1tyXTsKICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IG47CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgIT09IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBfKG4pIHx8IEFycmF5LmlzQXJyYXkobikgPyBuIDogaXNOYU4oK29bciArIDFdKSA/IHt9IDogW10KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZVt0XSA9IGksIGUgPSBlW3RdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBTID0gKGUsIHQgPSB7fSkgPT4gewogICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbiBpbiBlKSB4KG4pID8gdFtuXSA9IGVbbl0gOiBDKHQsIG4sIGVbbl0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaiA9IGUgPT4gZSA9PT0gdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgUCA9IChlID0ge30sIHQsIG4pID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gayh0LnNwbGl0KC9bLFtcXS5dKz8vKSkucmVkdWNlKCgoZSwgdCkgPT4gdyhlKSA/IGUgOiBlW3RdKSwgZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGoocikgfHwgciA9PT0gZSA/IGooZVt0XSkgPyBuIDogZVt0XSA6IHIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBID0gKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICByKGUpICYmIGUucmVtb3ZlRXZlbnRMaXN0ZW5lciAmJiAoZS5yZW1vdmVFdmVudExpc3RlbmVyKGEsIHQpLCBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoaSwgdCksIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLCB0KSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGNvbnN0IEQgPSB7CiAgICAgICAgICAgICAgICBpc1ZhbGlkOiAhMSwKICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHZhciBUID0gZSA9PiBBcnJheS5pc0FycmF5KGUpID8gZS5yZWR1Y2UoKChlLCB0KSA9PiB0ICYmIHQucmVmLmNoZWNrZWQgPyB7CiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZDogITAsCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHQucmVmLnZhbHVlCiAgICAgICAgICAgICAgICB9IDogZSksIEQpIDogRCwKICAgICAgICAgICAgICAgIE4gPSBlID0+ICJyYWRpbyIgPT09IGUudHlwZSwKICAgICAgICAgICAgICAgIE0gPSBlID0+ICJmaWxlIiA9PT0gZS50eXBlLAogICAgICAgICAgICAgICAgTCA9IGUgPT4gImNoZWNrYm94IiA9PT0gZS50eXBlLAogICAgICAgICAgICAgICAgSSA9IGUgPT4gInNlbGVjdC1tdWx0aXBsZSIgPT09IGUudHlwZTsKICAgICAgICAgICAgY29uc3QgUiA9IHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITEsCiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZDogITEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBxID0gewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMCwKICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiAhMAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgdmFyIEYgPSBlID0+IHsKICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUubGVuZ3RoID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5maWx0ZXIoKGUgPT4gZSAmJiBlLnJlZi5jaGVja2VkKSkubWFwKCgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gZSkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiAhIXQubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkOiB0LAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogcgogICAgICAgICAgICAgICAgICAgIH0gPSBlWzBdLnJlZjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA/IHIgJiYgIWooci52YWx1ZSkgPyBqKG4pIHx8ICIiID09PSBuID8gcSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6ICEwCiAgICAgICAgICAgICAgICAgICAgfSA6IHEgOiBSCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gUgogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gVihlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gZS5jdXJyZW50W3RdOwogICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICByZWY6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQXNOdW1iZXI6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQXNEYXRlOiB1LAogICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZUFzOiBsCiAgICAgICAgICAgICAgICAgICAgfSA9IGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgcikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBNKG4pID8gbi5maWxlcyA6IE4obikgPyBUKGkub3B0aW9ucykudmFsdWUgOiBJKG4pID8gKGEgPSBuLm9wdGlvbnMsIFsuLi5hXS5maWx0ZXIoKCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBlCiAgICAgICAgICAgICAgICAgICAgfSkgPT4gZSkpLm1hcCgoKHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUKICAgICAgICAgICAgICAgICAgICB9KSA9PiBlKSkpIDogTChuKSA/IEYoaS5vcHRpb25zKS52YWx1ZSA6IG8gPyBlIDogcyA/ICIiID09PSBlID8gTmFOIDogK2UgOiB1ID8gbi52YWx1ZUFzRGF0ZSA6IGwgPyBsKGUpIDogZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgICAgICBpZiAobikgcmV0dXJuIFAobi5jdXJyZW50LCB0KQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBCKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhZSB8fCBlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgZS5ub2RlVHlwZSAhPT0gTm9kZS5ET0NVTUVOVF9OT0RFICYmIEIoZS5wYXJlbnROb2RlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBVID0gZSA9PiBfKGUpICYmICFPYmplY3Qua2V5cyhlKS5sZW5ndGgsCiAgICAgICAgICAgICAgICBIID0gZSA9PiAiYm9vbGVhbiIgPT0gdHlwZW9mIGU7CgogICAgICAgICAgICBmdW5jdGlvbiB6KGUsIHQpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB4KHQpID8gW3RdIDogRSh0KSwKICAgICAgICAgICAgICAgICAgICByID0gMSA9PSBuLmxlbmd0aCA/IGUgOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0LnNsaWNlKDAsIC0xKS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHIgPCBuOykgZSA9IGooZSkgPyByKysgOiBlW3RbcisrXV07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfShlLCBuKSwKICAgICAgICAgICAgICAgICAgICBvID0gbltuLmxlbmd0aCAtIDFdOwogICAgICAgICAgICAgICAgbGV0IGk7CiAgICAgICAgICAgICAgICByICYmIGRlbGV0ZSByW29dOwogICAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBuLnNsaWNlKDAsIC0xKS5sZW5ndGg7IHQrKykgewogICAgICAgICAgICAgICAgICAgIGxldCByLCBvID0gLTE7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IG4uc2xpY2UoMCwgLSh0ICsgMSkpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gYS5sZW5ndGggLSAxOwogICAgICAgICAgICAgICAgICAgIGZvciAodCA+IDAgJiYgKGkgPSBlKTsgKytvIDwgYS5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBhW29dOwogICAgICAgICAgICAgICAgICAgICAgICByID0gciA/IHJbdF0gOiBlW3RdLCBzID09PSBvICYmIChfKHIpICYmIFUocikgfHwgQXJyYXkuaXNBcnJheShyKSAmJiAhci5maWx0ZXIoKGUgPT4gXyhlKSAmJiAhVShlKSB8fCBIKGUpKSkubGVuZ3RoKSAmJiAoaSA/IGRlbGV0ZSBpW3RdIDogZGVsZXRlIGVbdF0pLCBpID0gcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgVyA9IChlLCB0KSA9PiBlICYmIGUucmVmID09PSB0OwogICAgICAgICAgICB2YXIgSyA9IGUgPT4gdyhlKSB8fCAhTyhlKTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIFkoZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKEsoZSkgfHwgSyh0KSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHIgaW4gdCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSBlW3JdLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdFtyXTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBlW3JdID0gXyhvKSAmJiBfKGkpIHx8IEFycmF5LmlzQXJyYXkobykgJiYgQXJyYXkuaXNBcnJheShpKSA/IFkobywgaSkgOiBpCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEcodCwgbiwgcikgewogICAgICAgICAgICAgICAgaWYgKEsodCkgfHwgSyhuKSB8fCB0IGluc3RhbmNlb2YgRGF0ZSB8fCBuIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHQgPT09IG47CiAgICAgICAgICAgICAgICBpZiAoISgwLCBlLmlzVmFsaWRFbGVtZW50KSh0KSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBPYmplY3Qua2V5cyh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IE9iamVjdC5rZXlzKG4pOwogICAgICAgICAgICAgICAgICAgIGlmIChlLmxlbmd0aCAhPT0gby5sZW5ndGgpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG8gb2YgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdFtvXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyIHx8ICJyZWYiICE9PSBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gbltvXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoXyhlKSB8fCBBcnJheS5pc0FycmF5KGUpKSAmJiAoXyh0KSB8fCBBcnJheS5pc0FycmF5KHQpKSA/ICFHKGUsIHQsIHIpIDogZSAhPT0gdCkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gJChlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICBsZXQgaSA9IC0xOwogICAgICAgICAgICAgICAgZm9yICg7ICsraSA8IGUubGVuZ3RoOykgewogICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgciBpbiBlW2ldKSBBcnJheS5pc0FycmF5KGVbaV1bcl0pID8gKCFuW2ldICYmIChuW2ldID0ge30pLCBuW2ldW3JdID0gW10sICQoZVtpXVtyXSwgUCh0W2ldIHx8IHt9LCByLCBbXSksIG5baV1bcl0sIG5baV0sIHIpKSA6IEcoUCh0W2ldIHx8IHt9LCByKSwgZVtpXVtyXSkgPyBDKG5baV0gfHwge30sIHIpIDogbltpXSA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbltpXSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgW3JdOiAhMAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHIgJiYgIW4ubGVuZ3RoICYmIGRlbGV0ZSByW29dCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBRID0gKGUsIHQsIG4pID0+IFkoJChlLCB0LCBuLnNsaWNlKDAsIGUubGVuZ3RoKSksICQodCwgZSwgbi5zbGljZSgwLCBlLmxlbmd0aCkpKSwKICAgICAgICAgICAgICAgIFogPSBlID0+ICJzdHJpbmciID09IHR5cGVvZiBlLAogICAgICAgICAgICAgICAgWCA9IChlLCB0LCBuLCByLCBvKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHt9OwogICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdCBpbiBlLmN1cnJlbnQpKGoobykgfHwgKFoobykgPyB0LnN0YXJ0c1dpdGgobykgOiBBcnJheS5pc0FycmF5KG8pICYmIG8uZmluZCgoZSA9PiB0LnN0YXJ0c1dpdGgoZSkpKSkpICYmIChpW3RdID0gVihlLCB0LCB1bmRlZmluZWQsIHIpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA/IFMoaSkgOiBZKHQsIFMoaSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgSiA9IGUgPT4gZSBpbnN0YW5jZW9mIFJlZ0V4cCwKICAgICAgICAgICAgICAgIGVlID0gZSA9PiBfKGUpICYmICFKKGUpID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAiIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRlID0gZSA9PiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLAogICAgICAgICAgICAgICAgbmUgPSB0ID0+IFoodCkgfHwgKDAsIGUuaXNWYWxpZEVsZW1lbnQpKHQpOwoKICAgICAgICAgICAgZnVuY3Rpb24gcmUoZSwgdCwgbiA9ICJ2YWxpZGF0ZSIpIHsKICAgICAgICAgICAgICAgIGlmIChuZShlKSB8fCBIKGUpICYmICFlKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHR5cGU6IG4sCiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbmUoZSkgPyBlIDogIiIsCiAgICAgICAgICAgICAgICAgICAgcmVmOiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIG9lID0gKGUsIHQsIG4sIHIsIG8pID0+IHQgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG5bZV0pLCB7CiAgICAgICAgICAgICAgICAgICAgdHlwZXM6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbltlXSAmJiBuW2VdLnR5cGVzID8gbltlXS50eXBlcyA6IHt9KSwgewogICAgICAgICAgICAgICAgICAgICAgICBbcl06IG8gfHwgITAKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkgOiB7fSwKICAgICAgICAgICAgICAgIGllID0gYXN5bmMgKGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICByZWY6IG4sCiAgICAgICAgICAgICAgICAgICAgcmVmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBvLAogICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBpLAogICAgICAgICAgICAgICAgICAgIG1heExlbmd0aDogYSwKICAgICAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IHMsCiAgICAgICAgICAgICAgICAgICAgbWluOiB1LAogICAgICAgICAgICAgICAgICAgIG1heDogbCwKICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBjLAogICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlOiBmCiAgICAgICAgICAgICAgICB9LCBkKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgTyA9IG4ubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBrID0gTihuKSwKICAgICAgICAgICAgICAgICAgICAgICAgRSA9IEwobiksCiAgICAgICAgICAgICAgICAgICAgICAgIEMgPSBrIHx8IEUsCiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSAiIiA9PT0gciwKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG9lLmJpbmQobnVsbCwgTywgdCwgeCksCiAgICAgICAgICAgICAgICAgICAgICAgIFAgPSAoZSwgdCwgciwgbyA9IG0sIGkgPSB5KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gZSA/IHQgOiByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeFtPXSA9IE9iamVjdC5hc3NpZ24oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUgPyBvIDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaihlID8gbyA6IGksIGEpKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGlmIChpICYmICghayAmJiAhRSAmJiAoUyB8fCB3KHIpKSB8fCBIKHIpICYmICFyIHx8IEUgJiYgIUYobykuaXNWYWxpZCB8fCBrICYmICFUKG8pLmlzVmFsaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbwogICAgICAgICAgICAgICAgICAgICAgICB9ID0gbmUoaSkgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogISFpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaQogICAgICAgICAgICAgICAgICAgICAgICB9IDogZWUoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICYmICh4W09dID0gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogQyA/ICgoZS5jdXJyZW50W09dLm9wdGlvbnMgfHwgW10pWzBdIHx8IHt9KS5yZWYgOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKHYsIG8pKSwgIXQpKSByZXR1cm4geAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoISh3KHUpICYmIHcobCkgfHwgIiIgPT09IHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlLCBvOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gZWUobCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZWUodSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IG4udmFsdWVBc0RhdGUgfHwgbmV3IERhdGUocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaKGkudmFsdWUpICYmIChlID0gdCA+IG5ldyBEYXRlKGkudmFsdWUpKSwgWihhLnZhbHVlKSAmJiAobyA9IHQgPCBuZXcgRGF0ZShhLnZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBuLnZhbHVlQXNOdW1iZXIgfHwgcGFyc2VGbG9hdChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcoaS52YWx1ZSkgfHwgKGUgPSB0ID4gaS52YWx1ZSksIHcoYS52YWx1ZSkgfHwgKG8gPSB0IDwgYS52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGUgfHwgbykgJiYgKFAoISFlLCBpLm1lc3NhZ2UsIGEubWVzc2FnZSwgcCwgaCksICF0KSkgcmV0dXJuIHgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKFoocikgJiYgIVMgJiYgKGEgfHwgcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGVlKGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVlKHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICF3KGUudmFsdWUpICYmIHIubGVuZ3RoID4gZS52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAhdyhuLnZhbHVlKSAmJiByLmxlbmd0aCA8IG4udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobyB8fCBpKSAmJiAoUChvLCBlLm1lc3NhZ2UsIG4ubWVzc2FnZSksICF0KSkgcmV0dXJuIHgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKFoocikgJiYgYyAmJiAhUykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSA9IGVlKGMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoSihlKSAmJiAhZS50ZXN0KHIpICYmICh4W09dID0gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaihnLCBvKSksICF0KSkgcmV0dXJuIHgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IFYoZSwgTywgZCwgITEsICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBDICYmIG8gPyBvWzBdLnJlZiA6IG47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZShmKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHJlKGF3YWl0IGYociksIGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgKHhbT10gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGUpLCBqKGIsIGUubWVzc2FnZSkpLCAhdCkpIHJldHVybiB4CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXyhmKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW24sIG9dIG9mIE9iamVjdC5lbnRyaWVzKGYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVKGUpICYmICF0KSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gcmUoYXdhaXQgbyhyKSwgaSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAmJiAoZSA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYSksIGoobiwgYS5tZXNzYWdlKSksIHQgJiYgKHhbT10gPSBlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVShlKSAmJiAoeFtPXSA9IE9iamVjdC5hc3NpZ24oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlKSwgIXQpKSByZXR1cm4geAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB4CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBjb25zdCBhZSA9IChlLCB0LCBuID0gW10pID0+IHsKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgciBpbiB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IGUgKyAoXyh0KSA/IGAuJHtyfWAgOiBgWyR7cn1dYCk7CiAgICAgICAgICAgICAgICAgICAgSyh0W3JdKSA/IG4ucHVzaChvKSA6IGFlKG8sIHRbcl0sIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgc2UgPSAoZSwgdCwgbiwgciwgbykgPT4gewogICAgICAgICAgICAgICAgICAgIGxldCBpID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmFkZCh0KSwgVShlKSB8fCAoaSA9IFAoZSwgdCksIChfKGkpIHx8IEFycmF5LmlzQXJyYXkoaSkpICYmIGFlKHQsIGkpLmZvckVhY2goKGUgPT4gbi5hZGQoZSkpKSksIGooaSkgPyBvID8gciA6IFAociwgdCkgOiBpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdWUgPSAoewogICAgICAgICAgICAgICAgICAgIGlzT25CbHVyOiBlLAogICAgICAgICAgICAgICAgICAgIGlzT25DaGFuZ2U6IHQsCiAgICAgICAgICAgICAgICAgICAgaXNPblRvdWNoOiBuLAogICAgICAgICAgICAgICAgICAgIGlzVG91Y2hlZDogciwKICAgICAgICAgICAgICAgICAgICBpc1JlVmFsaWRhdGVPbkJsdXI6IG8sCiAgICAgICAgICAgICAgICAgICAgaXNSZVZhbGlkYXRlT25DaGFuZ2U6IGksCiAgICAgICAgICAgICAgICAgICAgaXNCbHVyRXZlbnQ6IGEsCiAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQ6IHMsCiAgICAgICAgICAgICAgICAgICAgaXNPbkFsbDogdQogICAgICAgICAgICAgICAgfSkgPT4gIXUgJiYgKCFzICYmIG4gPyAhKHIgfHwgYSkgOiAocyA/IG8gOiBlKSA/ICFhIDogIShzID8gaSA6IHQpIHx8IGEpLAogICAgICAgICAgICAgICAgbGUgPSBlID0+IGUuc3Vic3RyaW5nKDAsIGUuaW5kZXhPZigiWyIpKTsKICAgICAgICAgICAgY29uc3QgY2UgPSAoZSwgdCkgPT4gUmVnRXhwKGBeJHt0fShbfC4pXFxkK2AucmVwbGFjZSgvXFsvZywgIlxcWyIpLnJlcGxhY2UoL1xdL2csICJcXF0iKSkudGVzdChlKTsKICAgICAgICAgICAgdmFyIGZlID0gKGUsIHQpID0+IFsuLi5lXS5zb21lKChlID0+IGNlKHQsIGUpKSk7CiAgICAgICAgICAgIHZhciBkZSA9IHR5cGVvZiB3aW5kb3cgIT09IGQgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSBkOwoKICAgICAgICAgICAgZnVuY3Rpb24gcGUoZSkgewogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICBsZXQgbjsKICAgICAgICAgICAgICAgIGlmIChLKGUpIHx8IGRlICYmIChlIGluc3RhbmNlb2YgRmlsZSB8fCByKGUpKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICBpZiAoIVsiU2V0IiwgIk1hcCIsICJPYmplY3QiLCAiRGF0ZSIsICJBcnJheSJdLmluY2x1ZGVzKG51bGwgPT09ICh0ID0gZS5jb25zdHJ1Y3RvcikgfHwgdm9pZCAwID09PSB0ID8gdm9pZCAwIDogdC5uYW1lKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBuID0gbmV3IERhdGUoZS5nZXRUaW1lKCkpLCBuOwogICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTZXQpIHsKICAgICAgICAgICAgICAgICAgICBuID0gbmV3IFNldDsKICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgZSkgbi5hZGQodCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgbiA9IG5ldyBNYXA7CiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIGUua2V5cygpKSBuLnNldCh0LCBwZShlLmdldCh0KSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuID0gQXJyYXkuaXNBcnJheShlKSA/IFtdIDoge307CiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgaW4gZSkgblt0XSA9IHBlKGVbdF0pOwogICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgaGUgPSBlID0+ICh7CiAgICAgICAgICAgICAgICAgICAgaXNPblN1Ym1pdDogIWUgfHwgZSA9PT0gbCwKICAgICAgICAgICAgICAgICAgICBpc09uQmx1cjogZSA9PT0gcywKICAgICAgICAgICAgICAgICAgICBpc09uQ2hhbmdlOiBlID09PSB1LAogICAgICAgICAgICAgICAgICAgIGlzT25BbGw6IGUgPT09IGYsCiAgICAgICAgICAgICAgICAgICAgaXNPblRvdWNoOiBlID09PSBjCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIG1lID0gZSA9PiBOKGUpIHx8IEwoZSk7CiAgICAgICAgICAgIGNvbnN0IHllID0gdHlwZW9mIHdpbmRvdyA9PT0gZCwKICAgICAgICAgICAgICAgIGdlID0gZGUgPyAiUHJveHkiIGluIHdpbmRvdyA6IHR5cGVvZiBQcm94eSAhPT0gZDsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHZlKHsKICAgICAgICAgICAgICAgIG1vZGU6IHQgPSBsLAogICAgICAgICAgICAgICAgcmVWYWxpZGF0ZU1vZGU6IG4gPSB1LAogICAgICAgICAgICAgICAgcmVzb2x2ZXI6IHMsCiAgICAgICAgICAgICAgICBjb250ZXh0OiBjLAogICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlczogZCA9IHt9LAogICAgICAgICAgICAgICAgc2hvdWxkRm9jdXNFcnJvcjogcCA9ICEwLAogICAgICAgICAgICAgICAgc2hvdWxkVW5yZWdpc3RlcjogaCA9ICEwLAogICAgICAgICAgICAgICAgY3JpdGVyaWFNb2RlOiBtCiAgICAgICAgICAgIH0gPSB7fSkgewogICAgICAgICAgICAgICAgY29uc3QgeSA9ICgwLCBlLnVzZVJlZikoe30pLAogICAgICAgICAgICAgICAgICAgIGcgPSAoMCwgZS51c2VSZWYpKHt9KSwKICAgICAgICAgICAgICAgICAgICB2ID0gKDAsIGUudXNlUmVmKSh7fSksCiAgICAgICAgICAgICAgICAgICAgYiA9ICgwLCBlLnVzZVJlZikobmV3IFNldCksCiAgICAgICAgICAgICAgICAgICAgTyA9ICgwLCBlLnVzZVJlZikoe30pLAogICAgICAgICAgICAgICAgICAgIEUgPSAoMCwgZS51c2VSZWYpKHt9KSwKICAgICAgICAgICAgICAgICAgICBEID0gKDAsIGUudXNlUmVmKSh7fSksCiAgICAgICAgICAgICAgICAgICAgVCA9ICgwLCBlLnVzZVJlZikoe30pLAogICAgICAgICAgICAgICAgICAgIFIgPSAoMCwgZS51c2VSZWYpKGQpLAogICAgICAgICAgICAgICAgICAgIHEgPSAoMCwgZS51c2VSZWYpKCExKSwKICAgICAgICAgICAgICAgICAgICBGID0gKDAsIGUudXNlUmVmKSghMSksCiAgICAgICAgICAgICAgICAgICAgSCA9ICgwLCBlLnVzZVJlZikoKSwKICAgICAgICAgICAgICAgICAgICBZID0gKDAsIGUudXNlUmVmKSh7fSksCiAgICAgICAgICAgICAgICAgICAgJCA9ICgwLCBlLnVzZVJlZikoe30pLAogICAgICAgICAgICAgICAgICAgIEogPSAoMCwgZS51c2VSZWYpKGMpLAogICAgICAgICAgICAgICAgICAgIGVlID0gKDAsIGUudXNlUmVmKShzKSwKICAgICAgICAgICAgICAgICAgICBuZSA9ICgwLCBlLnVzZVJlZikobmV3IFNldCksCiAgICAgICAgICAgICAgICAgICAgcmUgPSAoMCwgZS51c2VSZWYpKGhlKHQpKSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzT25TdWJtaXQ6IG9lLAogICAgICAgICAgICAgICAgICAgICAgICBpc09uVG91Y2g6IGNlCiAgICAgICAgICAgICAgICAgICAgfSA9IHJlLmN1cnJlbnQsCiAgICAgICAgICAgICAgICAgICAgdmUgPSBtID09PSBmLAogICAgICAgICAgICAgICAgICAgIFtiZSwgd2VdID0gKDAsIGUudXNlU3RhdGUpKHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNEaXJ0eTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRhdGluZzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpcnR5RmllbGRzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRDb3VudDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hlZDoge30sCiAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VibWl0dGluZzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VibWl0U3VjY2Vzc2Z1bDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6ICFvZSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiB7fQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIE9lID0gKDAsIGUudXNlUmVmKSh7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlydHk6ICFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlydHlGaWVsZHM6ICFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hlZDogIWdlIHx8IGNlLAogICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkYXRpbmc6ICFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0aW5nOiAhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6ICFnZQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIF9lID0gKDAsIGUudXNlUmVmKShiZSksCiAgICAgICAgICAgICAgICAgICAgeGUgPSAoMCwgZS51c2VSZWYpKCksCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpc09uQmx1cjoga2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzT25DaGFuZ2U6IEVlCiAgICAgICAgICAgICAgICAgICAgfSA9ICgwLCBlLnVzZVJlZikoaGUobikpLmN1cnJlbnQ7CiAgICAgICAgICAgICAgICBKLmN1cnJlbnQgPSBjLCBlZS5jdXJyZW50ID0gcywgX2UuY3VycmVudCA9IGJlLCBZLmN1cnJlbnQgPSBoID8ge30gOiBVKFkuY3VycmVudCkgPyBwZShkKSA6IFkuY3VycmVudDsKICAgICAgICAgICAgICAgIGNvbnN0IENlID0gKDAsIGUudXNlQ2FsbGJhY2spKCgoZSA9IHt9KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHEuY3VycmVudCB8fCAoX2UuY3VycmVudCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgX2UuY3VycmVudCksIGUpLCB3ZShfZS5jdXJyZW50KSkKICAgICAgICAgICAgICAgICAgICB9KSwgW10pLAogICAgICAgICAgICAgICAgICAgIFNlID0gKCkgPT4gT2UuY3VycmVudC5pc1ZhbGlkYXRpbmcgJiYgQ2UoewogICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkYXRpbmc6ICEwCiAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgamUgPSAoMCwgZS51c2VDYWxsYmFjaykoKChlLCB0LCBuID0gITEsIHIgPSB7fSwgbykgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IG4gfHwgKCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZEZpZWxkczogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1dpdGhWYWxpZGF0aW9uOiBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBqKG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBQKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgJiYgISFhIHx8ICFpICYmICFHKGEsIG4sICEwKSB8fCBpICYmIFAobywgdCkgJiYgIVAociwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBfZS5jdXJyZW50LmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkRmllbGRzOiBULmN1cnJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNXaXRoVmFsaWRhdGlvbjogRC5jdXJyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gUChfZS5jdXJyZW50LmVycm9ycywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPyAoeihULmN1cnJlbnQsIGUpLCBpID0gaSB8fCAhYSB8fCAhRyhhLCB0LCAhMCksIEMoX2UuY3VycmVudC5lcnJvcnMsIGUsIHQpKSA6ICgoUChELmN1cnJlbnQsIGUpIHx8IGVlLmN1cnJlbnQpICYmIChDKFQuY3VycmVudCwgZSwgITApLCBpID0gaSB8fCBhKSwgeihfZS5jdXJyZW50LmVycm9ycywgZSkpLCAoaSAmJiAhdyhuKSB8fCAhVShyKSB8fCBPZS5jdXJyZW50LmlzVmFsaWRhdGluZykgJiYgQ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHIpLCBlZS5jdXJyZW50ID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZDogISFvCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7fSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRhdGluZzogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSksIFtdKSwKICAgICAgICAgICAgICAgICAgICBQZSA9ICgwLCBlLnVzZUNhbGxiYWNrKSgoKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogbwogICAgICAgICAgICAgICAgICAgICAgICB9ID0geS5jdXJyZW50W2VdLCBpID0gZGUgJiYgcihuKSAmJiB3KHQpID8gIiIgOiB0OwogICAgICAgICAgICAgICAgICAgICAgICBOKG4pID8gKG8gfHwgW10pLmZvckVhY2goKCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gZS5jaGVja2VkID0gZS52YWx1ZSA9PT0gaSkpIDogTShuKSAmJiAhWihpKSA/IG4uZmlsZXMgPSBpIDogSShuKSA/IFsuLi5uLm9wdGlvbnNdLmZvckVhY2goKGUgPT4gZS5zZWxlY3RlZCA9IGkuaW5jbHVkZXMoZS52YWx1ZSkpKSA6IEwobikgJiYgbyA/IG8ubGVuZ3RoID4gMSA/IG8uZm9yRWFjaCgoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogZQogICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiBlLmNoZWNrZWQgPSBBcnJheS5pc0FycmF5KGkpID8gISFpLmZpbmQoKHQgPT4gdCA9PT0gZS52YWx1ZSkpIDogaSA9PT0gZS52YWx1ZSkpIDogb1swXS5yZWYuY2hlY2tlZCA9ICEhaSA6IG4udmFsdWUgPSBpCiAgICAgICAgICAgICAgICAgICAgfSksIFtdKSwKICAgICAgICAgICAgICAgICAgICBBZSA9ICgwLCBlLnVzZUNhbGxiYWNrKSgoKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9lLmN1cnJlbnQuaXNEaXJ0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IFZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiB0ICYmIEMobiwgZSwgdCksICFHKG4sIFIuY3VycmVudCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICB9KSwgW10pLAogICAgICAgICAgICAgICAgICAgIERlID0gKDAsIGUudXNlQ2FsbGJhY2spKCgoZSwgdCA9ICEwKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPZS5jdXJyZW50LmlzRGlydHkgfHwgT2UuY3VycmVudC5kaXJ0eUZpZWxkcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9ICFHKFAoUi5jdXJyZW50LCBlKSwgVih5LCBlLCBZKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFAoX2UuY3VycmVudC5kaXJ0eUZpZWxkcywgZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IF9lLmN1cnJlbnQuaXNEaXJ0eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPyBDKF9lLmN1cnJlbnQuZGlydHlGaWVsZHMsIGUsICEwKSA6IHooX2UuY3VycmVudC5kaXJ0eUZpZWxkcywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RpcnR5OiBBZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJ0eUZpZWxkczogX2UuY3VycmVudC5kaXJ0eUZpZWxkcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IE9lLmN1cnJlbnQuaXNEaXJ0eSAmJiBvICE9PSBpLmlzRGlydHkgfHwgT2UuY3VycmVudC5kaXJ0eUZpZWxkcyAmJiByICE9PSBQKF9lLmN1cnJlbnQuZGlydHlGaWVsZHMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgJiYgdCAmJiBDZShpKSwgYSA/IGkgOiB7fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7fQogICAgICAgICAgICAgICAgICAgIH0pLCBbXSksCiAgICAgICAgICAgICAgICAgICAgVGUgPSAoMCwgZS51c2VDYWxsYmFjaykoKGFzeW5jIChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSAoYXdhaXQgaWUoeSwgdmUsIHkuY3VycmVudFtlXSwgWSkpW2VdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gamUoZSwgbiwgdCksIGoobikKICAgICAgICAgICAgICAgICAgICB9KSwgW2plLCB2ZV0pLAogICAgICAgICAgICAgICAgICAgIE5lID0gKDAsIGUudXNlQ2FsbGJhY2spKChhc3luYyBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBhd2FpdCBlZS5jdXJyZW50KFZlKCksIEouY3VycmVudCwgdmUpLCBuID0gX2UuY3VycmVudC5pc1ZhbGlkOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGUubWFwKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gUCh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA/IEMoX2UuY3VycmVudC5lcnJvcnMsIGUsIG4pIDogeihfZS5jdXJyZW50LmVycm9ycywgZSksICFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuZXZlcnkoQm9vbGVhbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IFUodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZGF0aW5nOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgfSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gUCh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqZShlLCByLCBuICE9PSBVKHQpLCB7fSwgVSh0KSksICFyCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgW2plLCB2ZV0pLAogICAgICAgICAgICAgICAgICAgIE1lID0gKDAsIGUudXNlQ2FsbGJhY2spKChhc3luYyBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUgfHwgT2JqZWN0LmtleXMoeS5jdXJyZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNlKCksIGVlLmN1cnJlbnQpIHJldHVybiBOZSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICFlICYmIChfZS5jdXJyZW50LmVycm9ycyA9IHt9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBhd2FpdCBQcm9taXNlLmFsbCh0Lm1hcCgoYXN5bmMgZSA9PiBhd2FpdCBUZShlLCBudWxsKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZGF0aW5nOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4uZXZlcnkoQm9vbGVhbikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgVGUodCkKICAgICAgICAgICAgICAgICAgICB9KSwgW05lLCBUZV0pLAogICAgICAgICAgICAgICAgICAgIExlID0gKDAsIGUudXNlQ2FsbGJhY2spKCgoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICBzaG91bGREaXJ0eTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkVmFsaWRhdGU6IHIKICAgICAgICAgICAgICAgICAgICB9KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgQyhvLCBlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpIG9mIGFlKGUsIHQpKSB5LmN1cnJlbnRbaV0gJiYgKFBlKGksIFAobywgaSkpLCBuICYmIERlKGkpLCByICYmIE1lKGkpKQogICAgICAgICAgICAgICAgICAgIH0pLCBbTWUsIFBlLCBEZV0pLAogICAgICAgICAgICAgICAgICAgIEllID0gKDAsIGUudXNlQ2FsbGJhY2spKCgoZSwgdCwgbikgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWggJiYgIUsodCkgJiYgQyhZLmN1cnJlbnQsIGUsIEFycmF5LmlzQXJyYXkodCkgPyBbLi4udF0gOiBPYmplY3QuYXNzaWduKHt9LCB0KSksIHkuY3VycmVudFtlXSkgUGUoZSwgdCksIG4uc2hvdWxkRGlydHkgJiYgRGUoZSksIG4uc2hvdWxkVmFsaWRhdGUgJiYgTWUoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFLKHQpICYmIChMZShlLCB0LCBuKSwgbmUuY3VycmVudC5oYXMoZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gbGUoZSkgfHwgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMoZy5jdXJyZW50LCBlLCB0KSwgJC5jdXJyZW50W3JdKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcl06IFAoZy5jdXJyZW50LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIChPZS5jdXJyZW50LmlzRGlydHkgfHwgT2UuY3VycmVudC5kaXJ0eUZpZWxkcykgJiYgbi5zaG91bGREaXJ0eSAmJiAoQyhfZS5jdXJyZW50LmRpcnR5RmllbGRzLCBlLCBRKHQsIFAoUi5jdXJyZW50LCBlLCBbXSksIFAoX2UuY3VycmVudC5kaXJ0eUZpZWxkcywgZSwgW10pKSksIENlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RpcnR5OiAhRyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIFZlKCkpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlXTogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBSLmN1cnJlbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSFoICYmIEMoWS5jdXJyZW50LCBlLCB0KQogICAgICAgICAgICAgICAgICAgIH0pLCBbRGUsIFBlLCBMZV0pLAogICAgICAgICAgICAgICAgICAgIFJlID0gZSA9PiBGLmN1cnJlbnQgfHwgYi5jdXJyZW50LmhhcyhlKSB8fCBiLmN1cnJlbnQuaGFzKChlLm1hdGNoKC9cdysvKSB8fCBbXSlbMF0pLAogICAgICAgICAgICAgICAgICAgIHFlID0gZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVShPLmN1cnJlbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBuIGluIE8uY3VycmVudCkgZSAmJiBPLmN1cnJlbnRbbl0uc2l6ZSAmJiAhTy5jdXJyZW50W25dLmhhcyhlKSAmJiAhTy5jdXJyZW50W25dLmhhcyhsZShlKSkgfHwgKEUuY3VycmVudFtuXSgpLCB0ID0gITEpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gRmUoZSkgewogICAgICAgICAgICAgICAgICAgIGlmICghaCkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgdCA9IHBlKGUpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgbmUuY3VycmVudCkgeChlKSAmJiAhdFtlXSAmJiAodCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdCksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlXTogW10KICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFZlKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoWihlKSkgcmV0dXJuIFYoeSwgZSwgWSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG4gb2YgZSkgQyh0LCBuLCBWKHksIG4sIFkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZlKFgoeSwgcGUoWS5jdXJyZW50KSwgaCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBILmN1cnJlbnQgPSBILmN1cnJlbnQgPyBILmN1cnJlbnQgOiBhc3luYyAoewogICAgICAgICAgICAgICAgICAgIHR5cGU6IGUsCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiB0CiAgICAgICAgICAgICAgICB9KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSB0Lm5hbWU7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHkuY3VycmVudFtuXTsKICAgICAgICAgICAgICAgICAgICBsZXQgaSwgYTsKICAgICAgICAgICAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gZSA9PT0gbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB1ZShPYmplY3QuYXNzaWduKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0JsdXJFdmVudDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlVmFsaWRhdGVPbkNoYW5nZTogRWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZVZhbGlkYXRlT25CbHVyOiBrZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RvdWNoZWQ6ICEhUChfZS5jdXJyZW50LnRvdWNoZWQsIG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VibWl0dGVkOiBfZS5jdXJyZW50LmlzU3VibWl0dGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByZS5jdXJyZW50KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsID0gRGUobiwgITEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICFVKGwpIHx8ICFzICYmIFJlKG4pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocyAmJiAhUChfZS5jdXJyZW50LnRvdWNoZWQsIG4pICYmIE9lLmN1cnJlbnQudG91Y2hlZCAmJiAoQyhfZS5jdXJyZW50LnRvdWNoZWQsIG4sICEwKSwgbCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbCksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3VjaGVkOiBfZS5jdXJyZW50LnRvdWNoZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgIWggJiYgTCh0KSAmJiBDKFkuY3VycmVudCwgbiwgVih5LCBuKSksIHUpIHJldHVybiAhcyAmJiBxZShuKSwgKCFVKGwpIHx8IGMgJiYgVShsKSkgJiYgQ2UobCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTZSgpLCBlZS5jdXJyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID0gYXdhaXQgZWUuY3VycmVudChWZSgpLCBKLmN1cnJlbnQsIHZlKSwgciA9IF9lLmN1cnJlbnQuaXNWYWxpZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gUChlLCBuKSwgTCh0KSAmJiAhaSAmJiBlZS5jdXJyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGxlKG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gUChlLCB0LCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci50eXBlICYmIHIubWVzc2FnZSAmJiAoaSA9IHIpLCB0ICYmIChyIHx8IFAoX2UuY3VycmVudC5lcnJvcnMsIHQpKSAmJiAobiA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gVShlKSwgciAhPT0gYSAmJiAoYyA9ICEwKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaSA9IChhd2FpdCBpZSh5LCB2ZSwgciwgWSkpW25dOwogICAgICAgICAgICAgICAgICAgICAgICAhcyAmJiBxZShuKSwgamUobiwgaSwgYywgbCwgYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgY29uc3QgQmUgPSAoMCwgZS51c2VDYWxsYmFjaykoKGFzeW5jIChlID0ge30pID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IFUoeS5jdXJyZW50KSA/IFIuY3VycmVudCA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9IGF3YWl0IGVlLmN1cnJlbnQoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHQpLCBWZSgpKSwgZSksIEouY3VycmVudCwgdmUpIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFUobik7CiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmN1cnJlbnQuaXNWYWxpZCAhPT0gciAmJiBDZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiByCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSksIFt2ZV0pLAogICAgICAgICAgICAgICAgICAgIFVlID0gKDAsIGUudXNlQ2FsbGJhY2spKCgoZSwgdCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQsIG4sIHIsIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID0gbiwgdSA9IGUuY3VycmVudFtzXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBWKGUsIHMsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFqKHQpICYmIEMoci5jdXJyZW50LCBzLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS50eXBlICYmIHUgPyBOKGEpIHx8IEwoYSkgPyBBcnJheS5pc0FycmF5KHUub3B0aW9ucykgJiYgdS5vcHRpb25zLmxlbmd0aCA/IChrKHUub3B0aW9ucykuZm9yRWFjaCgoKGUgPSB7fSwgbikgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCKGUucmVmKSAmJiBXKGUsIGUucmVmKSB8fCBpKSAmJiAoQShlLnJlZiwgdCksIHoodS5vcHRpb25zLCBgWyR7bn1dYCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHUub3B0aW9ucyAmJiAhayh1Lm9wdGlvbnMpLmxlbmd0aCAmJiBkZWxldGUgZS5jdXJyZW50W3NdKSA6IGRlbGV0ZSBlLmN1cnJlbnRbc10gOiAoQihhKSAmJiBXKHUsIGEpIHx8IGkpICYmIChBKGEsIHQpLCBkZWxldGUgZS5jdXJyZW50W3NdKSA6IGRlbGV0ZSBlLmN1cnJlbnRbc10KICAgICAgICAgICAgICAgICAgICAgICAgfSh5LCBILmN1cnJlbnQsIGUsIFksIGgsIHQpLCBoICYmICh6KFQuY3VycmVudCwgZS5yZWYubmFtZSksIHooRC5jdXJyZW50LCBlLnJlZi5uYW1lKSkKICAgICAgICAgICAgICAgICAgICB9KSwgW2hdKSwKICAgICAgICAgICAgICAgICAgICBIZSA9ICgwLCBlLnVzZUNhbGxiYWNrKSgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGLmN1cnJlbnQpIENlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIGIuY3VycmVudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zdGFydHNXaXRoKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcWUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLCBbXSksCiAgICAgICAgICAgICAgICAgICAgemUgPSAoMCwgZS51c2VDYWxsYmFjaykoKChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgKFVlKGUsIHQpLCBoICYmICFrKGUub3B0aW9ucyB8fCBbXSkubGVuZ3RoICYmICh6KF9lLmN1cnJlbnQuZXJyb3JzLCBlLnJlZi5uYW1lKSwgQyhfZS5jdXJyZW50LmRpcnR5RmllbGRzLCBlLnJlZi5uYW1lLCAhMCksIENlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlydHk6IEFlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIE9lLmN1cnJlbnQuaXNWYWxpZCAmJiBlZS5jdXJyZW50ICYmIEJlKCksIEhlKGUucmVmLm5hbWUpKSkKICAgICAgICAgICAgICAgICAgICB9KSwgW0JlLCBVZV0pOwogICAgICAgICAgICAgICAgY29uc3QgV2UgPSAoMCwgZS51c2VDYWxsYmFjaykoKChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IG4gPyBPLmN1cnJlbnRbbl0gOiBiLmN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgbGV0IG8gPSBYKHksIHBlKFkuY3VycmVudCksIGgsICExLCBlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoWihlKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gbGUoZSkgfHwgZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5lLmN1cnJlbnQuaGFzKG4pICYmIChvID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB2LmN1cnJlbnQpLCBvKSksIHNlKG8sIGUsIHIsIGooUChSLmN1cnJlbnQsIGUpKSA/IHQgOiBQKFIuY3VycmVudCwgZSksICEwKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gaih0KSA/IFIuY3VycmVudCA6IHQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZSkgPyBlLnJlZHVjZSgoKGUsIHQpID0+IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgW3RdOiBzZShvLCB0LCByLCBpKQogICAgICAgICAgICAgICAgICAgIH0pKSwge30pIDogKEYuY3VycmVudCA9IGoobiksIFMoIVUobykgJiYgbyB8fCBpKSkKICAgICAgICAgICAgICAgIH0pLCBbXSk7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gS2UoZSwgdCA9IHt9KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdQogICAgICAgICAgICAgICAgICAgIH0gPSBlLCBsID0gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogZQogICAgICAgICAgICAgICAgICAgIH0sIHQpLCBjID0geS5jdXJyZW50LCBmID0gbWUoZSksIGQgPSBmZShuZS5jdXJyZW50LCBuKSwgcCA9IHQgPT4gZGUgJiYgKCFyKGUpIHx8IHQgPT09IGUpOwogICAgICAgICAgICAgICAgICAgIGxldCBtLCBnID0gY1tuXSwKICAgICAgICAgICAgICAgICAgICAgICAgdiA9ICEwOwogICAgICAgICAgICAgICAgICAgIGlmIChnICYmIChmID8gQXJyYXkuaXNBcnJheShnLm9wdGlvbnMpICYmIGsoZy5vcHRpb25zKS5maW5kKChlID0+IHUgPT09IGUucmVmLnZhbHVlICYmIHAoZS5yZWYpKSkgOiBwKGcucmVmKSkpIHJldHVybiB2b2lkKGNbbl0gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGcpLCB0KSk7CiAgICAgICAgICAgICAgICAgICAgZyA9IHMgPyBmID8gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFsuLi5rKGcgJiYgZy5vcHRpb25zIHx8IFtdKSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICByZWY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB0KSA6IE9iamVjdC5hc3NpZ24oe30sIGwpIDogbCwgY1tuXSA9IGc7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYiA9IGooUChZLmN1cnJlbnQsIG4pKTsKICAgICAgICAgICAgICAgICAgICBVKFIuY3VycmVudCkgJiYgYiB8fCAobSA9IFAoYiA/IFIuY3VycmVudCA6IFkuY3VycmVudCwgbiksIHYgPSBqKG0pLCB2IHx8IGQgfHwgUGUobiwgbSkpLCBVKHQpIHx8IChDKEQuY3VycmVudCwgbiwgITApLCAhb2UgJiYgT2UuY3VycmVudC5pc1ZhbGlkICYmIGllKHksIHZlLCBnLCBZKS50aGVuKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IF9lLmN1cnJlbnQuaXNWYWxpZDsKICAgICAgICAgICAgICAgICAgICAgICAgVShlKSA/IEMoVC5jdXJyZW50LCBuLCAhMCkgOiB6KFQuY3VycmVudCwgbiksIHQgIT09IFUoZSkgJiYgQ2UoKQogICAgICAgICAgICAgICAgICAgIH0pKSksICFoIHx8IGQgJiYgdiB8fCAhZCAmJiB6KF9lLmN1cnJlbnQuZGlydHlGaWVsZHMsIG4pLCBzICYmIGZ1bmN0aW9uKHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBlCiAgICAgICAgICAgICAgICAgICAgfSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICByKGUpICYmIG4gJiYgKGUuYWRkRXZlbnRMaXN0ZW5lcih0ID8gaSA6IGEsIG4pLCBlLmFkZEV2ZW50TGlzdGVuZXIobywgbikpCiAgICAgICAgICAgICAgICAgICAgfShmICYmIGcub3B0aW9ucyA/IGcub3B0aW9uc1tnLm9wdGlvbnMubGVuZ3RoIC0gMV0gOiBnLCBmIHx8ICJzZWxlY3Qtb25lIiA9PT0gZS50eXBlLCBILmN1cnJlbnQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25zdCBZZSA9ICgwLCBlLnVzZUNhbGxiYWNrKSgoKGUsIHQpID0+IGFzeW5jIG4gPT4gewogICAgICAgICAgICAgICAgICAgIG4gJiYgbi5wcmV2ZW50RGVmYXVsdCAmJiAobi5wcmV2ZW50RGVmYXVsdCgpLCBuLnBlcnNpc3QoKSk7CiAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IEZlKFgoeSwgcGUoWS5jdXJyZW50KSwgaCwgITApKTsKICAgICAgICAgICAgICAgICAgICBPZS5jdXJyZW50LmlzU3VibWl0dGluZyAmJiBDZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VibWl0dGluZzogITAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWUuY3VycmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBhd2FpdCBlZS5jdXJyZW50KG8sIEouY3VycmVudCwgdmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2UuY3VycmVudC5lcnJvcnMgPSByID0gZSwgbyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh5LmN1cnJlbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9IGUucmVmLCBuID0gYXdhaXQgaWUoeSwgdmUsIGUsIFkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuW3RdID8gKEMociwgdCwgblt0XSksIHooVC5jdXJyZW50LCB0KSkgOiBQKEQuY3VycmVudCwgdCkgJiYgKHooX2UuY3VycmVudC5lcnJvcnMsIHQpLCBDKFQuY3VycmVudCwgdCwgITApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgVShyKSAmJiBPYmplY3Qua2V5cyhfZS5jdXJyZW50LmVycm9ycykuZXZlcnkoKGUgPT4gZSBpbiB5LmN1cnJlbnQpKSA/IChDZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0aW5nOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYXdhaXQgZShvLCBuKSkgOiAoX2UuY3VycmVudC5lcnJvcnMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIF9lLmN1cnJlbnQuZXJyb3JzKSwgciksIHQgJiYgYXdhaXQgdChfZS5jdXJyZW50LmVycm9ycywgbiksIHAgJiYgKChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG4gaW4gZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUCh0LCBuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZVtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnJlZi5mb2N1cyAmJiBqKHQucmVmLmZvY3VzKCkpKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lm9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Lm9wdGlvbnNbMF0ucmVmLmZvY3VzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkoeS5jdXJyZW50LCBfZS5jdXJyZW50LmVycm9ycykpCiAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgX2UuY3VycmVudC5pc1N1Ym1pdHRpbmcgPSAhMSwgQ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0aW5nOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VibWl0U3VjY2Vzc2Z1bDogVShfZS5jdXJyZW50LmVycm9ycyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRDb3VudDogX2UuY3VycmVudC5zdWJtaXRDb3VudCArIDEKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgW3AsIHZlXSk7CiAgICAgICAgICAgICAgICAoMCwgZS51c2VFZmZlY3QpKCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgcyAmJiBPZS5jdXJyZW50LmlzVmFsaWQgJiYgQmUoKSwgeGUuY3VycmVudCA9IHhlLmN1cnJlbnQgfHwgIWRlID8geGUuY3VycmVudCA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG4gb2YgT2JqZWN0LnZhbHVlcyhlLmN1cnJlbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuICYmIG4ub3B0aW9ucykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIG4ub3B0aW9ucykgZSAmJiBlLnJlZiAmJiBCKGUucmVmKSAmJiB0KG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbiAmJiBCKG4ucmVmKSAmJiB0KG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ub2JzZXJ2ZSh3aW5kb3cuZG9jdW1lbnQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0cmVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgbgogICAgICAgICAgICAgICAgICAgIH0oeSwgemUpCiAgICAgICAgICAgICAgICB9KSwgW3plLCBSLmN1cnJlbnRdKSwgKDAsIGUudXNlRWZmZWN0KSgoKCkgPT4gKCkgPT4gewogICAgICAgICAgICAgICAgICAgIHhlLmN1cnJlbnQgJiYgeGUuY3VycmVudC5kaXNjb25uZWN0KCksIHEuY3VycmVudCA9ICEwLCBPYmplY3QudmFsdWVzKHkuY3VycmVudCkuZm9yRWFjaCgoZSA9PiB6ZShlLCAhMCkpKQogICAgICAgICAgICAgICAgfSksIFtdKSwgIXMgJiYgT2UuY3VycmVudC5pc1ZhbGlkICYmIChiZS5pc1ZhbGlkID0gRyhULmN1cnJlbnQsIEQuY3VycmVudCkgJiYgVShfZS5jdXJyZW50LmVycm9ycykpOwogICAgICAgICAgICAgICAgY29uc3QgR2UgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6IE1lLAogICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZTogKDAsIGUudXNlQ2FsbGJhY2spKChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZShlLCB0LCBuIHx8IHt9KSwgUmUoZSkgJiYgQ2UoKSwgcWUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIFtJZSwgTWVdKSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VmFsdWVzOiAoMCwgZS51c2VDYWxsYmFjaykoVmUsIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXI6ICgwLCBlLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF5ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoWihlKSkgS2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghXyhlKSB8fCAhKCJuYW1lIiBpbiBlKSkgcmV0dXJuIHQgPT4gdCAmJiBLZSh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2UoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBbUi5jdXJyZW50XSksCiAgICAgICAgICAgICAgICAgICAgICAgIHVucmVnaXN0ZXI6ICgwLCBlLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIEFycmF5LmlzQXJyYXkoZSkgPyBlIDogW2VdKSB6ZSh5LmN1cnJlbnRbdF0sICEwKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgW10pLAogICAgICAgICAgICAgICAgICAgICAgICBmb3JtU3RhdGU6IGdlID8gbmV3IFByb3h5KGJlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IChlLCB0KSA9PiB0IGluIGUgPyAoT2UuY3VycmVudFt0XSA9ICEwLCBlW3RdKSA6IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGJlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAkZSA9ICgwLCBlLnVzZU1lbW8pKCgoKSA9PiBPYmplY3QuYXNzaWduKHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNGb3JtRGlydHk6IEFlLAogICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVXYXRjaGVkVmFsdWU6IEhlLAogICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRVbnJlZ2lzdGVyOiBoLAogICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVGb3JtU3RhdGU6IENlLAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVGaWVsZEV2ZW50TGlzdGVuZXI6IFVlLAogICAgICAgICAgICAgICAgICAgICAgICB3YXRjaEludGVybmFsOiBXZSwKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogcmUuY3VycmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVWYWxpZGF0ZU1vZGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVWYWxpZGF0ZU9uQmx1cjoga2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlVmFsaWRhdGVPbkNoYW5nZTogRWUKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVSZXNvbHZlcjogcyA/IEJlIDogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNSZWY6IHksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0RmllbGRBcnJheUZ1bmN0aW9uUmVmOiAkLAogICAgICAgICAgICAgICAgICAgICAgICB1c2VXYXRjaEZpZWxkc1JlZjogTywKICAgICAgICAgICAgICAgICAgICAgICAgdXNlV2F0Y2hSZW5kZXJGdW5jdGlvbnNSZWY6IEUsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkQXJyYXlEZWZhdWx0VmFsdWVzUmVmOiBnLAogICAgICAgICAgICAgICAgICAgICAgICB2YWxpZEZpZWxkc1JlZjogVCwKICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzV2l0aFZhbGlkYXRpb25SZWY6IEQsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkQXJyYXlOYW1lc1JlZjogbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRGb3JtU3RhdGVSZWY6IE9lLAogICAgICAgICAgICAgICAgICAgICAgICBmb3JtU3RhdGVSZWY6IF9lLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzUmVmOiBSLAogICAgICAgICAgICAgICAgICAgICAgICBzaGFsbG93RmllbGRzU3RhdGVSZWY6IFksCiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkQXJyYXlWYWx1ZXNSZWY6IHYKICAgICAgICAgICAgICAgICAgICB9LCBHZSkpLCBbUi5jdXJyZW50LCBIZSwgaCwgVWUsIFdlXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgd2F0Y2g6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjb250cm9sOiAkZSwKICAgICAgICAgICAgICAgICAgICBoYW5kbGVTdWJtaXQ6IFllLAogICAgICAgICAgICAgICAgICAgIHJlc2V0OiAoMCwgZS51c2VDYWxsYmFjaykoKChlLCB0ID0ge30pID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIE9iamVjdC52YWx1ZXMoeS5jdXJyZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBlLCBpID0gbWUodCkgJiYgQXJyYXkuaXNBcnJheShvKSA/IG9bMF0ucmVmIDogdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIoaSkpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmNsb3Nlc3QoImZvcm0iKS5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHkuY3VycmVudCA9IHt9LCBSLmN1cnJlbnQgPSBPYmplY3QuYXNzaWduKHt9LCBlIHx8IFIuY3VycmVudCksIGUgJiYgcWUoIiIpLCBPYmplY3QudmFsdWVzKCQuY3VycmVudCkuZm9yRWFjaCgoZSA9PiB0ZShlKSAmJiBlKCkpKSwgWS5jdXJyZW50ID0gaCA/IHt9IDogcGUoZSB8fCBSLmN1cnJlbnQpLCAoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlydHk6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1N1Ym1pdHRlZDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoZWQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0Q291bnQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJ0eUZpZWxkczogYQogICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIHx8IChULmN1cnJlbnQgPSB7fSwgRC5jdXJyZW50ID0ge30pLCBnLmN1cnJlbnQgPSB7fSwgYi5jdXJyZW50ID0gbmV3IFNldCwgRi5jdXJyZW50ID0gITEsIENlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRDb3VudDogaSA/IF9lLmN1cnJlbnQuc3VibWl0Q291bnQgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlydHk6ICEhdCAmJiBfZS5jdXJyZW50LmlzRGlydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQ6ICEhbiAmJiBfZS5jdXJyZW50LmlzU3VibWl0dGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6ICEhbyAmJiBfZS5jdXJyZW50LmlzVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlydHlGaWVsZHM6IGEgPyBfZS5jdXJyZW50LmRpcnR5RmllbGRzIDoge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hlZDogciA/IF9lLmN1cnJlbnQudG91Y2hlZCA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogZSA/IF9lLmN1cnJlbnQuZXJyb3JzIDoge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0aW5nOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1N1Ym1pdFN1Y2Nlc3NmdWw6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9KSh0KQogICAgICAgICAgICAgICAgICAgIH0pLCBbXSksCiAgICAgICAgICAgICAgICAgICAgY2xlYXJFcnJvcnM6ICgwLCBlLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlICYmIChBcnJheS5pc0FycmF5KGUpID8gZSA6IFtlXSkuZm9yRWFjaCgoZSA9PiB5LmN1cnJlbnRbZV0gJiYgeChlKSA/IGRlbGV0ZSBfZS5jdXJyZW50LmVycm9yc1tlXSA6IHooX2UuY3VycmVudC5lcnJvcnMsIGUpKSksIENlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogZSA/IF9lLmN1cnJlbnQuZXJyb3JzIDoge30KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSwgW10pLAogICAgICAgICAgICAgICAgICAgIHNldEVycm9yOiAoMCwgZS51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9ICh5LmN1cnJlbnRbZV0gfHwge30pLnJlZjsKICAgICAgICAgICAgICAgICAgICAgICAgQyhfZS5jdXJyZW50LmVycm9ycywgZSwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0KSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgQ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuc2hvdWxkRm9jdXMgJiYgbiAmJiBuLmZvY3VzICYmIG4uZm9jdXMoKQogICAgICAgICAgICAgICAgICAgIH0pLCBbXSksCiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBiZS5lcnJvcnMKICAgICAgICAgICAgICAgIH0sIEdlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgICAgICAgICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICAgICAgICAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuCgogICAgICAgICAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogICAgICAgICAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKICAgICAgICAgICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULAogICAgICAgICAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICAgICAgICAgICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKICAgICAgICAgICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgogICAgICAgICAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogICAgICAgICAgICBjb25zdCBiZSA9ICgwLCBlLmNyZWF0ZUNvbnRleHQpKG51bGwpOwogICAgICAgICAgICBiZS5kaXNwbGF5TmFtZSA9ICJSSEZDb250ZXh0IjsKICAgICAgICAgICAgY29uc3Qgd2UgPSAoKSA9PiAoMCwgZS51c2VDb250ZXh0KShiZSk7CiAgICAgICAgICAgIHZhciBPZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuYXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQubWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQucmVuZGVyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIHIsIG8gPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gT2JqZWN0LmtleXMoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwOyByIDwgaS5sZW5ndGg7IHIrKykgdC5pbmRleE9mKG4gPSBpW3JdKSA+PSAwIHx8IChvW25dID0gZVtuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgICAgICAgICB9KHQsIFsiYXMiLCAiZXJyb3JzIiwgIm5hbWUiLCAibWVzc2FnZSIsICJyZW5kZXIiXSksCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB3ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gUChyIHx8IHUuZXJyb3JzLCBvKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWwpIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0gbC5tZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gbC50eXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IE9iamVjdC5hc3NpZ24oe30sIHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBjIHx8IGkKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmlzVmFsaWRFbGVtZW50KShuKSA/ICgwLCBlLmNsb25lRWxlbWVudCkobiwgZCkgOiBhID8gYSh7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGMgfHwgaSwKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXM6IGYKICAgICAgICAgICAgICAgICAgICB9KSA6ICgwLCBlLmNyZWF0ZUVsZW1lbnQpKG4gfHwgZS5GcmFnbWVudCwgZCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfZSA9IG4oNDI1MSksCiAgICAgICAgICAgICAgICB4ZSA9IG4ubihfZSksCiAgICAgICAgICAgICAgICBrZSA9IG4oNTk1Myk7CgogICAgICAgICAgICBmdW5jdGlvbiBFZSgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoRWUgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDE7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhcmd1bWVudHNbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gbikgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sIHIpICYmIChlW3JdID0gbltyXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0pLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gQ2UoZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9OwogICAgICAgICAgICAgICAgdmFyIG4sIHIsIG8gPSB7fSwKICAgICAgICAgICAgICAgICAgICBpID0gT2JqZWN0LmtleXMoZSk7CiAgICAgICAgICAgICAgICBmb3IgKHIgPSAwOyByIDwgaS5sZW5ndGg7IHIrKykgbiA9IGlbcl0sIHQuaW5kZXhPZihuKSA+PSAwIHx8IChvW25dID0gZVtuXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBTZShlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKFNlID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5fX3Byb3RvX18gPSB0LCBlCiAgICAgICAgICAgICAgICB9KShlLCB0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBqZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NwZWVkeSA9IGUuc3BlZWR5ID09PSB1bmRlZmluZWQgfHwgZS5zcGVlZHksIHRoaXMudGFncyA9IFtdLCB0aGlzLmN0ciA9IDAsIHRoaXMubm9uY2UgPSBlLm5vbmNlLCB0aGlzLmtleSA9IGUua2V5LCB0aGlzLmNvbnRhaW5lciA9IGUuY29udGFpbmVyLCB0aGlzLmJlZm9yZSA9IG51bGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB0ID0gZS5wcm90b3R5cGU7CiAgICAgICAgICAgICAgICByZXR1cm4gdC5pbnNlcnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3RyICUgKHRoaXMuaXNTcGVlZHkgPyA2NWUzIDogMSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnNldEF0dHJpYnV0ZSgiZGF0YS1lbW90aW9uIiwgZS5rZXkpLCBlLm5vbmNlICE9PSB1bmRlZmluZWQgJiYgdC5zZXRBdHRyaWJ1dGUoIm5vbmNlIiwgZS5ub25jZSksIHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICB0ID0gMCA9PT0gdGhpcy50YWdzLmxlbmd0aCA/IHRoaXMuYmVmb3JlIDogdGhpcy50YWdzW3RoaXMudGFncy5sZW5ndGggLSAxXS5uZXh0U2libGluZywgdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKG4sIHQpLCB0aGlzLnRhZ3MucHVzaChuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTcGVlZHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zaGVldCkgcmV0dXJuIGUuc2hlZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgdCsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5zdHlsZVNoZWV0c1t0XS5vd25lck5vZGUgPT09IGUpIHJldHVybiBkb2N1bWVudC5zdHlsZVNoZWV0c1t0XQogICAgICAgICAgICAgICAgICAgICAgICB9KHIpOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAxMDUgPT09IGUuY2hhckNvZGVBdCgxKSAmJiA2NCA9PT0gZS5jaGFyQ29kZUF0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbnNlcnRSdWxlKGUsIGkgPyAwIDogby5jc3NSdWxlcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSByLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0cisrCiAgICAgICAgICAgICAgICB9LCB0LmZsdXNoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWdzLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy50YWdzID0gW10sIHRoaXMuY3RyID0gMAogICAgICAgICAgICAgICAgfSwgZQogICAgICAgICAgICB9KCk7CiAgICAgICAgICAgIHZhciBQZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIHIsIHUsIGwsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCwgaCwgbSwgeSwgdywgXyA9IDAsIHggPSAwLCBrID0gMCwgRSA9IDAsIEMgPSAwLCBUID0gMCwgTSA9IG0gPSBwID0gMCwgSSA9IDAsIFIgPSAwLCBxID0gMCwgRiA9IDAsIFYgPSB1Lmxlbmd0aCwgQiA9IFYgLSAxLCBVID0gIiIsIEggPSAiIiwgeiA9ICIiLCBXID0gIiI7IEkgPCBWOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSB1LmNoYXJDb2RlQXQoSSksIEkgPT09IEIgJiYgMCAhPT0geCArIEUgKyBrICsgXyAmJiAoMCAhPT0geCAmJiAoaCA9IDQ3ID09PSB4ID8gMTAgOiA0NyksIEUgPSBrID0gXyA9IDAsIFYrKywgQisrKSwgMCA9PT0geCArIEUgKyBrICsgXykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJID09PSBCICYmICgwIDwgUiAmJiAoVSA9IFUucmVwbGFjZShmLCAiIikpLCAwIDwgVS50cmltKCkubGVuZ3RoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUgKz0gdS5jaGFyQXQoSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gNTkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwID0gKFUgPSBVLnRyaW0oKSkuY2hhckNvZGVBdCgwKSwgbSA9IDEsIEYgPSArK0k7IEkgPCBWOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaCA9IHUuY2hhckNvZGVBdChJKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0rKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0tLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChoID0gdS5jaGFyQ29kZUF0KEkgKyAxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0NzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChNID0gSSArIDE7IE0gPCBCOyArK00pIHN3aXRjaCAodS5jaGFyQ29kZUF0KE0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0NzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQyID09PSBoICYmIDQyID09PSB1LmNoYXJDb2RlQXQoTSAtIDEpICYmIEkgKyAyICE9PSBNKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gTSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQ3ID09PSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gTSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgPSBNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEkrKyA8IEIgJiYgdS5jaGFyQ29kZUF0KEkpICE9PSBoOyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBtKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJKysKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobSA9IHUuc3Vic3RyaW5nKEYsIEkpLCAwID09PSBwICYmIChwID0gKFUgPSBVLnJlcGxhY2UoYywgIiIpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSksIHApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKDAgPCBSICYmIChVID0gVS5yZXBsYWNlKGYsICIiKSksIGggPSBVLmNoYXJDb2RlQXQoMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEYgPSAobSA9IHQociwgUiwgbSwgaCwgZCArIDEpKS5sZW5ndGgsIDAgPCBOICYmICh3ID0gcygzLCBtLCBSID0gbihELCBVLCBxKSwgciwgaiwgUywgRiwgaCwgZCwgbCksIFUgPSBSLmpvaW4oIiIpLCB2b2lkIDAgIT09IHcgJiYgMCA9PT0gKEYgPSAobSA9IHcudHJpbSgpKS5sZW5ndGgpICYmIChoID0gMCwgbSA9ICIiKSksIDAgPCBGKSBzd2l0Y2ggKGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUgPSBVLnJlcGxhY2UoTywgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0NToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gVSArICJ7IiArIG0gKyAifSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gKFUgPSBVLnJlcGxhY2UoZywgIiQxICQyIikpICsgInsiICsgbSArICJ9IiwgbSA9IDEgPT09IEEgfHwgMiA9PT0gQSAmJiBpKCJAIiArIG0sIDMpID8gIkAtd2Via2l0LSIgKyBtICsgIkAiICsgbSA6ICJAIiArIG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBVICsgbSwgMTEyID09PSBsICYmIChIICs9IG0sIG0gPSAiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIG0gPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHQociwgbihyLCBVLCBxKSwgbSwgbCwgZCArIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ICs9IG0sIG0gPSBxID0gUiA9IE0gPSBwID0gMCwgVSA9ICIiLCBoID0gdS5jaGFyQ29kZUF0KCsrSSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA8IChGID0gKFUgPSAoMCA8IFIgPyBVLnJlcGxhY2UoZiwgIiIpIDogVSkudHJpbSgpKS5sZW5ndGgpKSBzd2l0Y2ggKDAgPT09IE0gJiYgKHAgPSBVLmNoYXJDb2RlQXQoMCksIDQ1ID09PSBwIHx8IDk2IDwgcCAmJiAxMjMgPiBwKSAmJiAoRiA9IChVID0gVS5yZXBsYWNlKCIgIiwgIjoiKSkubGVuZ3RoKSwgMCA8IE4gJiYgdm9pZCAwICE9PSAodyA9IHMoMSwgVSwgciwgZSwgaiwgUywgSC5sZW5ndGgsIGwsIGQsIGwpKSAmJiAwID09PSAoRiA9IChVID0gdy50cmltKCkpLmxlbmd0aCkgJiYgKFUgPSAiXDBcMCIpLCBwID0gVS5jaGFyQ29kZUF0KDApLCBoID0gVS5jaGFyQ29kZUF0KDEpLCBwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMTA1ID09PSBoIHx8IDk5ID09PSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXICs9IFUgKyB1LmNoYXJBdChJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OCAhPT0gVS5jaGFyQ29kZUF0KEYgLSAxKSAmJiAoSCArPSBvKFUsIHAsIGgsIFUuY2hhckNvZGVBdCgyKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gUiA9IE0gPSBwID0gMCwgVSA9ICIiLCBoID0gdS5jaGFyQ29kZUF0KCsrSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3ID09PSB4ID8geCA9IDAgOiAwID09PSAxICsgcCAmJiAxMDcgIT09IGwgJiYgMCA8IFUubGVuZ3RoICYmIChSID0gMSwgVSArPSAiXDAiKSwgMCA8IE4gKiBMICYmIHMoMCwgVSwgciwgZSwgaiwgUywgSC5sZW5ndGgsIGwsIGQsIGwpLCBTID0gMSwgaisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTI1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0geCArIEUgKyBrICsgXykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUysrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoUysrLCB5ID0gdS5jaGFyQXQoSSksIGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IEUgKyBfICsgeCkgc3dpdGNoIChDKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIgIT09IGggJiYgKHkgPSAiICIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAiXFwwIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9ICJcXGYiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gIlxcdiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IEUgKyB4ICsgXyAmJiAoUiA9IHEgPSAxLCB5ID0gIlxmIiArIHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IEUgKyB4ICsgXyArIFAgJiYgMCA8IE0pIHN3aXRjaCAoSSAtIE0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEyID09PSBDICYmIDU4ID09PSB1LmNoYXJDb2RlQXQoSSAtIDMpICYmIChQID0gQyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMSA9PT0gVCAmJiAoUCA9IFQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1ODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBFICsgeCArIF8gJiYgKE0gPSBJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0geCArIGsgKyBFICsgXyAmJiAoUiA9IDEsIHkgKz0gIlxyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSB4ICYmIChFID0gRSA9PT0gaCA/IDAgOiAwID09PSBFID8gaCA6IEUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5MToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBFICsgeCArIGsgJiYgXysrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5MzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBFICsgeCArIGsgJiYgXy0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBFICsgeCArIF8gJiYgay0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gRSArIHggKyBfKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBwKSBzd2l0Y2ggKDIgKiBDICsgMyAqIFQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTMzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsrKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0geCArIGsgKyBFICsgXyArIE0gKyBtICYmIChtID0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0NzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgwIDwgRSArIF8gKyBrKSkgc3dpdGNoICh4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoMiAqIGggKyAzICogdS5jaGFyQ29kZUF0KEkgKyAxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjM1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gNDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjIwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGID0gSSwgeCA9IDQyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3ID09PSBoICYmIDQyID09PSBDICYmIEYgKyAyICE9PSBJICYmICgzMyA9PT0gdS5jaGFyQ29kZUF0KEYgKyAyKSAmJiAoSCArPSB1LnN1YnN0cmluZyhGLCBJICsgMSkpLCB5ID0gIiIsIHggPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSB4ICYmIChVICs9IHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUID0gQywgQyA9IGgsIEkrKwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwIDwgKEYgPSBILmxlbmd0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSID0gciwgMCA8IE4gJiYgKHZvaWQgMCAhPT0gKHcgPSBzKDIsIEgsIFIsIGUsIGosIFMsIEYsIGwsIGQsIGwpKSAmJiAwID09PSAoSCA9IHcpLmxlbmd0aCkpIHJldHVybiBXICsgSCArIHo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSCA9IFIuam9pbigiLCIpICsgInsiICsgSCArICJ9IiwgMCAhPSBBICogUCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoMiAhPT0gQSB8fCBpKEgsIDIpIHx8IChQID0gMCksIFApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIID0gSC5yZXBsYWNlKGIsICI6LW1vei0kMSIpICsgSDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggPSBILnJlcGxhY2UodiwgIjo6LXdlYmtpdC1pbnB1dC0kMSIpICsgSC5yZXBsYWNlKHYsICI6Oi1tb3otJDEiKSArIEgucmVwbGFjZSh2LCAiOi1tcy1pbnB1dC0kMSIpICsgSAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBXICsgSCArIHoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHQudHJpbSgpLnNwbGl0KG0pOwogICAgICAgICAgICAgICAgICAgICAgICB0ID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBvLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDAgPT09IGEgPyAiIiA6IGVbMF0gKyAiICI7IHMgPCBpOyArK3MpIHRbc10gPSByKGUsIHRbc10sIG4pLnRyaW0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBzID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBbXTsgcyA8IGk7ICsrcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBhOyArK2wpIHRbdSsrXSA9IHIoZVtsXSArICIgIiwgb1tzXSwgbikudHJpbSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuY2hhckNvZGVBdCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgzMyA+IHIgJiYgKHIgPSAodCA9IHQudHJpbSgpKS5jaGFyQ29kZUF0KDApKSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5yZXBsYWNlKHksICIkMSIgKyBlLnRyaW0oKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnRyaW0oKSArIHQucmVwbGFjZSh5LCAiJDEiICsgZS50cmltKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA8IDEgKiBuICYmIDAgPCB0LmluZGV4T2YoIlxmIikpIHJldHVybiB0LnJlcGxhY2UoeSwgKDU4ID09PSBlLmNoYXJDb2RlQXQoMCkgPyAiIiA6ICIkMSIpICsgZS50cmltKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyB0CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBlICsgIjsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IDIgKiB0ICsgMyAqIG4gKyA0ICogcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDk0NCA9PT0gcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGEuaW5kZXhPZigiOiIsIDkpICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gYS5zdWJzdHJpbmcoZSwgYS5sZW5ndGggLSAxKS50cmltKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA9IGEuc3Vic3RyaW5nKDAsIGUpLnRyaW0oKSArIHUgKyAiOyIsIDEgPT09IEEgfHwgMiA9PT0gQSAmJiBpKHUsIDEpID8gIi13ZWJraXQtIiArIHUgKyB1IDogdQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBBIHx8IDIgPT09IEEgJiYgIWkoYSwgMSkpIHJldHVybiBhOwogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gOTcgPT09IGEuY2hhckNvZGVBdCgxMCkgPyAiLXdlYmtpdC0iICsgYSArIGEgOiBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NTE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDExNiA9PT0gYS5jaGFyQ29kZUF0KDMpID8gIi13ZWJraXQtIiArIGEgKyBhIDogYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTYzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxMTAgPT09IGEuY2hhckNvZGVBdCg1KSA/ICItd2Via2l0LSIgKyBhICsgYSA6IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEwMCAhPT0gYS5jaGFyQ29kZUF0KDQpKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTY5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICItd2Via2l0LSIgKyBhICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTc4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLXdlYmtpdC0iICsgYSArICItbW96LSIgKyBhICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTgzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLXdlYmtpdC0iICsgYSArICItbW96LSIgKyBhICsgIi1tcy0iICsgYSArIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg4MzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoNDUgPT09IGEuY2hhckNvZGVBdCg4KSkgcmV0dXJuICItd2Via2l0LSIgKyBhICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA8IGEuaW5kZXhPZigiaW1hZ2Utc2V0KCIsIDExKSkgcmV0dXJuIGEucmVwbGFjZShDLCAiJDEtd2Via2l0LSQyIikgKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5MzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQ1ID09PSBhLmNoYXJDb2RlQXQoNCkpIHN3aXRjaCAoYS5jaGFyQ29kZUF0KDUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICItd2Via2l0LWJveC0iICsgYS5yZXBsYWNlKCItZ3JvdyIsICIiKSArICItd2Via2l0LSIgKyBhICsgIi1tcy0iICsgYS5yZXBsYWNlKCJncm93IiwgInBvc2l0aXZlIikgKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLXdlYmtpdC0iICsgYSArICItbXMtIiArIGEucmVwbGFjZSgic2hyaW5rIiwgIm5lZ2F0aXZlIikgKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICItd2Via2l0LSIgKyBhICsgIi1tcy0iICsgYS5yZXBsYWNlKCJiYXNpcyIsICJwcmVmZXJyZWQtc2l6ZSIpICsgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIi13ZWJraXQtIiArIGEgKyAiLW1zLSIgKyBhICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTY0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLXdlYmtpdC0iICsgYSArICItbXMtZmxleC0iICsgYSArIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMjM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDk5ICE9PSBhLmNoYXJDb2RlQXQoOCkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLXdlYmtpdC1ib3gtcGFjayIgKyAodSA9IGEuc3Vic3RyaW5nKGEuaW5kZXhPZigiOiIsIDE1KSkucmVwbGFjZSgiZmxleC0iLCAiIikucmVwbGFjZSgic3BhY2UtYmV0d2VlbiIsICJqdXN0aWZ5IikpICsgIi13ZWJraXQtIiArIGEgKyAiLW1zLWZsZXgtcGFjayIgKyB1ICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC50ZXN0KGEpID8gYS5yZXBsYWNlKGQsICI6LXdlYmtpdC0iKSArIGEucmVwbGFjZShkLCAiOi1tb3otIikgKyBhIDogYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMWUzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodCA9ICh1ID0gYS5zdWJzdHJpbmcoMTMpLnRyaW0oKSkuaW5kZXhPZigiLSIpICsgMSwgdS5jaGFyQ29kZUF0KDApICsgdS5jaGFyQ29kZUF0KHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjI2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGEucmVwbGFjZSh3LCAidGIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIzMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBhLnJlcGxhY2UodywgInRiLXJsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gYS5yZXBsYWNlKHcsICJsciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIi13ZWJraXQtIiArIGEgKyAiLW1zLSIgKyB1ICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgPT09IGEuaW5kZXhPZigic3RpY2t5IiwgOSkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NzU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0ID0gKGEgPSBlKS5sZW5ndGggLSAxMCwgcyA9ICh1ID0gKDMzID09PSBhLmNoYXJDb2RlQXQodCkgPyBhLnN1YnN0cmluZygwLCB0KSA6IGEpLnN1YnN0cmluZyhlLmluZGV4T2YoIjoiLCA3KSArIDEpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSArICgwIHwgdS5jaGFyQ29kZUF0KDcpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIwMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxMTEgPiB1LmNoYXJDb2RlQXQoOCkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhLnJlcGxhY2UodSwgIi13ZWJraXQtIiArIHUpICsgIjsiICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIwNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gYS5yZXBsYWNlKHUsICItd2Via2l0LSIgKyAoMTAyIDwgcyA/ICJpbmxpbmUtIiA6ICIiKSArICJib3giKSArICI7IiArIGEucmVwbGFjZSh1LCAiLXdlYmtpdC0iICsgdSkgKyAiOyIgKyBhLnJlcGxhY2UodSwgIi1tcy0iICsgdSArICJib3giKSArICI7IiArIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgKyAiOyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkzODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoNDUgPT09IGEuY2hhckNvZGVBdCg1KSkgc3dpdGNoIChhLmNoYXJDb2RlQXQoNikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA9IGEucmVwbGFjZSgiLWl0ZW1zIiwgIiIpLCAiLXdlYmtpdC0iICsgYSArICItd2Via2l0LWJveC0iICsgdSArICItbXMtZmxleC0iICsgdSArIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICItd2Via2l0LSIgKyBhICsgIi1tcy1mbGV4LWl0ZW0tIiArIGEucmVwbGFjZSh4LCAiIikgKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICItd2Via2l0LSIgKyBhICsgIi1tcy1mbGV4LWxpbmUtcGFjayIgKyBhLnJlcGxhY2UoImFsaWduLWNvbnRlbnQiLCAiIikucmVwbGFjZSh4LCAiIikgKyBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NzM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoNDUgIT09IGEuY2hhckNvZGVBdCgzKSB8fCAxMjIgPT09IGEuY2hhckNvZGVBdCg0KSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkzMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTUzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMCA9PT0gRS50ZXN0KGUpKSByZXR1cm4gMTE1ID09PSAodSA9IGUuc3Vic3RyaW5nKGUuaW5kZXhPZigiOiIpICsgMSkpLmNoYXJDb2RlQXQoMCkgPyBvKGUucmVwbGFjZSgic3RyZXRjaCIsICJmaWxsLWF2YWlsYWJsZSIpLCB0LCBuLCByKS5yZXBsYWNlKCI6ZmlsbC1hdmFpbGFibGUiLCAiOnN0cmV0Y2giKSA6IGEucmVwbGFjZSh1LCAiLXdlYmtpdC0iICsgdSkgKyBhLnJlcGxhY2UodSwgIi1tb3otIiArIHUucmVwbGFjZSgiZmlsbC0iLCAiIikpICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTYyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gIi13ZWJraXQtIiArIGEgKyAoMTAyID09PSBhLmNoYXJDb2RlQXQoNSkgPyAiLW1zLSIgKyBhIDogIiIpICsgYSwgMjExID09PSBuICsgciAmJiAxMDUgPT09IGEuY2hhckNvZGVBdCgxMykgJiYgMCA8IGEuaW5kZXhPZigidHJhbnNmb3JtIiwgMTApKSByZXR1cm4gYS5zdWJzdHJpbmcoMCwgYS5pbmRleE9mKCI7IiwgMjcpICsgMSkucmVwbGFjZShoLCAiJDEtd2Via2l0LSQyIikgKyBhCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuaW5kZXhPZigxID09PSB0ID8gIjoiIDogInsiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnN1YnN0cmluZygwLCAzICE9PSB0ID8gbiA6IDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPSBlLnN1YnN0cmluZyhuICsgMSwgZS5sZW5ndGggLSAxKSwgTSgyICE9PSB0ID8gciA6IHIucmVwbGFjZShrLCAiJDEiKSwgbiwgdCkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG8odCwgdC5jaGFyQ29kZUF0KDApLCB0LmNoYXJDb2RlQXQoMSksIHQuY2hhckNvZGVBdCgyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICE9PSB0ICsgIjsiID8gbi5yZXBsYWNlKF8sICIgb3IgKCQxKSIpLnN1YnN0cmluZyg0KSA6ICIoIiArIHQgKyAiKSIKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgdCwgbiwgciwgbywgaSwgYSwgcywgdSwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmLCBkID0gMCwgcCA9IHQ7IGQgPCBOOyArK2QpIHN3aXRjaCAoZiA9IFRbZF0uY2FsbChsLCBlLCBwLCBuLCByLCBvLCBpLCBhLCBzLCB1LCBjKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB2b2lkIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAhMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbnVsbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGYKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocCAhPT0gdCkgcmV0dXJuIHAKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSAoZSA9IGUucHJlZml4KSAmJiAoTSA9IG51bGwsIGUgPyAiZnVuY3Rpb24iICE9IHR5cGVvZiBlID8gQSA9IDEgOiAoQSA9IDIsIE0gPSBlKSA6IEEgPSAwKSwgdQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDMzID4gci5jaGFyQ29kZUF0KDApICYmIChyID0gci50cmltKCkpLCByID0gW3JdLCAwIDwgTikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBzKC0xLCBuLCByLCByLCBqLCBTLCAwLCAwLCAwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gbyAmJiAic3RyaW5nIiA9PSB0eXBlb2YgbyAmJiAobiA9IG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0KEQsIHIsIG4sIDAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA8IE4gJiYgKHZvaWQgMCAhPT0gKG8gPSBzKC0yLCBpLCByLCByLCBqLCBTLCBpLmxlbmd0aCwgMCwgMCwgMCkpICYmIChpID0gbykpLCAiIiwgUCA9IDAsIFMgPSBqID0gMSwgaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IC9eXDArL2csCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAvW1wwXHJcZl0vZywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IC86ICovZywKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IC96b298Z3JhLywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IC8oWyw6IF0pKHRyYW5zZm9ybSkvZywKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IC8sXHIrPy9nLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gLyhbXHRcclxuIF0pKlxmPyYvZywKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IC9AKGtcdyspXHMqKFxTKilccyovLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gLzo6KHBsYWNlKS9nLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gLzoocmVhZC1vbmx5KS9nLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gL1tzdmhdXHcrLVt0YmxyXXsyfS8sCiAgICAgICAgICAgICAgICAgICAgICAgIE8gPSAvXChccyooLiopXHMqXCkvZywKICAgICAgICAgICAgICAgICAgICAgICAgXyA9IC8oW1xzXFNdKj8pOy9nLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gLy1zZWxmfGZsZXgtL2csCiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAvW15dKj8oOltycF1bZWxdYVtcdy1dKylbXl0qLywKICAgICAgICAgICAgICAgICAgICAgICAgRSA9IC9zdHJldGNofDpccypcdytcLSg/OmNvbnRlfGF2YWlsKS8sCiAgICAgICAgICAgICAgICAgICAgICAgIEMgPSAvKFteLV0pKGltYWdlLXNldFwoKS8sCiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICBqID0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICBEID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIFQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgTiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIE0gPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBMID0gMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbC51c2UgPSBmdW5jdGlvbiBJKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHZvaWQgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbnVsbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOID0gVC5sZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSkgVFtOKytdID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSBlLmxlbmd0aDsgdCA8IG47ICsrdCkgSShlW3RdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEwgPSAwIHwgISFlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEkKICAgICAgICAgICAgICAgICAgICB9LCBsLnNldCA9IHUsIHZvaWQgMCAhPT0gZSAmJiB1KGUpLCBsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQWUgPSAiLyp8Ki8iOwoKICAgICAgICAgICAgZnVuY3Rpb24gRGUoZSkgewogICAgICAgICAgICAgICAgZSAmJiBUZS5jdXJyZW50Lmluc2VydChlICsgIn0iKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBUZSA9IHsKICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBudWxsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgTmUgPSBmdW5jdGlvbihlLCB0LCBuLCByLCBvLCBpLCBhLCBzLCB1LCBsKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC5jaGFyQ29kZUF0KDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRlLmN1cnJlbnQuaW5zZXJ0KHQgKyAiOyIpLCAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDk4ID09PSB0LmNoYXJDb2RlQXQoMikpIHJldHVybiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBzKSByZXR1cm4gdCArIEFlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVGUuY3VycmVudC5pbnNlcnQoblswXSArIHQpLCAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArICgwID09PSBsID8gQWUgOiAiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAtMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc3BsaXQoIi8qfCovfSIpLmZvckVhY2goRGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIE1lID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUgPT09IHVuZGVmaW5lZCAmJiAoZSA9IHt9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IGUua2V5IHx8ICJjc3MiOwogICAgICAgICAgICAgICAgICAgIGUucHJlZml4ICE9PSB1bmRlZmluZWQgJiYgKHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogZS5wcmVmaXgKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG5ldyBQZSh0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgbywgaSA9IHt9OwogICAgICAgICAgICAgICAgICAgIG8gPSBlLmNvbnRhaW5lciB8fCBkb2N1bWVudC5oZWFkOwogICAgICAgICAgICAgICAgICAgIHZhciBhLCBzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgic3R5bGVbZGF0YS1lbW90aW9uLSIgKyBuICsgIl0iKTsKICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZ2V0QXR0cmlidXRlKCJkYXRhLWVtb3Rpb24tIiArIG4pLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaVtlXSA9ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZS5wYXJlbnROb2RlICE9PSBvICYmIG8uYXBwZW5kQ2hpbGQoZSkKICAgICAgICAgICAgICAgICAgICB9KSksIHIudXNlKGUuc3R5bGlzUGx1Z2lucykoTmUpLCBhID0gZnVuY3Rpb24oZSwgdCwgbiwgbykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgVGUuY3VycmVudCA9IG4sIHIoZSwgdC5zdHlsZXMpLCBvICYmICh1Lmluc2VydGVkW2ldID0gITApCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBuLAogICAgICAgICAgICAgICAgICAgICAgICBzaGVldDogbmV3IGplKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmNlOiBlLm5vbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWR5OiBlLnNwZWVkeQogICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgbm9uY2U6IGUubm9uY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGVkOiBpLAogICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0OiBhCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIExlKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gIiI7CiAgICAgICAgICAgICAgICByZXR1cm4gbi5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICBlW25dICE9PSB1bmRlZmluZWQgPyB0LnB1c2goZVtuXSkgOiByICs9IG4gKyAiICIKICAgICAgICAgICAgICAgIH0pKSwgcgogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBJZSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gZS5rZXkgKyAiLSIgKyB0Lm5hbWU7CiAgICAgICAgICAgICAgICBpZiAoITEgPT09IG4gJiYgZS5yZWdpc3RlcmVkW3JdID09PSB1bmRlZmluZWQgJiYgKGUucmVnaXN0ZXJlZFtyXSA9IHQuc3R5bGVzKSwgZS5pbnNlcnRlZFt0Lm5hbWVdID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHQ7CiAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICBlLmluc2VydCgiLiIgKyByLCBvLCBlLnNoZWV0LCAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvLm5leHQKICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChvICE9PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHZhciBSZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCBuID0gMCwgciA9IDAsIG8gPSBlLmxlbmd0aDsgbyA+PSA0OyArK3IsIG8gLT0gNCkgdCA9IDE1NDA0ODM0NzcgKiAoNjU1MzUgJiAodCA9IDI1NSAmIGUuY2hhckNvZGVBdChyKSB8ICgyNTUgJiBlLmNoYXJDb2RlQXQoKytyKSkgPDwgOCB8ICgyNTUgJiBlLmNoYXJDb2RlQXQoKytyKSkgPDwgMTYgfCAoMjU1ICYgZS5jaGFyQ29kZUF0KCsrcikpIDw8IDI0KSkgKyAoNTk3OTcgKiAodCA+Pj4gMTYpIDw8IDE2KSwgbiA9IDE1NDA0ODM0NzcgKiAoNjU1MzUgJiAodCBePSB0ID4+PiAyNCkpICsgKDU5Nzk3ICogKHQgPj4+IDE2KSA8PCAxNikgXiAxNTQwNDgzNDc3ICogKDY1NTM1ICYgbikgKyAoNTk3OTcgKiAobiA+Pj4gMTYpIDw8IDE2KTsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiBePSAoMjU1ICYgZS5jaGFyQ29kZUF0KHIgKyAyKSkgPDwgMTY7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gXj0gKDI1NSAmIGUuY2hhckNvZGVBdChyICsgMSkpIDw8IDg7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAxNTQwNDgzNDc3ICogKDY1NTM1ICYgKG4gXj0gMjU1ICYgZS5jaGFyQ29kZUF0KHIpKSkgKyAoNTk3OTcgKiAobiA+Pj4gMTYpIDw8IDE2KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCgobiA9IDE1NDA0ODM0NzcgKiAoNjU1MzUgJiAobiBePSBuID4+PiAxMykpICsgKDU5Nzk3ICogKG4gPj4+IDE2KSA8PCAxNikpIF4gbiA+Pj4gMTUpID4+PiAwKS50b1N0cmluZygzNikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBxZSA9IHsKICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogMSwKICAgICAgICAgICAgICAgICAgICBib3JkZXJJbWFnZU91dHNldDogMSwKICAgICAgICAgICAgICAgICAgICBib3JkZXJJbWFnZVNsaWNlOiAxLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckltYWdlV2lkdGg6IDEsCiAgICAgICAgICAgICAgICAgICAgYm94RmxleDogMSwKICAgICAgICAgICAgICAgICAgICBib3hGbGV4R3JvdXA6IDEsCiAgICAgICAgICAgICAgICAgICAgYm94T3JkaW5hbEdyb3VwOiAxLAogICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvdW50OiAxLAogICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IDEsCiAgICAgICAgICAgICAgICAgICAgZmxleDogMSwKICAgICAgICAgICAgICAgICAgICBmbGV4R3JvdzogMSwKICAgICAgICAgICAgICAgICAgICBmbGV4UG9zaXRpdmU6IDEsCiAgICAgICAgICAgICAgICAgICAgZmxleFNocmluazogMSwKICAgICAgICAgICAgICAgICAgICBmbGV4TmVnYXRpdmU6IDEsCiAgICAgICAgICAgICAgICAgICAgZmxleE9yZGVyOiAxLAogICAgICAgICAgICAgICAgICAgIGdyaWRSb3c6IDEsCiAgICAgICAgICAgICAgICAgICAgZ3JpZFJvd0VuZDogMSwKICAgICAgICAgICAgICAgICAgICBncmlkUm93U3BhbjogMSwKICAgICAgICAgICAgICAgICAgICBncmlkUm93U3RhcnQ6IDEsCiAgICAgICAgICAgICAgICAgICAgZ3JpZENvbHVtbjogMSwKICAgICAgICAgICAgICAgICAgICBncmlkQ29sdW1uRW5kOiAxLAogICAgICAgICAgICAgICAgICAgIGdyaWRDb2x1bW5TcGFuOiAxLAogICAgICAgICAgICAgICAgICAgIGdyaWRDb2x1bW5TdGFydDogMSwKICAgICAgICAgICAgICAgICAgICBtc0dyaWRSb3c6IDEsCiAgICAgICAgICAgICAgICAgICAgbXNHcmlkUm93U3BhbjogMSwKICAgICAgICAgICAgICAgICAgICBtc0dyaWRDb2x1bW46IDEsCiAgICAgICAgICAgICAgICAgICAgbXNHcmlkQ29sdW1uU3BhbjogMSwKICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAxLAogICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDEsCiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSwKICAgICAgICAgICAgICAgICAgICBvcnBoYW5zOiAxLAogICAgICAgICAgICAgICAgICAgIHRhYlNpemU6IDEsCiAgICAgICAgICAgICAgICAgICAgd2lkb3dzOiAxLAogICAgICAgICAgICAgICAgICAgIHpJbmRleDogMSwKICAgICAgICAgICAgICAgICAgICB6b29tOiAxLAogICAgICAgICAgICAgICAgICAgIFdlYmtpdExpbmVDbGFtcDogMSwKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMSwKICAgICAgICAgICAgICAgICAgICBmbG9vZE9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgc3RvcE9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiAxLAogICAgICAgICAgICAgICAgICAgIHN0cm9rZURhc2hvZmZzZXQ6IDEsCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTWl0ZXJsaW1pdDogMSwKICAgICAgICAgICAgICAgICAgICBzdHJva2VPcGFjaXR5OiAxLAogICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgRmUgPSAvW0EtWl18Xm1zL2csCiAgICAgICAgICAgICAgICBWZSA9IC9fRU1PXyhbXl9dKz8pXyhbXl0qPylfRU1PXy9nLAogICAgICAgICAgICAgICAgQmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ1ID09PSBlLmNoYXJDb2RlQXQoMSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBVZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYmICJib29sZWFuIiAhPSB0eXBlb2YgZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEhlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbbl0gPT09IHVuZGVmaW5lZCAmJiAodFtuXSA9IGUobikpLCB0W25dCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBCZShlKSA/IGUgOiBlLnJlcGxhY2UoRmUsICItJCYiKS50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICB6ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYW5pbWF0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYW5pbWF0aW9uTmFtZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQpIHJldHVybiB0LnJlcGxhY2UoVmUsIChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEtlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IEtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAxID09PSBxZVtlXSB8fCBCZShlKSB8fCAibnVtYmVyIiAhPSB0eXBlb2YgdCB8fCAwID09PSB0ID8gdCA6IHQgKyAicHgiCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gV2UoZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbikgcmV0dXJuICIiOwogICAgICAgICAgICAgICAgaWYgKG4uX19lbW90aW9uX3N0eWxlcyAhPT0gdW5kZWZpbmVkKSByZXR1cm4gbjsKICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIG4pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSBuLmFuaW0pIHJldHVybiBLZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG4ubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogbi5zdHlsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBLZQogICAgICAgICAgICAgICAgICAgICAgICB9LCBuLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLnN0eWxlcyAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ubmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvICE9PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG8gIT09IHVuZGVmaW5lZDspIEtlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBvLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogby5zdHlsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IEtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbyA9IG8ubmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnN0eWxlcyArICI7IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBuLmxlbmd0aDsgbysrKSByICs9IFdlKGUsIHQsIG5bb10sICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgIT0gdHlwZW9mIGEpIG51bGwgIT0gdCAmJiB0W2FdICE9PSB1bmRlZmluZWQgPyByICs9IGkgKyAieyIgKyB0W2FdICsgIn0iIDogVWUoYSkgJiYgKHIgKz0gSGUoaSkgKyAiOiIgKyB6ZShpLCBhKSArICI7Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGEpIHx8ICJzdHJpbmciICE9IHR5cGVvZiBhWzBdIHx8IG51bGwgIT0gdCAmJiB0W2FbMF1dICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gV2UoZSwgdCwgYSwgITEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYW5pbWF0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhbmltYXRpb25OYW1lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciArPSBIZShpKSArICI6IiArIHMgKyAiOyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgKz0gaSArICJ7IiArIHMgKyAifSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IGEubGVuZ3RoOyB1KyspIFVlKGFbdV0pICYmIChyICs9IEhlKGkpICsgIjoiICsgemUoaSwgYVt1XSkgKyAiOyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0LCBuKTsKICAgICAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gS2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gS2UgPSBpLCBXZShlLCB0LCBhLCByKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0KSByZXR1cm4gbjsKICAgICAgICAgICAgICAgIHZhciBzID0gdFtuXTsKICAgICAgICAgICAgICAgIHJldHVybiBzID09PSB1bmRlZmluZWQgfHwgciA/IG4gOiBzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIEtlLCBZZSA9IC9sYWJlbDpccyooW15ccztcbntdKylccyo7L2c7CiAgICAgICAgICAgIHZhciBHZSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gZS5sZW5ndGggJiYgIm9iamVjdCIgPT0gdHlwZW9mIGVbMF0gJiYgbnVsbCAhPT0gZVswXSAmJiBlWzBdLnN0eWxlcyAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZVswXTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gIiI7CiAgICAgICAgICAgICAgICAgICAgS2UgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlWzBdOwogICAgICAgICAgICAgICAgICAgIG51bGwgPT0gaSB8fCBpLnJhdyA9PT0gdW5kZWZpbmVkID8gKHIgPSAhMSwgbyArPSBXZShuLCB0LCBpLCAhMSkpIDogbyArPSBpWzBdOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAxOyBhIDwgZS5sZW5ndGg7IGErKykgbyArPSBXZShuLCB0LCBlW2FdLCA0NiA9PT0gby5jaGFyQ29kZUF0KG8ubGVuZ3RoIC0gMSkpLCByICYmIChvICs9IGlbYV0pOwogICAgICAgICAgICAgICAgICAgIFllLmxhc3RJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcywgdSA9ICIiOyBudWxsICE9PSAocyA9IFllLmV4ZWMobykpOykgdSArPSAiLSIgKyBzWzFdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFJlKG8pICsgdSwKICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBvLAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBLZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAkZSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksCiAgICAgICAgICAgICAgICBRZSA9ICgwLCBlLmNyZWF0ZUNvbnRleHQpKCJ1bmRlZmluZWQiICE9IHR5cGVvZiBIVE1MRWxlbWVudCA/IE1lKCkgOiBudWxsKSwKICAgICAgICAgICAgICAgIFplID0gKDAsIGUuY3JlYXRlQ29udGV4dCkoe30pLAogICAgICAgICAgICAgICAgWGUgPSAoUWUuUHJvdmlkZXIsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKFFlLkNvbnN1bWVyLCBudWxsLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQobiwgZSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIGUuZm9yd2FyZFJlZikobikKICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgSmUgPSAiX19FTU9USU9OX1RZUEVfUExFQVNFX0RPX05PVF9VU0VfXyIsCiAgICAgICAgICAgICAgICBldCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gdCkgJGUuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuW0plXSA9IGUsIG4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0dCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbnQgPSBmdW5jdGlvbih0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBudWxsID09PSByID8gbi5jc3MgOiBuLmNzcyhyKTsKICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgaSAmJiB0LnJlZ2lzdGVyZWRbaV0gIT09IHVuZGVmaW5lZCAmJiAoaSA9IHQucmVnaXN0ZXJlZFtpXSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuW0plXSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICIiOwogICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBuLmNsYXNzTmFtZSA/IHUgPSBMZSh0LnJlZ2lzdGVyZWQsIHMsIG4uY2xhc3NOYW1lKSA6IG51bGwgIT0gbi5jbGFzc05hbWUgJiYgKHUgPSBuLmNsYXNzTmFtZSArICIgIik7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBHZShzKTsKICAgICAgICAgICAgICAgICAgICBJZSh0LCBsLCAic3RyaW5nIiA9PSB0eXBlb2YgYSk7CiAgICAgICAgICAgICAgICAgICAgdSArPSB0LmtleSArICItIiArIGwubmFtZTsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHt9OwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGYgaW4gbikgJGUuY2FsbChuLCBmKSAmJiAiY3NzIiAhPT0gZiAmJiBmICE9PSBKZSAmJiAoY1tmXSA9IG5bZl0pOwogICAgICAgICAgICAgICAgICAgIGMucmVmID0gbywgYy5jbGFzc05hbWUgPSB1OwogICAgICAgICAgICAgICAgICAgIHZhciBkID0gKDAsIGUuY3JlYXRlRWxlbWVudCkoYSwgYyksCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAoMCwgZS5jcmVhdGVFbGVtZW50KSh0dCwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKGUuRnJhZ21lbnQsIG51bGwsIHAsIGQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcnQgPSBYZSgoZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiB0LmNzcyA/ICgwLCBlLmNyZWF0ZUVsZW1lbnQpKFplLkNvbnN1bWVyLCBudWxsLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnQobiwgdCwgZSwgcikKICAgICAgICAgICAgICAgICAgICB9KSkgOiBudChuLCB0LCBudWxsLCByKQogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICB2YXIgb3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCwgdCA9IG5ldyBBcnJheShlKSwgbiA9IDA7IG4gPCBlOyBuKyspIHRbbl0gPSBhcmd1bWVudHNbbl07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdlKHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaXQgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhcmd1bWVudHM7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbiB8fCAhJGUuY2FsbChuLCAiY3NzIikpIHJldHVybiBlLmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCByKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbmV3IEFycmF5KG8pOwogICAgICAgICAgICAgICAgICAgIGlbMF0gPSBydCwgaVsxXSA9IGV0KHQsIG4pOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAyOyBhIDwgbzsgYSsrKSBpW2FdID0gclthXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsIGkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYXQgPSBYZSgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5zdHlsZXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHIpIHJldHVybiAoMCwgZS5jcmVhdGVFbGVtZW50KShaZS5Db25zdW1lciwgbnVsbCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBHZShbcih0KV0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIGUuY3JlYXRlRWxlbWVudCkoc3QsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQ6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZTogbgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IEdlKFtyXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKHN0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQ6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlOiBuCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgIHN0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBuOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2FsbCh0aGlzLCB0LCBuLCByKSB8fCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4gPSBlLCAodCA9IHIpLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLCB0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHQsIFNlKHQsIG4pOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gci5wcm90b3R5cGU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGVldCA9IG5ldyBqZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMucHJvcHMuY2FjaGUua2V5ICsgIi1nbG9iYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uY2U6IHRoaXMucHJvcHMuY2FjaGUuc2hlZXQubm9uY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHRoaXMucHJvcHMuY2FjaGUuc2hlZXQuY29udGFpbmVyCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInN0eWxlW2RhdGEtZW1vdGlvbi0iICsgdGhpcy5wcm9wcy5jYWNoZS5rZXkgKyAnPSInICsgdGhpcy5wcm9wcy5zZXJpYWxpemVkLm5hbWUgKyAnIl0nKTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gZSAmJiB0aGlzLnNoZWV0LnRhZ3MucHVzaChlKSwgdGhpcy5wcm9wcy5jYWNoZS5zaGVldC50YWdzLmxlbmd0aCAmJiAodGhpcy5zaGVldC5iZWZvcmUgPSB0aGlzLnByb3BzLmNhY2hlLnNoZWV0LnRhZ3NbMF0pLCB0aGlzLmluc2VydFN0eWxlcygpCiAgICAgICAgICAgICAgICAgICAgfSwgby5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc2VyaWFsaXplZC5uYW1lICE9PSB0aGlzLnByb3BzLnNlcmlhbGl6ZWQubmFtZSAmJiB0aGlzLmluc2VydFN0eWxlcygpCiAgICAgICAgICAgICAgICAgICAgfSwgby5pbnNlcnRTdHlsZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQgJiYgSWUodGhpcy5wcm9wcy5jYWNoZSwgdGhpcy5wcm9wcy5zZXJpYWxpemVkLm5leHQsICEwKSwgdGhpcy5zaGVldC50YWdzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnNoZWV0LnRhZ3NbdGhpcy5zaGVldC50YWdzLmxlbmd0aCAtIDFdLm5leHRFbGVtZW50U2libGluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlZXQuYmVmb3JlID0gZSwgdGhpcy5zaGVldC5mbHVzaCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYWNoZS5pbnNlcnQoIiIsIHRoaXMucHJvcHMuc2VyaWFsaXplZCwgdGhpcy5zaGVldCwgITEpCiAgICAgICAgICAgICAgICAgICAgfSwgby5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZWV0LmZsdXNoKCkKICAgICAgICAgICAgICAgICAgICB9LCBvLnJlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICAgICAgICAgIH0sIHIKICAgICAgICAgICAgICAgIH0oZS5Db21wb25lbnQpLAogICAgICAgICAgICAgICAgdXQgPSBmdW5jdGlvbiBsYShlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGUubGVuZ3RoLCBuID0gMCwgciA9ICIiOyBuIDwgdDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZVtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG8pKSBpID0gbGEobyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgaW4gaSA9ICIiLCBvKSBvW2FdICYmIGEgJiYgKGkgJiYgKGkgKz0gIiAiKSwgaSArPSBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgJiYgKHIgJiYgKHIgKz0gIiAiKSwgciArPSBpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gbHQoZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBbXSwKICAgICAgICAgICAgICAgICAgICBvID0gTGUoZSwgciwgbik7CiAgICAgICAgICAgICAgICByZXR1cm4gci5sZW5ndGggPCAyID8gbiA6IG8gKyB0KHIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmdCA9IFhlKChmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKFplLkNvbnN1bWVyLCBudWxsLCAoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoLCB0ID0gbmV3IEFycmF5KGUpLCByID0gMDsgciA8IGU7IHIrKykgdFtyXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IEdlKHQsIG4ucmVnaXN0ZXJlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEllKG4sIG8sICExKSwgbi5rZXkgKyAiLSIgKyBvLm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzczogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoLCB0ID0gbmV3IEFycmF5KGUpLCByID0gMDsgciA8IGU7IHIrKykgdFtyXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGx0KG4ucmVnaXN0ZXJlZCwgbywgdXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZTogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmNoaWxkcmVuKGkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9ICgwLCBlLmNyZWF0ZUVsZW1lbnQpKGN0LCBudWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKGUuRnJhZ21lbnQsIG51bGwsIHMsIGEpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICBkdCA9IFsibW91c2Vkb3duIiwgInRvdWNoc3RhcnQiXTsKICAgICAgICAgICAgLyoqIQogICAgICAgICAgICAgKiBAZmlsZU92ZXJ2aWV3IEtpY2thc3MgbGlicmFyeSB0byBjcmVhdGUgYW5kIHBsYWNlIHBvcHBlcnMgbmVhciB0aGVpciByZWZlcmVuY2UgZWxlbWVudHMuCiAgICAgICAgICAgICAqIEB2ZXJzaW9uIDEuMTYuMQogICAgICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTYgRmVkZXJpY28gWml2b2xvIGFuZCBjb250cmlidXRvcnMKICAgICAgICAgICAgICoKICAgICAgICAgICAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogICAgICAgICAgICAgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogICAgICAgICAgICAgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCiAgICAgICAgICAgICAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKICAgICAgICAgICAgICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCiAgICAgICAgICAgICAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAgICAgICAgICAgICAqCiAgICAgICAgICAgICAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbAogICAgICAgICAgICAgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogICAgICAgICAgICAgKgogICAgICAgICAgICAgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogICAgICAgICAgICAgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICAgICAgICAgICAgICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAgICAgICAgICAgICAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICAgICAgICAgICAgICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICAgICAgICAgICAgICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICAgICAgICAgICAgICogU09GVFdBUkUuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICB2YXIgcHQgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBkb2N1bWVudCAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbmF2aWdhdG9yLAogICAgICAgICAgICAgICAgaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gWyJFZGdlIiwgIlRyaWRlbnQiLCAiRmlyZWZveCJdLCB0ID0gMDsgdCA8IGUubGVuZ3RoOyB0ICs9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoZVt0XSkgPj0gMCkgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgdmFyIG10ID0gcHQgJiYgd2luZG93LlByb21pc2UgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9ICExOwogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHQgfHwgKHQgPSAhMCwgd2luZG93LlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0ID0gITEsIGUoKQogICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gITE7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdCB8fCAodCA9ICEwLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICExLCBlKCkKICAgICAgICAgICAgICAgICAgICB9KSwgaHQpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24geXQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgIltvYmplY3QgRnVuY3Rpb25dIiA9PT0ge30udG9TdHJpbmcuY2FsbChlKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBndChlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoMSAhPT0gZS5ub2RlVHlwZSkgcmV0dXJuIFtdOwogICAgICAgICAgICAgICAgdmFyIG4gPSBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlLCBudWxsKTsKICAgICAgICAgICAgICAgIHJldHVybiB0ID8gblt0XSA6IG4KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdnQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJIVE1MIiA9PT0gZS5ub2RlTmFtZSA/IGUgOiBlLnBhcmVudE5vZGUgfHwgZS5ob3N0CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGJ0KGUpIHsKICAgICAgICAgICAgICAgIGlmICghZSkgcmV0dXJuIGRvY3VtZW50LmJvZHk7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGUubm9kZU5hbWUpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJIVE1MIjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJCT0RZIjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUub3duZXJEb2N1bWVudC5ib2R5OwogICAgICAgICAgICAgICAgICAgIGNhc2UgIiNkb2N1bWVudCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmJvZHkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB0ID0gZ3QoZSksCiAgICAgICAgICAgICAgICAgICAgbiA9IHQub3ZlcmZsb3csCiAgICAgICAgICAgICAgICAgICAgciA9IHQub3ZlcmZsb3dYLAogICAgICAgICAgICAgICAgICAgIG8gPSB0Lm92ZXJmbG93WTsKICAgICAgICAgICAgICAgIHJldHVybiAvKGF1dG98c2Nyb2xsfG92ZXJsYXkpLy50ZXN0KG4gKyBvICsgcikgPyBlIDogYnQodnQoZSkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHd0KGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUucmVmZXJlbmNlTm9kZSA/IGUucmVmZXJlbmNlTm9kZSA6IGUKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgT3QgPSBwdCAmJiAhKCF3aW5kb3cuTVNJbnB1dE1ldGhvZENvbnRleHQgfHwgIWRvY3VtZW50LmRvY3VtZW50TW9kZSksCiAgICAgICAgICAgICAgICBfdCA9IHB0ICYmIC9NU0lFIDEwLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwoKICAgICAgICAgICAgZnVuY3Rpb24geHQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIDExID09PSBlID8gT3QgOiAxMCA9PT0gZSA/IF90IDogT3QgfHwgX3QKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24ga3QoZSkgewogICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IHh0KDEwKSA/IGRvY3VtZW50LmJvZHkgOiBudWxsLCBuID0gZS5vZmZzZXRQYXJlbnQgfHwgbnVsbDsgbiA9PT0gdCAmJiBlLm5leHRFbGVtZW50U2libGluZzspIG4gPSAoZSA9IGUubmV4dEVsZW1lbnRTaWJsaW5nKS5vZmZzZXRQYXJlbnQ7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4gJiYgbi5ub2RlTmFtZTsKICAgICAgICAgICAgICAgIHJldHVybiByICYmICJCT0RZIiAhPT0gciAmJiAiSFRNTCIgIT09IHIgPyAtMSAhPT0gWyJUSCIsICJURCIsICJUQUJMRSJdLmluZGV4T2Yobi5ub2RlTmFtZSkgJiYgInN0YXRpYyIgPT09IGd0KG4sICJwb3NpdGlvbiIpID8ga3QobikgOiBuIDogZSA/IGUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gRXQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGUucGFyZW50Tm9kZSA/IEV0KGUucGFyZW50Tm9kZSkgOiBlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEN0KGUsIHQpIHsKICAgICAgICAgICAgICAgIGlmICghKGUgJiYgZS5ub2RlVHlwZSAmJiB0ICYmIHQubm9kZVR5cGUpKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAgICAgICAgdmFyIG4gPSBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcsCiAgICAgICAgICAgICAgICAgICAgciA9IG4gPyBlIDogdCwKICAgICAgICAgICAgICAgICAgICBvID0gbiA/IHQgOiBlLAogICAgICAgICAgICAgICAgICAgIGkgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAgICAgICAgaS5zZXRTdGFydChyLCAwKSwgaS5zZXRFbmQobywgMCk7CiAgICAgICAgICAgICAgICB2YXIgYSwgcywgdSA9IGkuY29tbW9uQW5jZXN0b3JDb250YWluZXI7CiAgICAgICAgICAgICAgICBpZiAoZSAhPT0gdSAmJiB0ICE9PSB1IHx8IHIuY29udGFpbnMobykpIHJldHVybiAiQk9EWSIgPT09IChzID0gKGEgPSB1KS5ub2RlTmFtZSkgfHwgIkhUTUwiICE9PSBzICYmIGt0KGEuZmlyc3RFbGVtZW50Q2hpbGQpICE9PSBhID8ga3QodSkgOiB1OwogICAgICAgICAgICAgICAgdmFyIGwgPSBFdChlKTsKICAgICAgICAgICAgICAgIHJldHVybiBsLmhvc3QgPyBDdChsLmhvc3QsIHQpIDogQ3QoZSwgRXQodCkuaG9zdCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gU3QoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICJ0b3AiLAogICAgICAgICAgICAgICAgICAgIG4gPSAidG9wIiA9PT0gdCA/ICJzY3JvbGxUb3AiIDogInNjcm9sbExlZnQiLAogICAgICAgICAgICAgICAgICAgIHIgPSBlLm5vZGVOYW1lOwogICAgICAgICAgICAgICAgaWYgKCJCT0RZIiA9PT0gciB8fCAiSFRNTCIgPT09IHIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLm93bmVyRG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCB8fCBvOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpW25dCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZVtuXQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBqdChlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkICYmIGFyZ3VtZW50c1syXSwKICAgICAgICAgICAgICAgICAgICByID0gU3QodCwgInRvcCIpLAogICAgICAgICAgICAgICAgICAgIG8gPSBTdCh0LCAibGVmdCIpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuID8gLTEgOiAxOwogICAgICAgICAgICAgICAgcmV0dXJuIGUudG9wICs9IHIgKiBpLCBlLmJvdHRvbSArPSByICogaSwgZS5sZWZ0ICs9IG8gKiBpLCBlLnJpZ2h0ICs9IG8gKiBpLCBlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFB0KGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gIngiID09PSB0ID8gIkxlZnQiIDogIlRvcCIsCiAgICAgICAgICAgICAgICAgICAgciA9ICJMZWZ0IiA9PT0gbiA/ICJSaWdodCIgOiAiQm90dG9tIjsKICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KGVbImJvcmRlciIgKyBuICsgIldpZHRoIl0pICsgcGFyc2VGbG9hdChlWyJib3JkZXIiICsgciArICJXaWR0aCJdKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBBdChlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodFsib2Zmc2V0IiArIGVdLCB0WyJzY3JvbGwiICsgZV0sIG5bImNsaWVudCIgKyBlXSwgblsib2Zmc2V0IiArIGVdLCBuWyJzY3JvbGwiICsgZV0sIHh0KDEwKSA/IHBhcnNlSW50KG5bIm9mZnNldCIgKyBlXSkgKyBwYXJzZUludChyWyJtYXJnaW4iICsgKCJIZWlnaHQiID09PSBlID8gIlRvcCIgOiAiTGVmdCIpXSkgKyBwYXJzZUludChyWyJtYXJnaW4iICsgKCJIZWlnaHQiID09PSBlID8gIkJvdHRvbSIgOiAiUmlnaHQiKV0pIDogMCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gRHQoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLmJvZHksCiAgICAgICAgICAgICAgICAgICAgbiA9IGUuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIHIgPSB4dCgxMCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShuKTsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBBdCgiSGVpZ2h0IiwgdCwgbiwgciksCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IEF0KCJXaWR0aCIsIHQsIG4sIHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIFR0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBOdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgIE10ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0IGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgIH0pIDogZVt0XSA9IG4sIGUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBMdCA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAxOyB0IDwgYXJndW1lbnRzLmxlbmd0aDsgdCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzW3RdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByIGluIG4pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCByKSAmJiAoZVtyXSA9IG5bcl0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gSXQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIEx0KHt9LCBlLCB7CiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGUubGVmdCArIGUud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBlLnRvcCArIGUuaGVpZ2h0CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBSdChlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHt9OwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBpZiAoeHQoMTApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFN0KGUsICJ0b3AiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBTdChlLCAibGVmdCIpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnRvcCArPSBuLCB0LmxlZnQgKz0gciwgdC5ib3R0b20gKz0gbiwgdC5yaWdodCArPSByCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHQgPSBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChmKSB7fQogICAgICAgICAgICAgICAgdmFyIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHQubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiB0LnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHQucmlnaHQgLSB0LmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdC5ib3R0b20gLSB0LnRvcAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaSA9ICJIVE1MIiA9PT0gZS5ub2RlTmFtZSA/IER0KGUub3duZXJEb2N1bWVudCkgOiB7fSwKICAgICAgICAgICAgICAgICAgICBhID0gaS53aWR0aCB8fCBlLmNsaWVudFdpZHRoIHx8IG8ud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgcyA9IGkuaGVpZ2h0IHx8IGUuY2xpZW50SGVpZ2h0IHx8IG8uaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgIHUgPSBlLm9mZnNldFdpZHRoIC0gYSwKICAgICAgICAgICAgICAgICAgICBsID0gZS5vZmZzZXRIZWlnaHQgLSBzOwogICAgICAgICAgICAgICAgaWYgKHUgfHwgbCkgewogICAgICAgICAgICAgICAgICAgIHZhciBjID0gZ3QoZSk7CiAgICAgICAgICAgICAgICAgICAgdSAtPSBQdChjLCAieCIpLCBsIC09IFB0KGMsICJ5IiksIG8ud2lkdGggLT0gdSwgby5oZWlnaHQgLT0gbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIEl0KG8pCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHF0KGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzJdLAogICAgICAgICAgICAgICAgICAgIHIgPSB4dCgxMCksCiAgICAgICAgICAgICAgICAgICAgbyA9ICJIVE1MIiA9PT0gdC5ub2RlTmFtZSwKICAgICAgICAgICAgICAgICAgICBpID0gUnQoZSksCiAgICAgICAgICAgICAgICAgICAgYSA9IFJ0KHQpLAogICAgICAgICAgICAgICAgICAgIHMgPSBidChlKSwKICAgICAgICAgICAgICAgICAgICB1ID0gZ3QodCksCiAgICAgICAgICAgICAgICAgICAgbCA9IHBhcnNlRmxvYXQodS5ib3JkZXJUb3BXaWR0aCksCiAgICAgICAgICAgICAgICAgICAgYyA9IHBhcnNlRmxvYXQodS5ib3JkZXJMZWZ0V2lkdGgpOwogICAgICAgICAgICAgICAgbiAmJiBvICYmIChhLnRvcCA9IE1hdGgubWF4KGEudG9wLCAwKSwgYS5sZWZ0ID0gTWF0aC5tYXgoYS5sZWZ0LCAwKSk7CiAgICAgICAgICAgICAgICB2YXIgZiA9IEl0KHsKICAgICAgICAgICAgICAgICAgICB0b3A6IGkudG9wIC0gYS50b3AgLSBsLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IGkubGVmdCAtIGEubGVmdCAtIGMsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGkud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpLmhlaWdodAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpZiAoZi5tYXJnaW5Ub3AgPSAwLCBmLm1hcmdpbkxlZnQgPSAwLCAhciAmJiBvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBwYXJzZUZsb2F0KHUubWFyZ2luVG9wKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHBhcnNlRmxvYXQodS5tYXJnaW5MZWZ0KTsKICAgICAgICAgICAgICAgICAgICBmLnRvcCAtPSBsIC0gZCwgZi5ib3R0b20gLT0gbCAtIGQsIGYubGVmdCAtPSBjIC0gcCwgZi5yaWdodCAtPSBjIC0gcCwgZi5tYXJnaW5Ub3AgPSBkLCBmLm1hcmdpbkxlZnQgPSBwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gKHIgJiYgIW4gPyB0LmNvbnRhaW5zKHMpIDogdCA9PT0gcyAmJiAiQk9EWSIgIT09IHMubm9kZU5hbWUpICYmIChmID0ganQoZiwgdCkpLCBmCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEZ0KGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzFdLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIHIgPSBxdChlLCBuKSwKICAgICAgICAgICAgICAgICAgICBvID0gTWF0aC5tYXgobi5jbGllbnRXaWR0aCwgd2luZG93LmlubmVyV2lkdGggfHwgMCksCiAgICAgICAgICAgICAgICAgICAgaSA9IE1hdGgubWF4KG4uY2xpZW50SGVpZ2h0LCB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgMCksCiAgICAgICAgICAgICAgICAgICAgYSA9IHQgPyAwIDogU3QobiksCiAgICAgICAgICAgICAgICAgICAgcyA9IHQgPyAwIDogU3QobiwgImxlZnQiKSwKICAgICAgICAgICAgICAgICAgICB1ID0gewogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGEgLSByLnRvcCArIHIubWFyZ2luVG9wLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBzIC0gci5sZWZ0ICsgci5tYXJnaW5MZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogbywKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiBJdCh1KQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBWdChlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUubm9kZU5hbWU7CiAgICAgICAgICAgICAgICBpZiAoIkJPRFkiID09PSB0IHx8ICJIVE1MIiA9PT0gdCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgaWYgKCJmaXhlZCIgPT09IGd0KGUsICJwb3NpdGlvbiIpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHZ0KGUpOwogICAgICAgICAgICAgICAgcmV0dXJuICEhbiAmJiBWdChuKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBCdChlKSB7CiAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUucGFyZW50RWxlbWVudCB8fCB4dCgpKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGUucGFyZW50RWxlbWVudDsgdCAmJiAibm9uZSIgPT09IGd0KHQsICJ0cmFuc2Zvcm0iKTspIHQgPSB0LnBhcmVudEVsZW1lbnQ7CiAgICAgICAgICAgICAgICByZXR1cm4gdCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gVXQoZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgdmFyIG8gPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCAmJiBhcmd1bWVudHNbNF0sCiAgICAgICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhID0gbyA/IEJ0KGUpIDogQ3QoZSwgd3QodCkpOwogICAgICAgICAgICAgICAgaWYgKCJ2aWV3cG9ydCIgPT09IHIpIGkgPSBGdChhLCBvKTsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICJzY3JvbGxQYXJlbnQiID09PSByID8gIkJPRFkiID09PSAocyA9IGJ0KHZ0KHQpKSkubm9kZU5hbWUgJiYgKHMgPSBlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSA6IHMgPSAid2luZG93IiA9PT0gciA/IGUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgOiByOwogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gcXQocywgYSwgbyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJIVE1MIiAhPT0gcy5ub2RlTmFtZSB8fCBWdChhKSkgaSA9IHU7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gRHQoZS5vd25lckRvY3VtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBsLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBsLndpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICBpLnRvcCArPSB1LnRvcCAtIHUubWFyZ2luVG9wLCBpLmJvdHRvbSA9IGMgKyB1LnRvcCwgaS5sZWZ0ICs9IHUubGVmdCAtIHUubWFyZ2luTGVmdCwgaS5yaWdodCA9IGYgKyB1LmxlZnQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgZCA9ICJudW1iZXIiID09IHR5cGVvZihuID0gbiB8fCAwKTsKICAgICAgICAgICAgICAgIHJldHVybiBpLmxlZnQgKz0gZCA/IG4gOiBuLmxlZnQgfHwgMCwgaS50b3AgKz0gZCA/IG4gOiBuLnRvcCB8fCAwLCBpLnJpZ2h0IC09IGQgPyBuIDogbi5yaWdodCB8fCAwLCBpLmJvdHRvbSAtPSBkID8gbiA6IG4uYm90dG9tIHx8IDAsIGkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gSHQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUud2lkdGggKiBlLmhlaWdodAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB6dChlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogMDsKICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gZS5pbmRleE9mKCJhdXRvIikpIHJldHVybiBlOwogICAgICAgICAgICAgICAgdmFyIGEgPSBVdChuLCByLCBpLCBvKSwKICAgICAgICAgICAgICAgICAgICBzID0gewogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0LnRvcCAtIGEudG9wCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYS5yaWdodCAtIHQucmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGEuaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGEuYm90dG9tIC0gdC5ib3R0b20KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHQubGVmdCAtIGEubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYS5oZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdSA9IE9iamVjdC5rZXlzKHMpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNbZV0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWE6IEh0KHNbZV0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSkpLnNvcnQoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYXJlYSAtIGUuYXJlYQogICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICBsID0gdS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA+PSBuLmNsaWVudFdpZHRoICYmIHIgPj0gbi5jbGllbnRIZWlnaHQKICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgYyA9IGwubGVuZ3RoID4gMCA/IGxbMF0ua2V5IDogdVswXS5rZXksCiAgICAgICAgICAgICAgICAgICAgZiA9IGUuc3BsaXQoIi0iKVsxXTsKICAgICAgICAgICAgICAgIHJldHVybiBjICsgKGYgPyAiLSIgKyBmIDogIiIpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFd0KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBudWxsLAogICAgICAgICAgICAgICAgICAgIG8gPSByID8gQnQodCkgOiBDdCh0LCB3dChuKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gcXQobiwgbywgcikKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gS3QoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlKSwKICAgICAgICAgICAgICAgICAgICBuID0gcGFyc2VGbG9hdCh0Lm1hcmdpblRvcCB8fCAwKSArIHBhcnNlRmxvYXQodC5tYXJnaW5Cb3R0b20gfHwgMCksCiAgICAgICAgICAgICAgICAgICAgciA9IHBhcnNlRmxvYXQodC5tYXJnaW5MZWZ0IHx8IDApICsgcGFyc2VGbG9hdCh0Lm1hcmdpblJpZ2h0IHx8IDApOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogZS5vZmZzZXRXaWR0aCArIHIsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlLm9mZnNldEhlaWdodCArIG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gWXQoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogInJpZ2h0IiwKICAgICAgICAgICAgICAgICAgICByaWdodDogImxlZnQiLAogICAgICAgICAgICAgICAgICAgIGJvdHRvbTogInRvcCIsCiAgICAgICAgICAgICAgICAgICAgdG9wOiAiYm90dG9tIgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiBlLnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0W2VdCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gR3QoZSwgdCwgbikgewogICAgICAgICAgICAgICAgbiA9IG4uc3BsaXQoIi0iKVswXTsKICAgICAgICAgICAgICAgIHZhciByID0gS3QoZSksCiAgICAgICAgICAgICAgICAgICAgbyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHIud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogci5oZWlnaHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGkgPSAtMSAhPT0gWyJyaWdodCIsICJsZWZ0Il0uaW5kZXhPZihuKSwKICAgICAgICAgICAgICAgICAgICBhID0gaSA/ICJ0b3AiIDogImxlZnQiLAogICAgICAgICAgICAgICAgICAgIHMgPSBpID8gImxlZnQiIDogInRvcCIsCiAgICAgICAgICAgICAgICAgICAgdSA9IGkgPyAiaGVpZ2h0IiA6ICJ3aWR0aCIsCiAgICAgICAgICAgICAgICAgICAgbCA9IGkgPyAid2lkdGgiIDogImhlaWdodCI7CiAgICAgICAgICAgICAgICByZXR1cm4gb1thXSA9IHRbYV0gKyB0W3VdIC8gMiAtIHJbdV0gLyAyLCBvW3NdID0gbiA9PT0gcyA/IHRbc10gLSByW2xdIDogdFtZdChzKV0sIG8KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gJHQoZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5maW5kID8gZS5maW5kKHQpIDogZS5maWx0ZXIodClbMF0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gUXQoZSwgdCwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIChuID09PSB1bmRlZmluZWQgPyBlIDogZS5zbGljZSgwLCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXgpIHJldHVybiBlLmZpbmRJbmRleCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVt0XSA9PT0gbgogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICR0KGUsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlW3RdID09PSBuCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmluZGV4T2YocikKICAgICAgICAgICAgICAgIH0oZSwgIm5hbWUiLCBuKSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlWyJmdW5jdGlvbiJdICYmIGNvbnNvbGUud2FybigiYG1vZGlmaWVyLmZ1bmN0aW9uYCBpcyBkZXByZWNhdGVkLCB1c2UgYG1vZGlmaWVyLmZuYCEiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGVbImZ1bmN0aW9uIl0gfHwgZS5mbjsKICAgICAgICAgICAgICAgICAgICBlLmVuYWJsZWQgJiYgeXQobikgJiYgKHQub2Zmc2V0cy5wb3BwZXIgPSBJdCh0Lm9mZnNldHMucG9wcGVyKSwgdC5vZmZzZXRzLnJlZmVyZW5jZSA9IEl0KHQub2Zmc2V0cy5yZWZlcmVuY2UpLCB0ID0gbih0LCBlKSkKICAgICAgICAgICAgICAgIH0pKSwgdAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBadCgpIHsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZS5pc0Rlc3Ryb3llZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gewogICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZTogdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dTdHlsZXM6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgZmxpcHBlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldHM6IHt9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBlLm9mZnNldHMucmVmZXJlbmNlID0gV3QodGhpcy5zdGF0ZSwgdGhpcy5wb3BwZXIsIHRoaXMucmVmZXJlbmNlLCB0aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZCksIGUucGxhY2VtZW50ID0genQodGhpcy5vcHRpb25zLnBsYWNlbWVudCwgZS5vZmZzZXRzLnJlZmVyZW5jZSwgdGhpcy5wb3BwZXIsIHRoaXMucmVmZXJlbmNlLCB0aGlzLm9wdGlvbnMubW9kaWZpZXJzLmZsaXAuYm91bmRhcmllc0VsZW1lbnQsIHRoaXMub3B0aW9ucy5tb2RpZmllcnMuZmxpcC5wYWRkaW5nKSwgZS5vcmlnaW5hbFBsYWNlbWVudCA9IGUucGxhY2VtZW50LCBlLnBvc2l0aW9uRml4ZWQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZCwgZS5vZmZzZXRzLnBvcHBlciA9IEd0KHRoaXMucG9wcGVyLCBlLm9mZnNldHMucmVmZXJlbmNlLCBlLnBsYWNlbWVudCksIGUub2Zmc2V0cy5wb3BwZXIucG9zaXRpb24gPSB0aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZCA/ICJmaXhlZCIgOiAiYWJzb2x1dGUiLCBlID0gUXQodGhpcy5tb2RpZmllcnMsIGUpLCB0aGlzLnN0YXRlLmlzQ3JlYXRlZCA/IHRoaXMub3B0aW9ucy5vblVwZGF0ZShlKSA6ICh0aGlzLnN0YXRlLmlzQ3JlYXRlZCA9ICEwLCB0aGlzLm9wdGlvbnMub25DcmVhdGUoZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFh0KGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUubmFtZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5lbmFibGVkICYmIG4gPT09IHQKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBKdChlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gWyExLCAibXMiLCAiV2Via2l0IiwgIk1veiIsICJPIl0sIG4gPSBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZS5zbGljZSgxKSwgciA9IDA7IHIgPCB0Lmxlbmd0aDsgcisrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0W3JdLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbyA/ICIiICsgbyArIG4gOiBlOwogICAgICAgICAgICAgICAgICAgIGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgZG9jdW1lbnQuYm9keS5zdHlsZVtpXSkgcmV0dXJuIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGVuKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuaXNEZXN0cm95ZWQgPSAhMCwgWHQodGhpcy5tb2RpZmllcnMsICJhcHBseVN0eWxlIikgJiYgKHRoaXMucG9wcGVyLnJlbW92ZUF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiKSwgdGhpcy5wb3BwZXIuc3R5bGUucG9zaXRpb24gPSAiIiwgdGhpcy5wb3BwZXIuc3R5bGUudG9wID0gIiIsIHRoaXMucG9wcGVyLnN0eWxlLmxlZnQgPSAiIiwgdGhpcy5wb3BwZXIuc3R5bGUucmlnaHQgPSAiIiwgdGhpcy5wb3BwZXIuc3R5bGUuYm90dG9tID0gIiIsIHRoaXMucG9wcGVyLnN0eWxlLndpbGxDaGFuZ2UgPSAiIiwgdGhpcy5wb3BwZXIuc3R5bGVbSnQoInRyYW5zZm9ybSIpXSA9ICIiKSwgdGhpcy5kaXNhYmxlRXZlbnRMaXN0ZW5lcnMoKSwgdGhpcy5vcHRpb25zLnJlbW92ZU9uRGVzdHJveSAmJiB0aGlzLnBvcHBlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucG9wcGVyKSwgdGhpcwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB0bihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUub3duZXJEb2N1bWVudDsKICAgICAgICAgICAgICAgIHJldHVybiB0ID8gdC5kZWZhdWx0VmlldyA6IHdpbmRvdwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBubihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9ICJCT0RZIiA9PT0gZS5ub2RlTmFtZSwKICAgICAgICAgICAgICAgICAgICBpID0gbyA/IGUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyA6IGU7CiAgICAgICAgICAgICAgICBpLmFkZEV2ZW50TGlzdGVuZXIodCwgbiwgewogICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICB9KSwgbyB8fCBubihidChpLnBhcmVudE5vZGUpLCB0LCBuLCByKSwgci5wdXNoKGkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHJuKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgIG4udXBkYXRlQm91bmQgPSByLCB0bihlKS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBuLnVwZGF0ZUJvdW5kLCB7CiAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdmFyIG8gPSBidChlKTsKICAgICAgICAgICAgICAgIHJldHVybiBubihvLCAic2Nyb2xsIiwgbi51cGRhdGVCb3VuZCwgbi5zY3JvbGxQYXJlbnRzKSwgbi5zY3JvbGxFbGVtZW50ID0gbywgbi5ldmVudHNFbmFibGVkID0gITAsIG4KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmV2ZW50c0VuYWJsZWQgfHwgKHRoaXMuc3RhdGUgPSBybih0aGlzLnJlZmVyZW5jZSwgdGhpcy5vcHRpb25zLCB0aGlzLnN0YXRlLCB0aGlzLnNjaGVkdWxlVXBkYXRlKSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gYW4oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdDsKICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCAmJiAoY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5zY2hlZHVsZVVwZGF0ZSksIHRoaXMuc3RhdGUgPSAoZSA9IHRoaXMucmVmZXJlbmNlLCB0ID0gdGhpcy5zdGF0ZSwgdG4oZSkucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdC51cGRhdGVCb3VuZCksIHQuc2Nyb2xsUGFyZW50cy5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0LnVwZGF0ZUJvdW5kKQogICAgICAgICAgICAgICAgfSkpLCB0LnVwZGF0ZUJvdW5kID0gbnVsbCwgdC5zY3JvbGxQYXJlbnRzID0gW10sIHQuc2Nyb2xsRWxlbWVudCA9IG51bGwsIHQuZXZlbnRzRW5hYmxlZCA9ICExLCB0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gc24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICIiICE9PSBlICYmICFpc05hTihwYXJzZUZsb2F0KGUpKSAmJiBpc0Zpbml0ZShlKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB1bihlLCB0KSB7CiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAiIjsgLSAxICE9PSBbIndpZHRoIiwgImhlaWdodCIsICJ0b3AiLCAicmlnaHQiLCAiYm90dG9tIiwgImxlZnQiXS5pbmRleE9mKG4pICYmIHNuKHRbbl0pICYmIChyID0gInB4IiksIGUuc3R5bGVbbl0gPSB0W25dICsgcgogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGxuID0gcHQgJiYgL0ZpcmVmb3gvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwoKICAgICAgICAgICAgZnVuY3Rpb24gY24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSAkdChlLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5uYW1lID09PSB0CiAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgIG8gPSAhIXIgJiYgZS5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm5hbWUgPT09IG4gJiYgZS5lbmFibGVkICYmIGUub3JkZXIgPCByLm9yZGVyCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgaWYgKCFvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAiYCIgKyB0ICsgImAiLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gImAiICsgbiArICJgIjsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYSArICIgbW9kaWZpZXIgaXMgcmVxdWlyZWQgYnkgIiArIGkgKyAiIG1vZGlmaWVyIGluIG9yZGVyIHRvIHdvcmssIGJlIHN1cmUgdG8gaW5jbHVkZSBpdCBiZWZvcmUgIiArIGkgKyAiISIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBmbiA9IFsiYXV0by1zdGFydCIsICJhdXRvIiwgImF1dG8tZW5kIiwgInRvcC1zdGFydCIsICJ0b3AiLCAidG9wLWVuZCIsICJyaWdodC1zdGFydCIsICJyaWdodCIsICJyaWdodC1lbmQiLCAiYm90dG9tLWVuZCIsICJib3R0b20iLCAiYm90dG9tLXN0YXJ0IiwgImxlZnQtZW5kIiwgImxlZnQiLCAibGVmdC1zdGFydCJdLAogICAgICAgICAgICAgICAgZG4gPSBmbi5zbGljZSgzKTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHBuKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzFdLAogICAgICAgICAgICAgICAgICAgIG4gPSBkbi5pbmRleE9mKGUpLAogICAgICAgICAgICAgICAgICAgIHIgPSBkbi5zbGljZShuICsgMSkuY29uY2F0KGRuLnNsaWNlKDAsIG4pKTsKICAgICAgICAgICAgICAgIHJldHVybiB0ID8gci5yZXZlcnNlKCkgOiByCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGhuID0gImZsaXAiLAogICAgICAgICAgICAgICAgbW4gPSAiY2xvY2t3aXNlIiwKICAgICAgICAgICAgICAgIHluID0gImNvdW50ZXJjbG9ja3dpc2UiOwoKICAgICAgICAgICAgZnVuY3Rpb24gZ24oZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgdmFyIG8gPSBbMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgaSA9IC0xICE9PSBbInJpZ2h0IiwgImxlZnQiXS5pbmRleE9mKHIpLAogICAgICAgICAgICAgICAgICAgIGEgPSBlLnNwbGl0KC8oXCt8XC0pLykubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnRyaW0oKQogICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICBzID0gYS5pbmRleE9mKCR0KGEsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSAhPT0gZS5zZWFyY2goLyx8XHMvKQogICAgICAgICAgICAgICAgICAgIH0pKSk7CiAgICAgICAgICAgICAgICBhW3NdICYmIC0xID09PSBhW3NdLmluZGV4T2YoIiwiKSAmJiBjb25zb2xlLndhcm4oIk9mZnNldHMgc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlKHMpIGFyZSBkZXByZWNhdGVkLCB1c2UgYSBjb21tYSAoLCkgaW5zdGVhZC4iKTsKICAgICAgICAgICAgICAgIHZhciB1ID0gL1xzKixccyp8XHMrLywKICAgICAgICAgICAgICAgICAgICBsID0gLTEgIT09IHMgPyBbYS5zbGljZSgwLCBzKS5jb25jYXQoW2Fbc10uc3BsaXQodSlbMF1dKSwgW2Fbc10uc3BsaXQodSlbMV1dLmNvbmNhdChhLnNsaWNlKHMgKyAxKSldIDogW2FdOwogICAgICAgICAgICAgICAgcmV0dXJuIChsID0gbC5tYXAoKGZ1bmN0aW9uKGUsIHIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9ICgxID09PSByID8gIWkgOiBpKSA/ICJoZWlnaHQiIDogIndpZHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICExOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIgPT09IGVbZS5sZW5ndGggLSAxXSAmJiAtMSAhPT0gWyIrIiwgIi0iXS5pbmRleE9mKHQpID8gKGVbZS5sZW5ndGggLSAxXSA9IHQsIGEgPSAhMCwgZSkgOiBhID8gKGVbZS5sZW5ndGggLSAxXSArPSB0LCBhID0gITEsIGUpIDogZS5jb25jYXQodCkKICAgICAgICAgICAgICAgICAgICB9KSwgW10pLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLm1hdGNoKC8oKD86XC18XCspP1xkKlwuP1xkKikoLiopLyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICtvWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvWzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBhLmluZGV4T2YoIiUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIlcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEl0KHMpW3RdIC8gMTAwICogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2aCIgPT09IGEgfHwgInZ3IiA9PT0gYSkgcmV0dXJuICgidmgiID09PSBhID8gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCwgd2luZG93LmlubmVySGVpZ2h0IHx8IDApIDogTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLCB3aW5kb3cuaW5uZXJXaWR0aCB8fCAwKSkgLyAxMDAgKiBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgICAgICAgICAgfShlLCBvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSkpKS5mb3JFYWNoKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5mb3JFYWNoKChmdW5jdGlvbihuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNuKG4pICYmIChvW3RdICs9IG4gKiAoIi0iID09PSBlW3IgLSAxXSA/IC0xIDogMSkpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9KSksIG8KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgdm4gPSB7CiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiAiYm90dG9tIiwKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkZpeGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICBldmVudHNFbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICByZW1vdmVPbkRlc3Ryb3k6ICExLAogICAgICAgICAgICAgICAgICAgIG9uQ3JlYXRlOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgICAgIG9uVXBkYXRlOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyczogewogICAgICAgICAgICAgICAgICAgICAgICBzaGlmdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUucGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5zcGxpdCgiLSIpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdC5zcGxpdCgiLSIpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5vZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG8ucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8ucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IC0xICE9PSBbImJvdHRvbSIsICJ0b3AiXS5pbmRleE9mKG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMgPyAibGVmdCIgOiAidG9wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzID8gIndpZHRoIiA6ICJoZWlnaHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogTXQoe30sIHUsIGlbdV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogTXQoe30sIHUsIGlbdV0gKyBpW2xdIC0gYVtsXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUub2Zmc2V0cy5wb3BwZXIgPSBMdCh7fSwgYSwgY1tyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogMjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnBsYWNlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUub2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG8ucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gby5yZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByLnNwbGl0KCItIilbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUgPSBzbigrbikgPyBbK24sIDBdIDogZ24obiwgaSwgYSwgcyksICJsZWZ0IiA9PT0gcyA/IChpLnRvcCArPSB1WzBdLCBpLmxlZnQgLT0gdVsxXSkgOiAicmlnaHQiID09PSBzID8gKGkudG9wICs9IHVbMF0sIGkubGVmdCArPSB1WzFdKSA6ICJ0b3AiID09PSBzID8gKGkubGVmdCArPSB1WzBdLCBpLnRvcCAtPSB1WzFdKSA6ICJib3R0b20iID09PSBzICYmIChpLmxlZnQgKz0gdVswXSwgaS50b3AgKz0gdVsxXSksIGUucG9wcGVyID0gaSwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50T3ZlcmZsb3c6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiAzMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmJvdW5kYXJpZXNFbGVtZW50IHx8IGt0KGUuaW5zdGFuY2UucG9wcGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmluc3RhbmNlLnJlZmVyZW5jZSA9PT0gbiAmJiAobiA9IGt0KG4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IEp0KCJ0cmFuc2Zvcm0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuaW5zdGFuY2UucG9wcGVyLnN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gby50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvW3JdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8udG9wID0gIiIsIG8ubGVmdCA9ICIiLCBvW3JdID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBVdChlLmluc3RhbmNlLnBvcHBlciwgZS5pbnN0YW5jZS5yZWZlcmVuY2UsIHQucGFkZGluZywgbiwgZS5wb3NpdGlvbkZpeGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnRvcCA9IGksIG8ubGVmdCA9IGEsIG9bcl0gPSBzLCB0LmJvdW5kYXJpZXMgPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdC5wcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUub2Zmc2V0cy5wb3BwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBjW2VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjW2VdIDwgdVtlXSAmJiAhdC5lc2NhcGVXaXRoUmVmZXJlbmNlICYmIChuID0gTWF0aC5tYXgoY1tlXSwgdVtlXSkpLCBNdCh7fSwgZSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICJyaWdodCIgPT09IGUgPyAibGVmdCIgOiAidG9wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNbZV0gPiB1W2VdICYmICF0LmVzY2FwZVdpdGhSZWZlcmVuY2UgJiYgKHIgPSBNYXRoLm1pbihjW25dLCB1W2VdIC0gKCJyaWdodCIgPT09IGUgPyBjLndpZHRoIDogYy5oZWlnaHQpKSksIE10KHt9LCBuLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSAhPT0gWyJsZWZ0IiwgInRvcCJdLmluZGV4T2YoZSkgPyAicHJpbWFyeSIgOiAic2Vjb25kYXJ5IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEx0KHt9LCBjLCBmW3RdKGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZS5vZmZzZXRzLnBvcHBlciA9IGMsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogWyJsZWZ0IiwgInJpZ2h0IiwgInRvcCIsICJib3R0b20iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyaWVzRWxlbWVudDogInNjcm9sbFBhcmVudCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAga2VlcFRvZ2V0aGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogNDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5vZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5wb3BwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUucGxhY2VtZW50LnNwbGl0KCItIilbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBNYXRoLmZsb29yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gLTEgIT09IFsidG9wIiwgImJvdHRvbSJdLmluZGV4T2YobyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhID8gInJpZ2h0IiA6ICJib3R0b20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gYSA/ICJsZWZ0IiA6ICJ0b3AiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYSA/ICJ3aWR0aCIgOiAiaGVpZ2h0IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbltzXSA8IGkoclt1XSkgJiYgKGUub2Zmc2V0cy5wb3BwZXJbdV0gPSBpKHJbdV0pIC0gbltsXSksIG5bdV0gPiBpKHJbc10pICYmIChlLm9mZnNldHMucG9wcGVyW3VdID0gaShyW3NdKSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3c6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiA1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjbihlLmluc3RhbmNlLm1vZGlmaWVycywgImFycm93IiwgImtlZXBUb2dldGhlciIpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuZWxlbWVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEociA9IGUuaW5zdGFuY2UucG9wcGVyLnF1ZXJ5U2VsZWN0b3IocikpKSByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWUuaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKHIpKSByZXR1cm4gY29uc29sZS53YXJuKCJXQVJOSU5HOiBgYXJyb3cuZWxlbWVudGAgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyIGVsZW1lbnQhIiksIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5vZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5wb3BwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLnJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IC0xICE9PSBbImxlZnQiLCAicmlnaHQiXS5pbmRleE9mKG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gdSA/ICJoZWlnaHQiIDogIndpZHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHUgPyAiVG9wIiA6ICJMZWZ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGMudG9Mb3dlckNhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHUgPyAibGVmdCIgOiAidG9wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHUgPyAiYm90dG9tIiA6ICJyaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBLdChyKVtsXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzW3BdIC0gaCA8IGFbZl0gJiYgKGUub2Zmc2V0cy5wb3BwZXJbZl0gLT0gYVtmXSAtIChzW3BdIC0gaCkpLCBzW2ZdICsgaCA+IGFbcF0gJiYgKGUub2Zmc2V0cy5wb3BwZXJbZl0gKz0gc1tmXSArIGggLSBhW3BdKSwgZS5vZmZzZXRzLnBvcHBlciA9IEl0KGUub2Zmc2V0cy5wb3BwZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gc1tmXSArIHNbbF0gLyAyIC0gaCAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBndChlLmluc3RhbmNlLnBvcHBlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBwYXJzZUZsb2F0KHlbIm1hcmdpbiIgKyBjXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBwYXJzZUZsb2F0KHlbImJvcmRlciIgKyBjICsgIldpZHRoIl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gbSAtIGUub2Zmc2V0cy5wb3BwZXJbZl0gLSBnIC0gdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYiA9IE1hdGgubWF4KE1hdGgubWluKGFbbF0gLSBoLCBiKSwgMCksIGUuYXJyb3dFbGVtZW50ID0gciwgZS5vZmZzZXRzLmFycm93ID0gKE10KG4gPSB7fSwgZiwgTWF0aC5yb3VuZChiKSksIE10KG4sIGQsICIiKSwgbiksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiAiW3gtYXJyb3ddIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBmbGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogNjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChYdChlLmluc3RhbmNlLm1vZGlmaWVycywgImlubmVyIikpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmZsaXBwZWQgJiYgZS5wbGFjZW1lbnQgPT09IGUub3JpZ2luYWxQbGFjZW1lbnQpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gVXQoZS5pbnN0YW5jZS5wb3BwZXIsIGUuaW5zdGFuY2UucmVmZXJlbmNlLCB0LnBhZGRpbmcsIHQuYm91bmRhcmllc0VsZW1lbnQsIGUucG9zaXRpb25GaXhlZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gWXQociksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLnBsYWNlbWVudC5zcGxpdCgiLSIpWzFdIHx8ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmJlaGF2aW9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaG46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gW3IsIG9dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbW46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcG4ocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB5bjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwbihyLCAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmJlaGF2aW9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmZvckVhY2goKGZ1bmN0aW9uKHMsIHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgIT09IHMgfHwgYS5sZW5ndGggPT09IHUgKyAxKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUucGxhY2VtZW50LnNwbGl0KCItIilbMF0sIG8gPSBZdChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBlLm9mZnNldHMucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUub2Zmc2V0cy5yZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gTWF0aC5mbG9vciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAibGVmdCIgPT09IHIgJiYgZihsLnJpZ2h0KSA+IGYoYy5sZWZ0KSB8fCAicmlnaHQiID09PSByICYmIGYobC5sZWZ0KSA8IGYoYy5yaWdodCkgfHwgInRvcCIgPT09IHIgJiYgZihsLmJvdHRvbSkgPiBmKGMudG9wKSB8fCAiYm90dG9tIiA9PT0gciAmJiBmKGwudG9wKSA8IGYoYy5ib3R0b20pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGYobC5sZWZ0KSA8IGYobi5sZWZ0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmKGwucmlnaHQpID4gZihuLnJpZ2h0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBmKGwudG9wKSA8IGYobi50b3ApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGYobC5ib3R0b20pID4gZihuLmJvdHRvbSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gImxlZnQiID09PSByICYmIHAgfHwgInJpZ2h0IiA9PT0gciAmJiBoIHx8ICJ0b3AiID09PSByICYmIG0gfHwgImJvdHRvbSIgPT09IHIgJiYgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAtMSAhPT0gWyJ0b3AiLCAiYm90dG9tIl0uaW5kZXhPZihyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAhIXQuZmxpcFZhcmlhdGlvbnMgJiYgKHYgJiYgInN0YXJ0IiA9PT0gaSAmJiBwIHx8IHYgJiYgImVuZCIgPT09IGkgJiYgaCB8fCAhdiAmJiAic3RhcnQiID09PSBpICYmIG0gfHwgIXYgJiYgImVuZCIgPT09IGkgJiYgeSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gISF0LmZsaXBWYXJpYXRpb25zQnlDb250ZW50ICYmICh2ICYmICJzdGFydCIgPT09IGkgJiYgaCB8fCB2ICYmICJlbmQiID09PSBpICYmIHAgfHwgIXYgJiYgInN0YXJ0IiA9PT0gaSAmJiB5IHx8ICF2ICYmICJlbmQiID09PSBpICYmIG0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IGIgfHwgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGQgfHwgZyB8fCBPKSAmJiAoZS5mbGlwcGVkID0gITAsIChkIHx8IGcpICYmIChyID0gYVt1ICsgMV0pLCBPICYmIChpID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJlbmQiID09PSBlID8gInN0YXJ0IiA6ICJzdGFydCIgPT09IGUgPyAiZW5kIiA6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShpKSksIGUucGxhY2VtZW50ID0gciArIChpID8gIi0iICsgaSA6ICIiKSwgZS5vZmZzZXRzLnBvcHBlciA9IEx0KHt9LCBlLm9mZnNldHMucG9wcGVyLCBHdChlLmluc3RhbmNlLnBvcHBlciwgZS5vZmZzZXRzLnJlZmVyZW5jZSwgZS5wbGFjZW1lbnQpKSwgZSA9IFF0KGUuaW5zdGFuY2UubW9kaWZpZXJzLCBlLCAiZmxpcCIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAiZmxpcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcmllc0VsZW1lbnQ6ICJ2aWV3cG9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwVmFyaWF0aW9uczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwVmFyaWF0aW9uc0J5Q29udGVudDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiA3MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnBsYWNlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuc3BsaXQoIi0iKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUub2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gci5yZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAtMSAhPT0gWyJsZWZ0IiwgInJpZ2h0Il0uaW5kZXhPZihuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IC0xID09PSBbInRvcCIsICJsZWZ0Il0uaW5kZXhPZihuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb1thID8gImxlZnQiIDogInRvcCJdID0gaVtuXSAtIChzID8gb1thID8gIndpZHRoIiA6ICJoZWlnaHQiXSA6IDApLCBlLnBsYWNlbWVudCA9IFl0KHQpLCBlLm9mZnNldHMucG9wcGVyID0gSXQobyksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaGlkZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDgwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNuKGUuaW5zdGFuY2UubW9kaWZpZXJzLCAiaGlkZSIsICJwcmV2ZW50T3ZlcmZsb3ciKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLm9mZnNldHMucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gJHQoZS5pbnN0YW5jZS5tb2RpZmllcnMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInByZXZlbnRPdmVyZmxvdyIgPT09IGUubmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuYm91bmRhcmllczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5ib3R0b20gPCBuLnRvcCB8fCB0LmxlZnQgPiBuLnJpZ2h0IHx8IHQudG9wID4gbi5ib3R0b20gfHwgdC5yaWdodCA8IG4ubGVmdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoITAgPT09IGUuaGlkZSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaGlkZSA9ICEwLCBlLmF0dHJpYnV0ZXNbIngtb3V0LW9mLWJvdW5kYXJpZXMiXSA9ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCExID09PSBlLmhpZGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmhpZGUgPSAhMSwgZS5hdHRyaWJ1dGVzWyJ4LW91dC1vZi1ib3VuZGFyaWVzIl0gPSAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlU3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiA4NTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLm9mZnNldHMucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gJHQoZS5pbnN0YW5jZS5tb2RpZmllcnMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImFwcGx5U3R5bGUiID09PSBlLm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmdwdUFjY2VsZXJhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9PSB1bmRlZmluZWQgJiYgY29uc29sZS53YXJuKCJXQVJOSU5HOiBgZ3B1QWNjZWxlcmF0aW9uYCBvcHRpb24gbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXIgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUG9wcGVyLmpzISIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gaSAhPT0gdW5kZWZpbmVkID8gaSA6IHQuZ3B1QWNjZWxlcmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0ga3QoZS5pbnN0YW5jZS5wb3BwZXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gUnQocyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogby5wb3NpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLm9mZnNldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4ucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLnJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gTWF0aC5yb3VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5mbG9vciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGkoby53aWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGkoci53aWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IC0xICE9PSBbImxlZnQiLCAicmlnaHQiXS5pbmRleE9mKGUucGxhY2VtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gLTEgIT09IGUucGxhY2VtZW50LmluZGV4T2YoIi0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdCA/IGMgfHwgZiB8fCB1ICUgMiA9PSBsICUgMiA/IGkgOiBhIDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gdCA/IGkgOiBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBkKHUgJSAyID09IDEgJiYgbCAlIDIgPT0gMSAmJiAhZiAmJiB0ID8gci5sZWZ0IC0gMSA6IHIubGVmdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBwKHIudG9wKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IHAoci5ib3R0b20pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBkKHIucmlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgd2luZG93LmRldmljZVBpeGVsUmF0aW8gPCAyIHx8ICFsbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAiYm90dG9tIiA9PT0gbiA/ICJ0b3AiIDogImJvdHRvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAicmlnaHQiID09PSByID8gImxlZnQiIDogInJpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IEp0KCJ0cmFuc2Zvcm0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA9ICJib3R0b20iID09PSBmID8gIkhUTUwiID09PSBzLm5vZGVOYW1lID8gLXMuY2xpZW50SGVpZ2h0ICsgYy5ib3R0b20gOiAtdS5oZWlnaHQgKyBjLmJvdHRvbSA6IGMudG9wLCBoID0gInJpZ2h0IiA9PT0gZCA/ICJIVE1MIiA9PT0gcy5ub2RlTmFtZSA/IC1zLmNsaWVudFdpZHRoICsgYy5yaWdodCA6IC11LndpZHRoICsgYy5yaWdodCA6IGMubGVmdCwgYSAmJiBwKSBsW3BdID0gInRyYW5zbGF0ZTNkKCIgKyBoICsgInB4LCAiICsgbSArICJweCwgMCkiLCBsW2ZdID0gMCwgbFtkXSA9IDAsIGwud2lsbENoYW5nZSA9ICJ0cmFuc2Zvcm0iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9ICJib3R0b20iID09PSBmID8gLTEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9ICJyaWdodCIgPT09IGQgPyAtMSA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxbZl0gPSBtICogeSwgbFtkXSA9IGggKiBnLCBsLndpbGxDaGFuZ2UgPSBmICsgIiwgIiArIGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4LXBsYWNlbWVudCI6IGUucGxhY2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hdHRyaWJ1dGVzID0gTHQoe30sIHYsIGUuYXR0cmlidXRlcyksIGUuc3R5bGVzID0gTHQoe30sIGwsIGUuc3R5bGVzKSwgZS5hcnJvd1N0eWxlcyA9IEx0KHt9LCBlLm9mZnNldHMuYXJyb3csIGUuYXJyb3dTdHlsZXMpLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1QWNjZWxlcmF0aW9uOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6ICJib3R0b20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogInJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhcHBseVN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogOTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0LCBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bihlLmluc3RhbmNlLnBvcHBlciwgZS5zdHlsZXMpLCB0ID0gZS5pbnN0YW5jZS5wb3BwZXIsIG4gPSBlLmF0dHJpYnV0ZXMsIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITEgIT09IG5bZV0gPyB0LnNldEF0dHJpYnV0ZShlLCBuW2VdKSA6IHQucmVtb3ZlQXR0cmlidXRlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBlLmFycm93RWxlbWVudCAmJiBPYmplY3Qua2V5cyhlLmFycm93U3R5bGVzKS5sZW5ndGggJiYgdW4oZS5hcnJvd0VsZW1lbnQsIGUuYXJyb3dTdHlsZXMpLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Mb2FkOiBmdW5jdGlvbihlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBXdChvLCB0LCBlLCBuLnBvc2l0aW9uRml4ZWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0genQobi5wbGFjZW1lbnQsIGksIHQsIGUsIG4ubW9kaWZpZXJzLmZsaXAuYm91bmRhcmllc0VsZW1lbnQsIG4ubW9kaWZpZXJzLmZsaXAucGFkZGluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuc2V0QXR0cmlidXRlKCJ4LXBsYWNlbWVudCIsIGEpLCB1bih0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuLnBvc2l0aW9uRml4ZWQgPyAiZml4ZWQiIDogImFic29sdXRlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1QWNjZWxlcmF0aW9uOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBibiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUodCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgVHQodGhpcywgZSksIHRoaXMuc2NoZWR1bGVVcGRhdGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoci51cGRhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMudXBkYXRlID0gbXQodGhpcy51cGRhdGUuYmluZCh0aGlzKSksIHRoaXMub3B0aW9ucyA9IEx0KHt9LCBlLkRlZmF1bHRzLCBvKSwgdGhpcy5zdGF0ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGVzdHJveWVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ3JlYXRlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxQYXJlbnRzOiBbXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnJlZmVyZW5jZSA9IHQgJiYgdC5qcXVlcnkgPyB0WzBdIDogdCwgdGhpcy5wb3BwZXIgPSBuICYmIG4uanF1ZXJ5ID8gblswXSA6IG4sIHRoaXMub3B0aW9ucy5tb2RpZmllcnMgPSB7fSwgT2JqZWN0LmtleXMoTHQoe30sIGUuRGVmYXVsdHMubW9kaWZpZXJzLCBvLm1vZGlmaWVycykpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIub3B0aW9ucy5tb2RpZmllcnNbdF0gPSBMdCh7fSwgZS5EZWZhdWx0cy5tb2RpZmllcnNbdF0gfHwge30sIG8ubW9kaWZpZXJzID8gby5tb2RpZmllcnNbdF0gOiB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLm1vZGlmaWVycyA9IE9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5tb2RpZmllcnMpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEx0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByLm9wdGlvbnMubW9kaWZpZXJzW2VdKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkuc29ydCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUub3JkZXIgLSB0Lm9yZGVyCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5tb2RpZmllcnMuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5lbmFibGVkICYmIHl0KGUub25Mb2FkKSAmJiBlLm9uTG9hZChyLnJlZmVyZW5jZSwgci5wb3BwZXIsIHIub3B0aW9ucywgZSwgci5zdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnVwZGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMub3B0aW9ucy5ldmVudHNFbmFibGVkOwogICAgICAgICAgICAgICAgICAgICAgICBpICYmIHRoaXMuZW5hYmxlRXZlbnRMaXN0ZW5lcnMoKSwgdGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkID0gaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnQoZSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFp0LmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVzdHJveSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbi5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImVuYWJsZUV2ZW50TGlzdGVuZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uLmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGlzYWJsZUV2ZW50TGlzdGVuZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFuLmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1dKSwgZQogICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICBibi5VdGlscyA9ICgidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ID8gd2luZG93IDogbi5nKS5Qb3BwZXJVdGlscywgYm4ucGxhY2VtZW50cyA9IGZuLCBibi5EZWZhdWx0cyA9IHZuOwogICAgICAgICAgICB2YXIgd24gPSBibiwKICAgICAgICAgICAgICAgIE9uID0gKG4oMjM1MyksIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gfn4oMWU2ICogTWF0aC5yYW5kb20oKSkKICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgZG9jdW1lbnQgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIF9uID0gKCJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdy5kb2N1bWVudCAmJiAvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiB3aW5kb3cuTVNTdHJlYW0sIHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiAia3BtMHYyIiwKICAgICAgICAgICAgICAgICAgICBzdHlsZXM6ICJwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjE2cHg7aGVpZ2h0OjhweDttYXJnaW46MCA1cHg7JjpiZWZvcmUsJjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2NvbnRlbnQ6Jyc7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZDt9IgogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICB4biA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0LnBsYWNlbWVudDsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IENlKHQsIFsicGxhY2VtZW50Il0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpdChlLkZyYWdtZW50LCBudWxsLCBpdChhdCwgewogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IGtuCiAgICAgICAgICAgICAgICAgICAgfSksIGl0KCJkaXYiLCBFZSh7fSwgbiwgewogICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS1hcnJvdyI6ICJ0cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgY3NzOiBfbgogICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBrbiA9IHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiAicnZvOThzIiwKICAgICAgICAgICAgICAgICAgICBzdHlsZXM6ICJbeC1wbGFjZW1lbnRePSd0b3AnXXttYXJnaW4tYm90dG9tOjhweDtbZGF0YS1hcnJvd117Ym90dG9tOi05cHg7fVtkYXRhLWFycm93XTpiZWZvcmV7Ym90dG9tOjA7Ym9yZGVyLXdpZHRoOjhweCA4cHggMDtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsMC4yNSk7fVtkYXRhLWFycm93XTphZnRlcntib3R0b206MXB4O2JvcmRlci13aWR0aDo4cHggOHB4IDA7Ym9yZGVyLXRvcC1jb2xvcjojZmZmO319W3gtcGxhY2VtZW50Xj0ncmlnaHQnXXttYXJnaW4tbGVmdDo4cHg7W2RhdGEtYXJyb3dde2xlZnQ6LTlweDt3aWR0aDo4cHg7aGVpZ2h0OjE2cHg7bWFyZ2luOjVweCAwO31bZGF0YS1hcnJvd106YmVmb3Jle2xlZnQ6MDtib3JkZXItd2lkdGg6OHB4IDhweCA4cHggMDtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwwLjI1KTt9W2RhdGEtYXJyb3ddOmFmdGVye2xlZnQ6MXB4O2JvcmRlci13aWR0aDo4cHggOHB4IDhweCAwO2JvcmRlci1yaWdodC1jb2xvcjojZmZmO319W3gtcGxhY2VtZW50Xj0nYm90dG9tJ117bWFyZ2luLXRvcDo4cHg7W2RhdGEtYXJyb3dde3RvcDotOXB4O31bZGF0YS1hcnJvd106YmVmb3Jle3RvcDowO2JvcmRlci13aWR0aDowIDhweCA4cHggOHB4O2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwwLjI1KTt9W2RhdGEtYXJyb3ddOmFmdGVye3RvcDoxcHg7Ym9yZGVyLXdpZHRoOjAgOHB4IDhweCA4cHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmO319W3gtcGxhY2VtZW50Xj0nbGVmdCdde21hcmdpbi1yaWdodDo4cHg7W2RhdGEtYXJyb3dde3JpZ2h0Oi05cHg7d2lkdGg6OHB4O2hlaWdodDoxNnB4O21hcmdpbjo1cHggMDt9W2RhdGEtYXJyb3ddOmJlZm9yZXtyaWdodDowO2JvcmRlci13aWR0aDo4cHggMCA4cHggOHB4O2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsMC4yNSk7fVtkYXRhLWFycm93XTphZnRlcntyaWdodDoxcHg7Ym9yZGVyLXdpZHRoOjhweCAwIDhweCA4cHg7Ym9yZGVyLWxlZnQtY29sb3I6I2ZmZjt9fSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBFbiA9IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgaSwgYSA9IG4uaGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5ib2R5LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi5jaGlsZHJlbiwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4ucGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICBjID0gbi50cmlnZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gbi5zdHlsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBDZShuLCBbImhlYWRlciIsICJib2R5IiwgImNoaWxkcmVuIiwgInBsYWNlbWVudCIsICJ0cmlnZ2VyIiwgInN0eWxlcyJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHQoKS5DaGlsZHJlbi5vbmx5KHUpLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gKDAsIGUudXNlUmVmKShudWxsKSwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9ICgwLCBlLnVzZVN0YXRlKSghMSksCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBtWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gbVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgdiA9ICgwLCBlLnVzZVN0YXRlKSghMSksCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB2WzBdLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gdlsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgTyA9ICgwLCBlLnVzZVN0YXRlKSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVySWQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VJZDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycm93SWQ6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIF8gPSBPWzBdLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gT1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgayA9IF8ucG9wb3ZlcklkLAogICAgICAgICAgICAgICAgICAgICAgICBFID0gXy5yZWZlcmVuY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgQyA9IF8uYXJyb3dJZDsKICAgICAgICAgICAgICAgICAgICByID0gaCwgbyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuaWQgPT09IEUgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRSkuY29udGFpbnMoZS50YXJnZXQpIHx8IGcoITEpCiAgICAgICAgICAgICAgICAgICAgfSwgaSA9ICgwLCBlLnVzZVJlZikoKSwgKDAsIGUudXNlRWZmZWN0KSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuY3VycmVudCA9IG8KICAgICAgICAgICAgICAgICAgICB9KSwgW29dKSwgKDAsIGUudXNlRWZmZWN0KSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgci5jdXJyZW50ICYmICFyLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQpICYmIGkuY3VycmVudChldmVudCkKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGR0LmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHQsIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHQsIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSksIFtyLCBvXSksICgwLCBlLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWspIHJldHVybiB4KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXJJZDogT24oInBvcG92ZXIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUlkOiBPbigicmVmZXJlbmNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvd0lkOiBPbigiYXJyb3ciKQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChrKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChFKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChDKTsKICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiB0ICYmIG4gJiYgKG5ldyB3bih0LCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdyh5KSkKICAgICAgICAgICAgICAgICAgICB9KSwgW3ldKTsKICAgICAgICAgICAgICAgICAgICB2YXIgUyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogW0NuLmNvbnRlbnQsIGYuY29udGVudF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogW0NuLmhlYWRlciwgZi5oZWFkZXJdLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBbQ24uYm9keSwgZi5ib2R5XQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0KGUuRnJhZ21lbnQsIG51bGwsIGsgPyBpdCgiZGl2IiwgRWUoe30sIGQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGssCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogaCwKICAgICAgICAgICAgICAgICAgICAgICAgY3NzOiBTLmNvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBiID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIgogICAgICAgICAgICAgICAgICAgICAgICB9IDoge30KICAgICAgICAgICAgICAgICAgICB9KSwgaXQoeG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEMKICAgICAgICAgICAgICAgICAgICB9KSwgYSA/IGl0KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNzczogUy5oZWFkZXIKICAgICAgICAgICAgICAgICAgICB9LCBhKSA6IG51bGwsIGl0KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNzczogUy5ib2R5CiAgICAgICAgICAgICAgICAgICAgfSwgcykpIDogbnVsbCwgdCgpLmNsb25lRWxlbWVudChwLCBFZSh7fSwgcC5wcm9wcywgewogICAgICAgICAgICAgICAgICAgICAgICBpZDogRSwKICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2xpY2siID09PSBjICYmIGcoIXkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBFbi5kZWZhdWx0UHJvcHMgPSB7CiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICJyaWdodCIsCiAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiY2xpY2siLAogICAgICAgICAgICAgICAgc3R5bGVzOiB7fQogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgQ24gPSB7CiAgICAgICAgICAgICAgICAgICAgY29udGVudDogewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiMTA2aGE4cyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogImRpc3BsYXk6bm9uZTttYXgtd2lkdGg6MzAwcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwLjIpO3otaW5kZXg6MTA2MDsiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIjEya296MXoiLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6ICJwYWRkaW5nOjhweCAxMnB4O2JhY2tncm91bmQtY29sb3I6I2Y3ZjdmNztmb250LXNpemU6MTZweDtmb250LXdlaWdodDpib2xkO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDsiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBib2R5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJrN2t5bTgiLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6ICJwYWRkaW5nOjhweCAxMnB4O2ZvbnQtc2l6ZToxNHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDsiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFNuID0gRW47CgogICAgICAgICAgICBmdW5jdGlvbiBqbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUudG91Y2hlczsKICAgICAgICAgICAgICAgIGlmICh0ICYmIHQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0WzBdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IG4uY2xpZW50WCwKICAgICAgICAgICAgICAgICAgICAgICAgeTogbi5jbGllbnRZCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB4OiBlLmNsaWVudFgsCiAgICAgICAgICAgICAgICAgICAgeTogZS5jbGllbnRZCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIFBuID0gewogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAicmVsYXRpdmUiLAogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJpbmxpbmUtYmxvY2siLAogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogIiNkZGQiLAogICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogNSwKICAgICAgICAgICAgICAgICAgICB1c2VyU2VsZWN0OiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAiYm9yZGVyLWJveCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBbiA9IHsKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIiwKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjNWU3MmU0IiwKICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDUsCiAgICAgICAgICAgICAgICAgICAgdXNlclNlbGVjdDogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgIGJveFNpemluZzogImJvcmRlci1ib3giCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgRG4gPSB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJyZWxhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIiwKICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnIiInLAogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxOCwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4LAogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogIiNmZmYiLAogICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogIjUwJSIsCiAgICAgICAgICAgICAgICAgICAgYm94U2hhZG93OiAiMCAxcHggMXB4IHJnYmEoMCwwLDAsLjUpIiwKICAgICAgICAgICAgICAgICAgICB1c2VyU2VsZWN0OiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiAicG9pbnRlciIsCiAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAiYm9yZGVyLWJveCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUbiA9IHsKICAgICAgICAgICAgICAgICAgICB4OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrOiBFZSh7fSwgUG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IEVlKHt9LCBBbiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAiMTAwJSIKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iOiBFZSh7fSwgRG4pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrOiBFZSh7fSwgUG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IEVlKHt9LCBBbiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiMTAwJSIKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iOiBFZSh7fSwgRG4pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB4eTogewogICAgICAgICAgICAgICAgICAgICAgICB0cmFjazogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJyZWxhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogImhpZGRlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjNWU3MmU0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICB0aHVtYjogRWUoe30sIERuKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgTm4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmRpc2FibGVkLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5heGlzLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC54bWluLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC54bWF4LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC55bWluLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC55bWF4LAogICAgICAgICAgICAgICAgICAgICAgICBjID0gdC54c3RlcCwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHQueXN0ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0Lm9uQ2hhbmdlLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gdC5vbkRyYWdTdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHQub25EcmFnRW5kLAogICAgICAgICAgICAgICAgICAgICAgICBtID0gdC5vbkNsaWNrLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gdC54cmV2ZXJzZSwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHQueXJldmVyc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0LnN0eWxlcywKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IENlKHQsIFsiZGlzYWJsZWQiLCAiYXhpcyIsICJ4IiwgInkiLCAieG1pbiIsICJ4bWF4IiwgInltaW4iLCAieW1heCIsICJ4c3RlcCIsICJ5c3RlcCIsICJvbkNoYW5nZSIsICJvbkRyYWdTdGFydCIsICJvbkRyYWdFbmQiLCAib25DbGljayIsICJ4cmV2ZXJzZSIsICJ5cmV2ZXJzZSIsICJzdHlsZXMiXSksCiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAoMCwgZS51c2VSZWYpKG51bGwpLAogICAgICAgICAgICAgICAgICAgICAgICBPID0gKDAsIGUudXNlUmVmKShudWxsKSwKICAgICAgICAgICAgICAgICAgICAgICAgXyA9ICgwLCBlLnVzZVJlZikoe30pLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gKDAsIGUudXNlUmVmKSh7fSk7CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGsoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUubGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdy5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPCAwICYmIChuID0gMCksIG4gPiBpICYmIChuID0gaSksIHQgPCAwICYmICh0ID0gMCksIHQgPiBwICYmICh0ID0gcCksICJ4IiAhPT0gciAmJiAieHkiICE9PSByIHx8IChoID0gbiAvIGkgKiAocyAtIGEpKSwgInkiICE9PSByICYmICJ4eSIgIT09IHIgfHwgKG0gPSB0IC8gcCAqIChsIC0gdSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSAoMCAhPT0gaCA/IHBhcnNlSW50KGggLyBjLCAxMCkgKiBjIDogMCkgKyBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAoMCAhPT0gbSA/IHBhcnNlSW50KG0gLyBmLCAxMCkgKiBmIDogMCkgKyB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogeSA/IHMgLSB2ICsgYSA6IHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZyA/IGwgLSBiICsgdSA6IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gTy5jdXJyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBqbihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uY3VycmVudCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0Lm9mZnNldExlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogdC5vZmZzZXRUb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHguY3VycmVudCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiByLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogci55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBDKSwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIFMpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBDLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIFMpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsIFMpLCBwICYmIHAoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gfHwgKGUucHJldmVudERlZmF1bHQoKSwgayhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGpuKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0LnggKyBfLmN1cnJlbnQueCAtIHguY3VycmVudC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogdC55ICsgXy5jdXJyZW50LnkgLSB4LmN1cnJlbnQueQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KGUpKSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBuIHx8IChlLnByZXZlbnREZWZhdWx0KCksIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIEMpLCBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgUyksIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIEMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIFMpLCBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsIFMpLCBoICYmIGgoZSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBqLCBQLCBBID0gKChqID0gKGkgLSB1KSAvIChsIC0gdSkgKiAxMDApID4gMTAwICYmIChqID0gMTAwKSwgaiA8IDAgJiYgKGogPSAwKSwgIngiID09PSByICYmIChqID0gMCksIChQID0gKG8gLSBhKSAvIChzIC0gYSkgKiAxMDApID4gMTAwICYmIChQID0gMTAwKSwgUCA8IDAgJiYgKFAgPSAwKSwgInkiID09PSByICYmIChQID0gMCksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IFAKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIEQgPSB7fTsKICAgICAgICAgICAgICAgICAgICAieCIgPT09IHIgJiYgKEQud2lkdGggPSBBLmxlZnQgKyAiJSIpLCAieSIgPT09IHIgJiYgKEQuaGVpZ2h0ID0gQS50b3AgKyAiJSIpLCB5ICYmIChELmxlZnQgPSAxMDAgLSBBLmxlZnQgKyAiJSIpLCBnICYmIChELnRvcCA9IDEwMCAtIEEudG9wICsgIiUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgVCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogInRyYW5zbGF0ZSgtNTAlLCAtNTAlKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHkgPyAxMDAgLSBBLmxlZnQgKyAiJSIgOiBBLmxlZnQgKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZyA/IDEwMCAtIEEudG9wICsgIiUiIDogQS50b3AgKyAiJSIKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICJ4IiA9PT0gciA/IFQudG9wID0gIjUwJSIgOiAieSIgPT09IHIgJiYgKFQubGVmdCA9ICI1MCUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgTiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2s6IEVlKHt9LCBUbltyXS50cmFjaywge30sIHYudHJhY2spLAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IEVlKHt9LCBUbltyXS5hY3RpdmUsIHt9LCB2LmFjdGl2ZSksCiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iOiBFZSh7fSwgVG5bcl0udGh1bWIsIHt9LCB2LnRodW1iKSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IEVlKHt9LCBUbi5kaXNhYmxlZCwge30sIHYuZGlzYWJsZWQpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXQoImRpdiIsIEVlKHt9LCBiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogdywKICAgICAgICAgICAgICAgICAgICAgICAgY3NzOiBvdChbTi50cmFjaywgbiAmJiBOLmRpc2FibGVkXSwgIjtsYWJlbDpTbGlkZXI7IiksCiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gam4oZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB3LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHQueCAtIHIubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiB0LnkgLSByLnRvcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBtICYmIG0oZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLCBpdCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjc3M6IE4uYWN0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogRAogICAgICAgICAgICAgICAgICAgIH0pLCBpdCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICByZWY6IE8sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBULAogICAgICAgICAgICAgICAgICAgICAgICBvblRvdWNoU3RhcnQ6IEUsCiAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duOiBFLAogICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpLCBlLm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBpdCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjc3M6IE4udGh1bWIKICAgICAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBObi5kZWZhdWx0UHJvcHMgPSB7CiAgICAgICAgICAgICAgICBkaXNhYmxlZDogITEsCiAgICAgICAgICAgICAgICBheGlzOiAieCIsCiAgICAgICAgICAgICAgICB4OiA1MCwKICAgICAgICAgICAgICAgIHhtaW46IDAsCiAgICAgICAgICAgICAgICB4bWF4OiAxMDAsCiAgICAgICAgICAgICAgICB5OiA1MCwKICAgICAgICAgICAgICAgIHltaW46IDAsCiAgICAgICAgICAgICAgICB5bWF4OiAxMDAsCiAgICAgICAgICAgICAgICB4c3RlcDogMSwKICAgICAgICAgICAgICAgIHlzdGVwOiAxLAogICAgICAgICAgICAgICAgeHJldmVyc2U6ICExLAogICAgICAgICAgICAgICAgeXJldmVyc2U6ICExLAogICAgICAgICAgICAgICAgc3R5bGVzOiB7fQogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgTW4gPSBObiwKICAgICAgICAgICAgICAgIExuID0gbig3NjU0KSwKICAgICAgICAgICAgICAgIEluID0gbi5uKExuKSwKICAgICAgICAgICAgICAgIFJuID0gbigxNzYzKSwKICAgICAgICAgICAgICAgIHFuID0gbi5uKFJuKSwKICAgICAgICAgICAgICAgIEZuID0gbig3MDM3KSwKICAgICAgICAgICAgICAgIFZuID0gbi5uKEZuKSwKICAgICAgICAgICAgICAgIEJuID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUGhvbmV8aVBhZHxpUG9kL2kpLAogICAgICAgICAgICAgICAgVW4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LnN0ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0Lm1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQubWF4LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQub25DaGFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lm9uS2V5RG93biwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQuZW5hYmxlTW9iaWxlTnVtZXJpY0tleWJvYXJkLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5jb21wb25lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBDZSh0LCBbInN0ZXAiLCAibWluIiwgIm1heCIsICJ2YWx1ZSIsICJvbkNoYW5nZSIsICJvbktleURvd24iLCAiZW5hYmxlTW9iaWxlTnVtZXJpY0tleWJvYXJkIiwgImNvbXBvbmVudCJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9ICgwLCBlLnVzZVN0YXRlKShpKSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGZbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBmWzFdOwogICAgICAgICAgICAgICAgICAgICgwLCBlLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwKGkpCiAgICAgICAgICAgICAgICAgICAgfSksIFtpXSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkLAogICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHFuKCkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWbigpKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgPSBlLnRyaW0oKSkpIHJldHVybiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBwYXJzZUZsb2F0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUluKCkodCkpIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAoZSksIGEgJiYgYSh0KQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4ID09PSBlLmtleUNvZGUgPyBhICYmIGEoem4oIisiLCBpLCBvLCByLCBuKSkgOiA0MCA9PT0gZS5rZXlDb2RlICYmIGEgJiYgYSh6bigiLSIsIGksIG8sIHIsIG4pKSwgcyAmJiBzKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uV2hlZWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LmJsdXIoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXQobCwgRWUoe30sIGMsIGgsIHUgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNzczogSG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJudW1iZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dE1vZGU6ICJudW1lcmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogQm4gPyAiWzAtOV0qIiA6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBzdGVwOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBtaW46IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heDogbwogICAgICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNzczogSG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJ0ZXh0IgogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgVW4uZGVmYXVsdFByb3BzID0gewogICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlOiAib2ZmIiwKICAgICAgICAgICAgICAgIGVuYWJsZU1vYmlsZU51bWVyaWNLZXlib2FyZDogITEsCiAgICAgICAgICAgICAgICB2YWx1ZTogIiIsCiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUub25DaGFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBDZShlLCBbIm9uQ2hhbmdlIl0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpdCgiaW5wdXQiLCBFZSh7fSwgbiwgewogICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCAmJiB0KGUudGFyZ2V0LnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3RlcDogMQogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgSG4gPSB7CiAgICAgICAgICAgICAgICBNb3pBcHBlYXJhbmNlOiAidGV4dGZpZWxkIiwKICAgICAgICAgICAgICAgICImOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLCAmOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIjogewogICAgICAgICAgICAgICAgICAgIFdlYmtpdEFwcGVhcmFuY2U6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHpuKGUsIHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgIGlmICgiIiA9PT0gdCkgcmV0dXJuIHFuKCkocikgPyByIDogIg=="}},"time_used":10,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/js/frontend.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.042Z","timestamp":1785130090042,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/elementor/assets/js/frontend.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=guomksrPnStwPSj1j%2Fe289gKKzoA4kJG%2BXoqIeK75jlB6nHGbR%2BBEZ%2BE2CVCmg%2F7QJ6HM%2BYbS9eUv%2F%2Fg2%2FAaAYQbgL6yXrUWQNlIRVQMnnZyK1dsbMgWFaIDYtCY3RXcYWZLe2lYIw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ce57120a-OSL\r\ncontent-length: 14069\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":73985,"size_decoded":14908,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text","md5":"6ff7fd47dcff05bb3e78b0aeb5c276fc","sha1":"92e921cc26c3f79f131cb8660d1f759ea2aabe48","sha256":"2fe277aa48724cd372c3dac2c309221c539e13c276fb84a5289634993a594733","sha512":"70bb7a8c2fe0b02a2531e8d004421ca10143b0859256506afef0b704e799c478fa8a1bf8f3c2b95207b1a756adae0ad913f9db37e0783f363833c11d7f3c1047","ssdeep":"1536:VXXhpYpyZv480MLt5Req4CbpUxvGsXodQrQdkilAxLSW1ZdSTYVcT1vkNZAqPHvh:B+OO","tlshash":"4673820a3af254658217f43b2d2ba118b235444f6c0abd1d3e2c06a49f68d3d6bf1bf5","first_seen":"2026-07-27T04:11:05.682517Z","last_seen":"2026-07-27T05:30:59.787482Z","times_seen":3,"resource_available":true,"data":"LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNy0wMi0yMDI0ICovCiJ1c2Ugc3RyaWN0IjsKKHNlbGYud2VicGFja0NodW5rZWxlbWVudG9yID0gc2VsZi53ZWJwYWNrQ2h1bmtlbGVtZW50b3IgfHwgW10pLnB1c2goW1s4MTldLCB7CiAgICA5MjIwOiAoZSx0LG4pPT57CiAgICAgICAgdmFyIG8gPSBuKDMyMDMpOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIHZhciBpID0gbyhuKDgxMzUpKTsKICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZSB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRzID0ge30sCiAgICAgICAgICAgICAgICB0aGlzLmluaXREb2N1bWVudENsYXNzZXMoKSwKICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNoRG9jdW1lbnRzQ2xhc3NlcygpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ6ICIuZWxlbWVudG9yIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIik7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICRkb2N1bWVudHM6IGpRdWVyeShlLmRvY3VtZW50KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXREb2N1bWVudENsYXNzZXMoKSB7CiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xhc3NlcyA9IHsKICAgICAgICAgICAgICAgICAgICBiYXNlOiBpLmRlZmF1bHQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5kb0FjdGlvbigiZWxlbWVudG9yL2Zyb250ZW5kL2RvY3VtZW50cy1tYW5hZ2VyL2luaXQtY2xhc3NlcyIsIHRoaXMpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYWRkRG9jdW1lbnRDbGFzcyhlLCB0KSB7CiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xhc3Nlc1tlXSA9IHQKICAgICAgICAgICAgfQogICAgICAgICAgICBhdHRhY2hEb2N1bWVudHNDbGFzc2VzKCkgewogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kZG9jdW1lbnRzLmVhY2goKChlLHQpPT50aGlzLmF0dGFjaERvY3VtZW50Q2xhc3MoalF1ZXJ5KHQpKSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXR0YWNoRG9jdW1lbnRDbGFzcyhlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5kYXRhKCkKICAgICAgICAgICAgICAgICAgLCBuID0gdC5lbGVtZW50b3JJZAogICAgICAgICAgICAgICAgICAsIG8gPSB0LmVsZW1lbnRvclR5cGUKICAgICAgICAgICAgICAgICAgLCBpID0gdGhpcy5kb2N1bWVudENsYXNzZXNbb10gfHwgdGhpcy5kb2N1bWVudENsYXNzZXMuYmFzZTsKICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRzW25dID0gbmV3IGkoewogICAgICAgICAgICAgICAgICAgICRlbGVtZW50OiBlLAogICAgICAgICAgICAgICAgICAgIGlkOiBuCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICB9CiAgICAsCiAgICA5ODA0OiAoZSx0LG4pPT57CiAgICAgICAgdmFyIG8gPSBuKDMyMDMpCiAgICAgICAgICAsIGkgPSBvKG4oNjM5NykpCiAgICAgICAgICAsIHMgPSBvKG4oODcwNCkpCiAgICAgICAgICAsIHIgPSBvKG4oNDk4NSkpCiAgICAgICAgICAsIGEgPSBvKG4oNzUzNykpCiAgICAgICAgICAsIGwgPSBvKG4oMzU1KSkKICAgICAgICAgICwgZCA9IG8obigyODA0KSkKICAgICAgICAgICwgYyA9IG8obigzMzg0KSk7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgIGNvbnN0IG8gPSB7fTsKICAgICAgICAgICAgdGhpcy5lbGVtZW50c0hhbmRsZXJzID0gewogICAgICAgICAgICAgICAgImFjY29yZGlvbi5kZWZhdWx0IjogKCk9Pm4uZSgyMDkpLnRoZW4obi5iaW5kKG4sIDg0NzApKSwKICAgICAgICAgICAgICAgICJhbGVydC5kZWZhdWx0IjogKCk9Pm4uZSg3NDUpLnRoZW4obi5iaW5kKG4sIDkyNjkpKSwKICAgICAgICAgICAgICAgICJjb3VudGVyLmRlZmF1bHQiOiAoKT0+bi5lKDEyMCkudGhlbihuLmJpbmQobiwgNzg4NCkpLAogICAgICAgICAgICAgICAgInByb2dyZXNzLmRlZmF1bHQiOiAoKT0+bi5lKDE5MikudGhlbihuLmJpbmQobiwgMTM1MSkpLAogICAgICAgICAgICAgICAgInRhYnMuZGVmYXVsdCI6ICgpPT5uLmUoNTIwKS50aGVuKG4uYmluZChuLCA5NDU5KSksCiAgICAgICAgICAgICAgICAidG9nZ2xlLmRlZmF1bHQiOiAoKT0+bi5lKDE4MSkudGhlbihuLmJpbmQobiwgMikpLAogICAgICAgICAgICAgICAgInZpZGVvLmRlZmF1bHQiOiAoKT0+bi5lKDc5MSkudGhlbihuLmJpbmQobiwgNTM2MykpLAogICAgICAgICAgICAgICAgImltYWdlLWNhcm91c2VsLmRlZmF1bHQiOiAoKT0+bi5lKDI2OCkudGhlbihuLmJpbmQobiwgNTkxNCkpLAogICAgICAgICAgICAgICAgInRleHQtZWRpdG9yLmRlZmF1bHQiOiAoKT0+bi5lKDM1NykudGhlbihuLmJpbmQobiwgMTMyNykpLAogICAgICAgICAgICAgICAgIndwLXdpZGdldC1tZWRpYV9hdWRpby5kZWZhdWx0IjogKCk9Pm4uZSg1MikudGhlbihuLmJpbmQobiwgNzYwMikpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kQ29uZmlnLmV4cGVyaW1lbnRhbEZlYXR1cmVzWyJuZXN0ZWQtZWxlbWVudHMiXSAmJiAodGhpcy5lbGVtZW50c0hhbmRsZXJzWyJuZXN0ZWQtdGFicy5kZWZhdWx0Il0gPSAoKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbihuLmJpbmQobiwgNzMyMykpKSwKICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmRDb25maWcuZXhwZXJpbWVudGFsRmVhdHVyZXNbIm5lc3RlZC1lbGVtZW50cyJdICYmICh0aGlzLmVsZW1lbnRzSGFuZGxlcnNbIm5lc3RlZC1hY2NvcmRpb24uZGVmYXVsdCJdID0gKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4obi5iaW5kKG4sIDMyKSkpOwogICAgICAgICAgICBjb25zdCBhZGRFbGVtZW50c0hhbmRsZXJzID0gKCk9PnsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHNIYW5kbGVycy5zZWN0aW9uID0gW2QuZGVmYXVsdCwgLi4ucy5kZWZhdWx0LCBsLmRlZmF1bHQsIGMuZGVmYXVsdF0sCiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzSGFuZGxlcnMuY29udGFpbmVyID0gWy4uLnMuZGVmYXVsdF0sCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgdGhpcy5lbGVtZW50c0hhbmRsZXJzLmNvbnRhaW5lci5wdXNoKC4uLnIuZGVmYXVsdCksCiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzSGFuZGxlcnMuY29sdW1uID0gYS5kZWZhdWx0LAogICAgICAgICAgICAgICAgZS5lYWNoKHRoaXMuZWxlbWVudHNIYW5kbGVycywgKChlLHQpPT57CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGUuc3BsaXQoIi4iKTsKICAgICAgICAgICAgICAgICAgICBlID0gblswXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gblsxXSB8fCBudWxsOwogICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNoSGFuZGxlcihlLCB0LCBvKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgfQogICAgICAgICAgICAgICwgaXNDbGFzc0hhbmRsZXIgPSBlPT5lLnByb3RvdHlwZT8uZ2V0VW5pcXVlSGFuZGxlcklEOwogICAgICAgICAgICB0aGlzLmFkZEhhbmRsZXIgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gbi4kZWxlbWVudC5kYXRhKCJtb2RlbC1jaWQiKTsKICAgICAgICAgICAgICAgIGxldCBzOwogICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICBzID0gdC5wcm90b3R5cGUuZ2V0Q29uc3RydWN0b3JJRCgpLAogICAgICAgICAgICAgICAgICAgIG9baV0gfHwgKG9baV0gPSB7fSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IG9baV1bc107CiAgICAgICAgICAgICAgICAgICAgZSAmJiBlLm9uRGVzdHJveSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25zdCByID0gbmV3IHQobik7CiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5kb0FjdGlvbihgZnJvbnRlbmQvZWxlbWVudF9oYW5kbGVyX3JlYWR5LyR7bi5lbGVtZW50TmFtZX1gLCBuLiRlbGVtZW50LCBlKSwKICAgICAgICAgICAgICAgIGkgJiYgKG9baV1bc10gPSByKQogICAgICAgICAgICB9CiAgICAgICAgICAgICwKICAgICAgICAgICAgdGhpcy5hdHRhY2hIYW5kbGVyID0gKGUsbixvKT0+ewogICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShuKSB8fCAobiA9IFtuXSksCiAgICAgICAgICAgICAgICBuLmZvckVhY2goKG49PmZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICBsZXQgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogImRlZmF1bHQiOwogICAgICAgICAgICAgICAgICAgIG8gPSBvID8gIi4iICsgbyA6ICIiOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBlICsgbzsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5hZGRBY3Rpb24oYGZyb250ZW5kL2VsZW1lbnRfcmVhZHkvJHtpfWAsIChlPT57CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0NsYXNzSGFuZGxlcihuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuYWRkSGFuZGxlcihuLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudE5hbWU6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gaW5zdGFuY2VvZiBQcm9taXNlID8gby50aGVuKChuPT57CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHtkZWZhdWx0OiBvfSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hZGRIYW5kbGVyKG8sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnROYW1lOiBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKSA6IHQuYWRkSGFuZGxlcihvLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudE5hbWU6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICEwKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICAgICB9KGUsIG4sIG8pKSkKICAgICAgICAgICAgfQogICAgICAgICAgICAsCiAgICAgICAgICAgIHRoaXMuZ2V0SGFuZGxlciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmVsZW1lbnRzSGFuZGxlcnNbZV07CiAgICAgICAgICAgICAgICByZXR1cm4gaXNDbGFzc0hhbmRsZXIodCkgPyB0IDogbmV3IFByb21pc2UoKGU9PnsKICAgICAgICAgICAgICAgICAgICB0KCkudGhlbigodD0+ewogICAgICAgICAgICAgICAgICAgICAgICBsZXQge2RlZmF1bHQ6IG59ID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgZShuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgfQogICAgICAgICAgICAsCiAgICAgICAgICAgIHRoaXMuZ2V0SGFuZGxlcnMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRGV2VG9vbHMuZGVwcmVjYXRpb24uZGVwcmVjYXRlZCgiZ2V0SGFuZGxlcnMiLCAiMy4xLjAiLCAiZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmdldEhhbmRsZXIiKSwKICAgICAgICAgICAgICAgIGUgPyB0aGlzLmdldEhhbmRsZXIoZSkgOiB0aGlzLmVsZW1lbnRzSGFuZGxlcnMKICAgICAgICAgICAgfQogICAgICAgICAgICAsCiAgICAgICAgICAgIHRoaXMucnVuUmVhZHlUcmlnZ2VyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pc19zdGF0aWMpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgY29uc3QgbiA9IGpRdWVyeSh0KQogICAgICAgICAgICAgICAgICAsIG8gPSBuLmF0dHIoImRhdGEtZWxlbWVudF90eXBlIik7CiAgICAgICAgICAgICAgICBpZiAobyAmJiAoZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuZG9BY3Rpb24oImZyb250ZW5kL2VsZW1lbnRfcmVhZHkvZ2xvYmFsIiwgbiwgZSksCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5kb0FjdGlvbihgZnJvbnRlbmQvZWxlbWVudF9yZWFkeS8ke299YCwgbiwgZSksCiAgICAgICAgICAgICAgICAid2lkZ2V0IiA9PT0gbykpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gbi5hdHRyKCJkYXRhLXdpZGdldF90eXBlIik7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuZG9BY3Rpb24oYGZyb250ZW5kL2VsZW1lbnRfcmVhZHkvJHt0fWAsIG4sIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLAogICAgICAgICAgICB0aGlzLmluaXQgPSAoKT0+ewogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuYWRkQWN0aW9uKCJmcm9udGVuZC9lbGVtZW50X3JlYWR5L2dsb2JhbCIsIGkuZGVmYXVsdCksCiAgICAgICAgICAgICAgICBhZGRFbGVtZW50c0hhbmRsZXJzKCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDU2NTQ6IChlLHQsbik9PnsKICAgICAgICB2YXIgbyA9IG4oMzIwMyk7CiAgICAgICAgbig1OSk7CiAgICAgICAgdmFyIGkgPSBvKG4oOTIyMCkpCiAgICAgICAgICAsIHMgPSBvKG4oNTEwNykpCiAgICAgICAgICAsIHIgPSBvKG4oMzMwOCkpCiAgICAgICAgICAsIGEgPSBvKG4oMTYwNCkpCiAgICAgICAgICAsIGwgPSBvKG4oMTkxMSkpCiAgICAgICAgICAsIGQgPSBvKG4oNDc3MykpCiAgICAgICAgICAsIGMgPSBvKG4oMjA2NCkpCiAgICAgICAgICAsIHUgPSBvKG4oODYyOCkpCiAgICAgICAgICAsIGggPSBvKG4oODY0NikpCiAgICAgICAgICAsIG0gPSBvKG4oNjg2NikpCiAgICAgICAgICAsIGcgPSBvKG4oNDM3NSkpCiAgICAgICAgICAsIHAgPSBvKG4oNjQwNCkpCiAgICAgICAgICAsIGYgPSBvKG4oNjA0NikpCiAgICAgICAgICAsIHYgPSBvKG4oMTMyMikpCiAgICAgICAgICAsIGIgPSBuKDYwMjgpOwogICAgICAgIGNvbnN0IF8gPSBuKDk0NjkpCiAgICAgICAgICAsIHkgPSBuKDk4MDQpCiAgICAgICAgICAsIHcgPSBuKDMzNDYpOwogICAgICAgIGNsYXNzIEZyb250ZW5kIGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpLAogICAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSBlbGVtZW50b3JGcm9udGVuZENvbmZpZywKICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmxlZ2FjeU1vZGUgPSB7CiAgICAgICAgICAgICAgICAgICAgZ2V0IGVsZW1lbnRXcmFwcGVycygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiB3aW5kb3cudG9wLmVsZW1lbnRvckRldlRvb2xzLmRlcHJlY2F0aW9uLmRlcHJlY2F0ZWQoImVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5sZWdhY3lNb2RlLmVsZW1lbnRXcmFwcGVycyIsICIzLjEuMCIpLAogICAgICAgICAgICAgICAgICAgICAgICAhMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlQWN0aXZlQnJlYWtwb2ludHNDb25maWcoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldCBNb2R1bGUoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0VkaXRNb2RlKCkgJiYgcGFyZW50LmVsZW1lbnRvckRldlRvb2xzLmRlcHJlY2F0aW9uLmRlcHJlY2F0ZWQoImVsZW1lbnRvckZyb250ZW5kLk1vZHVsZSIsICIyLjUuMCIsICJlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UiKSwKICAgICAgICAgICAgICAgIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvcjogIi5lbGVtZW50b3IiLAogICAgICAgICAgICAgICAgICAgICAgICBhZG1pbkJhcjogIiN3cGFkbWluYmFyIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gewogICAgICAgICAgICAgICAgICAgIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAkd2luZG93OiBqUXVlcnkod2luZG93KSwKICAgICAgICAgICAgICAgICAgICAkZG9jdW1lbnQ6IGpRdWVyeShkb2N1bWVudCksCiAgICAgICAgICAgICAgICAgICAgJGhlYWQ6IGpRdWVyeShkb2N1bWVudC5oZWFkKSwKICAgICAgICAgICAgICAgICAgICAkYm9keTogalF1ZXJ5KGRvY3VtZW50LmJvZHkpLAogICAgICAgICAgICAgICAgICAgICRkZXZpY2VNb2RlOiBqUXVlcnkoIjxzcGFuPiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICJlbGVtZW50b3ItZGV2aWNlLW1vZGUiLAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImVsZW1lbnRvci1zY3JlZW4tb25seSIKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiBlLiRib2R5LmFwcGVuZChlLiRkZXZpY2VNb2RlKSwKICAgICAgICAgICAgICAgIGUKICAgICAgICAgICAgfQogICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kd2luZG93Lm9uKCJyZXNpemUiLCAoKCk9PnRoaXMuc2V0RGV2aWNlTW9kZURhdGEoKSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0RWxlbWVudHMoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbXModGhpcy5lbGVtZW50cywgZSkKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRQYWdlU2V0dGluZ3MoZSkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuaXNFZGl0TW9kZSgpID8gZWxlbWVudG9yLnNldHRpbmdzLnBhZ2UubW9kZWwuYXR0cmlidXRlcyA6IHRoaXMuY29uZmlnLnNldHRpbmdzLnBhZ2U7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyh0LCBlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldEdlbmVyYWxTZXR0aW5ncyhlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0VkaXRNb2RlKCkgJiYgcGFyZW50LmVsZW1lbnRvckRldlRvb2xzLmRlcHJlY2F0aW9uLmRlcHJlY2F0ZWQoImdldEdlbmVyYWxTZXR0aW5ncygpIiwgIjMuMC4wIiwgImdldEtpdFNldHRpbmdzKCkgYW5kIHJlbW92ZSB0aGUgYGVsZW1lbnRvcl9gIHByZWZpeCIpLAogICAgICAgICAgICAgICAgdGhpcy5nZXRLaXRTZXR0aW5ncyhgZWxlbWVudG9yXyR7ZX1gKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldEtpdFNldHRpbmdzKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1zKHRoaXMuY29uZmlnLmtpdCwgZSkKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRDdXJyZW50RGV2aWNlTW9kZSgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudHMuJGRldmljZU1vZGVbMF0sICI6YWZ0ZXIiKS5jb250ZW50LnJlcGxhY2UoLyIvZywgIiIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0RGV2aWNlU2V0dGluZyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBpZiAoIndpZGVzY3JlZW4iID09PSBlKQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFdpZGVzY3JlZW5TZXR0aW5nKHQsIG4pOwogICAgICAgICAgICAgICAgY29uc3QgbyA9IGVsZW1lbnRvckZyb250ZW5kLmJyZWFrcG9pbnRzLmdldEFjdGl2ZUJyZWFrcG9pbnRzTGlzdCh7CiAgICAgICAgICAgICAgICAgICAgbGFyZ2VUb1NtYWxsOiAhMCwKICAgICAgICAgICAgICAgICAgICB3aXRoRGVza3RvcDogITAKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbGV0IGkgPSBvLmluZGV4T2YoZSk7CiAgICAgICAgICAgICAgICBmb3IgKDsgaSA+IDA7ICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0W24gKyAiXyIgKyBvW2ldXTsKICAgICAgICAgICAgICAgICAgICBpZiAoZSB8fCAwID09PSBlKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICBpLS0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0W25dCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0V2lkZXNjcmVlblNldHRpbmcoZSwgdCkgewogICAgICAgICAgICAgICAgY29uc3QgbiA9IHQgKyAiX3dpZGVzY3JlZW4iOwogICAgICAgICAgICAgICAgbGV0IG87CiAgICAgICAgICAgICAgICByZXR1cm4gbyA9IGVbbl0gPyBlW25dIDogZVt0XSwKICAgICAgICAgICAgICAgIG8KICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRDdXJyZW50RGV2aWNlU2V0dGluZyhlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREZXZpY2VTZXR0aW5nKGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VNb2RlKCksIGUsIHQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaXNFZGl0TW9kZSgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5lbnZpcm9ubWVudE1vZGUuZWRpdAogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzV1BQcmV2aWV3TW9kZSgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5lbnZpcm9ubWVudE1vZGUud3BQcmV2aWV3CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW5pdERpYWxvZ3NNYW5hZ2VyKCkgewogICAgICAgICAgICAgICAgbGV0IGU7CiAgICAgICAgICAgICAgICB0aGlzLmdldERpYWxvZ3NNYW5hZ2VyID0gKCk9PihlIHx8IChlID0gbmV3IERpYWxvZ3NNYW5hZ2VyLkluc3RhbmNlKSwKICAgICAgICAgICAgICAgIGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW5pdE9uUmVhZHlDb21wb25lbnRzKCkgewogICAgICAgICAgICAgICAgdGhpcy51dGlscyA9IHsKICAgICAgICAgICAgICAgICAgICB5b3V0dWJlOiBuZXcgYS5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIHZpbWVvOiBuZXcgbC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIGJhc2VWaWRlb0xvYWRlcjogbmV3IGQuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBhbmNob3JzOiBuZXcgdywKICAgICAgICAgICAgICAgICAgICBnZXQgbGlnaHRib3goKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoLmRlZmF1bHQuZ2V0TGlnaHRib3goKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdXJsQWN0aW9uczogbmV3IGMuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBzd2lwZXI6IHUuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogci5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIGFzc2V0c0xvYWRlcjogbmV3IG0uZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBlc2NhcGVIVE1MOiBiLmVzY2FwZUhUTUwsCiAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiBwLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM6IG5ldyB2LmRlZmF1bHQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0aGlzLm1vZHVsZXMgPSB7CiAgICAgICAgICAgICAgICAgICAgU3RyZXRjaEVsZW1lbnQ6IGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQudG9vbHMuU3RyZXRjaEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgTWFzb25yeTogZWxlbWVudG9yTW9kdWxlcy51dGlscy5NYXNvbnJ5CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50c0hhbmRsZXIuaW5pdCgpLAogICAgICAgICAgICAgICAgdGhpcy5pc0VkaXRNb2RlKCkgPyBlbGVtZW50b3Iub25jZSgiZG9jdW1lbnQ6bG9hZGVkIiwgKCgpPT50aGlzLm9uRG9jdW1lbnRMb2FkZWQoKSkpIDogdGhpcy5vbkRvY3VtZW50TG9hZGVkKCkKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0T25SZWFkeUVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kd3BBZG1pbkJhciA9IHRoaXMuZWxlbWVudHMuJGRvY3VtZW50LmZpbmQodGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLmFkbWluQmFyIikpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYWRkVXNlckFnZW50Q2xhc3NlcygpIHsKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2UsdF0gb2YgT2JqZWN0LmVudHJpZXMoci5kZWZhdWx0KSkKICAgICAgICAgICAgICAgICAgICB0ICYmIHRoaXMuZWxlbWVudHMuJGJvZHkuYWRkQ2xhc3MoImUtLXVhLSIgKyBlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNldERldmljZU1vZGVEYXRhKCkgewogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kYm9keS5hdHRyKCJkYXRhLWVsZW1lbnRvci1kZXZpY2UtbW9kZSIsIHRoaXMuZ2V0Q3VycmVudERldmljZU1vZGUoKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBhZGRMaXN0ZW5lck9uY2UoZSwgdCwgbiwgbykgewogICAgICAgICAgICAgICAgaWYgKG8gfHwgKG8gPSB0aGlzLmVsZW1lbnRzLiR3aW5kb3cpLAogICAgICAgICAgICAgICAgdGhpcy5pc0VkaXRNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVtb3ZlTGlzdGVuZXJzKGUsIHQsIG8pLAogICAgICAgICAgICAgICAgICAgIG8gaW5zdGFuY2VvZiBqUXVlcnkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHQgKyAiLiIgKyBlOwogICAgICAgICAgICAgICAgICAgICAgICBvLm9uKGksIG4pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIG8ub24odCwgbiwgZSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgby5vbih0LCBuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVycyhlLCB0LCBuLCBvKSB7CiAgICAgICAgICAgICAgICBpZiAobyB8fCAobyA9IHRoaXMuZWxlbWVudHMuJHdpbmRvdyksCiAgICAgICAgICAgICAgICBvIGluc3RhbmNlb2YgalF1ZXJ5KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHQgKyAiLiIgKyBlOwogICAgICAgICAgICAgICAgICAgIG8ub2ZmKGksIG4pCiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICBvLm9mZih0LCBuLCBlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGRlYm91bmNlKGUsIHQpIHsKICAgICAgICAgICAgICAgIGxldCBuOwogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAsIGkgPSBhcmd1bWVudHMKICAgICAgICAgICAgICAgICAgICAgICwgcyA9ICFuOwogICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChuKSwKICAgICAgICAgICAgICAgICAgICBuID0gc2V0VGltZW91dCgoKCk9PnsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGUuYXBwbHkobywgaSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKSwgdCksCiAgICAgICAgICAgICAgICAgICAgcyAmJiBlLmFwcGx5KG8sIGkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgd2F5cG9pbnQoZSwgdCwgbikgewogICAgICAgICAgICAgICAgbiA9IGpRdWVyeS5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIG9mZnNldDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgIHRyaWdnZXJPbmNlOiAhMAogICAgICAgICAgICAgICAgfSwgbik7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5lbGVtZW50b3JXYXlwb2ludCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudCB8fCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAsIG8gPSB0LmFwcGx5KGUsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udHJpZ2dlck9uY2UgJiYgdGhpcy5kZXN0cm95ICYmIHRoaXMuZGVzdHJveSgpLAogICAgICAgICAgICAgICAgICAgIG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICksIG4pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXV0ZU1pZ3JhdGlvblRyYWNlcygpIHsKICAgICAgICAgICAgICAgIGpRdWVyeS5taWdyYXRlTXV0ZSA9ICEwLAogICAgICAgICAgICAgICAgalF1ZXJ5Lm1pZ3JhdGVUcmFjZSA9ICExCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW5pdE1vZHVsZXMoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gewogICAgICAgICAgICAgICAgICAgIHNoYXBlczogZi5kZWZhdWx0CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQudHJpZ2dlcigiZWxlbWVudG9yL21vZHVsZXMvaW5pdDpiZWZvcmUiKSwKICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLnRyaWdnZXIoImVsZW1lbnRvci9tb2R1bGVzL2luaXQvYmVmb3JlIiksCiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChlPT57CiAgICAgICAgICAgICAgICAgICAgbGV0W3Qsbl0gPSBlOwogICAgICAgICAgICAgICAgICAgIHRoaXMubW9kdWxlc0hhbmRsZXJzW3RdID0gbmV3IG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcG9wdWxhdGVBY3RpdmVCcmVha3BvaW50c0NvbmZpZygpIHsKICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLnJlc3BvbnNpdmUuYWN0aXZlQnJlYWtwb2ludHMgPSB7fSwKICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnLnJlc3BvbnNpdmUuYnJlYWtwb2ludHMpLmZvckVhY2goKGU9PnsKICAgICAgICAgICAgICAgICAgICBsZXRbdCxuXSA9IGU7CiAgICAgICAgICAgICAgICAgICAgbi5pc19lbmFibGVkICYmICh0aGlzLmNvbmZpZy5yZXNwb25zaXZlLmFjdGl2ZUJyZWFrcG9pbnRzW3RdID0gbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW5pdCgpIHsKICAgICAgICAgICAgICAgIHRoaXMuaG9va3MgPSBuZXcgXywKICAgICAgICAgICAgICAgIHRoaXMuYnJlYWtwb2ludHMgPSBuZXcgZy5kZWZhdWx0KHRoaXMuY29uZmlnLnJlc3BvbnNpdmUpLAogICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlID0gbmV3IHMuZGVmYXVsdCwKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHNIYW5kbGVyID0gbmV3IHkoalF1ZXJ5KSwKICAgICAgICAgICAgICAgIHRoaXMubW9kdWxlc0hhbmRsZXJzID0ge30sCiAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJBZ2VudENsYXNzZXMoKSwKICAgICAgICAgICAgICAgIHRoaXMuc2V0RGV2aWNlTW9kZURhdGEoKSwKICAgICAgICAgICAgICAgIHRoaXMuaW5pdERpYWxvZ3NNYW5hZ2VyKCksCiAgICAgICAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUoKSAmJiB0aGlzLm11dGVNaWdyYXRpb25UcmFjZXMoKSwKICAgICAgICAgICAgICAgIHAuZGVmYXVsdC5kaXNwYXRjaCh0aGlzLmVsZW1lbnRzLiR3aW5kb3csICJlbGVtZW50b3IvZnJvbnRlbmQvaW5pdCIpLAogICAgICAgICAgICAgICAgdGhpcy5pbml0TW9kdWxlcygpLAogICAgICAgICAgICAgICAgdGhpcy5pbml0T25SZWFkeUVsZW1lbnRzKCksCiAgICAgICAgICAgICAgICB0aGlzLmluaXRPblJlYWR5Q29tcG9uZW50cygpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgb25Eb2N1bWVudExvYWRlZCgpIHsKICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRzTWFuYWdlciA9IG5ldyBpLmRlZmF1bHQsCiAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoImNvbXBvbmVudHM6aW5pdCIpLAogICAgICAgICAgICAgICAgbmV3IGguZGVmYXVsdAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHdpbmRvdy5lbGVtZW50b3JGcm9udGVuZCA9IG5ldyBGcm9udGVuZCwKICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgfHwgalF1ZXJ5KCgoKT0+ZWxlbWVudG9yRnJvbnRlbmQuaW5pdCgpKSkKICAgIH0KICAgICwKICAgIDQwNTg6IChlLHQpPT57CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgY2xhc3MgQmFja2dyb3VuZFNsaWRlc2hvdyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuU3dpcGVyQmFzZSB7CiAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogewogICAgICAgICAgICAgICAgICAgICAgICBzd2lwZXJDb250YWluZXI6IGBlbGVtZW50b3ItYmFja2dyb3VuZC1zbGlkZXNob3cgJHtlbGVtZW50b3JGcm9udGVuZC5jb25maWcuc3dpcGVyQ2xhc3N9YCwKICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyV3JhcHBlcjogInN3aXBlci13cmFwcGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyU2xpZGU6ICJlbGVtZW50b3ItYmFja2dyb3VuZC1zbGlkZXNob3dfX3NsaWRlIHN3aXBlci1zbGlkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXBlclByZWxvYWRlcjogInN3aXBlci1sYXp5LXByZWxvYWRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlQmFja2dyb3VuZDogImVsZW1lbnRvci1iYWNrZ3JvdW5kLXNsaWRlc2hvd19fc2xpZGVfX2ltYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAga2VuQnVybnM6ICJlbGVtZW50b3Ita2VuLWJ1cm5zIiwKICAgICAgICAgICAgICAgICAgICAgICAga2VuQnVybnNBY3RpdmU6ICJlbGVtZW50b3Ita2VuLWJ1cm5zLS1hY3RpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICBrZW5CdXJuc0luOiAiZWxlbWVudG9yLWtlbi1idXJucy0taW4iLAogICAgICAgICAgICAgICAgICAgICAgICBrZW5CdXJuc091dDogImVsZW1lbnRvci1rZW4tYnVybnMtLW91dCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0U3dpcGVyT3B0aW9ucygpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpCiAgICAgICAgICAgICAgICAgICwgdCA9IHsKICAgICAgICAgICAgICAgICAgICBncmFiQ3Vyc29yOiAhMSwKICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLAogICAgICAgICAgICAgICAgICAgIHNsaWRlc1Blckdyb3VwOiAxLAogICAgICAgICAgICAgICAgICAgIGxvb3A6ICJ5ZXMiID09PSBlLmJhY2tncm91bmRfc2xpZGVzaG93X2xvb3AsCiAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IGUuYmFja2dyb3VuZF9zbGlkZXNob3dfdHJhbnNpdGlvbl9kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogewogICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogZS5iYWNrZ3JvdW5kX3NsaWRlc2hvd19zbGlkZV9kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RvcE9uTGFzdFNsaWRlOiAhZS5iYWNrZ3JvdW5kX3NsaWRlc2hvd19sb29wCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoYW5kbGVFbGVtZW50b3JCcmVha3BvaW50czogITAsCiAgICAgICAgICAgICAgICAgICAgb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVDaGFuZ2U6ICgpPT57CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmJhY2tncm91bmRfc2xpZGVzaG93X2tlbl9idXJucyAmJiB0aGlzLmhhbmRsZUtlbkJ1cm5zKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCJ5ZXMiID09PSBlLmJhY2tncm91bmRfc2xpZGVzaG93X2xvb3AgJiYgKHQubG9vcGVkU2xpZGVzID0gdGhpcy5nZXRTbGlkZXNDb3VudCgpKSwKICAgICAgICAgICAgICAgIGUuYmFja2dyb3VuZF9zbGlkZXNob3dfc2xpZGVfdHJhbnNpdGlvbikgewogICAgICAgICAgICAgICAgY2FzZSAiZmFkZSI6CiAgICAgICAgICAgICAgICAgICAgdC5lZmZlY3QgPSAiZmFkZSIsCiAgICAgICAgICAgICAgICAgICAgdC5mYWRlRWZmZWN0ID0gewogICAgICAgICAgICAgICAgICAgICAgICBjcm9zc0ZhZGU6ICEwCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInNsaWRlX2Rvd24iOgogICAgICAgICAgICAgICAgICAgIHQuYXV0b3BsYXkucmV2ZXJzZURpcmVjdGlvbiA9ICEwLAogICAgICAgICAgICAgICAgICAgIHQuZGlyZWN0aW9uID0gInZlcnRpY2FsIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInNsaWRlX3VwIjoKICAgICAgICAgICAgICAgICAgICB0LmRpcmVjdGlvbiA9ICJ2ZXJ0aWNhbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAieWVzIiA9PT0gZS5iYWNrZ3JvdW5kX3NsaWRlc2hvd19sYXp5bG9hZCAmJiAodC5sYXp5ID0gewogICAgICAgICAgICAgICAgICAgIGxvYWRQcmV2TmV4dDogITAsCiAgICAgICAgICAgICAgICAgICAgbG9hZFByZXZOZXh0QW1vdW50OiAxCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgfQogICAgICAgICAgICBidWlsZFN3aXBlckVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMiKQogICAgICAgICAgICAgICAgICAsIHQgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpCiAgICAgICAgICAgICAgICAgICwgbiA9ICJzbGlkZV9sZWZ0IiA9PT0gdC5iYWNrZ3JvdW5kX3NsaWRlc2hvd19zbGlkZV90cmFuc2l0aW9uID8gImx0ciIgOiAicnRsIgogICAgICAgICAgICAgICAgICAsIG8gPSBqUXVlcnkoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLnN3aXBlckNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICBkaXI6IG4KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICwgaSA9IGpRdWVyeSgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGUuc3dpcGVyV3JhcHBlcgogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgLCBzID0gdC5iYWNrZ3JvdW5kX3NsaWRlc2hvd19rZW5fYnVybnMKICAgICAgICAgICAgICAgICAgLCByID0gInllcyIgPT09IHQuYmFja2dyb3VuZF9zbGlkZXNob3dfbGF6eWxvYWQ7CiAgICAgICAgICAgICAgICBsZXQgYSA9IGUuc2xpZGVCYWNrZ3JvdW5kOwogICAgICAgICAgICAgICAgaWYgKHMpIHsKICAgICAgICAgICAgICAgICAgICBhICs9ICIgIiArIGUua2VuQnVybnM7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9ICJpbiIgPT09IHQuYmFja2dyb3VuZF9zbGlkZXNob3dfa2VuX2J1cm5zX3pvb21fZGlyZWN0aW9uID8gImtlbkJ1cm5zSW4iIDogImtlbkJ1cm5zT3V0IjsKICAgICAgICAgICAgICAgICAgICBhICs9ICIgIiArIGVbbl0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHIgJiYgKGEgKz0gIiBzd2lwZXItbGF6eSIpLAogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kc2xpZGVzID0galF1ZXJ5KCksCiAgICAgICAgICAgICAgICB0LmJhY2tncm91bmRfc2xpZGVzaG93X2dhbGxlcnkuZm9yRWFjaCgodD0+ewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBqUXVlcnkoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogZS5zd2lwZXJTbGlkZQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGxldCBvOwogICAgICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBqUXVlcnkoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGUuc3dpcGVyUHJlbG9hZGVyCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBvID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEtYmFja2dyb3VuZCI6IHQudXJsCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBvLmFwcGVuZChuKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBvID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIicgKyB0LnVybCArICciKTsnCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIG4uYXBwZW5kKG8pLAogICAgICAgICAgICAgICAgICAgIGkuYXBwZW5kKG4pLAogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJHNsaWRlcyA9IHRoaXMuZWxlbWVudHMuJHNsaWRlcy5hZGQobikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpLAogICAgICAgICAgICAgICAgby5hcHBlbmQoaSksCiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LnByZXBlbmQobyksCiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kU2xpZGVTaG93Q29udGFpbmVyID0gbwogICAgICAgICAgICB9CiAgICAgICAgICAgIGFzeW5jIGluaXRTbGlkZXIoKSB7CiAgICAgICAgICAgICAgICBpZiAoMSA+PSB0aGlzLmdldFNsaWRlc0NvdW50KCkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCkKICAgICAgICAgICAgICAgICAgLCB0ID0gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuc3dpcGVyOwogICAgICAgICAgICAgICAgdGhpcy5zd2lwZXIgPSBhd2FpdCBuZXcgdCh0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kU2xpZGVTaG93Q29udGFpbmVyLHRoaXMuZ2V0U3dpcGVyT3B0aW9ucygpKSwKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRTbGlkZVNob3dDb250YWluZXIuZGF0YSgic3dpcGVyIiwgdGhpcy5zd2lwZXIpLAogICAgICAgICAgICAgICAgZS5iYWNrZ3JvdW5kX3NsaWRlc2hvd19rZW5fYnVybnMgJiYgdGhpcy5oYW5kbGVLZW5CdXJucygpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYWN0aXZhdGUoKSB7CiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkU3dpcGVyRWxlbWVudHMoKSwKICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWRlcigpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGVhY3RpdmF0ZSgpIHsKICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyICYmICh0aGlzLnN3aXBlci5kZXN0cm95KCksCiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kU2xpZGVTaG93Q29udGFpbmVyLnJlbW92ZSgpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJ1bigpIHsKICAgICAgICAgICAgICAgICJzbGlkZXNob3ciID09PSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygiYmFja2dyb3VuZF9iYWNrZ3JvdW5kIikgPyB0aGlzLmFjdGl2YXRlKCkgOiB0aGlzLmRlYWN0aXZhdGUoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCgpLAogICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImJhY2tncm91bmRfc2xpZGVzaG93X2dhbGxlcnkiKSAmJiB0aGlzLnJ1bigpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgb25EZXN0cm95KCkgewogICAgICAgICAgICAgICAgc3VwZXIub25EZXN0cm95KCksCiAgICAgICAgICAgICAgICB0aGlzLmRlYWN0aXZhdGUoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAiYmFja2dyb3VuZF9iYWNrZ3JvdW5kIiA9PT0gZSAmJiB0aGlzLnJ1bigpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gQmFja2dyb3VuZFNsaWRlc2hvdwogICAgfQogICAgLAogICAgOTUwMTogKGUsdCk9PnsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICBjbGFzcyBCYWNrZ3JvdW5kVmlkZW8gZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kVmlkZW9Db250YWluZXI6ICIuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZFZpZGVvRW1iZWQ6ICIuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tZW1iZWQiLAogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQ6ICIuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8taG9zdGVkIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIikKICAgICAgICAgICAgICAgICAgLCB0ID0gewogICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kVmlkZW9Db250YWluZXI6IHRoaXMuJGVsZW1lbnQuZmluZChlLmJhY2tncm91bmRWaWRlb0NvbnRhaW5lcikKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gdC4kYmFja2dyb3VuZFZpZGVvRW1iZWQgPSB0LiRiYWNrZ3JvdW5kVmlkZW9Db250YWluZXIuY2hpbGRyZW4oZS5iYWNrZ3JvdW5kVmlkZW9FbWJlZCksCiAgICAgICAgICAgICAgICB0LiRiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQgPSB0LiRiYWNrZ3JvdW5kVmlkZW9Db250YWluZXIuY2hpbGRyZW4oZS5iYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQpLAogICAgICAgICAgICAgICAgdAogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhbGNWaWRlb3NTaXplKGUpIHsKICAgICAgICAgICAgICAgIGxldCB0ID0gIjE2OjkiOwogICAgICAgICAgICAgICAgInZpbWVvIiA9PT0gdGhpcy52aWRlb1R5cGUgJiYgKHQgPSBlWzBdLndpZHRoICsgIjoiICsgZVswXS5oZWlnaHQpOwogICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRWaWRlb0NvbnRhaW5lci5vdXRlcldpZHRoKCkKICAgICAgICAgICAgICAgICAgLCBvID0gdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyLm91dGVySGVpZ2h0KCkKICAgICAgICAgICAgICAgICAgLCBpID0gdC5zcGxpdCgiOiIpCiAgICAgICAgICAgICAgICAgICwgcyA9IGlbMF0gLyBpWzFdCiAgICAgICAgICAgICAgICAgICwgciA9IG4gLyBvID4gczsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHIgPyBuIDogbyAqIHMsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiByID8gbiAvIHMgOiBvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2hhbmdlVmlkZW9TaXplKCkgewogICAgICAgICAgICAgICAgaWYgKCJob3N0ZWQiICE9PSB0aGlzLnZpZGVvVHlwZSAmJiAhdGhpcy5wbGF5ZXIpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgbGV0IGU7CiAgICAgICAgICAgICAgICBpZiAoInlvdXR1YmUiID09PSB0aGlzLnZpZGVvVHlwZSA/IGUgPSBqUXVlcnkodGhpcy5wbGF5ZXIuZ2V0SWZyYW1lKCkpIDogInZpbWVvIiA9PT0gdGhpcy52aWRlb1R5cGUgPyBlID0galF1ZXJ5KHRoaXMucGxheWVyLmVsZW1lbnQpIDogImhvc3RlZCIgPT09IHRoaXMudmlkZW9UeXBlICYmIChlID0gdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvSG9zdGVkKSwKICAgICAgICAgICAgICAgICFlKQogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmNhbGNWaWRlb3NTaXplKGUpOwogICAgICAgICAgICAgICAgZS53aWR0aCh0LndpZHRoKS5oZWlnaHQodC5oZWlnaHQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RhcnRWaWRlb0xvb3AoZSkgewogICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBsYXllci5nZXRJZnJhbWUoKS5jb250ZW50V2luZG93KQogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpCiAgICAgICAgICAgICAgICAgICwgbiA9IHQuYmFja2dyb3VuZF92aWRlb19zdGFydCB8fCAwCiAgICAgICAgICAgICAgICAgICwgbyA9IHQuYmFja2dyb3VuZF92aWRlb19lbmQ7CiAgICAgICAgICAgICAgICBpZiAoIXQuYmFja2dyb3VuZF9wbGF5X29uY2UgfHwgZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBsYXllci5zZWVrVG8obiksCiAgICAgICAgICAgICAgICAgICAgbykgewogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgoKT0+ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFZpZGVvTG9vcCghMSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICApLCAxZTMgKiAobyAtIG4gKyAxKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXllci5zdG9wVmlkZW8oKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHByZXBhcmVWaW1lb1ZpZGVvKGUsIHQpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpCiAgICAgICAgICAgICAgICAgICwgbyA9IHsKICAgICAgICAgICAgICAgICAgICB1cmw6IHQsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRWaWRlb0NvbnRhaW5lci5vdXRlcldpZHRoKCkud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXk6ICEwLAogICAgICAgICAgICAgICAgICAgIGxvb3A6ICFuLmJhY2tncm91bmRfcGxheV9vbmNlLAogICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50OiAhMCwKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAhMCwKICAgICAgICAgICAgICAgICAgICBtdXRlZDogITAKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBuLmJhY2tncm91bmRfcHJpdmFjeV9tb2RlICYmIChvLmRudCA9ICEwKSwKICAgICAgICAgICAgICAgIHRoaXMucGxheWVyID0gbmV3IGUuUGxheWVyKHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRWaWRlb0NvbnRhaW5lcixvKSwKICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmltZW9TdGFydEVuZFRpbWVzKG4pLAogICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIucmVhZHkoKS50aGVuKCgoKT0+ewogICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzLnBsYXllci5lbGVtZW50KS5hZGRDbGFzcygiZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tZW1iZWQiKSwKICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVZpZGVvU2l6ZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGhhbmRsZVZpbWVvU3RhcnRFbmRUaW1lcyhlKSB7CiAgICAgICAgICAgICAgICBlLmJhY2tncm91bmRfdmlkZW9fc3RhcnQgJiYgdGhpcy5wbGF5ZXIub24oInBsYXkiLCAodD0+ewogICAgICAgICAgICAgICAgICAgIDAgPT09IHQuc2Vjb25kcyAmJiB0aGlzLnBsYXllci5zZXRDdXJyZW50VGltZShlLmJhY2tncm91bmRfdmlkZW9fc3RhcnQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApKSwKICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLm9uKCJ0aW1ldXBkYXRlIiwgKHQ9PnsKICAgICAgICAgICAgICAgICAgICBlLmJhY2tncm91bmRfdmlkZW9fZW5kICYmIGUuYmFja2dyb3VuZF92aWRlb19lbmQgPCB0LnNlY29uZHMgJiYgKGUuYmFja2dyb3VuZF9wbGF5X29uY2UgPyB0aGlzLnBsYXllci5wYXVzZSgpIDogdGhpcy5wbGF5ZXIuc2V0Q3VycmVudFRpbWUoZS5iYWNrZ3JvdW5kX3ZpZGVvX3N0YXJ0KSksCiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIuZ2V0RHVyYXRpb24oKS50aGVuKChuPT57CiAgICAgICAgICAgICAgICAgICAgICAgIGUuYmFja2dyb3VuZF92aWRlb19zdGFydCAmJiAhZS5iYWNrZ3JvdW5kX3ZpZGVvX2VuZCAmJiB0LnNlY29uZHMgPiBuIC0gLjUgJiYgdGhpcy5wbGF5ZXIuc2V0Q3VycmVudFRpbWUoZS5iYWNrZ3JvdW5kX3ZpZGVvX3N0YXJ0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmVwYXJlWVRWaWRlbyhlLCB0KSB7CiAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyCiAgICAgICAgICAgICAgICAgICwgbyA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICBsZXQgaSA9IGUuUGxheWVyU3RhdGUuUExBWUlORzsKICAgICAgICAgICAgICAgIHdpbmRvdy5jaHJvbWUgJiYgKGkgPSBlLlBsYXllclN0YXRlLlVOU1RBUlRFRCk7CiAgICAgICAgICAgICAgICBjb25zdCBzID0gewogICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IHQsCiAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVhZHk6ICgpPT57CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXllci5tdXRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVZpZGVvU2l6ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFZpZGVvTG9vcCghMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXllci5wbGF5VmlkZW8oKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICwKICAgICAgICAgICAgICAgICAgICAgICAgb25TdGF0ZUNoYW5nZTogdD0+ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnJlbW92ZUNsYXNzKCJlbGVtZW50b3ItaW52aXNpYmxlIGVsZW1lbnRvci1sb2FkaW5nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGUuUGxheWVyU3RhdGUuRU5ERUQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5wbGF5ZXIuc2Vla1RvICYmIHRoaXMucGxheWVyLnNlZWtUbyhvLmJhY2tncm91bmRfdmlkZW9fc3RhcnQgfHwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5iYWNrZ3JvdW5kX3BsYXlfb25jZSAmJiB0aGlzLnBsYXllci5kZXN0cm95KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcGxheWVyVmFyczogewogICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sczogMCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBwbGF5c2lubGluZTogMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBvLmJhY2tncm91bmRfcHJpdmFjeV9tb2RlICYmIChzLmhvc3QgPSAiaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20iLAogICAgICAgICAgICAgICAgcy5vcmlnaW4gPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpLAogICAgICAgICAgICAgICAgbi5hZGRDbGFzcygiZWxlbWVudG9yLWxvYWRpbmcgZWxlbWVudG9yLWludmlzaWJsZSIpLAogICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIgPSBuZXcgZS5QbGF5ZXIodGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvRW1iZWRbMF0scykKICAgICAgICAgICAgfQogICAgICAgICAgICBhY3RpdmF0ZSgpIHsKICAgICAgICAgICAgICAgIGxldCBlLCB0ID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImJhY2tncm91bmRfdmlkZW9fbGluayIpOwogICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJiYWNrZ3JvdW5kX3BsYXlfb25jZSIpOwogICAgICAgICAgICAgICAgaWYgKC0xICE9PSB0LmluZGV4T2YoInZpbWVvLmNvbSIpID8gKHRoaXMudmlkZW9UeXBlID0gInZpbWVvIiwKICAgICAgICAgICAgICAgIHRoaXMuYXBpUHJvdmlkZXIgPSBlbGVtZW50b3JGcm9udGVuZC51dGlscy52aW1lbykgOiB0Lm1hdGNoKC9eKD86aHR0cHM/OlwvXC8pPyg/Ond3d1wuKT8oPzptXC4pPyg/OnlvdXR1XC5iZVwvfHlvdXR1YmVcLmNvbSkvKSAmJiAodGhpcy52aWRlb1R5cGUgPSAieW91dHViZSIsCiAgICAgICAgICAgICAgICB0aGlzLmFwaVByb3ZpZGVyID0gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMueW91dHViZSksCiAgICAgICAgICAgICAgICB0aGlzLmFwaVByb3ZpZGVyKQogICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLmFwaVByb3ZpZGVyLmdldFZpZGVvSURGcm9tVVJMKHQpLAogICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpUHJvdmlkZXIub25BcGlSZWFkeSgobj0+ewogICAgICAgICAgICAgICAgICAgICAgICAieW91dHViZSIgPT09IHRoaXMudmlkZW9UeXBlICYmIHRoaXMucHJlcGFyZVlUVmlkZW8obiwgZSksCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aW1lbyIgPT09IHRoaXMudmlkZW9UeXBlICYmIHRoaXMucHJlcGFyZVZpbWVvVmlkZW8obiwgdCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZGVvVHlwZSA9ICJob3N0ZWQiOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygiYmFja2dyb3VuZF92aWRlb19zdGFydCIpCiAgICAgICAgICAgICAgICAgICAgICAsIG8gPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygiYmFja2dyb3VuZF92aWRlb19lbmQiKTsKICAgICAgICAgICAgICAgICAgICAoZSB8fCBvKSAmJiAodCArPSAiI3Q9IiArIChlIHx8IDApICsgKG8gPyAiLCIgKyBvIDogIiIpKSwKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQuYXR0cigic3JjIiwgdCkub25lKCJjYW5wbGF5IiwgdGhpcy5jaGFuZ2VWaWRlb1NpemUuYmluZCh0aGlzKSksCiAgICAgICAgICAgICAgICAgICAgbiAmJiB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQub24oImVuZGVkIiwgKCgpPT57CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRWaWRlb0hvc3RlZC5oaWRlKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub24oInJlc2l6ZSBlbGVtZW50b3IvYmctdmlkZW8vcmVjYWxjIiwgdGhpcy5jaGFuZ2VWaWRlb1NpemUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGVhY3RpdmF0ZSgpIHsKICAgICAgICAgICAgICAgICJ5b3V0dWJlIiA9PT0gdGhpcy52aWRlb1R5cGUgJiYgdGhpcy5wbGF5ZXIuZ2V0SWZyYW1lKCkgfHwgInZpbWVvIiA9PT0gdGhpcy52aWRlb1R5cGUgPyB0aGlzLnBsYXllci5kZXN0cm95KCkgOiB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQucmVtb3ZlQXR0cigic3JjIikub2ZmKCJlbmRlZCIpLAogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJHdpbmRvdy5vZmYoInJlc2l6ZSIsIHRoaXMuY2hhbmdlVmlkZW9TaXplKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJ1bigpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgKGUuYmFja2dyb3VuZF9wbGF5X29uX21vYmlsZSB8fCAibW9iaWxlIiAhPT0gZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKSkgJiYgKCJ2aWRlbyIgPT09IGUuYmFja2dyb3VuZF9iYWNrZ3JvdW5kICYmIGUuYmFja2dyb3VuZF92aWRlb19saW5rID8gdGhpcy5hY3RpdmF0ZSgpIDogdGhpcy5kZWFjdGl2YXRlKCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVZpZGVvU2l6ZSA9IHRoaXMuY2hhbmdlVmlkZW9TaXplLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICB0aGlzLnJ1bigpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICJiYWNrZ3JvdW5kX2JhY2tncm91bmQiID09PSBlICYmIHRoaXMucnVuKCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0LmRlZmF1bHQgPSBCYWNrZ3JvdW5kVmlkZW8KICAgIH0KICAgICwKICAgIDg3MDQ6IChlLHQsbik9PnsKICAgICAgICB2YXIgbyA9IG4oMzIwMyk7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgdmFyIGkgPSBvKG4oNDA1OCkpCiAgICAgICAgICAsIHMgPSBvKG4oOTUwMSkpCiAgICAgICAgICAsIHIgPSBbaS5kZWZhdWx0LCBzLmRlZmF1bHRdOwogICAgICAgIHQuZGVmYXVsdCA9IHIKICAgIH0KICAgICwKICAgIDc1Mzc6IChlLHQsbik9PnsKICAgICAgICB2YXIgbyA9IG4oMzIwMyk7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgdmFyIGkgPSBbbyhuKDQwNTgpKS5kZWZhdWx0XTsKICAgICAgICB0LmRlZmF1bHQgPSBpCiAgICB9CiAgICAsCiAgICA0OTg1OiAoZSx0LG4pPT57CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgdmFyIG8gPSBbKCk9Pm4uZSg0MTMpLnRoZW4obi5iaW5kKG4sIDI5MjkpKSwgKCk9Pm4uZSg0MTMpLnRoZW4obi5iaW5kKG4sIDM0MykpLCAoKT0+bi5lKDQxMykudGhlbihuLmJpbmQobiwgODA3MykpXTsKICAgICAgICB0LmRlZmF1bHQgPSBvCiAgICB9CiAgICAsCiAgICA2Mzk3OiAoZSx0KT0+ewogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIGNsYXNzIEdsb2JhbEhhbmRsZXIgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICBnZXRXaWRnZXRUeXBlKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJnbG9iYWwiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYW5pbWF0ZSgpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLiRlbGVtZW50CiAgICAgICAgICAgICAgICAgICwgdCA9IHRoaXMuZ2V0QW5pbWF0aW9uKCk7CiAgICAgICAgICAgICAgICBpZiAoIm5vbmUiID09PSB0KQogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIGUucmVtb3ZlQ2xhc3MoImVsZW1lbnRvci1pbnZpc2libGUiKTsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpCiAgICAgICAgICAgICAgICAgICwgbyA9IG4uX2FuaW1hdGlvbl9kZWxheSB8fCBuLmFuaW1hdGlvbl9kZWxheSB8fCAwOwogICAgICAgICAgICAgICAgZS5yZW1vdmVDbGFzcyh0KSwKICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEFuaW1hdGlvbiAmJiBlLnJlbW92ZUNsYXNzKHRoaXMuY3VycmVudEFuaW1hdGlvbiksCiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBbmltYXRpb24gPSB0LAogICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKCk9PnsKICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUNsYXNzKCJlbGVtZW50b3ItaW52aXNpYmxlIikuYWRkQ2xhc3MoImFuaW1hdGVkICIgKyB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSwgbykKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRBbmltYXRpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50RGV2aWNlU2V0dGluZygiYW5pbWF0aW9uIikgfHwgdGhpcy5nZXRDdXJyZW50RGV2aWNlU2V0dGluZygiX2FuaW1hdGlvbiIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgaWYgKHN1cGVyLm9uSW5pdCguLi5hcmd1bWVudHMpLAogICAgICAgICAgICAgICAgdGhpcy5nZXRBbmltYXRpb24oKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBlbGVtZW50b3JNb2R1bGVzLnV0aWxzLlNjcm9sbC5zY3JvbGxPYnNlcnZlcih7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiB0PT57CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmlzSW5WaWV3cG9ydCAmJiAodGhpcy5hbmltYXRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnVub2JzZXJ2ZSh0aGlzLiRlbGVtZW50WzBdKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGUub2JzZXJ2ZSh0aGlzLiRlbGVtZW50WzBdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAvXl8/YW5pbWF0aW9uLy50ZXN0KGUpICYmIHRoaXMuYW5pbWF0ZSgpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gZT0+ewogICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIuYWRkSGFuZGxlcihHbG9iYWxIYW5kbGVyLCB7CiAgICAgICAgICAgICAgICAkZWxlbWVudDogZQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDM1NTogKGUsdCk9PnsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICBjbGFzcyBIYW5kbGVzUG9zaXRpb24gZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICBpc0FjdGl2ZSgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkKICAgICAgICAgICAgfQogICAgICAgICAgICBpc0ZpcnN0U2VjdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50WzBdID09PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZWxlbWVudG9yLWVkaXQtbW9kZSAuZWxlbWVudG9yLXRvcC1zZWN0aW9uIikKICAgICAgICAgICAgfQogICAgICAgICAgICBpc092ZXJmbG93SGlkZGVuKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJoaWRkZW4iID09PSB0aGlzLiRlbGVtZW50LmNzcygib3ZlcmZsb3ciKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldE9mZnNldCgpIHsKICAgICAgICAgICAgICAgIGlmICgiYm9keSIgPT09IGVsZW1lbnRvci5jb25maWcuZG9jdW1lbnQuY29udGFpbmVyKQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50Lm9mZnNldCgpLnRvcDsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBqUXVlcnkoZWxlbWVudG9yLmNvbmZpZy5kb2N1bWVudC5jb250YWluZXIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnQub2Zmc2V0KCkudG9wIC0gZS5vZmZzZXQoKS50b3AKICAgICAgICAgICAgfQogICAgICAgICAgICBzZXRIYW5kbGVzUG9zaXRpb24oKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yLmRvY3VtZW50cy5nZXRDdXJyZW50KCk7CiAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUuY29udGFpbmVyLmlzRWRpdGFibGUoKSkKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gImVsZW1lbnRvci1zZWN0aW9uLS1oYW5kbGVzLWluc2lkZSI7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudG9yLnNldHRpbmdzLnBhZ2UubW9kZWwuYXR0cmlidXRlcy5zY3JvbGxfc25hcCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCB0aGlzLiRlbGVtZW50LmFkZENsYXNzKHQpOwogICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuaXNPdmVyZmxvd0hpZGRlbigpOwogICAgICAgICAgICAgICAgaWYgKCFuICYmICF0aGlzLmlzRmlyc3RTZWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgY29uc3QgbyA9IG4gPyAwIDogdGhpcy5nZXRPZmZzZXQoKTsKICAgICAgICAgICAgICAgIGlmIChvIDwgMjUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmFkZENsYXNzKHQpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLiRlbGVtZW50LmZpbmQoIj4gLmVsZW1lbnRvci1lbGVtZW50LW92ZXJsYXkgPiAuZWxlbWVudG9yLWVkaXRvci1zZWN0aW9uLXNldHRpbmdzIik7CiAgICAgICAgICAgICAgICAgICAgbyA8IC01ID8gZS5jc3MoInRvcCIsIC1vKSA6IGUuY3NzKCJ0b3AiLCAiIikKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3ModCkKICAgICAgICAgICAgfQogICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlKCkgJiYgKHRoaXMuc2V0SGFuZGxlc1Bvc2l0aW9uKCksCiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50Lm9uKCJtb3VzZWVudGVyIiwgdGhpcy5zZXRIYW5kbGVzUG9zaXRpb24uYmluZCh0aGlzKSkpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gSGFuZGxlc1Bvc2l0aW9uCiAgICB9CiAgICAsCiAgICAzMzg0OiAoZSx0KT0+ewogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIGNsYXNzIFNoYXBlcyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogIj4gLmVsZW1lbnRvci1zaGFwZS0lcyIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHN2Z1VSTDogZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnVybHMuYXNzZXRzICsgInNoYXBlcy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHt9CiAgICAgICAgICAgICAgICAgICwgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUuJHRvcENvbnRhaW5lciA9IHRoaXMuJGVsZW1lbnQuZmluZCh0LmNvbnRhaW5lci5yZXBsYWNlKCIlcyIsICJ0b3AiKSksCiAgICAgICAgICAgICAgICBlLiRib3R0b21Db250YWluZXIgPSB0aGlzLiRlbGVtZW50LmZpbmQodC5jb250YWluZXIucmVwbGFjZSgiJXMiLCAiYm90dG9tIikpLAogICAgICAgICAgICAgICAgZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzQWN0aXZlKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldFN2Z1VSTChlLCB0KSB7CiAgICAgICAgICAgICAgICBsZXQgbiA9IHRoaXMuZ2V0U2V0dGluZ3MoInN2Z1VSTCIpICsgdCArICIuc3ZnIjsKICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3IuY29uZmlnLmFkZGl0aW9uYWxfc2hhcGVzICYmIGUgaW4gZWxlbWVudG9yLmNvbmZpZy5hZGRpdGlvbmFsX3NoYXBlcyAmJiAobiA9IGVsZW1lbnRvci5jb25maWcuYWRkaXRpb25hbF9zaGFwZXNbZV0sCiAgICAgICAgICAgICAgICAtMSA8IHQuaW5kZXhPZigiLW5lZ2F0aXZlIikgJiYgKG4gPSBuLnJlcGxhY2UoIi5zdmciLCAiLW5lZ2F0aXZlLnN2ZyIpKSksCiAgICAgICAgICAgICAgICBuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnVpbGRTVkcoZSkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9ICJzaGFwZV9kaXZpZGVyXyIgKyBlCiAgICAgICAgICAgICAgICAgICwgbiA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKHQpCiAgICAgICAgICAgICAgICAgICwgbyA9IHRoaXMuZWxlbWVudHNbIiQiICsgZSArICJDb250YWluZXIiXTsKICAgICAgICAgICAgICAgIGlmIChvLmF0dHIoImRhdGEtc2hhcGUiLCBuKSwKICAgICAgICAgICAgICAgICFuKQogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIG8uZW1wdHkoKTsKICAgICAgICAgICAgICAgIGxldCBpID0gbjsKICAgICAgICAgICAgICAgIHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKHQgKyAiX25lZ2F0aXZlIikgJiYgKGkgKz0gIi1uZWdhdGl2ZSIpOwogICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuZ2V0U3ZnVVJMKG4sIGkpOwogICAgICAgICAgICAgICAgalF1ZXJ5LmdldChzLCAoZT0+ewogICAgICAgICAgICAgICAgICAgIG8uZW1wdHkoKS5hcHBlbmQoZS5jaGlsZE5vZGVzWzBdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSksCiAgICAgICAgICAgICAgICB0aGlzLnNldE5lZ2F0aXZlKGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0TmVnYXRpdmUoZSkgewogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50c1siJCIgKyBlICsgIkNvbnRhaW5lciJdLmF0dHIoImRhdGEtbmVnYXRpdmUiLCAhIXRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJzaGFwZV9kaXZpZGVyXyIgKyBlICsgIl9uZWdhdGl2ZSIpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUodGhpcy5nZXRTZXR0aW5ncygpKSAmJiAoc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICBbInRvcCIsICJib3R0b20iXS5mb3JFYWNoKChlPT57CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoInNoYXBlX2RpdmlkZXJfIiArIGUpICYmIHRoaXMuYnVpbGRTVkcoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5tYXRjaCgvXnNoYXBlX2RpdmlkZXJfKHRvcHxib3R0b20pJC8pOwogICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgdGhpcy5idWlsZFNWRyh0WzFdKTsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlLm1hdGNoKC9ec2hhcGVfZGl2aWRlcl8odG9wfGJvdHRvbSlfbmVnYXRpdmUkLyk7CiAgICAgICAgICAgICAgICBuICYmICh0aGlzLmJ1aWxkU1ZHKG5bMV0pLAogICAgICAgICAgICAgICAgdGhpcy5zZXROZWdhdGl2ZShuWzFdKSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0LmRlZmF1bHQgPSBTaGFwZXMKICAgIH0KICAgICwKICAgIDI4MDQ6IChlLHQpPT57CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgY2xhc3MgU3RyZXRjaGVkU2VjdGlvbiBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuU3RyZXRjaGVkRWxlbWVudCB7CiAgICAgICAgICAgIGdldFN0cmV0Y2hlZENsYXNzKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJlbGVtZW50b3Itc2VjdGlvbi1zdHJldGNoZWQiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0U3RyZXRjaFNldHRpbmdOYW1lKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJzdHJldGNoX3NlY3Rpb24iCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0U3RyZXRjaEFjdGl2ZVZhbHVlKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJzZWN0aW9uLXN0cmV0Y2hlZCIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0LmRlZmF1bHQgPSBTdHJldGNoZWRTZWN0aW9uCiAgICB9CiAgICAsCiAgICAzMzQ2OiAoZSx0LG4pPT57CiAgICAgICAgdmFyIG8gPSBuKDYwMjgpOwogICAgICAgIGUuZXhwb3J0cyA9IGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZS5leHRlbmQoewogICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3M6ICgpPT4oewogICAgICAgICAgICAgICAgc2Nyb2xsRHVyYXRpb246IDUwMCwKICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgIGxpbmtzOiAnYVtocmVmKj0iIyJdJywKICAgICAgICAgICAgICAgICAgICB0YXJnZXRzOiAiLmVsZW1lbnRvci1lbGVtZW50LCAuZWxlbWVudG9yLW1lbnUtYW5jaG9yIiwKICAgICAgICAgICAgICAgICAgICBzY3JvbGxhYmxlOiAoMCwKICAgICAgICAgICAgICAgICAgICBvLmlzU2Nyb2xsU25hcEFjdGl2ZSkoKSA/ICJib2R5IiA6ICJodG1sLCBib2R5IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwKICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAkc2Nyb2xsYWJsZTogalF1ZXJ5KHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLnNjcm9sbGFibGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kZG9jdW1lbnQub24oImNsaWNrIiwgdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLmxpbmtzIiksIHRoaXMuaGFuZGxlQW5jaG9yTGlua3MpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhhbmRsZUFuY2hvckxpbmtzKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBuID0gZS5jdXJyZW50VGFyZ2V0LCBpID0gbG9jYXRpb24ucGF0aG5hbWUgPT09IG4ucGF0aG5hbWU7CiAgICAgICAgICAgICAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09IG4uaG9zdG5hbWUgJiYgaSAmJiAhKG4uaGFzaC5sZW5ndGggPCAyKSkgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBqUXVlcnkobi5oYXNoKS5maWx0ZXIodGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLnRhcmdldHMiKSkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0Lm9mZnNldCgpLnRvcAogICAgICAgICAgICAgICAgICAgICAgICAgICwgciA9IGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3cEFkbWluQmFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgLCBhID0galF1ZXJ5KCIuZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXN0aWNreS0tYWN0aXZlOnZpc2libGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgci5sZW5ndGggPiAwICYmIChzIC09IHIuaGVpZ2h0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICBhLmxlbmd0aCA+IDAgJiYgKHMgLT0gTWF0aC5tYXguYXBwbHkobnVsbCwgYS5tYXAoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeSh0aGlzKS5vdXRlckhlaWdodCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgKSkuZ2V0KCkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuYXBwbHlGaWx0ZXJzKCJmcm9udGVuZC9oYW5kbGVycy9tZW51X2FuY2hvci9zY3JvbGxfdG9wX2Rpc3RhbmNlIiwgcyksCiAgICAgICAgICAgICAgICAgICAgICAgICgwLAogICAgICAgICAgICAgICAgICAgICAgICBvLmlzU2Nyb2xsU25hcEFjdGl2ZSkoKSAmJiBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kYm9keS5jc3MoInNjcm9sbC1zbmFwLXR5cGUiLCAibm9uZSIpLAogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRzY3JvbGxhYmxlLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZ2V0U2V0dGluZ3MoInNjcm9sbER1cmF0aW9uIiksICJsaW5lYXIiLCAoKCk9PnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pc1Njcm9sbFNuYXBBY3RpdmUpKCkgJiYgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGJvZHkuY3NzKCJzY3JvbGwtc25hcC10eXBlIiwgIiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZS5wcm90b3R5cGUub25Jbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9CiAgICAsCiAgICA2ODY2OiAoZSx0KT0+ewogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIGNsYXNzIEFzc2V0c0xvYWRlciB7CiAgICAgICAgICAgIGdldFNjcmlwdEVsZW1lbnQoZSkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHQuc3JjID0gZSwKICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRTdHlsZUVsZW1lbnQoZSkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKICAgICAgICAgICAgICAgIHJldHVybiB0LnJlbCA9ICJzdHlsZXNoZWV0IiwKICAgICAgICAgICAgICAgIHQuaHJlZiA9IGUsCiAgICAgICAgICAgICAgICB0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbG9hZChlLCB0KSB7CiAgICAgICAgICAgICAgICBjb25zdCBuID0gQXNzZXRzTG9hZGVyLmFzc2V0c1tlXVt0XTsKICAgICAgICAgICAgICAgIHJldHVybiBuLmxvYWRlciB8fCAobi5sb2FkZXIgPSBuZXcgUHJvbWlzZSgodD0+ewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSAic3R5bGUiID09PSBlID8gdGhpcy5nZXRTdHlsZUVsZW1lbnQobi5zcmMpIDogdGhpcy5nZXRTY3JpcHRFbGVtZW50KG4uc3JjKTsKICAgICAgICAgICAgICAgICAgICBvLm9ubG9hZCA9ICgpPT50KCEwKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gImhlYWQiID09PSBuLnBhcmVudCA/IG4ucGFyZW50IDogImJvZHkiOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50W2ldLmFwcGVuZENoaWxkKG8pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApKSksCiAgICAgICAgICAgICAgICBuLmxvYWRlcgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHQuZGVmYXVsdCA9IEFzc2V0c0xvYWRlcjsKICAgICAgICBjb25zdCBuID0gZWxlbWVudG9yRnJvbnRlbmRDb25maWcuZW52aXJvbm1lbnRNb2RlLmlzU2NyaXB0RGVidWcgPyAiIiA6ICIubWluIgogICAgICAgICAgLCBvID0gZWxlbWVudG9yRnJvbnRlbmRDb25maWcuZXhwZXJpbWVudGFsRmVhdHVyZXMuZV9zd2lwZXJfbGF0ZXN0ID8gYCR7ZWxlbWVudG9yRnJvbnRlbmRDb25maWcudXJscy5hc3NldHN9bGliL3N3aXBlci92OC9zd2lwZXIke259LmpzP3Zlcj04LjQuNWAgOiBgJHtlbGVtZW50b3JGcm9udGVuZENvbmZpZy51cmxzLmFzc2V0c31saWIvc3dpcGVyL3N3aXBlciR7bn0uanM/dmVyPTUuMy42YDsKICAgICAgICBBc3NldHNMb2FkZXIuYXNzZXRzID0gewogICAgICAgICAgICBzY3JpcHQ6IHsKICAgICAgICAgICAgICAgIGRpYWxvZzogewogICAgICAgICAgICAgICAgICAgIHNyYzogYCR7ZWxlbWVudG9yRnJvbnRlbmRDb25maWcudXJscy5hc3NldHN9bGliL2RpYWxvZy9kaWFsb2cke259LmpzP3Zlcj00LjkuMGAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAic2hhcmUtbGluayI6IHsKICAgICAgICAgICAgICAgICAgICBzcmM6IGAke2VsZW1lbnRvckZyb250ZW5kQ29uZmlnLnVybHMuYXNzZXRzfWxpYi9zaGFyZS1saW5rL3NoYXJlLWxpbmske259LmpzP3Zlcj0ke2VsZW1lbnRvckZyb250ZW5kQ29uZmlnLnZlcnNpb259YAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHN3aXBlcjogewogICAgICAgICAgICAgICAgICAgIHNyYzogbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBzdHlsZToge30KICAgICAgICB9CiAgICB9CiAgICAsCiAgICAxMzIyOiAoZSx0KT0+ewogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIHQuZGVmYXVsdCA9IGNsYXNzIENvbnRyb2xzIHsKICAgICAgICAgICAgZ2V0Q29udHJvbFZhbHVlKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGxldCBvOwogICAgICAgICAgICAgICAgcmV0dXJuIG8gPSAib2JqZWN0IiA9PSB0eXBlb2YgZVt0XSAmJiBuID8gZVt0XVtuXSA6IGVbdF0sCiAgICAgICAgICAgICAgICBvCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0UmVzcG9uc2l2ZUNvbnRyb2xWYWx1ZShlLCB0KSB7CiAgICAgICAgICAgICAgICBsZXQgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogIiI7CiAgICAgICAgICAgICAgICBjb25zdCBvID0gKGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdID8gYXJndW1lbnRzWzNdIDogbnVsbCkgfHwgZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKQogICAgICAgICAgICAgICAgICAsIGkgPSB0aGlzLmdldENvbnRyb2xWYWx1ZShlLCB0LCBuKTsKICAgICAgICAgICAgICAgIGlmICgid2lkZXNjcmVlbiIgPT09IG8pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gdGhpcy5nZXRDb250cm9sVmFsdWUoZSwgYCR7dH1fd2lkZXNjcmVlbmAsIG4pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBvIHx8IDAgPT09IG8gPyBvIDogaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgcyA9IGVsZW1lbnRvckZyb250ZW5kLmJyZWFrcG9pbnRzLmdldEFjdGl2ZUJyZWFrcG9pbnRzTGlzdCh7CiAgICAgICAgICAgICAgICAgICAgd2l0aERlc2t0b3A6ICEwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGxldCByID0gbwogICAgICAgICAgICAgICAgICAsIGEgPSBzLmluZGV4T2YobykKICAgICAgICAgICAgICAgICAgLCBsID0gIiI7CiAgICAgICAgICAgICAgICBmb3IgKDsgYSA8PSBzLmxlbmd0aDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJkZXNrdG9wIiA9PT0gcikgewogICAgICAgICAgICAgICAgICAgICAgICBsID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IGAke3R9XyR7cn1gCiAgICAgICAgICAgICAgICAgICAgICAsIGQgPSB0aGlzLmdldENvbnRyb2xWYWx1ZShlLCBvLCBuKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZCB8fCAwID09PSBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBhKyssCiAgICAgICAgICAgICAgICAgICAgciA9IHNbYV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBsCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAsCiAgICA4NjQ2OiAoZSx0LG4pPT57CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgY2xhc3MgTGlnaHRib3hNYW5hZ2VyIGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlIHsKICAgICAgICAgICAgc3RhdGljIGdldExpZ2h0Ym94KCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IG5ldyBQcm9taXNlKChlPT57CiAgICAgICAgICAgICAgICAgICAgbi5lKDcyMykudGhlbihuLnQuYmluZChuLCAzODk2LCAyMykpLnRoZW4oKHQ9PnsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHtkZWZhdWx0OiBufSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKG5ldyBuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgICAgICAgLCB0ID0gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuYXNzZXRzTG9hZGVyLmxvYWQoInNjcmlwdCIsICJkaWFsb2ciKQogICAgICAgICAgICAgICAgICAsIG8gPSBlbGVtZW50b3JGcm9udGVuZC51dGlscy5hc3NldHNMb2FkZXIubG9hZCgic2NyaXB0IiwgInNoYXJlLWxpbmsiKTsKICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbZSwgdCwgb10pLnRoZW4oKCgpPT5lKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogImEsIFtkYXRhLWVsZW1lbnRvci1saWdodGJveF0iCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgJGxpbmtzOiBqUXVlcnkodGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLmxpbmtzIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaXNMaWdodGJveExpbmsoZSkgewogICAgICAgICAgICAgICAgaWYgKCJhIiA9PT0gZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgJiYgKGUuaGFzQXR0cmlidXRlKCJkb3dubG9hZCIpIHx8ICEvXlteP10rXC4ocG5nfGpwZT9nfGdpZnxzdmd8d2VicCkoXD8uKik/JC9pLnRlc3QoZS5ocmVmKSkgJiYgIWUuZGF0YXNldC5lbGVtZW50b3JMaWdodGJveFZpZGVvKQogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlbGVtZW50b3JGcm9udGVuZC5nZXRLaXRTZXR0aW5ncygiZ2xvYmFsX2ltYWdlX2xpZ2h0Ym94IikKICAgICAgICAgICAgICAgICAgLCBuID0gZS5kYXRhc2V0LmVsZW1lbnRvck9wZW5MaWdodGJveDsKICAgICAgICAgICAgICAgIHJldHVybiAieWVzIiA9PT0gbiB8fCB0ICYmICJubyIgIT09IG4KICAgICAgICAgICAgfQogICAgICAgICAgICBhc3luYyBvbkxpbmtDbGljayhlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5jdXJyZW50VGFyZ2V0CiAgICAgICAgICAgICAgICAgICwgbiA9IGpRdWVyeShlLnRhcmdldCkKICAgICAgICAgICAgICAgICAgLCBvID0gZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpCiAgICAgICAgICAgICAgICAgICwgaSA9IG8gJiYgZWxlbWVudG9yLiRwcmV2aWV3Q29udGVudHMuZmluZCgiYm9keSIpLmhhc0NsYXNzKCJlbGVtZW50b3ItZWRpdG9yX191aS1zdGF0ZV9fY29sb3ItcGlja2VyIikKICAgICAgICAgICAgICAgICAgLCBzID0gISFuLmNsb3Nlc3QoIi5lbGVtZW50b3ItZWRpdC1hcmVhIikubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzTGlnaHRib3hMaW5rKHQpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIChvICYmIHMgJiYgZS5wcmV2ZW50RGVmYXVsdCgpKTsKICAgICAgICAgICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KCksCiAgICAgICAgICAgICAgICBvICYmICFlbGVtZW50b3IuZ2V0UHJlZmVyZW5jZXMoImxpZ2h0Ym94X2luX2VkaXRvciIpKQogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICh0aGlzLmlzT3B0aW1pemVkQXNzZXRzTG9hZGluZygpID8gYXdhaXQgTGlnaHRib3hNYW5hZ2VyLmdldExpZ2h0Ym94KCkgOiBlbGVtZW50b3JGcm9udGVuZC51dGlscy5saWdodGJveCkuY3JlYXRlTGlnaHRib3godCkKICAgICAgICAgICAgfQogICAgICAgICAgICBpc09wdGltaXplZEFzc2V0c0xvYWRpbmcoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmV4cGVyaW1lbnRhbEZlYXR1cmVzLmVfb3B0aW1pemVkX2Fzc2V0c19sb2FkaW5nCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRkb2N1bWVudC5vbigiY2xpY2siLCB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMubGlua3MiKSwgKGU9PnRoaXMub25MaW5rQ2xpY2soZSkpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCguLi5hcmd1bWVudHMpLAogICAgICAgICAgICAgICAgdGhpcy5pc09wdGltaXplZEFzc2V0c0xvYWRpbmcoKSAmJiAhZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpICYmIHRoaXMuZWxlbWVudHMuJGxpbmtzLmVhY2goKChlLHQpPT57CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMaWdodGJveExpbmsodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaWdodGJveE1hbmFnZXIuZ2V0TGlnaHRib3goKSwKICAgICAgICAgICAgICAgICAgICAgICAgITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gTGlnaHRib3hNYW5hZ2VyCiAgICB9CiAgICAsCiAgICA4NjI4OiAoZSx0KT0+ewogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIHQuZGVmYXVsdCA9IGNsYXNzIFN3aXBlciB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZyA9IHQsCiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5icmVha3BvaW50cyAmJiAodGhpcy5jb25maWcgPSB0aGlzLmFkanVzdENvbmZpZyh0KSksCiAgICAgICAgICAgICAgICBlIGluc3RhbmNlb2YgalF1ZXJ5ICYmIChlID0gZVswXSksCiAgICAgICAgICAgICAgICBlLmNsb3Nlc3QoIi5lbGVtZW50b3Itd2lkZ2V0LXdyYXAiKT8uY2xhc3NMaXN0LmFkZCgiZS1zd2lwZXItY29udGFpbmVyIiksCiAgICAgICAgICAgICAgICBlLmNsb3Nlc3QoIi5lbGVtZW50b3Itd2lkZ2V0Iik/LmNsYXNzTGlzdC5hZGQoImUtd2lkZ2V0LXN3aXBlciIpLAogICAgICAgICAgICAgICAgbmV3IFByb21pc2UoKHQ9PnsKICAgICAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5leHBlcmltZW50YWxGZWF0dXJlcy5lX29wdGltaXplZF9hc3NldHNfbG9hZGluZykKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQodGhpcy5jcmVhdGVTd2lwZXJJbnN0YW5jZShlLCB0aGlzLmNvbmZpZykpOwogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLmFzc2V0c0xvYWRlci5sb2FkKCJzY3JpcHQiLCAic3dpcGVyIikudGhlbigoKCk9PnQodGhpcy5jcmVhdGVTd2lwZXJJbnN0YW5jZShlLCB0aGlzLmNvbmZpZykpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3JlYXRlU3dpcGVySW5zdGFuY2UoZSwgdCkgewogICAgICAgICAgICAgICAgY29uc3QgbiA9IHdpbmRvdy5Td2lwZXI7CiAgICAgICAgICAgICAgICByZXR1cm4gbi5wcm90b3R5cGUuYWRqdXN0Q29uZmlnID0gdGhpcy5hZGp1c3RDb25maWcsCiAgICAgICAgICAgICAgICBuZXcgbihlLHQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYWRqdXN0Q29uZmlnKGUpIHsKICAgICAgICAgICAgICAgIGlmICghZS5oYW5kbGVFbGVtZW50b3JCcmVha3BvaW50cykKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50cwogICAgICAgICAgICAgICAgICAsIG4gPSBlbGVtZW50b3JGcm9udGVuZC5icmVha3BvaW50cy5nZXRCcmVha3BvaW50VmFsdWVzKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZS5icmVha3BvaW50cykuZm9yRWFjaCgobz0+ewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBwYXJzZUludChvKTsKICAgICAgICAgICAgICAgICAgICBsZXQgczsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gdC5tb2JpbGUudmFsdWUgfHwgaSArIDEgPT09IHQubW9iaWxlLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICBzID0gMDsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdC53aWRlc2NyZWVuIHx8IGkgIT09IHQud2lkZXNjcmVlbi52YWx1ZSAmJiBpICsgMSAhPT0gdC53aWRlc2NyZWVuLnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBuLmZpbmRJbmRleCgoZT0+aSA9PT0gZSB8fCBpICsgMSA9PT0gZSkpOwogICAgICAgICAgICAgICAgICAgICAgICBzID0gbltlIC0gMV0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGk7CiAgICAgICAgICAgICAgICAgICAgZS5icmVha3BvaW50c1tzXSA9IGUuYnJlYWtwb2ludHNbb10sCiAgICAgICAgICAgICAgICAgICAgZS5icmVha3BvaW50c1tvXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogZS5zbGlkZXNQZXJWaWV3LAogICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogZS5zbGlkZXNQZXJHcm91cCA/IGUuc2xpZGVzUGVyR3JvdXAgOiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSksCiAgICAgICAgICAgICAgICBlCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAsCiAgICAyMDY0OiAoZSx0LG4pPT57CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDAsCiAgICAgICAgbig1NzE5KTsKICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZSB7CiAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiAnYVtocmVmXj0iJTIzZWxlbWVudG9yLWFjdGlvbiJdLCBhW2hyZWZePSIjZWxlbWVudG9yLWFjdGlvbiJdJwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGRvY3VtZW50Lm9uKCJjbGljayIsIHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycy5saW5rcyIpLCB0aGlzLnJ1bkxpbmtBY3Rpb24uYmluZCh0aGlzKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0QWN0aW9ucygpIHsKICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9ucyA9IHsKICAgICAgICAgICAgICAgICAgICBsaWdodGJveDogYXN5bmMgZT0+ewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gYXdhaXQgZWxlbWVudG9yRnJvbnRlbmQudXRpbHMubGlnaHRib3g7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc2xpZGVzaG93ID8gdC5vcGVuU2xpZGVzaG93KGUuc2xpZGVzaG93LCBlLnVybCkgOiAoZS5pZCAmJiAoZS50eXBlID0gImltYWdlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01vZGFsKGUpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBhZGRBY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zW2VdID0gdAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJ1bkFjdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gKGUgPSBkZWNvZGVVUklDb21wb25lbnQoZSkpLm1hdGNoKC9hY3Rpb249KC4rPykmLyk7CiAgICAgICAgICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuYWN0aW9uc1t0WzFdXTsKICAgICAgICAgICAgICAgIGlmICghbikKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICBsZXQgbyA9IHt9OwogICAgICAgICAgICAgICAgY29uc3QgaSA9IGUubWF0Y2goL3NldHRpbmdzPSguKykvKTsKICAgICAgICAgICAgICAgIGkgJiYgKG8gPSBKU09OLnBhcnNlKGF0b2IoaVsxXSkpKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gbmV3IEFycmF5KHMgPiAxID8gcyAtIDEgOiAwKSwgYSA9IDE7IGEgPCBzOyBhKyspCiAgICAgICAgICAgICAgICAgICAgclthIC0gMV0gPSBhcmd1bWVudHNbYV07CiAgICAgICAgICAgICAgICBuKG8sIC4uLnIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcnVuTGlua0FjdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksCiAgICAgICAgICAgICAgICB0aGlzLnJ1bkFjdGlvbihqUXVlcnkoZS5jdXJyZW50VGFyZ2V0KS5hdHRyKCJocmVmIiksIGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcnVuSGFzaEFjdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICghbG9jYXRpb24uaGFzaCkKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2RhdGEtZS1hY3Rpb24taGFzaD0iJHtsb2NhdGlvbi5oYXNofSJdLCBhW2hyZWYqPSIke2xvY2F0aW9uLmhhc2h9Il1gKTsKICAgICAgICAgICAgICAgIGUgJiYgdGhpcy5ydW5BY3Rpb24oZS5nZXRBdHRyaWJ1dGUoImRhdGEtZS1hY3Rpb24taGFzaCIpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNyZWF0ZUFjdGlvbkhhc2goZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChgI2VsZW1lbnRvci1hY3Rpb246YWN0aW9uPSR7ZX0mc2V0dGluZ3M9JHtidG9hKEpTT04uc3RyaW5naWZ5KHQpKX1gKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCgpLAogICAgICAgICAgICAgICAgdGhpcy5pbml0QWN0aW9ucygpLAogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQub24oImNvbXBvbmVudHM6aW5pdCIsIHRoaXMucnVuSGFzaEFjdGlvbi5iaW5kKHRoaXMpKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICB9CiAgICAsCiAgICA2MDI4OiAoZSx0KT0+ewogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5pc1Njcm9sbFNuYXBBY3RpdmUgPSB0LmVzY2FwZUhUTUwgPSB2b2lkIDA7CiAgICAgICAgdC5lc2NhcGVIVE1MID0gZT0+ewogICAgICAgICAgICBjb25zdCB0ID0gewogICAgICAgICAgICAgICAgIiYiOiAiJmFtcDsiLAogICAgICAgICAgICAgICAgIjwiOiAiJmx0OyIsCiAgICAgICAgICAgICAgICAiPiI6ICImZ3Q7IiwKICAgICAgICAgICAgICAgICInIjogIiYjMzk7IiwKICAgICAgICAgICAgICAgICciJzogIiZxdW90OyIKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIGUucmVwbGFjZSgvWyY8PiciXS9nLCAoZT0+dFtlXSB8fCBlKSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHQuaXNTY3JvbGxTbmFwQWN0aXZlID0gKCk9PiJ5ZXMiID09PSAoZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpID8gZWxlbWVudG9yLnNldHRpbmdzLnBhZ2UubW9kZWwuYXR0cmlidXRlcz8uc2Nyb2xsX3NuYXAgOiBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuc2V0dGluZ3MucGFnZT8uc2Nyb2xsX3NuYXApCiAgICB9CiAgICAsCiAgICA0NzczOiAoZSx0KT0+ewogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIGNsYXNzIEJhc2VMb2FkZXIgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUgewogICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGlzSW5zZXJ0ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFNjcmlwdDogInNjcmlwdDpmaXJzdCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAkZmlyc3RTY3JpcHQ6IGpRdWVyeSh0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMuZmlyc3RTY3JpcHQiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpbnNlcnRBUEkoKSB7CiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRmaXJzdFNjcmlwdC5iZWZvcmUoalF1ZXJ5KCI8c2NyaXB0PiIsIHsKICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0QXBpVVJMKCkKICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgIHRoaXMuc2V0U2V0dGluZ3MoImlzSW5zZXJ0ZWQiLCAhMCkKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRWaWRlb0lERnJvbVVSTChlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5tYXRjaCh0aGlzLmdldFVSTFJlZ2V4KCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgdFsxXQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uQXBpUmVhZHkoZSkgewogICAgICAgICAgICAgICAgdGhpcy5nZXRTZXR0aW5ncygiaXNJbnNlcnRlZCIpIHx8IHRoaXMuaW5zZXJ0QVBJKCksCiAgICAgICAgICAgICAgICB0aGlzLmlzQXBpTG9hZGVkKCkgPyBlKHRoaXMuZ2V0QXBpT2JqZWN0KCkpIDogc2V0VGltZW91dCgoKCk9PnsKICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQXBpUmVhZHkoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICksIDM1MCkKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRBdXRvcGxheVVSTChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5yZXBsYWNlKCImYXV0b3BsYXk9MCIsICIiKSArICImYXV0b3BsYXk9MSIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0LmRlZmF1bHQgPSBCYXNlTG9hZGVyCiAgICB9CiAgICAsCiAgICAxOTExOiAoZSx0LG4pPT57CiAgICAgICAgdmFyIG8gPSBuKDMyMDMpOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIHZhciBpID0gbyhuKDQ3NzMpKTsKICAgICAgICBjbGFzcyBWaW1lb0xvYWRlciBleHRlbmRzIGkuZGVmYXVsdCB7CiAgICAgICAgICAgIGdldEFwaVVSTCgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL2FwaS9wbGF5ZXIuanMiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0VVJMUmVnZXgoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gL14oPzpodHRwcz86XC9cLyk/KD86d3d3fHBsYXllclwuKT8oPzp2aW1lb1wuY29tXC8pPyg/OnZpZGVvXC98ZXh0ZXJuYWxcLyk/KFxkKykoW14uPyYjIic+XT8pLwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzQXBpTG9hZGVkKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5WaW1lbwogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldEFwaU9iamVjdCgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBWaW1lbwogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldEF1dG9wbGF5VVJMKGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSAoZSA9IHN1cGVyLmdldEF1dG9wbGF5VVJMKGUpKS5tYXRjaCgvI3Q9W14mXSovKTsKICAgICAgICAgICAgICAgIHJldHVybiBlLnJlcGxhY2UodFswXSwgIiIpICsgdAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHQuZGVmYXVsdCA9IFZpbWVvTG9hZGVyCiAgICB9CiAgICAsCiAgICAxNjA0OiAoZSx0LG4pPT57CiAgICAgICAgdmFyIG8gPSBuKDMyMDMpOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIHZhciBpID0gbyhuKDQ3NzMpKTsKICAgICAgICBjbGFzcyBZb3V0dWJlTG9hZGVyIGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgZ2V0QXBpVVJMKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy55b3V0dWJlLmNvbS9pZnJhbWVfYXBpIgogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldFVSTFJlZ2V4KCkgewogICAgICAgICAgICAgICAgcmV0dXJuIC9eKD86aHR0cHM/OlwvXC8pPyg/Ond3d1wuKT8oPzptXC4pPyg/OnlvdXR1XC5iZVwvfHlvdXR1YmVcLmNvbVwvKD86KD86d2F0Y2gpP1w/KD86LiomKT92aT89fCg/OmVtYmVkfHZ8dml8dXNlcilcLykpKFtePyYiJz5dKykvCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaXNBcGlMb2FkZWQoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LllUICYmIFlULmxvYWRlZAogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldEFwaU9iamVjdCgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBZVAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHQuZGVmYXVsdCA9IFlvdXR1YmVMb2FkZXIKICAgIH0KICAgICwKICAgIDU5OiAoZSx0LG4pPT57CiAgICAgICAgbi5wID0gZWxlbWVudG9yRnJvbnRlbmRDb25maWcudXJscy5hc3NldHMgKyAianMvIgogICAgfQogICAgLAogICAgNDM3NTogKGUsdCk9PnsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICBjbGFzcyBCcmVha3BvaW50cyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoZSkgewogICAgICAgICAgICAgICAgc3VwZXIoKSwKICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2l2ZUNvbmZpZyA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRBY3RpdmVCcmVha3BvaW50c0xpc3QoKSB7CiAgICAgICAgICAgICAgICBsZXQgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDoge307CiAgICAgICAgICAgICAgICBlID0gewogICAgICAgICAgICAgICAgICAgIGxhcmdlVG9TbWFsbDogITEsCiAgICAgICAgICAgICAgICAgICAgd2l0aERlc2t0b3A6ICExLAogICAgICAgICAgICAgICAgICAgIC4uLmUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gT2JqZWN0LmtleXModGhpcy5yZXNwb25zaXZlQ29uZmlnLmFjdGl2ZUJyZWFrcG9pbnRzKTsKICAgICAgICAgICAgICAgIGlmIChlLndpdGhEZXNrdG9wKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IC0xID09PSB0LmluZGV4T2YoIndpZGVzY3JlZW4iKSA/IHQubGVuZ3RoIDogdC5sZW5ndGggLSAxOwogICAgICAgICAgICAgICAgICAgIHQuc3BsaWNlKGUsIDAsICJkZXNrdG9wIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBlLmxhcmdlVG9TbWFsbCAmJiB0LnJldmVyc2UoKSwKICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRCcmVha3BvaW50VmFsdWVzKCkgewogICAgICAgICAgICAgICAgY29uc3Qge2FjdGl2ZUJyZWFrcG9pbnRzOiBlfSA9IHRoaXMucmVzcG9uc2l2ZUNvbmZpZwogICAgICAgICAgICAgICAgICAsIHQgPSBbXTsKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGUpLmZvckVhY2goKGU9PnsKICAgICAgICAgICAgICAgICAgICB0LnB1c2goZS52YWx1ZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpLAogICAgICAgICAgICAgICAgdAogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldERlc2t0b3BQcmV2aW91c0RldmljZUtleSgpIHsKICAgICAgICAgICAgICAgIGxldCBlID0gIiI7CiAgICAgICAgICAgICAgICBjb25zdCB7YWN0aXZlQnJlYWtwb2ludHM6IHR9ID0gdGhpcy5yZXNwb25zaXZlQ29uZmlnCiAgICAgICAgICAgICAgICAgICwgbiA9IE9iamVjdC5rZXlzKHQpCiAgICAgICAgICAgICAgICAgICwgbyA9IG4ubGVuZ3RoOwogICAgICAgICAgICAgICAgcmV0dXJuIGUgPSAibWluIiA9PT0gdFtuW28gLSAxXV0uZGlyZWN0aW9uID8gbltvIC0gMl0gOiBuW28gLSAxXSwKICAgICAgICAgICAgICAgIGUKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXREZXNrdG9wTWluUG9pbnQoKSB7CiAgICAgICAgICAgICAgICBjb25zdCB7YWN0aXZlQnJlYWtwb2ludHM6IGV9ID0gdGhpcy5yZXNwb25zaXZlQ29uZmlnOwogICAgICAgICAgICAgICAgcmV0dXJuIGVbdGhpcy5nZXREZXNrdG9wUHJldmlvdXNEZXZpY2VLZXkoKV0udmFsdWUgKyAxCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0RGV2aWNlTWluQnJlYWtwb2ludChlKSB7CiAgICAgICAgICAgICAgICBpZiAoImRlc2t0b3AiID09PSBlKQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERlc2t0b3BNaW5Qb2ludCgpOwogICAgICAgICAgICAgICAgY29uc3Qge2FjdGl2ZUJyZWFrcG9pbnRzOiB0fSA9IHRoaXMucmVzcG9uc2l2ZUNvbmZpZwogICAgICAgICAgICAgICAgICAsIG4gPSBPYmplY3Qua2V5cyh0KTsKICAgICAgICAgICAgICAgIGxldCBvOwogICAgICAgICAgICAgICAgaWYgKG5bMF0gPT09IGUpCiAgICAgICAgICAgICAgICAgICAgbyA9IDMyMDsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJ3aWRlc2NyZWVuIiA9PT0gZSkKICAgICAgICAgICAgICAgICAgICBvID0gdFtlXSA/IHRbZV0udmFsdWUgOiB0aGlzLnJlc3BvbnNpdmVDb25maWcuYnJlYWtwb2ludHMud2lkZXNjcmVlbjsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBuLmluZGV4T2YoZSk7CiAgICAgICAgICAgICAgICAgICAgbyA9IHRbbltpIC0gMV1dLnZhbHVlICsgMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRBY3RpdmVNYXRjaFJlZ2V4KCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAodGhpcy5nZXRBY3RpdmVCcmVha3BvaW50c0xpc3QoKS5tYXAoKGU9PiJfIiArIGUpKS5qb2luKCJ8IikgKyAiJCIpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gQnJlYWtwb2ludHMKICAgIH0KICAgICwKICAgIDY0MDQ6IChlLHQpPT57CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB0LkV2ZW50cyA9IHZvaWQgMDsKICAgICAgICBjbGFzcyBFdmVudHMgewogICAgICAgICAgICBzdGF0aWMgZGlzcGF0Y2goZSwgdCkgewogICAgICAgICAgICAgICAgbGV0IG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IG51bGwKICAgICAgICAgICAgICAgICAgLCBvID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbM10gPyBhcmd1bWVudHNbM10gOiBudWxsOwogICAgICAgICAgICAgICAgZSA9IGUgaW5zdGFuY2VvZiBqUXVlcnkgPyBlWzBdIDogZSwKICAgICAgICAgICAgICAgIG8gJiYgZS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChvLHsKICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IG4KICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgIGUuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQodCx7CiAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiBuCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0LkV2ZW50cyA9IEV2ZW50czsKICAgICAgICB2YXIgbiA9IEV2ZW50czsKICAgICAgICB0LmRlZmF1bHQgPSBuCiAgICB9CiAgICAsCiAgICA5NDY5OiBlPT57CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlLCB0ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLCBuID0gewogICAgICAgICAgICAgICAgYWN0aW9uczoge30sCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7fQogICAgICAgICAgICB9OwogICAgICAgICAgICBmdW5jdGlvbiBfcmVtb3ZlSG9vayhlLCB0LCBvLCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgcywgciwgYTsKICAgICAgICAgICAgICAgIGlmIChuW2VdW3RdKQogICAgICAgICAgICAgICAgICAgIGlmIChvKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IG5bZV1bdF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSBzLmxlbmd0aDsgYS0tOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHIgPSBzW2FdKS5jYWxsYmFjayA9PT0gbyAmJiByLmNvbnRleHQgPT09IGkgJiYgcy5zcGxpY2UoYSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IHMubGVuZ3RoOyBhLS07ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzW2FdLmNhbGxiYWNrID09PSBvICYmIHMuc3BsaWNlKGEsIDEpOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgbltlXVt0XSA9IFtdCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gX2FkZEhvb2soZSwgdCwgbywgaSwgcykgewogICAgICAgICAgICAgICAgdmFyIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IG8sCiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IGksCiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAsIGEgPSBuW2VdW3RdOwogICAgICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9ICExOwogICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkuZWFjaChhLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhbGxiYWNrID09PSBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwgPSAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICExCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICkpLAogICAgICAgICAgICAgICAgICAgIGwpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBhLnB1c2gociksCiAgICAgICAgICAgICAgICAgICAgYSA9IGZ1bmN0aW9uIF9ob29rSW5zZXJ0U29ydChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIG4sIG8sIGkgPSAxLCBzID0gZS5sZW5ndGg7IGkgPCBzOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gaTsgKG8gPSBlW24gLSAxXSkgJiYgby5wcmlvcml0eSA+IHQucHJpb3JpdHk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW25dID0gZVtuIC0gMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtuXSA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgIH0oYSkKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIGEgPSBbcl07CiAgICAgICAgICAgICAgICBuW2VdW3RdID0gYQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIF9ydW5Ib29rKGUsIHQsIG8pIHsKICAgICAgICAgICAgICAgIHZhciBpLCBzLCByID0gbltlXVt0XTsKICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZpbHRlcnMiID09PSBlICYmIG9bMF07CiAgICAgICAgICAgICAgICBpZiAocyA9IHIubGVuZ3RoLAogICAgICAgICAgICAgICAgImZpbHRlcnMiID09PSBlKQogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgIG9bMF0gPSByW2ldLmNhbGxiYWNrLmFwcGx5KHJbaV0uY29udGV4dCwgbyk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgcltpXS5jYWxsYmFjay5hcHBseShyW2ldLmNvbnRleHQsIG8pOwogICAgICAgICAgICAgICAgcmV0dXJuICJmaWx0ZXJzIiAhPT0gZSB8fCBvWzBdCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUgPSB7CiAgICAgICAgICAgICAgICByZW1vdmVGaWx0ZXI6IGZ1bmN0aW9uIHJlbW92ZUZpbHRlcih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiB0ICYmIF9yZW1vdmVIb29rKCJmaWx0ZXJzIiwgdCwgbiksCiAgICAgICAgICAgICAgICAgICAgZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFwcGx5RmlsdGVyczogZnVuY3Rpb24gYXBwbHlGaWx0ZXJzKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5jYWxsKGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICAgICwgbyA9IG4uc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIG8gPyBfcnVuSG9vaygiZmlsdGVycyIsIG8sIG4pIDogZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFkZEZpbHRlcjogZnVuY3Rpb24gYWRkRmlsdGVyKHQsIG4sIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiAmJiBfYWRkSG9vaygiZmlsdGVycyIsIHQsIG4sIG8gPSBwYXJzZUludChvIHx8IDEwLCAxMCksIGkpLAogICAgICAgICAgICAgICAgICAgIGUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZW1vdmVBY3Rpb246IGZ1bmN0aW9uIHJlbW92ZUFjdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiB0ICYmIF9yZW1vdmVIb29rKCJhY3Rpb25zIiwgdCwgbiksCiAgICAgICAgICAgICAgICAgICAgZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRvQWN0aW9uOiBmdW5jdGlvbiBkb0FjdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuY2FsbChhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAsIG8gPSBuLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiBvICYmIF9ydW5Ib29rKCJhY3Rpb25zIiwgbywgbiksCiAgICAgICAgICAgICAgICAgICAgZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFkZEFjdGlvbjogZnVuY3Rpb24gYWRkQWN0aW9uKHQsIG4sIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiAmJiBfYWRkSG9vaygiYWN0aW9ucyIsIHQsIG4sIG8gPSBwYXJzZUludChvIHx8IDEwLCAxMCksIGkpLAogICAgICAgICAgICAgICAgICAgIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDMzMDg6IChlLHQpPT57CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgY29uc3QgbWF0Y2hVc2VyQWdlbnQgPSBlPT5uLmluZGV4T2YoZSkgPj0gMAogICAgICAgICAgLCBuID0gbmF2aWdhdG9yLnVzZXJBZ2VudAogICAgICAgICAgLCBvID0gISF3aW5kb3cub3ByICYmICEhb3ByLmFkZG9ucyB8fCAhIXdpbmRvdy5vcGVyYSB8fCBtYXRjaFVzZXJBZ2VudCgiIE9QUi8iKQogICAgICAgICAgLCBpID0gbWF0Y2hVc2VyQWdlbnQoIkZpcmVmb3giKQogICAgICAgICAgLCBzID0gL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuKSB8fCAvY29uc3RydWN0b3IvaS50ZXN0KHdpbmRvdy5IVE1MRWxlbWVudCkgfHwgIltvYmplY3QgU2FmYXJpUmVtb3RlTm90aWZpY2F0aW9uXSIgPT09ICghd2luZG93LnNhZmFyaSB8fCAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygc2FmYXJpICYmIHNhZmFyaS5wdXNoTm90aWZpY2F0aW9uKS50b1N0cmluZygpCiAgICAgICAgICAsIHIgPSAvVHJpZGVudHxNU0lFLy50ZXN0KG4pICYmICEhZG9jdW1lbnQuZG9jdW1lbnRNb2RlCiAgICAgICAgICAsIGEgPSAhciAmJiAhIXdpbmRvdy5TdHlsZU1lZGlhIHx8IG1hdGNoVXNlckFnZW50KCJFZGciKQogICAgICAgICAgLCBsID0gISF3aW5kb3cuY2hyb21lICYmIG1hdGNoVXNlckFnZW50KCJDaHJvbWUiKSAmJiAhKGEgfHwgbykKICAgICAgICAgICwgZCA9IG1hdGNoVXNlckFnZW50KCJDaHJvbWUiKSAmJiAhIXdpbmRvdy5DU1MKICAgICAgICAgICwgYyA9IG1hdGNoVXNlckFnZW50KCJBcHBsZVdlYktpdCIpICYmICFkOwogICAgICAgIHZhciB1ID0gewogICAgICAgICAgICBpc1RvdWNoRGV2aWNlOiAib250b3VjaHN0YXJ0ImluIHdpbmRvdyB8fCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAwIHx8IG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzID4gMCwKICAgICAgICAgICAgYXBwbGVXZWJraXQ6IGMsCiAgICAgICAgICAgIGJsaW5rOiBkLAogICAgICAgICAgICBjaHJvbWU6IGwsCiAgICAgICAgICAgIGVkZ2U6IGEsCiAgICAgICAgICAgIGZpcmVmb3g6IGksCiAgICAgICAgICAgIGllOiByLAogICAgICAgICAgICBtYWM6IG1hdGNoVXNlckFnZW50KCJNYWNpbnRvc2giKSwKICAgICAgICAgICAgb3BlcmE6IG8sCiAgICAgICAgICAgIHNhZmFyaTogcywKICAgICAgICAgICAgd2Via2l0OiBtYXRjaFVzZXJBZ2VudCgiQXBwbGVXZWJLaXQiKQogICAgICAgIH07CiAgICAgICAgdC5kZWZhdWx0ID0gdQogICAgfQogICAgLAogICAgNTEwNzogKGUsdCk9PnsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgZ2V0KGUsIHQpIHsKICAgICAgICAgICAgICAgIGxldCBuOwogICAgICAgICAgICAgICAgdCA9IHQgfHwge307CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIG4gPSB0LnNlc3Npb24gPyBzZXNzaW9uU3RvcmFnZSA6IGxvY2FsU3RvcmFnZQogICAgICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID8gdm9pZCAwIDoge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxldCBvID0gbi5nZXRJdGVtKCJlbGVtZW50b3IiKTsKICAgICAgICAgICAgICAgIG8gPSBvID8gSlNPTi5wYXJzZShvKSA6IHt9LAogICAgICAgICAgICAgICAgby5fX2V4cGlyYXRpb24gfHwgKG8uX19leHBpcmF0aW9uID0ge30pOwogICAgICAgICAgICAgICAgY29uc3QgaSA9IG8uX19leHBpcmF0aW9uOwogICAgICAgICAgICAgICAgbGV0IHMgPSBbXTsKICAgICAgICAgICAgICAgIGUgPyBpW2VdICYmIChzID0gW2VdKSA6IHMgPSBPYmplY3Qua2V5cyhpKTsKICAgICAgICAgICAgICAgIGxldCByID0gITE7CiAgICAgICAgICAgICAgICByZXR1cm4gcy5mb3JFYWNoKChlPT57CiAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoaVtlXSkgPCBuZXcgRGF0ZSAmJiAoZGVsZXRlIG9bZV0sCiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGlbZV0sCiAgICAgICAgICAgICAgICAgICAgciA9ICEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSksCiAgICAgICAgICAgICAgICByICYmIHRoaXMuc2F2ZShvLCB0LnNlc3Npb24pLAogICAgICAgICAgICAgICAgZSA/IG9bZV0gOiBvCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIG4gPSBuIHx8IHt9OwogICAgICAgICAgICAgICAgY29uc3QgbyA9IHRoaXMuZ2V0KG51bGwsIG4pOwogICAgICAgICAgICAgICAgaWYgKG9bZV0gPSB0LAogICAgICAgICAgICAgICAgbi5saWZldGltZUluU2Vjb25kcykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBuZXcgRGF0ZTsKICAgICAgICAgICAgICAgICAgICB0LnNldFRpbWUodC5nZXRUaW1lKCkgKyAxZTMgKiBuLmxpZmV0aW1lSW5TZWNvbmRzKSwKICAgICAgICAgICAgICAgICAgICBvLl9fZXhwaXJhdGlvbltlXSA9IHQuZ2V0VGltZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLnNhdmUobywgbi5zZXNzaW9uKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNhdmUoZSwgdCkgewogICAgICAgICAgICAgICAgbGV0IG47CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIG4gPSB0ID8gc2Vzc2lvblN0b3JhZ2UgOiBsb2NhbFN0b3JhZ2UKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4uc2V0SXRlbSgiZWxlbWVudG9yIiwgSlNPTi5zdHJpbmdpZnkoZSkpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgIH0KICAgICwKICAgIDYwNDY6IChlLHQsbik9PnsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICBjbGFzcyBfZGVmYXVsdCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICBzdXBlcigpLAogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInRleHQtcGF0aCIsICgoKT0+bi5lKDQ4KS50aGVuKG4uYmluZChuLCA2NDY4KSkpKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICB9CiAgICAsCiAgICAxODU1OiAoZSx0LG4pPT57CiAgICAgICAgdmFyIG8gPSBuKDU1MTYpCiAgICAgICAgICAsIGkgPSBUeXBlRXJyb3I7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBpZiAobyh0LCBlKSkKICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICB0aHJvdyBpKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpCiAgICAgICAgfQogICAgfQogICAgLAogICAgMzYyMTogZT0+ewogICAgICAgIGUuZXhwb3J0cyA9IHsKICAgICAgICAgICAgSW5kZXhTaXplRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJJTkRFWF9TSVpFX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBET01TdHJpbmdTaXplRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJET01TVFJJTkdfU0laRV9FUlIiLAogICAgICAgICAgICAgICAgYzogMiwKICAgICAgICAgICAgICAgIG06IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSGllcmFyY2h5UmVxdWVzdEVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiSElFUkFSQ0hZX1JFUVVFU1RfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDMsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFdyb25nRG9jdW1lbnRFcnJvcjogewogICAgICAgICAgICAgICAgczogIldST05HX0RPQ1VNRU5UX0VSUiIsCiAgICAgICAgICAgICAgICBjOiA0LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiLAogICAgICAgICAgICAgICAgYzogNSwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTm9EYXRhQWxsb3dlZEVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiTk9fREFUQV9BTExPV0VEX0VSUiIsCiAgICAgICAgICAgICAgICBjOiA2LAogICAgICAgICAgICAgICAgbTogMAogICAgICAgICAgICB9LAogICAgICAgICAgICBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjogewogICAgICAgICAgICAgICAgczogIk5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiIsCiAgICAgICAgICAgICAgICBjOiA3LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBOb3RGb3VuZEVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiTk9UX0ZPVU5EX0VSUiIsCiAgICAgICAgICAgICAgICBjOiA4LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBOb3RTdXBwb3J0ZWRFcnJvcjogewogICAgICAgICAgICAgICAgczogIk5PVF9TVVBQT1JURURfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDksCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEluVXNlQXR0cmlidXRlRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJJTlVTRV9BVFRSSUJVVEVfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDEwLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBJbnZhbGlkU3RhdGVFcnJvcjogewogICAgICAgICAgICAgICAgczogIklOVkFMSURfU1RBVEVfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDExLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBTeW50YXhFcnJvcjogewogICAgICAgICAgICAgICAgczogIlNZTlRBWF9FUlIiLAogICAgICAgICAgICAgICAgYzogMTIsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEludmFsaWRNb2RpZmljYXRpb25FcnJvcjogewogICAgICAgICAgICAgICAgczogIklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxMywKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZXNwYWNlRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJOQU1FU1BBQ0VfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDE0LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBJbnZhbGlkQWNjZXNzRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJJTlZBTElEX0FDQ0VTU19FUlIiLAogICAgICAgICAgICAgICAgYzogMTUsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZhbGlkYXRpb25FcnJvcjogewogICAgICAgICAgICAgICAgczogIlZBTElEQVRJT05fRVJSIiwKICAgICAgICAgICAgICAgIGM6IDE2LAogICAgICAgICAgICAgICAgbTogMAogICAgICAgICAgICB9LAogICAgICAgICAgICBUeXBlTWlzbWF0Y2hFcnJvcjogewogICAgICAgICAgICAgICAgczogIlRZUEVfTUlTTUFUQ0hfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDE3LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBTZWN1cml0eUVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiU0VDVVJJVFlfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDE4LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBOZXR3b3JrRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJORVRXT1JLX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxOSwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQWJvcnRFcnJvcjogewogICAgICAgICAgICAgICAgczogIkFCT1JUX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAyMCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVVJMTWlzbWF0Y2hFcnJvcjogewogICAgICAgICAgICAgICAgczogIlVSTF9NSVNNQVRDSF9FUlIiLAogICAgICAgICAgICAgICAgYzogMjEsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFF1b3RhRXhjZWVkZWRFcnJvcjogewogICAgICAgICAgICAgICAgczogIlFVT1RBX0VYQ0VFREVEX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAyMiwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGltZW91dEVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiVElNRU9VVF9FUlIiLAogICAgICAgICAgICAgICAgYzogMjMsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEludmFsaWROb2RlVHlwZUVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiSU5WQUxJRF9OT0RFX1RZUEVfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDI0LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBEYXRhQ2xvbmVFcnJvcjogewogICAgICAgICAgICAgICAgczogIkRBVEFfQ0xPTkVfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDI1LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgLAogICAgNTcxOTogKGUsdCxuKT0+ewogICAgICAgIHZhciBvID0gbigxNjk1KQogICAgICAgICAgLCBpID0gbigyMDg2KQogICAgICAgICAgLCBzID0gbig1NjMpCiAgICAgICAgICAsIHIgPSBuKDU3MzYpCiAgICAgICAgICAsIGEgPSBuKDc4MjYpLmYKICAgICAgICAgICwgbCA9IG4oOTYwNikKICAgICAgICAgICwgZCA9IG4oMTg1NSkKICAgICAgICAgICwgYyA9IG4oNTA3MCkKICAgICAgICAgICwgdSA9IG4oMTg3OSkKICAgICAgICAgICwgaCA9IG4oMzYyMSkKICAgICAgICAgICwgbSA9IG4oNzkpCiAgICAgICAgICAsIGcgPSBuKDUyODMpCiAgICAgICAgICAsIHAgPSBuKDMyOTYpCiAgICAgICAgICAsIGYgPSAiRE9NRXhjZXB0aW9uIgogICAgICAgICAgLCB2ID0gcygiRXJyb3IiKQogICAgICAgICAgLCBiID0gcyhmKQogICAgICAgICAgLCBfID0gZnVuY3Rpb24gRE9NRXhjZXB0aW9uKCkgewogICAgICAgICAgICBkKHRoaXMsIHkpOwogICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgKICAgICAgICAgICAgICAsIHQgPSB1KGUgPCAxID8gdm9pZCAwIDogYXJndW1lbnRzWzBdKQogICAgICAgICAgICAgICwgbiA9IHUoZSA8IDIgPyB2b2lkIDAgOiBhcmd1bWVudHNbMV0sICJFcnJvciIpCiAgICAgICAgICAgICAgLCBvID0gbmV3IGIodCxuKQogICAgICAgICAgICAgICwgaSA9IHYodCk7CiAgICAgICAgICAgIHJldHVybiBpLm5hbWUgPSBmLAogICAgICAgICAgICBhKG8sICJzdGFjayIsIHIoMSwgbShpLnN0YWNrLCAxKSkpLAogICAgICAgICAgICBjKG8sIHRoaXMsIF8pLAogICAgICAgICAgICBvCiAgICAgICAgfQogICAgICAgICAgLCB5ID0gXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZQogICAgICAgICAgLCB3ID0gInN0YWNrImluIHYoZikKICAgICAgICAgICwgayA9ICJzdGFjayJpbiBuZXcgYigxLDIpCiAgICAgICAgICAsIFMgPSBiICYmIGcgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLCBmKQogICAgICAgICAgLCBFID0gISghUyB8fCBTLndyaXRhYmxlICYmIFMuY29uZmlndXJhYmxlKQogICAgICAgICAgLCBNID0gdyAmJiAhRSAmJiAhazsKICAgICAgICBvKHsKICAgICAgICAgICAgZ2xvYmFsOiAhMCwKICAgICAgICAgICAgY29uc3RydWN0b3I6ICEwLAogICAgICAgICAgICBmb3JjZWQ6IHAgfHwgTQogICAgICAgIH0sIHsKICAgICAgICAgICAgRE9NRXhjZXB0aW9uOiBNID8gXyA6IGIKICAgICAgICB9KTsKICAgICAgICB2YXIgQyA9IHMoZikKICAgICAgICAgICwgQSA9IEMucHJvdG90eXBlOwogICAgICAgIGlmIChBLmNvbnN0cnVjdG9yICE9PSBDKQogICAgICAgICAgICBmb3IgKHZhciBEIGluIHAgfHwgYShBLCAiY29uc3RydWN0b3IiLCByKDEsIEMpKSwKICAgICAgICAgICAgaCkKICAgICAgICAgICAgICAgIGlmIChsKGgsIEQpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyICQgPSBoW0RdCiAgICAgICAgICAgICAgICAgICAgICAsIFIgPSAkLnM7CiAgICAgICAgICAgICAgICAgICAgbChDLCBSKSB8fCBhKEMsIFIsIHIoNiwgJC5jKSkKICAgICAgICAgICAgICAgIH0KICAgIH0KfSwgZT0+ewogICAgZS5PKDAsIFszNTRdLCAoKCk9PnsKICAgICAgICByZXR1cm4gdCA9IDU2NTQsCiAgICAgICAgZShlLnMgPSB0KTsKICAgICAgICB2YXIgdAogICAgfQogICAgKSk7CiAgICBlLk8oKQp9Cl0pOwo="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/design.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.080Z","timestamp":1785130090080,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/design.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=1USrRDmbO4HmyBZQGD%2FxOoTmesNfBv7jJvpto1abHkbSwAI6U1ACRjVAOi%2F%2BoQlj0U20wfFC5II113hwXT1yEOWf1NrQY3c%2BDXU%2Bmc%2BvSpI1zgWdk45iE2C2Ad7i%2Flu0bZka8mNGGg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d370e60120a-OSL\r\ncontent-length: 1698\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":1698,"size_decoded":2471,"mime_type":"image/png","magic":"PNG image data, 138 x 32, 8-bit/color RGBA, non-interlaced","md5":"97c526592ad79c904149b25729d77c0c","sha1":"7355c2aa4fa45950c45d36984d514d517b5c390e","sha256":"c437deeb6ca73e81b6a46de720e0194291331d27a707b88dd269fe07b74b96f4","sha512":"064c9717593772bb2a82c5578854096aeea0e81c33bf46936c173e01688b4b9853bed023257130643e5893f731e715df2af590f2e7166bd0802b7f2ecffad290","ssdeep":"","tlshash":"63311dc9da14d5e4d03ed55b7ae90320a86fd37918775888739091f94481779e43caf1","first_seen":"2026-07-27T04:11:05.691118Z","last_seen":"2026-07-27T05:30:59.792493Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.jquery.com/jquery-3.6.4.min.js","fqdn":"code.jquery.com","domain":"jquery.com","tld":"com"},"ip":{"addr":"151.101.193.155","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.014Z","timestamp":1785130090014,"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.6.4.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://dreamspinfluence.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-15ec3\"\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 05:28:10 GMT\r\nage: 3940072\r\nx-served-by: cache-lga21953-LGA, cache-bma-essb1270057-BMA\r\nx-cache: HIT, HIT\r\nx-cache-hits: 25536, 71181\r\nx-timer: S1785130090.053353,VS0,VE0\r\nvary: Accept-Encoding\r\ncontent-length: 31011\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"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"]},{"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"]}],"data":{"size":89795,"size_decoded":31652,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (65447)","md5":"641dd14370106e992d352166f5a07e99","sha1":"eda46747c71d38a880bee44f9a439c3858bb8f99","sha256":"a0fe8723dcf55da64d06b25446d0a8513e52527c45afcb37073465f9c6f352af","sha512":"a6e981b23351186aa43f32879dd64c6801be6e2af7ef8b0e472cccdeeba52d5d7894de4bcb292a364f1e11e525524077534338140a72687ada4fae62849843a5","ssdeep":"1536:IjjxXUHunxDjoXEZxkMV4PYDt0zxxf6gP3f8cApoEGOzZTBqUsuy8WnKdXwhLQvg:IeeIygP3fulzhsz8jlvaDioQ47GKH","tlshash":"d193f8ddb2c6702247a770ba007f510bf236199d684d8450f269d8e9bc78a4e827bf7d","first_seen":"2023-03-26T04:59:07Z","last_seen":"2026-08-02T16:48:15.331127Z","times_seen":27029,"resource_available":true,"data":"LyohIGpRdWVyeSB2My42LjQgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZS5kb2N1bWVudD90KGUsITApOmZ1bmN0aW9uKGUpe2lmKCFlLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiB0KGUpfTp0KGUpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihDLGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1bXSxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmZsYXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmxhdC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25jYXQuYXBwbHkoW10sZSl9LHU9dC5wdXNoLGk9dC5pbmRleE9mLG49e30sbz1uLnRvU3RyaW5nLHk9bi5oYXNPd25Qcm9wZXJ0eSxhPXkudG9TdHJpbmcsbD1hLmNhbGwoT2JqZWN0KSx2PXt9LG09ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuaXRlbX0seD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZT09PWUud2luZG93fSxFPUMuZG9jdW1lbnQsYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjYuNCIsUz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUy5mbi5pbml0KGUsdCl9O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9Uy5mbj1TLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6UyxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFMuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMn0pKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PW4mJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6dSxzb3J0OnQuc29ydCxzcGxpY2U6dC5zcGxpY2V9LFMuZXh0ZW5kPVMuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxvLGE9YXJndW1lbnRzWzBdfHx7fSxzPTEsdT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGEmJihsPWEsYT1hcmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PXR5cGVvZiBhfHxtKGEpfHwoYT17fSkscz09PXUmJihhPXRoaXMscy0tKTtzPHU7cysrKWlmKG51bGwhPShlPWFyZ3VtZW50c1tzXSkpZm9yKHQgaW4gZSlyPWVbdF0sIl9fcHJvdG9fXyIhPT10JiZhIT09ciYmKGwmJnImJihTLmlzUGxhaW5PYmplY3Qocil8fChpPUFycmF5LmlzQXJyYXkocikpKT8obj1hW3RdLG89aSYmIUFycmF5LmlzQXJyYXkobik/W106aXx8Uy5pc1BsYWluT2JqZWN0KG4pP246e30saT0hMSxhW3RdPVMuZXh0ZW5kKGwsbyxyKSk6dm9pZCAwIT09ciYmKGFbdF09cikpO3JldHVybiBhfSxTLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoZitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlKX0sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiEoIWV8fCJbb2JqZWN0IE9iamVjdF0iIT09by5jYWxsKGUpKSYmKCEodD1yKGUpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKG49eS5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3IpJiZhLmNhbGwobik9PT1sKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGUsdCxuKXtiKGUse25vbmNlOnQmJnQubm9uY2V9LG4pfSxlYWNoOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2lmKHAoZSkpe2ZvcihuPWUubGVuZ3RoO3I8bjtyKyspaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrfWVsc2UgZm9yKHIgaW4gZSlpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWs7cmV0dXJuIGV9LG1ha2VBcnJheTpmdW5jdGlvbihlLHQpe3ZhciBuPXR8fFtdO3JldHVybiBudWxsIT1lJiYocChPYmplY3QoZSkpP1MubWVyZ2Uobiwic3RyaW5nIj09dHlwZW9mIGU/W2VdOmUpOnUuY2FsbChuLGUpKSxufSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09dD8tMTppLmNhbGwodCxlLG4pfSxtZXJnZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0rdC5sZW5ndGgscj0wLGk9ZS5sZW5ndGg7cjxuO3IrKyllW2krK109dFtyXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W10saT0wLG89ZS5sZW5ndGgsYT0hbjtpPG87aSsrKSF0KGVbaV0saSkhPT1hJiZyLnB1c2goZVtpXSk7cmV0dXJuIHJ9LG1hcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPTAsYT1bXTtpZihwKGUpKWZvcihyPWUubGVuZ3RoO288cjtvKyspbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7ZWxzZSBmb3IobyBpbiBlKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO3JldHVybiBnKGEpfSxndWlkOjEsc3VwcG9ydDp2fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFMuZm5bU3ltYm9sLml0ZXJhdG9yXT10W1N5bWJvbC5pdGVyYXRvcl0pLFMuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtuWyJbb2JqZWN0ICIrdCsiXSJdPXQudG9Mb3dlckNhc2UoKX0pO3ZhciBkPWZ1bmN0aW9uKG4pe3ZhciBlLGQsYixvLGksaCxmLGcsdyx1LGwsVCxDLGEsRSx5LHMsYyx2LFM9InNpenpsZSIrMSpuZXcgRGF0ZSxwPW4uZG9jdW1lbnQsaz0wLHI9MCxtPXVlKCkseD11ZSgpLEE9dWUoKSxOPXVlKCksaj1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKGw9ITApLDB9LEQ9e30uaGFzT3duUHJvcGVydHksdD1bXSxxPXQucG9wLEw9dC5wdXNoLEg9dC5wdXNoLE89dC5zbGljZSxQPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxSPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsST0iKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15cMC1cXHg3Zl0pKyIsVz0iXFxbIitNKyIqKCIrSSsiKSg/OiIrTSsiKihbKl4kfCF+XT89KSIrTSsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK0krIikpfCkiK00rIipcXF0iLEY9IjooIitJKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitXKyIpKil8LiopXFwpfCkiLCQ9bmV3IFJlZ0V4cChNKyIrIiwiZyIpLEI9bmV3IFJlZ0V4cCgiXiIrTSsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitNKyIrJCIsImciKSxfPW5ldyBSZWdFeHAoIl4iK00rIiosIitNKyIqIiksej1uZXcgUmVnRXhwKCJeIitNKyIqKFs+K35dfCIrTSsiKSIrTSsiKiIpLFU9bmV3IFJlZ0V4cChNKyJ8PiIpLFg9bmV3IFJlZ0V4cChGKSxWPW5ldyBSZWdFeHAoIl4iK0krIiQiKSxHPXtJRDpuZXcgUmVnRXhwKCJeIygiK0krIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrSSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrSSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK1cpLFBTRVVETzpuZXcgUmVnRXhwKCJeIitGKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK00rIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK00rIiooPzooWystXXwpIitNKyIqKFxcZCspfCkpIitNKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitSKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTSsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitNKyIqKCg/Oi1cXGQpP1xcZCopIitNKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxZPS9IVE1MJC9pLFE9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxKPS9eaFxkJC9pLEs9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxlZT0vWyt+XS8sdGU9bmV3IFJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXChbXlxcclxcblxcZl0pIiwiZyIpLG5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49IjB4IitlLnNsaWNlKDEpLTY1NTM2O3JldHVybiB0fHwobjwwP1N0cmluZy5mcm9tQ2hhckNvZGUobis2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShuPj4xMHw1NTI5NiwxMDIzJm58NTYzMjApKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe1QoKX0sYWU9YmUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYiZmllbGRzZXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0guYXBwbHkodD1PLmNhbGwocC5jaGlsZE5vZGVzKSxwLmNoaWxkTm9kZXMpLHRbcC5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7SD17YXBwbHk6dC5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtMLmFwcGx5KGUsTy5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoVChlKSxlPWV8fEMsRSkpe2lmKDExIT09cCYmKHU9Wi5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJnYoZSxhKSYmYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2V7aWYodVsyXSlyZXR1cm4gSC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLG47aWYoKGk9dVszXSkmJmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKGQucXNhJiYhTlt0KyIgIl0mJigheXx8IXkudGVzdCh0KSkmJigxIT09cHx8Im9iamVjdCIhPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXtpZihjPXQsZj1lLDE9PT1wJiYoVS50ZXN0KHQpfHx6LnRlc3QodCkpKXsoZj1lZS50ZXN0KHQpJiZ2ZShlLnBhcmVudE5vZGUpfHxlKT09PWUmJmQuc2NvcGV8fCgocz1lLmdldEF0dHJpYnV0ZSgiaWQiKSk/cz1zLnJlcGxhY2UocmUsaWUpOmUuc2V0QXR0cmlidXRlKCJpZCIscz1TKSksbz0obD1oKHQpKS5sZW5ndGg7d2hpbGUoby0tKWxbb109KHM/IiMiK3M6IjpzY29wZSIpKyIgIit4ZShsW29dKTtjPWwuam9pbigiLCIpfXRyeXtyZXR1cm4gSC5hcHBseShuLGYucXVlcnlTZWxlY3RvckFsbChjKSksbn1jYXRjaChlKXtOKHQsITApfWZpbmFsbHl7cz09PVMmJmUucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGcodC5yZXBsYWNlKEIsIiQxIiksZSxuLHIpfWZ1bmN0aW9uIHVlKCl7dmFyIHI9W107cmV0dXJuIGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gci5wdXNoKHQrIiAiKT5iLmNhY2hlTGVuZ3RoJiZkZWxldGUgZVtyLnNoaWZ0KCldLGVbdCsiICJdPW59fWZ1bmN0aW9uIGxlKGUpe3JldHVybiBlW1NdPSEwLGV9ZnVuY3Rpb24gY2UoZSl7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpO3RyeXtyZXR1cm4hIWUodCl9Y2F0Y2goZSl7cmV0dXJuITF9ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0PW51bGx9fWZ1bmN0aW9uIGZlKGUsdCl7dmFyIG49ZS5zcGxpdCgifCIpLHI9bi5sZW5ndGg7d2hpbGUoci0tKWIuYXR0ckhhbmRsZVtuW3JdXT10fWZ1bmN0aW9uIHBlKGUsdCl7dmFyIG49dCYmZSxyPW4mJjE9PT1lLm5vZGVUeXBlJiYxPT09dC5ub2RlVHlwZSYmZS5zb3VyY2VJbmRleC10LnNvdXJjZUluZGV4O2lmKHIpcmV0dXJuIHI7aWYobil3aGlsZShuPW4ubmV4dFNpYmxpbmcpaWYobj09PXQpcmV0dXJuLTE7cmV0dXJuIGU/MTotMX1mdW5jdGlvbiBkZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZS50eXBlPT09dH19ZnVuY3Rpb24gaGUobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PXR8fCJidXR0b24iPT09dCkmJmUudHlwZT09PW59fWZ1bmN0aW9uIGdlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iZm9ybSJpbiBlP2UucGFyZW50Tm9kZSYmITE9PT1lLmRpc2FibGVkPyJsYWJlbCJpbiBlPyJsYWJlbCJpbiBlLnBhcmVudE5vZGU/ZS5wYXJlbnROb2RlLmRpc2FibGVkPT09dDplLmRpc2FibGVkPT09dDplLmlzRGlzYWJsZWQ9PT10fHxlLmlzRGlzYWJsZWQhPT0hdCYmYWUoZSk9PT10OmUuZGlzYWJsZWQ9PT10OiJsYWJlbCJpbiBlJiZlLmRpc2FibGVkPT09dH19ZnVuY3Rpb24geWUoYSl7cmV0dXJuIGxlKGZ1bmN0aW9uKG8pe3JldHVybiBvPStvLGxlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKFtdLGUubGVuZ3RoLG8pLGk9ci5sZW5ndGg7d2hpbGUoaS0tKWVbbj1yW2ldXSYmKGVbbl09ISh0W25dPWVbbl0pKX0pfSl9ZnVuY3Rpb24gdmUoZSl7cmV0dXJuIGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmZX1mb3IoZSBpbiBkPXNlLnN1cHBvcnQ9e30saT1zZS5pc1hNTD1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLm5hbWVzcGFjZVVSSSxuPWUmJihlLm93bmVyRG9jdW1lbnR8fGUpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hWS50ZXN0KHR8fG4mJm4ubm9kZU5hbWV8fCJIVE1MIil9LFQ9c2Uuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWU/ZS5vd25lckRvY3VtZW50fHxlOnA7cmV0dXJuIHIhPUMmJjk9PT1yLm5vZGVUeXBlJiZyLmRvY3VtZW50RWxlbWVudCYmKGE9KEM9cikuZG9jdW1lbnRFbGVtZW50LEU9IWkoQykscCE9QyYmKG49Qy5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOm4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLGQuc2NvcGU9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksInVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwmJiFlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSBmaWVsZHNldCBkaXYiKS5sZW5ndGh9KSxkLmNzc0hhcz1jZShmdW5jdGlvbigpe3RyeXtyZXR1cm4gQy5xdWVyeVNlbGVjdG9yKCI6aGFzKCosOmpxZmFrZSkiKSwhMX1jYXRjaChlKXtyZXR1cm4hMH19KSxkLmF0dHJpYnV0ZXM9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NOYW1lPSJpIiwhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksZC5nZXRFbGVtZW50c0J5VGFnTmFtZT1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChDLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1LLnRlc3QoQy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxkLmdldEJ5SWQ9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuaWQ9UywhQy5nZXRFbGVtZW50c0J5TmFtZXx8IUMuZ2V0RWxlbWVudHNCeU5hbWUoUykubGVuZ3RofSksZC5nZXRCeUlkPyhiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImlkIik9PT10fX0sYi5maW5kLklEPWZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRCeUlkJiZFKXt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBuP1tuXTpbXX19KTooYi5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKHRlLG5lKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUmJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gdCYmdC52YWx1ZT09PW59fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuLHIsaSxvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dO2k9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxyPTA7d2hpbGUobz1pW3IrK10paWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLGIuZmluZC5UQUc9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOmQucXNhP3QucXVlcnlTZWxlY3RvckFsbChlKTp2b2lkIDB9OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpO2lmKCIqIj09PWUpe3doaWxlKG49b1tpKytdKTE9PT1uLm5vZGVUeXBlJiZyLnB1c2gobik7cmV0dXJuIHJ9cmV0dXJuIG99LGIuZmluZC5DTEFTUz1kLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJkUpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0scz1bXSx5PVtdLChkLnFzYT1LLnRlc3QoQy5xdWVyeVNlbGVjdG9yQWxsKSkmJihjZShmdW5jdGlvbihlKXt2YXIgdDthLmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrUysiJz48L2E+PHNlbGVjdCBpZD0nIitTKyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnkucHVzaCgiWypeJF09IitNKyIqKD86Jyd8XCJcIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHkucHVzaCgiXFxbIitNKyIqKD86dmFsdWV8IitSKyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrUysiLV0iKS5sZW5ndGh8fHkucHVzaCgifj0iKSwodD1DLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsIiIpLGUuYXBwZW5kQ2hpbGQodCksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGh8fHkucHVzaCgiXFxbIitNKyIqbmFtZSIrTSsiKj0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHkucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitTKyIrKiIpLmxlbmd0aHx8eS5wdXNoKCIuIy4rWyt+XSIpLGUucXVlcnlTZWxlY3RvckFsbCgiXFxcZiIpLHkucHVzaCgiW1xcclxcblxcZl0iKX0pLGNlKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciB0PUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGUucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnkucHVzaCgibmFtZSIrTSsiKlsqXiR8IX5dPz0iKSwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmeS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEuYXBwZW5kQ2hpbGQoZSkuZGlzYWJsZWQ9ITAsMiE9PWUucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZ5LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IikseS5wdXNoKCIsLio6Iil9KSksKGQubWF0Y2hlc1NlbGVjdG9yPUsudGVzdChjPWEubWF0Y2hlc3x8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLm9NYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3IpKSYmY2UoZnVuY3Rpb24oZSl7ZC5kaXNjb25uZWN0ZWRNYXRjaD1jLmNhbGwoZSwiKiIpLGMuY2FsbChlLCJbcyE9JyddOngiKSxzLnB1c2goIiE9IixGKX0pLGQuY3NzSGFzfHx5LnB1c2goIjpoYXMiKSx5PXkubGVuZ3RoJiZuZXcgUmVnRXhwKHkuam9pbigifCIpKSxzPXMubGVuZ3RoJiZuZXcgUmVnRXhwKHMuam9pbigifCIpKSx0PUsudGVzdChhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSx2PXR8fEsudGVzdChhLmNvbnRhaW5zKT9mdW5jdGlvbihlLHQpe3ZhciBuPTk9PT1lLm5vZGVUeXBlJiZlLmRvY3VtZW50RWxlbWVudHx8ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhyKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodCl3aGlsZSh0PXQucGFyZW50Tm9kZSlpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0saj10P2Z1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gbnx8KDEmKG49KGUub3duZXJEb2N1bWVudHx8ZSk9PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFkLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09Q3x8ZS5vd25lckRvY3VtZW50PT1wJiZ2KHAsZSk/LTE6dD09Q3x8dC5vd25lckRvY3VtZW50PT1wJiZ2KHAsdCk/MTp1P1AodSxlKS1QKHUsdCk6MDo0Jm4/LTE6MSl9OmZ1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbixyPTAsaT1lLnBhcmVudE5vZGUsbz10LnBhcmVudE5vZGUsYT1bZV0scz1bdF07aWYoIWl8fCFvKXJldHVybiBlPT1DPy0xOnQ9PUM/MTppPy0xOm8/MTp1P1AodSxlKS1QKHUsdCk6MDtpZihpPT09bylyZXR1cm4gcGUoZSx0KTtuPWU7d2hpbGUobj1uLnBhcmVudE5vZGUpYS51bnNoaWZ0KG4pO249dDt3aGlsZShuPW4ucGFyZW50Tm9kZSlzLnVuc2hpZnQobik7d2hpbGUoYVtyXT09PXNbcl0pcisrO3JldHVybiByP3BlKGFbcl0sc1tyXSk6YVtyXT09cD8tMTpzW3JdPT1wPzE6MH0pLEN9LHNlLm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc2UoZSxudWxsLG51bGwsdCl9LHNlLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHQpe2lmKFQoZSksZC5tYXRjaGVzU2VsZWN0b3ImJkUmJiFOW3QrIiAiXSYmKCFzfHwhcy50ZXN0KHQpKSYmKCF5fHwheS50ZXN0KHQpKSl0cnl7dmFyIG49Yy5jYWxsKGUsdCk7aWYobnx8ZC5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGUpe04odCwhMCl9cmV0dXJuIDA8c2UodCxDLG51bGwsW2VdKS5sZW5ndGh9LHNlLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSksdihlLHQpfSxzZS5hdHRyPWZ1bmN0aW9uKGUsdCl7KGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZELmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUUpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmQuYXR0cmlidXRlc3x8IUU/ZS5nZXRBdHRyaWJ1dGUodCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSxzZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UocmUsaWUpfSxzZS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGw9IWQuZGV0ZWN0RHVwbGljYXRlcyx1PSFkLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KGopLGwpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSllLnNwbGljZShuW3JdLDEpfXJldHVybiB1PW51bGwsZX0sbz1zZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1vKGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPW8odCk7cmV0dXJuIG59LChiPXNlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmxlLG1hdGNoOkcsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZSh0ZSxuZSksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UodGUsbmUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWgobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1tW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitNKyIpIitlKyIoIitNKyJ8JCkiKSkmJm0oZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1zZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UoJCwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oaCxlLHQsZyx5KXt2YXIgdj0ibnRoIiE9PWguc2xpY2UoMCwzKSxtPSJsYXN0IiE9PWguc2xpY2UoLTQpLHg9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWcmJjA9PT15P2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9diE9PW0/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixjPWUucGFyZW50Tm9kZSxmPXgmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxwPSFuJiYheCxkPSExO2lmKGMpe2lmKHYpe3doaWxlKGwpe2E9ZTt3aGlsZShhPWFbbF0paWYoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKXJldHVybiExO3U9bD0ib25seSI9PT1oJiYhdSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih1PVttP2MuZmlyc3RDaGlsZDpjLmxhc3RDaGlsZF0sbSYmcCl7ZD0ocz0ocj0oaT0obz0oYT1jKVtTXXx8KGFbU109e30pKVthLnVuaXF1ZUlEXXx8KG9bYS51bmlxdWVJRF09e30pKVtoXXx8W10pWzBdPT09ayYmclsxXSkmJnJbMl0sYT1zJiZjLmNoaWxkTm9kZXNbc107d2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoMT09PWEubm9kZVR5cGUmJisrZCYmYT09PWUpe2lbaF09W2sscyxkXTticmVha319ZWxzZSBpZihwJiYoZD1zPShyPShpPShvPShhPWUpW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1rJiZyWzFdKSwhMT09PWQpd2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoKHg/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09YS5ub2RlVHlwZSkmJisrZCYmKHAmJigoaT0obz1hW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdPVtrLGRdKSxhPT09ZSkpYnJlYWs7cmV0dXJuKGQtPXkpPT09Z3x8ZCVnPT0wJiYwPD1kL2d9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiBhW1NdP2Eobyk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2xlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPVAoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpsZShmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9ZihlLnJlcGxhY2UoQiwiJDEiKSk7cmV0dXJuIHNbU10/bGUoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpsZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8c2UodCxlKS5sZW5ndGh9fSksY29udGFpbnM6bGUoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8byhlKSkuaW5kZXhPZih0KX19KSxsYW5nOmxlKGZ1bmN0aW9uKG4pe3JldHVybiBWLnRlc3Qobnx8IiIpfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZSh0ZSxuZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUU/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PUMuYWN0aXZlRWxlbWVudCYmKCFDLmhhc0ZvY3VzfHxDLmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOmdlKCExKSxkaXNhYmxlZDpnZSghMCksY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OnllKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp5ZShmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6eWUoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjp5ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDp5ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0xO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLGx0OnllKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6eWUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47KytyPHQ7KWUucHVzaChyKTtyZXR1cm4gZX0pfX0pLnBzZXVkb3MubnRoPWIucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pYi5wc2V1ZG9zW2VdPWRlKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWhlKGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHhlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUocyxlLHQpe3ZhciB1PWUuZGlyLGw9ZS5uZXh0LGM9bHx8dSxmPXQmJiJwYXJlbnROb2RlIj09PWMscD1yKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSx0LG4pe3doaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilyZXR1cm4gcyhlLHQsbik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT1bayxwXTtpZihuKXt3aGlsZShlPWVbdV0paWYoKDE9PT1lLm5vZGVUeXBlfHxmKSYmcyhlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbdV0paWYoMT09PWUubm9kZVR5cGV8fGYpaWYoaT0obz1lW1NdfHwoZVtTXT17fSkpW2UudW5pcXVlSURdfHwob1tlLnVuaXF1ZUlEXT17fSksbCYmbD09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbdV18fGU7ZWxzZXtpZigocj1pW2NdKSYmclswXT09PWsmJnJbMV09PT1wKXJldHVybiBhWzJdPXJbMl07aWYoKGlbY109YSlbMl09cyhlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGkpe3JldHVybiAxPGkubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLmxlbmd0aDt3aGlsZShyLS0paWYoIWlbcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTppWzBdfWZ1bmN0aW9uIFRlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQ2UoZCxoLGcseSx2LGUpe3JldHVybiB5JiYheVtTXSYmKHk9Q2UoeSkpLHYmJiF2W1NdJiYodj1DZSh2LGUpKSxsZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1bXSx1PVtdLGw9dC5sZW5ndGgsYz1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLGY9IWR8fCFlJiZoP2M6VGUoYyxzLGQsbixyKSxwPWc/dnx8KGU/ZDpsfHx5KT9bXTp0OmY7aWYoZyYmZyhmLHAsbixyKSx5KXtpPVRlKHAsdSkseShpLFtdLG4sciksbz1pLmxlbmd0aDt3aGlsZShvLS0pKGE9aVtvXSkmJihwW3Vbb11dPSEoZlt1W29dXT1hKSl9aWYoZSl7aWYodnx8ZCl7aWYodil7aT1bXSxvPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmaS5wdXNoKGZbb109YSk7dihudWxsLHA9W10saSxyKX1vPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmLTE8KGk9dj9QKGUsYSk6c1tvXSkmJihlW2ldPSEodFtpXT1hKSl9fWVsc2UgcD1UZShwPT09dD9wLnNwbGljZShsLHAubGVuZ3RoKTpwKSx2P3YobnVsbCx0LHAscik6SC5hcHBseSh0LHApfSl9ZnVuY3Rpb24gRWUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1iZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9YmUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8UChpLGUpfSxhLCEwKSxjPVtmdW5jdGlvbihlLHQsbil7dmFyIHI9IW8mJihufHx0IT09dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtiZSh3ZShjKSx0KV07ZWxzZXtpZigodD1iLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSlbU10pe2ZvcihuPSsrcztuPHI7bisrKWlmKGIucmVsYXRpdmVbZVtuXS50eXBlXSlicmVhaztyZXR1cm4gQ2UoMTxzJiZ3ZShjKSwxPHMmJnhlKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoQiwiJDEiKSx0LHM8biYmRWUoZS5zbGljZShzLG4pKSxuPHImJkVlKGU9ZS5zbGljZShuKSksbjxyJiZ4ZShlKSl9Yy5wdXNoKHQpfXJldHVybiB3ZShjKX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxoPXNlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD14W2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj1fLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj16LmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKEIsIiAiKX0pLGE9YS5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEocj1HW29dLmV4ZWMoYSkpfHx1W29dJiYhKHI9dVtvXShyKSl8fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6cn0pLGE9YS5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P2EubGVuZ3RoOmE/c2UuZXJyb3IoZSk6eChlLHMpLnNsaWNlKDApfSxmPXNlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix5LHYsbSx4LHIsaT1bXSxvPVtdLGE9QVtlKyIgIl07aWYoIWEpe3R8fCh0PWgoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPUVlKHRbbl0pKVtTXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPUEoZSwoeT1vLG09MDwodj1pKS5sZW5ndGgseD0wPHkubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPWsrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT1DfHx0fHxpKTtsIT09ZyYmbnVsbCE9KG89ZFtsXSk7bCsrKXtpZih4JiZvKXthPTAsdHx8by5vd25lckRvY3VtZW50PT1DfHwoVChvKSxuPSFFKTt3aGlsZShzPXlbYSsrXSlpZihzKG8sdHx8QyxuKSl7ci5wdXNoKG8pO2JyZWFrfWkmJihrPWgpfW0mJigobz0hcyYmbykmJnUtLSxlJiZjLnB1c2gobykpfWlmKHUrPWwsbSYmbCE9PXUpe2E9MDt3aGlsZShzPXZbYSsrXSlzKGMsZix0LG4pO2lmKGUpe2lmKDA8dSl3aGlsZShsLS0pY1tsXXx8ZltsXXx8KGZbbF09cS5jYWxsKHIpKTtmPVRlKGYpfUguYXBwbHkocixmKSxpJiYhZSYmMDxmLmxlbmd0aCYmMTx1K3YubGVuZ3RoJiZzZS51bmlxdWVTb3J0KHIpfXJldHVybiBpJiYoaz1oLHc9cCksY30sbT9sZShyKTpyKSkpLnNlbGVjdG9yPWV9cmV0dXJuIGF9LGc9c2Uuc2VsZWN0PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZSxjPSFyJiZoKGU9bC5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09Yy5sZW5ndGgpe2lmKDI8KG89Y1swXT1jWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oYT1vWzBdKS50eXBlJiY5PT09dC5ub2RlVHlwZSYmRSYmYi5yZWxhdGl2ZVtvWzFdLnR5cGVdKXtpZighKHQ9KGIuZmluZC5JRChhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksdCl8fFtdKVswXSkpcmV0dXJuIG47bCYmKHQ9dC5wYXJlbnROb2RlKSxlPWUuc2xpY2Uoby5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1HLm5lZWRzQ29udGV4dC50ZXN0KGUpPzA6by5sZW5ndGg7d2hpbGUoaS0tKXtpZihhPW9baV0sYi5yZWxhdGl2ZVtzPWEudHlwZV0pYnJlYWs7aWYoKHU9Yi5maW5kW3NdKSYmKHI9dShhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksZWUudGVzdChvWzBdLnR5cGUpJiZ2ZSh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKG8uc3BsaWNlKGksMSksIShlPXIubGVuZ3RoJiZ4ZShvKSkpcmV0dXJuIEguYXBwbHkobixyKSxuO2JyZWFrfX19cmV0dXJuKGx8fGYoZSxjKSkocix0LCFFLG4sIXR8fGVlLnRlc3QoZSkmJnZlKHQucGFyZW50Tm9kZSl8fHQpLG59LGQuc29ydFN0YWJsZT1TLnNwbGl0KCIiKS5zb3J0KGopLmpvaW4oIiIpPT09UyxkLmRldGVjdER1cGxpY2F0ZXM9ISFsLFQoKSxkLnNvcnREZXRhY2hlZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gMSZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKEMuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxmZSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuKXJldHVybiBlLmdldEF0dHJpYnV0ZSh0LCJ0eXBlIj09PXQudG9Mb3dlckNhc2UoKT8xOjIpfSksZC5hdHRyaWJ1dGVzJiZjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxpbnB1dC8+IixlLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxmZSgidmFsdWUiLGZ1bmN0aW9uKGUsdCxuKXtpZighbiYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gZS5kZWZhdWx0VmFsdWV9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8ZmUoUixmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoIW4pcmV0dXJuITA9PT1lW3RdP3QudG9Mb3dlckNhc2UoKToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNpZmllZD9yLnZhbHVlOm51bGx9KSxzZX0oQyk7Uy5maW5kPWQsUy5leHByPWQuc2VsZWN0b3JzLFMuZXhwclsiOiJdPVMuZXhwci5wc2V1ZG9zLFMudW5pcXVlU29ydD1TLnVuaXF1ZT1kLnVuaXF1ZVNvcnQsUy50ZXh0PWQuZ2V0VGV4dCxTLmlzWE1MRG9jPWQuaXNYTUwsUy5jb250YWlucz1kLmNvbnRhaW5zLFMuZXNjYXBlU2VsZWN0b3I9ZC5lc2NhcGU7dmFyIGg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVtdLGk9dm9pZCAwIT09bjt3aGlsZSgoZT1lW3RdKSYmOSE9PWUubm9kZVR5cGUpaWYoMT09PWUubm9kZVR5cGUpe2lmKGkmJlMoZSkuaXMobikpYnJlYWs7ci5wdXNoKGUpfXJldHVybiByfSxUPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBlJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufSxrPVMuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7ZnVuY3Rpb24gQShlLHQpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCl9dmFyIE49L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7ZnVuY3Rpb24gaihlLG4scil7cmV0dXJuIG0obik/Uy5ncmVwKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4hIW4uY2FsbChlLHQsZSkhPT1yfSk6bi5ub2RlVHlwZT9TLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PW4hPT1yfSk6InN0cmluZyIhPXR5cGVvZiBuP1MuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybi0xPGkuY2FsbChuLGUpIT09cn0pOlMuZmlsdGVyKG4sZSxyKX1TLmZpbHRlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dFswXTtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoJiYxPT09ci5ub2RlVHlwZT9TLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsZSk/W3JdOltdOlMuZmluZC5tYXRjaGVzKGUsUy5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSkpfSxTLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcy5sZW5ndGgsaT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3Q8cjt0KyspaWYoUy5jb250YWlucyhpW3RdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxyO3QrKylTLmZpbmQoZSxpW3RdLG4pO3JldHVybiAxPHI/Uy51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhaih0aGlzLCJzdHJpbmciPT10eXBlb2YgZSYmay50ZXN0KGUpP1MoZSk6ZXx8W10sITEpLmxlbmd0aH19KTt2YXIgRCxxPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KFMuZm4uaW5pdD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZighZSlyZXR1cm4gdGhpcztpZihuPW58fEQsInN0cmluZyI9PXR5cGVvZiBlKXtpZighKHI9IjwiPT09ZVswXSYmIj4iPT09ZVtlLmxlbmd0aC0xXSYmMzw9ZS5sZW5ndGg/W251bGwsZSxudWxsXTpxLmV4ZWMoZSkpfHwhclsxXSYmdClyZXR1cm4hdHx8dC5qcXVlcnk/KHR8fG4pLmZpbmQoZSk6dGhpcy5jb25zdHJ1Y3Rvcih0KS5maW5kKGUpO2lmKHJbMV0pe2lmKHQ9dCBpbnN0YW5jZW9mIFM/dFswXTp0LFMubWVyZ2UodGhpcyxTLnBhcnNlSFRNTChyWzFdLHQmJnQubm9kZVR5cGU/dC5vd25lckRvY3VtZW50fHx0OkUsITApKSxOLnRlc3QoclsxXSkmJlMuaXNQbGFpbk9iamVjdCh0KSlmb3IociBpbiB0KW0odGhpc1tyXSk/dGhpc1tyXSh0W3JdKTp0aGlzLmF0dHIocix0W3JdKTtyZXR1cm4gdGhpc31yZXR1cm4oaT1FLmdldEVsZW1lbnRCeUlkKHJbMl0pKSYmKHRoaXNbMF09aSx0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBlLm5vZGVUeXBlPyh0aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzKTptKGUpP3ZvaWQgMCE9PW4ucmVhZHk/bi5yZWFkeShlKTplKFMpOlMubWFrZUFycmF5KGUsdGhpcyl9KS5wcm90b3R5cGU9Uy5mbixEPVMoRSk7dmFyIEw9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sSD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmdW5jdGlvbiBPKGUsdCl7d2hpbGUoKGU9ZVt0XSkmJjEhPT1lLm5vZGVUeXBlKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGUpe3ZhciB0PVMoZSx0aGlzKSxuPXQubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bjtlKyspaWYoUy5jb250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0aCxvPVtdLGE9InN0cmluZyIhPXR5cGVvZiBlJiZTKGUpO2lmKCFrLnRlc3QoZSkpZm9yKDtyPGk7cisrKWZvcihuPXRoaXNbcl07biYmbiE9PXQ7bj1uLnBhcmVudE5vZGUpaWYobi5ub2RlVHlwZTwxMSYmKGE/LTE8YS5pbmRleChuKToxPT09bi5ub2RlVHlwZSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUpKSl7by5wdXNoKG4pO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjaygxPG8ubGVuZ3RoP1MudW5pcXVlU29ydChvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP2kuY2FsbChTKGUpLHRoaXNbMF0pOmkuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy51bmlxdWVTb3J0KFMubWVyZ2UodGhpcy5nZXQoKSxTKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLFMuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgoZSwicGFyZW50Tm9kZSIsbil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLCJwcmV2aW91c1NpYmxpbmciLG4pfSxzaWJsaW5nczpmdW5jdGlvbihlKXtyZXR1cm4gVCgoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIFQoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUuY29udGVudERvY3VtZW50JiZyKGUuY29udGVudERvY3VtZW50KT9lLmNvbnRlbnREb2N1bWVudDooQShlLCJ0ZW1wbGF0ZSIpJiYoZT1lLmNvbnRlbnR8fGUpLFMubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihyLGkpe1MuZm5bcl09ZnVuY3Rpb24oZSx0KXt2YXIgbj1TLm1hcCh0aGlzLGksZSk7cmV0dXJuIlVudGlsIiE9PXIuc2xpY2UoLTUpJiYodD1lKSx0JiYic3RyaW5nIj09dHlwZW9mIHQmJihuPVMuZmlsdGVyKHQsbikpLDE8dGhpcy5sZW5ndGgmJihIW3JdfHxTLnVuaXF1ZVNvcnQobiksTC50ZXN0KHIpJiZuLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2sobil9fSk7dmFyIFA9L1teXHgyMFx0XHJcblxmXSsvZztmdW5jdGlvbiBSKGUpe3JldHVybiBlfWZ1bmN0aW9uIE0oZSl7dGhyb3cgZX1mdW5jdGlvbiBJKGUsdCxuLHIpe3ZhciBpO3RyeXtlJiZtKGk9ZS5wcm9taXNlKT9pLmNhbGwoZSkuZG9uZSh0KS5mYWlsKG4pOmUmJm0oaT1lLnRoZW4pP2kuY2FsbChlLHQsbik6dC5hcHBseSh2b2lkIDAsW2VdLnNsaWNlKHIpKX1jYXRjaChlKXtuLmFwcGx5KHZvaWQgMCxbZV0pfX1TLkNhbGxiYWNrcz1mdW5jdGlvbihyKXt2YXIgZSxuO3I9InN0cmluZyI9PXR5cGVvZiByPyhlPXIsbj17fSxTLmVhY2goZS5tYXRjaChQKXx8W10sZnVuY3Rpb24oZSx0KXtuW3RdPSEwfSksbik6Uy5leHRlbmQoe30scik7dmFyIGksdCxvLGEscz1bXSx1PVtdLGw9LTEsYz1mdW5jdGlvbigpe2ZvcihhPWF8fHIub25jZSxvPWk9ITA7dS5sZW5ndGg7bD0tMSl7dD11LnNoaWZ0KCk7d2hpbGUoKytsPHMubGVuZ3RoKSExPT09c1tsXS5hcHBseSh0WzBdLHRbMV0pJiZyLnN0b3BPbkZhbHNlJiYobD1zLmxlbmd0aCx0PSExKX1yLm1lbW9yeXx8KHQ9ITEpLGk9ITEsYSYmKHM9dD9bXToiIil9LGY9e2FkZDpmdW5jdGlvbigpe3JldHVybiBzJiYodCYmIWkmJihsPXMubGVuZ3RoLTEsdS5wdXNoKHQpKSxmdW5jdGlvbiBuKGUpe1MuZWFjaChlLGZ1bmN0aW9uKGUsdCl7bSh0KT9yLnVuaXF1ZSYmZi5oYXModCl8fHMucHVzaCh0KTp0JiZ0Lmxlbmd0aCYmInN0cmluZyIhPT13KHQpJiZuKHQpfSl9KGFyZ3VtZW50cyksdCYmIWkmJmMoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIFMuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgbjt3aGlsZSgtMTwobj1TLmluQXJyYXkodCxzLG4pKSlzLnNwbGljZShuLDEpLG48PWwmJmwtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gZT8tMTxTLmluQXJyYXkoZSxzKTowPHMubGVuZ3RofSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBzJiYocz1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBhPXU9W10scz10PSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXN9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gYT11PVtdLHR8fGl8fChzPXQ9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhYX0sZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXx8KHQ9W2UsKHQ9dHx8W10pLnNsaWNlP3Quc2xpY2UoKTp0XSx1LnB1c2godCksaXx8YygpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFvfX07cmV0dXJuIGZ9LFMuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihlKXt2YXIgbz1bWyJub3RpZnkiLCJwcm9ncmVzcyIsUy5DYWxsYmFja3MoIm1lbW9yeSIpLFMuQ2FsbGJhY2tzKCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMSwicmVqZWN0ZWQiXV0saT0icGVuZGluZyIsYT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHMuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGUpe3JldHVybiBhLnRoZW4obnVsbCxlKX0scGlwZTpmdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cztyZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihyKXtTLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPW0oaVt0WzRdXSkmJmlbdFs0XV07c1t0WzFdXShmdW5jdGlvbigpe3ZhciBlPW4mJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJm0oZS5wcm9taXNlKT9lLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpOnJbdFswXSsiV2l0aCJdKHRoaXMsbj9bZV06YXJndW1lbnRzKX0pfSksaT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKHQsbixyKXt2YXIgdT0wO2Z1bmN0aW9uIGwoaSxvLGEscyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPWFyZ3VtZW50cyxlPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZighKGk8dSkpe2lmKChlPWEuYXBwbHkobixyKSk9PT1vLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTt0PWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmZS50aGVuLG0odCk/cz90LmNhbGwoZSxsKHUsbyxSLHMpLGwodSxvLE0scykpOih1KyssdC5jYWxsKGUsbCh1LG8sUixzKSxsKHUsbyxNLHMpLGwodSxvLFIsby5ub3RpZnlXaXRoKSkpOihhIT09UiYmKG49dm9pZCAwLHI9W2VdKSwoc3x8by5yZXNvbHZlV2l0aCkobixyKSl9fSx0PXM/ZTpmdW5jdGlvbigpe3RyeXtlKCl9Y2F0Y2goZSl7Uy5EZWZlcnJlZC5leGNlcHRpb25Ib29rJiZTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soZSx0LnN0YWNrVHJhY2UpLHU8PWkrMSYmKGEhPT1NJiYobj12b2lkIDAscj1bZV0pLG8ucmVqZWN0V2l0aChuLHIpKX19O2k/dCgpOihTLkRlZmVycmVkLmdldFN0YWNrSG9vayYmKHQuc3RhY2tUcmFjZT1TLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSxDLnNldFRpbWVvdXQodCkpfX1yZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihlKXtvWzBdWzNdLmFkZChsKDAsZSxtKHIpP3I6UixlLm5vdGlmeVdpdGgpKSxvWzFdWzNdLmFkZChsKDAsZSxtKHQpP3Q6UikpLG9bMl1bM10uYWRkKGwoMCxlLG0obik/bjpNKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/Uy5leHRlbmQoZSxhKTphfX0scz17fTtyZXR1cm4gUy5lYWNoKG8sZnVuY3Rpb24oZSx0KXt2YXIgbj10WzJdLHI9dFs1XTthW3RbMV1dPW4uYWRkLHImJm4uYWRkKGZ1bmN0aW9uKCl7aT1yfSxvWzMtZV1bMl0uZGlzYWJsZSxvWzMtZV1bM10uZGlzYWJsZSxvWzBdWzJdLmxvY2ssb1swXVszXS5sb2NrKSxuLmFkZCh0WzNdLmZpcmUpLHNbdFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gc1t0WzBdKyJXaXRoIl0odGhpcz09PXM/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxzW3RbMF0rIldpdGgiXT1uLmZpcmVXaXRofSksYS5wcm9taXNlKHMpLGUmJmUuY2FsbChzLHMpLHN9LHdoZW46ZnVuY3Rpb24oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCx0PW4scj1BcnJheSh0KSxpPXMuY2FsbChhcmd1bWVudHMpLG89Uy5EZWZlcnJlZCgpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JbdF09dGhpcyxpW3RdPTE8YXJndW1lbnRzLmxlbmd0aD9zLmNhbGwoYXJndW1lbnRzKTplLC0tbnx8by5yZXNvbHZlV2l0aChyLGkpfX07aWYobjw9MSYmKEkoZSxvLmRvbmUoYSh0KSkucmVzb2x2ZSxvLnJlamVjdCwhbiksInBlbmRpbmciPT09by5zdGF0ZSgpfHxtKGlbdF0mJmlbdF0udGhlbikpKXJldHVybiBvLnRoZW4oKTt3aGlsZSh0LS0pSShpW3RdLGEodCksby5yZWplY3QpO3JldHVybiBvLnByb21pc2UoKX19KTt2YXIgVz0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oZSx0KXtDLmNvbnNvbGUmJkMuY29uc29sZS53YXJuJiZlJiZXLnRlc3QoZS5uYW1lKSYmQy5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrZS5tZXNzYWdlLGUuc3RhY2ssdCl9LFMucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oZSl7Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfTt2YXIgRj1TLkRlZmVycmVkKCk7ZnVuY3Rpb24gJCgpe0UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsJCksQy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIiwkKSxTLnJlYWR5KCl9Uy5mbi5yZWFkeT1mdW5jdGlvbihlKXtyZXR1cm4gRi50aGVuKGUpWyJjYXRjaCJdKGZ1bmN0aW9uKGUpe1MucmVhZHlFeGNlcHRpb24oZSl9KSx0aGlzfSxTLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihlKXsoITA9PT1lPy0tUy5yZWFkeVdhaXQ6Uy5pc1JlYWR5KXx8KFMuaXNSZWFkeT0hMCkhPT1lJiYwPC0tUy5yZWFkeVdhaXR8fEYucmVzb2x2ZVdpdGgoRSxbU10pfX0pLFMucmVhZHkudGhlbj1GLnRoZW4sImNvbXBsZXRlIj09PUUucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09RS5yZWFkeVN0YXRlJiYhRS5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/Qy5zZXRUaW1lb3V0KFMucmVhZHkpOihFLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCQpLEMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsJCkpO3ZhciBCPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEpe3ZhciBzPTAsdT1lLmxlbmd0aCxsPW51bGw9PW47aWYoIm9iamVjdCI9PT13KG4pKWZvcihzIGluIGk9ITAsbilCKGUsdCxzLG5bc10sITAsbyxhKTtlbHNlIGlmKHZvaWQgMCE9PXImJihpPSEwLG0ocil8fChhPSEwKSxsJiYoYT8odC5jYWxsKGUsciksdD1udWxsKToobD10LHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsLmNhbGwoUyhlKSxuKX0pKSx0KSlmb3IoO3M8dTtzKyspdChlW3NdLG4sYT9yOnIuY2FsbChlW3NdLHMsdChlW3NdLG4pKSk7cmV0dXJuIGk/ZTpsP3QuY2FsbChlKTp1P3QoZVswXSxuKTpvfSxfPS9eLW1zLS8sej0vLShbYS16XSkvZztmdW5jdGlvbiBVKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBYKGUpe3JldHVybiBlLnJlcGxhY2UoXywibXMtIikucmVwbGFjZSh6LFUpfXZhciBWPWZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZXx8OT09PWUubm9kZVR5cGV8fCErZS5ub2RlVHlwZX07ZnVuY3Rpb24gRygpe3RoaXMuZXhwYW5kbz1TLmV4cGFuZG8rRy51aWQrK31HLnVpZD0xLEcucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHR8fCh0PXt9LFYoZSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT10Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHRoaXMuZXhwYW5kbyx7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KSkpLHR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT10aGlzLmNhY2hlKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClpW1godCldPW47ZWxzZSBmb3IociBpbiB0KWlbWChyKV09dFtyXTtyZXR1cm4gaX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRvXVtYKHQpXX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dHx8dCYmInN0cmluZyI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KGUsdCk6KHRoaXMuc2V0KGUsdCxuKSx2b2lkIDAhPT1uP246dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PXIpe2lmKHZvaWQgMCE9PXQpe249KHQ9QXJyYXkuaXNBcnJheSh0KT90Lm1hcChYKToodD1YKHQpKWluIHI/W3RdOnQubWF0Y2goUCl8fFtdKS5sZW5ndGg7d2hpbGUobi0tKWRlbGV0ZSByW3Rbbl1dfSh2b2lkIDA9PT10fHxTLmlzRW1wdHlPYmplY3QocikpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PXQmJiFTLmlzRW1wdHlPYmplY3QodCl9fTt2YXIgWT1uZXcgRyxRPW5ldyBHLEo9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxLPS9bQS1aXS9nO2Z1bmN0aW9uIFooZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShLLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShyKSkpe3RyeXtuPSJ0cnVlIj09PShpPW4pfHwiZmFsc2UiIT09aSYmKCJudWxsIj09PWk/bnVsbDppPT09K2krIiI/K2k6Si50ZXN0KGkpP0pTT04ucGFyc2UoaSk6aSl9Y2F0Y2goZSl7fVEuc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufVMuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBRLmhhc0RhdGEoZSl8fFkuaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFEuYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1EucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gWS5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1kucmVtb3ZlKGUsdCl9fSksUy5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT1RLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVkuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9WChyLnNsaWNlKDUpKSxaKG8scixpW3JdKSk7WS5zZXQobywiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGl9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbil9KTpCKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ7aWYobyYmdm9pZCAwPT09ZSlyZXR1cm4gdm9pZCAwIT09KHQ9US5nZXQobyxuKSk/dDp2b2lkIDAhPT0odD1aKG8sbikpP3Q6dm9pZCAwO3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbixlKX0pfSxudWxsLGUsMTxhcmd1bWVudHMubGVuZ3RoLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtRLnJlbW92ZSh0aGlzLGUpfSl9fSksUy5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZihlKXJldHVybiB0PSh0fHwiZngiKSsicXVldWUiLHI9WS5nZXQoZSx0KSxuJiYoIXJ8fEFycmF5LmlzQXJyYXkobik/cj1ZLmFjY2VzcyhlLHQsUy5tYWtlQXJyYXkobikpOnIucHVzaChuKSkscnx8W119LGRlcXVldWU6ZnVuY3Rpb24oZSx0KXt0PXR8fCJmeCI7dmFyIG49Uy5xdWV1ZShlLHQpLHI9bi5sZW5ndGgsaT1uLnNoaWZ0KCksbz1TLl9xdWV1ZUhvb2tzKGUsdCk7ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHItLSksaSYmKCJmeCI9PT10JiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgby5zdG9wLGkuY2FsbChlLGZ1bmN0aW9uKCl7Uy5kZXF1ZXVlKGUsdCl9LG8pKSwhciYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCsicXVldWVIb29rcyI7cmV0dXJuIFkuZ2V0KGUsbil8fFkuYWNjZXNzKGUsbix7ZW1wdHk6Uy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7WS5yZW1vdmUoZSxbdCsicXVldWUiLG5dKX0pfSl9fSksUy5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKHQsbil7dmFyIGU9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQmJihuPXQsdD0iZngiLGUtLSksYXJndW1lbnRzLmxlbmd0aDxlP1MucXVldWUodGhpc1swXSx0KTp2b2lkIDA9PT1uP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Uy5xdWV1ZSh0aGlzLHQsbik7Uy5fcXVldWVIb29rcyh0aGlzLHQpLCJmeCI9PT10JiYiaW5wcm9ncmVzcyIhPT1lWzBdJiZTLmRlcXVldWUodGhpcyx0KX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLmRlcXVldWUodGhpcyxlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0xLGk9Uy5EZWZlcnJlZCgpLG89dGhpcyxhPXRoaXMubGVuZ3RoLHM9ZnVuY3Rpb24oKXstLXJ8fGkucmVzb2x2ZVdpdGgobyxbb10pfTsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLGU9ZXx8ImZ4Ijt3aGlsZShhLS0pKG49WS5nZXQob1thXSxlKyJxdWV1ZUhvb2tzIikpJiZuLmVtcHR5JiYocisrLG4uZW1wdHkuYWRkKHMpKTtyZXR1cm4gcygpLGkucHJvbWlzZSh0KX19KTt2YXIgZWU9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsdGU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK2VlKyIpKFthLXolXSopJCIsImkiKSxuZT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLHJlPUUuZG9jdW1lbnRFbGVtZW50LGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKX0sb2U9e2NvbXBvc2VkOiEwfTtyZS5nZXRSb290Tm9kZSYmKGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8ZS5nZXRSb290Tm9kZShvZSk9PT1lLm93bmVyRG9jdW1lbnR9KTt2YXIgYWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ibm9uZSI9PT0oZT10fHxlKS5zdHlsZS5kaXNwbGF5fHwiIj09PWUuc3R5bGUuZGlzcGxheSYmaWUoZSkmJiJub25lIj09PVMuY3NzKGUsImRpc3BsYXkiKX07ZnVuY3Rpb24gc2UoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBTLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChTLmNzc051bWJlclt0XT8iIjoicHgiKSxjPWUubm9kZVR5cGUmJihTLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmdGUuZXhlYyhTLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pUy5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLFMuc3R5bGUoZSx0LGMrbCksbj1ufHxbXX1yZXR1cm4gbiYmKGM9K2N8fCt1fHwwLGk9blsxXT9jKyhuWzFdKzEpKm5bMl06K25bMl0sciYmKHIudW5pdD1sLHIuc3RhcnQ9YyxyLmVuZD1pKSksaX12YXIgdWU9e307ZnVuY3Rpb24gbGUoZSx0KXtmb3IodmFyIG4scixpLG8sYSxzLHUsbD1bXSxjPTAsZj1lLmxlbmd0aDtjPGY7YysrKShyPWVbY10pLnN0eWxlJiYobj1yLnN0eWxlLmRpc3BsYXksdD8oIm5vbmUiPT09biYmKGxbY109WS5nZXQociwiZGlzcGxheSIpfHxudWxsLGxbY118fChyLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmYWUocikmJihsW2NdPSh1PWE9bz12b2lkIDAsYT0oaT1yKS5vd25lckRvY3VtZW50LHM9aS5ub2RlTmFtZSwodT11ZVtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLHU9Uy5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSx1ZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsWS5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXthZSh0aGlzKT9TKHRoaXMpLnNob3coKTpTKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBjZSxmZSxwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2k7Y2U9RS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJkaXYiKSksKGZlPUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxmZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksZmUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGNlLmFwcGVuZENoaWxkKGZlKSx2LmNoZWNrQ2xvbmU9Y2UuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGNlLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsdi5ub0Nsb25lQ2hlY2tlZD0hIWNlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSxjZS5pbm5lckhUTUw9IjxvcHRpb24+PC9vcHRpb24+Iix2Lm9wdGlvbj0hIWNlLmxhc3RDaGlsZDt2YXIgZ2U9e3RoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiB5ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmQShlLHQpP1MubWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24gdmUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspWS5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fFkuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9Z2UudGJvZHk9Z2UudGZvb3Q9Z2UuY29sZ3JvdXA9Z2UuY2FwdGlvbj1nZS50aGVhZCxnZS50aD1nZS50ZCx2Lm9wdGlvbnx8KGdlLm9wdGdyb3VwPWdlLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgbWU9Lzx8JiM/XHcrOy87ZnVuY3Rpb24geGUoZSx0LG4scixpKXtmb3IodmFyIG8sYSxzLHUsbCxjLGY9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscD1bXSxkPTAsaD1lLmxlbmd0aDtkPGg7ZCsrKWlmKChvPWVbZF0pfHwwPT09bylpZigib2JqZWN0Ij09PXcobykpUy5tZXJnZShwLG8ubm9kZVR5cGU/W29dOm8pO2Vsc2UgaWYobWUudGVzdChvKSl7YT1hfHxmLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHM9KGRlLmV4ZWMobyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksdT1nZVtzXXx8Z2UuX2RlZmF1bHQsYS5pbm5lckhUTUw9dVsxXStTLmh0bWxQcmVmaWx0ZXIobykrdVsyXSxjPXVbMF07d2hpbGUoYy0tKWE9YS5sYXN0Q2hpbGQ7Uy5tZXJnZShwLGEuY2hpbGROb2RlcyksKGE9Zi5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIHAucHVzaCh0LmNyZWF0ZVRleHROb2RlKG8pKTtmLnRleHRDb250ZW50PSIiLGQ9MDt3aGlsZShvPXBbZCsrXSlpZihyJiYtMTxTLmluQXJyYXkobyxyKSlpJiZpLnB1c2gobyk7ZWxzZSBpZihsPWllKG8pLGE9eWUoZi5hcHBlbmRDaGlsZChvKSwic2NyaXB0IiksbCYmdmUoYSksbil7Yz0wO3doaWxlKG89YVtjKytdKWhlLnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gZn12YXIgYmU9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIHdlKCl7cmV0dXJuITB9ZnVuY3Rpb24gVGUoKXtyZXR1cm4hMX1mdW5jdGlvbiBDZShlLHQpe3JldHVybiBlPT09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEUuYWN0aXZlRWxlbWVudH1jYXRjaChlKXt9fSgpPT0oImZvY3VzIj09PXQpfWZ1bmN0aW9uIEVlKGUsdCxuLHIsaSxvKXt2YXIgYSxzO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7Zm9yKHMgaW4ic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj12b2lkIDApLHQpRWUoZSxzLG4scix0W3NdLG8pO3JldHVybiBlfWlmKG51bGw9PXImJm51bGw9PWk/KGk9bixyPW49dm9pZCAwKTpudWxsPT1pJiYoInN0cmluZyI9PXR5cGVvZiBuPyhpPXIscj12b2lkIDApOihpPXIscj1uLG49dm9pZCAwKSksITE9PT1pKWk9VGU7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksKGk9ZnVuY3Rpb24oZSl7cmV0dXJuIFMoKS5vZmYoZSksYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KS5ndWlkPWEuZ3VpZHx8KGEuZ3VpZD1TLmd1aWQrKykpLGUuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQuYWRkKHRoaXMsdCxpLHIsbil9KX1mdW5jdGlvbiBTZShlLGksbyl7bz8oWS5zZXQoZSxpLCExKSxTLmV2ZW50LmFkZChlLGkse25hbWVzcGFjZTohMSxoYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj1ZLmdldCh0aGlzLGkpO2lmKDEmZS5pc1RyaWdnZXImJnRoaXNbaV0pe2lmKHIubGVuZ3RoKShTLmV2ZW50LnNwZWNpYWxbaV18fHt9KS5kZWxlZ2F0ZVR5cGUmJmUuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihyPXMuY2FsbChhcmd1bWVudHMpLFkuc2V0KHRoaXMsaSxyKSx0PW8odGhpcyxpKSx0aGlzW2ldKCksciE9PShuPVkuZ2V0KHRoaXMsaSkpfHx0P1kuc2V0KHRoaXMsaSwhMSk6bj17fSxyIT09bilyZXR1cm4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksbiYmbi52YWx1ZX1lbHNlIHIubGVuZ3RoJiYoWS5zZXQodGhpcyxpLHt2YWx1ZTpTLmV2ZW50LnRyaWdnZXIoUy5leHRlbmQoclswXSxTLkV2ZW50LnByb3RvdHlwZSksci5zbGljZSgxKSx0aGlzKX0pLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX0pKTp2b2lkIDA9PT1ZLmdldChlLGkpJiZTLmV2ZW50LmFkZChlLGksd2UpfVMuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24odCxlLG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHk9WS5nZXQodCk7aWYoVih0KSl7bi5oYW5kbGVyJiYobj0obz1uKS5oYW5kbGVyLGk9by5zZWxlY3RvciksaSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihyZSxpKSxuLmd1aWR8fChuLmd1aWQ9Uy5ndWlkKyspLCh1PXkuZXZlbnRzKXx8KHU9eS5ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSksKGE9eS5oYW5kbGUpfHwoYT15LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFMmJlMuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP1MuZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9YmUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGQ9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGQsZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9Uy5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmUy5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKHA9dVtkXSl8fCgocD11W2RdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmITEhPT1mLnNldHVwLmNhbGwodCxyLGgsYSl8fHQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKGQsYSkpLGYuYWRkJiYoZi5hZGQuY2FsbCh0LGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1aWQ9bi5ndWlkKSksaT9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLGMpOnAucHVzaChjKSxTLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHk9WS5oYXNEYXRhKGUpJiZZLmdldChlKTtpZih5JiYodT15LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9YmUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx5LmhhbmRsZSl8fFMucmVtb3ZlRXZlbnQoZSxkLHkuaGFuZGxlKSxkZWxldGUgdVtkXSl9ZWxzZSBmb3IoZCBpbiB1KVMuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Uy5pc0VtcHR5T2JqZWN0KHUpJiZZLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksdT1TLmV2ZW50LmZpeChlKSxsPShZLmdldCh0aGlzLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbdS50eXBlXXx8W10sYz1TLmV2ZW50LnNwZWNpYWxbdS50eXBlXXx8e307Zm9yKHNbMF09dSx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylzW3RdPWFyZ3VtZW50c1t0XTtpZih1LmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWMucHJlRGlzcGF0Y2h8fCExIT09Yy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsdSkpe2E9Uy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsdSxsKSx0PTA7d2hpbGUoKGk9YVt0KytdKSYmIXUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7dS5jdXJyZW50VGFyZ2V0PWkuZWxlbSxuPTA7d2hpbGUoKG89aS5oYW5kbGVyc1tuKytdKSYmIXUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl1LnJuYW1lc3BhY2UmJiExIT09by5uYW1lc3BhY2UmJiF1LnJuYW1lc3BhY2UudGVzdChvLm5hbWVzcGFjZSl8fCh1LmhhbmRsZU9iaj1vLHUuZGF0YT1vLmRhdGEsdm9pZCAwIT09KHI9KChTLmV2ZW50LnNwZWNpYWxbby5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fG8uaGFuZGxlcikuYXBwbHkoaS5lbGVtLHMpKSYmITE9PT0odS5yZXN1bHQ9cikmJih1LnByZXZlbnREZWZhdWx0KCksdS5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBjLnBvc3REaXNwYXRjaCYmYy5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLHUpLHUucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhLHM9W10sdT10LmRlbGVnYXRlQ291bnQsbD1lLnRhcmdldDtpZih1JiZsLm5vZGVUeXBlJiYhKCJjbGljayI9PT1lLnR5cGUmJjE8PWUuYnV0dG9uKSlmb3IoO2whPT10aGlzO2w9bC5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1sLm5vZGVUeXBlJiYoImNsaWNrIiE9PWUudHlwZXx8ITAhPT1sLmRpc2FibGVkKSl7Zm9yKG89W10sYT17fSxuPTA7bjx1O24rKyl2b2lkIDA9PT1hW2k9KHI9dFtuXSkuc2VsZWN0b3IrIiAiXSYmKGFbaV09ci5uZWVkc0NvbnRleHQ/LTE8UyhpLHRoaXMpLmluZGV4KGwpOlMuZmluZChpLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCksYVtpXSYmby5wdXNoKHIpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczpvfSl9cmV0dXJuIGw9dGhpcyx1PHQubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczp0LnNsaWNlKHUpfSksc30sYWRkUHJvcDpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLkV2ZW50LnByb3RvdHlwZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6bShlKT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gZSh0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W3RdfSxzZXQ6ZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pfX0pfSxmaXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbUy5leHBhbmRvXT9lOm5ldyBTLkV2ZW50KGUpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIsd2UpLCExfSx0cmlnZ2VyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIpLCEwfSxfZGVmYXVsdDpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtyZXR1cm4gcGUudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZBKHQsImlucHV0IikmJlkuZ2V0KHQsImNsaWNrIil8fEEodCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5yZXN1bHQmJmUub3JpZ2luYWxFdmVudCYmKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX19LFMucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9LFMuRXZlbnQ9ZnVuY3Rpb24oZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBTLkV2ZW50KSlyZXR1cm4gbmV3IFMuRXZlbnQoZSx0KTtlJiZlLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1lLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09ZS5yZXR1cm5WYWx1ZT93ZTpUZSx0aGlzLnRhcmdldD1lLnRhcmdldCYmMz09PWUudGFyZ2V0Lm5vZGVUeXBlP2UudGFyZ2V0LnBhcmVudE5vZGU6ZS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWUuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9ZS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9ZSx0JiZTLmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0YW1wfHxEYXRlLm5vdygpLHRoaXNbUy5leHBhbmRvXT0hMH0sUy5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOlRlLGlzUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD13ZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sUy5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjb2RlOiEwLGNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOiEwfSxTLmV2ZW50LmFkZFByb3ApLFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24odCxlKXtTLmV2ZW50LnNwZWNpYWxbdF09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIFNlKHRoaXMsdCxDZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gU2UodGhpcyx0KSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFkuZ2V0KGUudGFyZ2V0LHQpfSxkZWxlZ2F0ZVR5cGU6ZX19KSxTLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGUsaSl7Uy5ldmVudC5zcGVjaWFsW2VdPXtkZWxlZ2F0ZVR5cGU6aSxiaW5kVHlwZTppLGhhbmRsZTpmdW5jdGlvbihlKXt2YXIgdCxuPWUucmVsYXRlZFRhcmdldCxyPWUuaGFuZGxlT2JqO3JldHVybiBuJiYobj09PXRoaXN8fFMuY29udGFpbnModGhpcyxuKSl8fChlLnR5cGU9ci5vcmlnVHlwZSx0PXIuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS50eXBlPWkpLHR9fX0pLFMuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gRWUodGhpcyxlLHQsbixyKX0sb25lOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBFZSh0aGlzLGUsdCxuLHIsMSl9LG9mZjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZihlJiZlLnByZXZlbnREZWZhdWx0JiZlLmhhbmRsZU9iailyZXR1cm4gcj1lLmhhbmRsZU9iaixTKGUuZGVsZWdhdGVUYXJnZXQpLm9mZihyLm5hbWVzcGFjZT9yLm9yaWdUeXBlKyIuIityLm5hbWVzcGFjZTpyLm9yaWdUeXBlLHIuc2VsZWN0b3Isci5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Zm9yKGkgaW4gZSl0aGlzLm9mZihpLHQsZVtpXSk7cmV0dXJuIHRoaXN9cmV0dXJuITEhPT10JiYiZnVuY3Rpb24iIT10eXBlb2YgdHx8KG49dCx0PXZvaWQgMCksITE9PT1uJiYobj1UZSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Uy5ldmVudC5yZW1vdmUodGhpcyxlLG4sdCl9KX19KTt2YXIga2U9LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksQWU9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksTmU9L15ccyo8IVxbQ0RBVEFcW3xcXVxdPlxzKiQvZztmdW5jdGlvbiBqZShlLHQpe3JldHVybiBBKGUsInRhYmxlIikmJkEoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpJiZTKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIERlKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rpb24gcWUoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1lLnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIExlKGUsdCl7dmFyIG4scixpLG8sYSxzO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihZLmhhc0RhdGEoZSkmJihzPVkuZ2V0KGUpLmV2ZW50cykpZm9yKGkgaW4gWS5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpLHMpZm9yKG49MCxyPXNbaV0ubGVuZ3RoO248cjtuKyspUy5ldmVudC5hZGQodCxpLHNbaV1bbl0pO1EuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1TLmV4dGVuZCh7fSxvKSxRLnNldCh0LGEpKX19ZnVuY3Rpb24gSGUobixyLGksbyl7cj1nKHIpO3ZhciBlLHQsYSxzLHUsbCxjPTAsZj1uLmxlbmd0aCxwPWYtMSxkPXJbMF0saD1tKGQpO2lmKGh8fDE8ZiYmInN0cmluZyI9PXR5cGVvZiBkJiYhdi5jaGVja0Nsb25lJiZBZS50ZXN0KGQpKXJldHVybiBuLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5lcShlKTtoJiYoclswXT1kLmNhbGwodGhpcyxlLHQuaHRtbCgpKSksSGUodCxyLGksbyl9KTtpZihmJiYodD0oZT14ZShyLG5bMF0ub3duZXJEb2N1bWVudCwhMSxuLG8pKS5maXJzdENoaWxkLDE9PT1lLmNoaWxkTm9kZXMubGVuZ3RoJiYoZT10KSx0fHxvKSl7Zm9yKHM9KGE9Uy5tYXAoeWUoZSwic2NyaXB0IiksRGUpKS5sZW5ndGg7YzxmO2MrKyl1PWUsYyE9PXAmJih1PVMuY2xvbmUodSwhMCwhMCkscyYmUy5tZXJnZShhLHllKHUsInNjcmlwdCIpKSksaS5jYWxsKG5bY10sdSxjKTtpZihzKWZvcihsPWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxTLm1hcChhLHFlKSxjPTA7YzxzO2MrKyl1PWFbY10saGUudGVzdCh1LnR5cGV8fCIiKSYmIVkuYWNjZXNzKHUsImdsb2JhbEV2YWwiKSYmUy5jb250YWlucyhsLHUpJiYodS5zcmMmJiJtb2R1bGUiIT09KHUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/Uy5fZXZhbFVybCYmIXUubm9Nb2R1bGUmJlMuX2V2YWxVcmwodS5zcmMse25vbmNlOnUubm9uY2V8fHUuZ2V0QXR0cmlidXRlKCJub25jZSIpfSxsKTpiKHUudGV4dENvbnRlbnQucmVwbGFjZShOZSwiIiksdSxsKSl9cmV0dXJuIG59ZnVuY3Rpb24gT2UoZSx0LG4pe2Zvcih2YXIgcixpPXQ/Uy5maWx0ZXIodCxlKTplLG89MDtudWxsIT0ocj1pW29dKTtvKyspbnx8MSE9PXIubm9kZVR5cGV8fFMuY2xlYW5EYXRhKHllKHIpKSxyLnBhcmVudE5vZGUmJihuJiZpZShyKSYmdmUoeWUociwic2NyaXB0IikpLHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSk7cmV0dXJuIGV9Uy5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjPWUuY2xvbmVOb2RlKCEwKSxmPWllKGUpO2lmKCEodi5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Uy5pc1hNTERvYyhlKSkpZm9yKGE9eWUoYykscj0wLGk9KG89eWUoZSkpLmxlbmd0aDtyPGk7cisrKXM9b1tyXSx1PWFbcl0sdm9pZCAwLCJpbnB1dCI9PT0obD11Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZwZS50ZXN0KHMudHlwZSk/dS5jaGVja2VkPXMuY2hlY2tlZDoiaW5wdXQiIT09bCYmInRleHRhcmVhIiE9PWx8fCh1LmRlZmF1bHRWYWx1ZT1zLmRlZmF1bHRWYWx1ZSk7aWYodClpZihuKWZvcihvPW98fHllKGUpLGE9YXx8eWUoYykscj0wLGk9by5sZW5ndGg7cjxpO3IrKylMZShvW3JdLGFbcl0pO2Vsc2UgTGUoZSxjKTtyZXR1cm4gMDwoYT15ZShjLCJzY3JpcHQiKSkubGVuZ3RoJiZ2ZShhLCFmJiZ5ZShlLCJzY3JpcHQiKSksY30sY2xlYW5EYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsaT1TLmV2ZW50LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZihWKG4pKXtpZih0PW5bWS5leHBhbmRvXSl7aWYodC5ldmVudHMpZm9yKHIgaW4gdC5ldmVudHMpaVtyXT9TLmV2ZW50LnJlbW92ZShuLHIpOlMucmVtb3ZlRXZlbnQobixyLHQuaGFuZGxlKTtuW1kuZXhwYW5kb109dm9pZCAwfW5bUS5leHBhbmRvXSYmKG5bUS5leHBhbmRvXT12b2lkIDApfX19KSxTLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiBPZSh0aGlzLGUsITApfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIE9lKHRoaXMsZSl9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEIodGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT9TLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fGplKHRoaXMsZSkuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9amUodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoUy5jbGVhbkRhdGEoeWUoZSwhMSkpLGUudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWUmJmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBTLmNsb25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiBCKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXXx8e30sbj0wLHI9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09PXQubm9kZVR5cGUpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIWtlLnRlc3QoZSkmJiFnZVsoZGUuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9Uy5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO248cjtuKyspMT09PSh0PXRoaXNbbl18fHt9KS5ub2RlVHlwZSYmKFMuY2xlYW5EYXRhKHllKHQsITEpKSx0LmlubmVySFRNTD1lKTt0PTB9Y2F0Y2goZSl7fX10JiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIEhlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtTLmluQXJyYXkodGhpcyxuKTwwJiYoUy5jbGVhbkRhdGEoeWUodGhpcykpLHQmJnQucmVwbGFjZUNoaWxkKGUsdGhpcykpfSxuKX19KSxTLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihlLGEpe1MuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10scj1TKGUpLGk9ci5sZW5ndGgtMSxvPTA7bzw9aTtvKyspdD1vPT09aT90aGlzOnRoaXMuY2xvbmUoITApLFMocltvXSlbYV0odCksdS5hcHBseShuLHQuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUGU9bmV3IFJlZ0V4cCgiXigiK2VlKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksUmU9L14tLS8sTWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiB0JiZ0Lm9wZW5lcnx8KHQ9QyksdC5nZXRDb21wdXRlZFN0eWxlKGUpfSxJZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9O2ZvcihpIGluIHQpb1tpXT1lLnN0eWxlW2ldLGUuc3R5bGVbaV09dFtpXTtmb3IoaSBpbiByPW4uY2FsbChlKSx0KWUuc3R5bGVbaV09b1tpXTtyZXR1cm4gcn0sV2U9bmV3IFJlZ0V4cChuZS5qb2luKCJ8IiksImkiKSxGZT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsJGU9bmV3IFJlZ0V4cCgiXiIrRmUrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrRmUrIiskIiwiZyIpO2Z1bmN0aW9uIEJlKGUsdCxuKXt2YXIgcixpLG8sYSxzPVJlLnRlc3QodCksdT1lLnN0eWxlO3JldHVybihuPW58fE1lKGUpKSYmKGE9bi5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxuW3RdLHMmJmEmJihhPWEucmVwbGFjZSgkZSwiJDEiKXx8dm9pZCAwKSwiIiE9PWF8fGllKGUpfHwoYT1TLnN0eWxlKGUsdCkpLCF2LnBpeGVsQm94U3R5bGVzKCkmJlBlLnRlc3QoYSkmJldlLnRlc3QodCkmJihyPXUud2lkdGgsaT11Lm1pbldpZHRoLG89dS5tYXhXaWR0aCx1Lm1pbldpZHRoPXUubWF4V2lkdGg9dS53aWR0aD1hLGE9bi53aWR0aCx1LndpZHRoPXIsdS5taW5XaWR0aD1pLHUubWF4V2lkdGg9bykpLHZvaWQgMCE9PWE/YSsiIjphfWZ1bmN0aW9uIF9lKGUsdCl7cmV0dXJue2dldDpmdW5jdGlvbigpe2lmKCFlKCkpcmV0dXJuKHRoaXMuZ2V0PXQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkZWxldGUgdGhpcy5nZXR9fX0hZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYobCl7dS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIixsLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiLHJlLmFwcGVuZENoaWxkKHUpLmFwcGVuZENoaWxkKGwpO3ZhciBlPUMuZ2V0Q29tcHV0ZWRTdHlsZShsKTtuPSIxJSIhPT1lLnRvcCxzPTEyPT09dChlLm1hcmdpbkxlZnQpLGwuc3R5bGUucmlnaHQ9IjYwJSIsbz0zNj09PXQoZS5yaWdodCkscj0zNj09PXQoZS53aWR0aCksbC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGk9MTI9PT10KGwub2Zmc2V0V2lkdGgvMykscmUucmVtb3ZlQ2hpbGQodSksbD1udWxsfX1mdW5jdGlvbiB0KGUpe3JldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZSkpfXZhciBuLHIsaSxvLGEscyx1PUUuY3JlYXRlRWxlbWVudCgiZGl2IiksbD1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2wuc3R5bGUmJihsLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsbC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLHYuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1sLnN0eWxlLmJhY2tncm91bmRDbGlwLFMuZXh0ZW5kKHYse2JveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxyfSxwaXhlbEJveFN0eWxlczpmdW5jdGlvbigpe3JldHVybiBlKCksb30scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBlKCksbn0scmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxzfSxzY3JvbGxib3hTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxpfSxyZWxpYWJsZVRyRGltZW5zaW9uczpmdW5jdGlvbigpe3ZhciBlLHQsbixyO3JldHVybiBudWxsPT1hJiYoZT1FLmNyZWF0ZUVsZW1lbnQoInRhYmxlIiksdD1FLmNyZWF0ZUVsZW1lbnQoInRyIiksbj1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGUiLHQuc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjFweCBzb2xpZCIsdC5zdHlsZS5oZWlnaHQ9IjFweCIsbi5zdHlsZS5oZWlnaHQ9IjlweCIsbi5zdHlsZS5kaXNwbGF5PSJibG9jayIscmUuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQodCkuYXBwZW5kQ2hpbGQobikscj1DLmdldENvbXB1dGVkU3R5bGUodCksYT1wYXJzZUludChyLmhlaWdodCwxMCkrcGFyc2VJbnQoci5ib3JkZXJUb3BXaWR0aCwxMCkrcGFyc2VJbnQoci5ib3JkZXJCb3R0b21XaWR0aCwxMCk9PT10Lm9mZnNldEhlaWdodCxyZS5yZW1vdmVDaGlsZChlKSksYX19KSl9KCk7dmFyIHplPVsiV2Via2l0IiwiTW96IiwibXMiXSxVZT1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLFhlPXt9O2Z1bmN0aW9uIFZlKGUpe3ZhciB0PVMuY3NzUHJvcHNbZV18fFhlW2VdO3JldHVybiB0fHwoZSBpbiBVZT9lOlhlW2VdPWZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49emUubGVuZ3RoO3doaWxlKG4tLSlpZigoZT16ZVtuXSt0KWluIFVlKXJldHVybiBlfShlKXx8ZSl9dmFyIEdlPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxZZT17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sUWU9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9O2Z1bmN0aW9uIEplKGUsdCxuKXt2YXIgcj10ZS5leGVjKHQpO3JldHVybiByP01hdGgubWF4KDAsclsyXS0obnx8MCkpKyhyWzNdfHwicHgiKTp0fWZ1bmN0aW9uIEtlKGUsdCxuLHIsaSxvKXt2YXIgYT0id2lkdGgiPT09dD8xOjAscz0wLHU9MDtpZihuPT09KHI/ImJvcmRlciI6ImNvbnRlbnQiKSlyZXR1cm4gMDtmb3IoO2E8NDthKz0yKSJtYXJnaW4iPT09biYmKHUrPVMuY3NzKGUsbituZVthXSwhMCxpKSkscj8oImNvbnRlbnQiPT09biYmKHUtPVMuY3NzKGUsInBhZGRpbmciK25lW2FdLCEwLGkpKSwibWFyZ2luIiE9PW4mJih1LT1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSkpKToodSs9Uy5jc3MoZSwicGFkZGluZyIrbmVbYV0sITAsaSksInBhZGRpbmciIT09bj91Kz1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSk6cys9Uy5jc3MoZSwiYm9yZGVyIituZVthXSsiV2lkdGgiLCEwLGkpKTtyZXR1cm4hciYmMDw9byYmKHUrPU1hdGgubWF4KDAsTWF0aC5jZWlsKGVbIm9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSldLW8tdS1zLS41KSl8fDApLHV9ZnVuY3Rpb24gWmUoZSx0LG4pe3ZhciByPU1lKGUpLGk9KCF2LmJveFNpemluZ1JlbGlhYmxlKCl8fG4pJiYiYm9yZGVyLWJveCI9PT1TLmNzcyhlLCJib3hTaXppbmciLCExLHIpLG89aSxhPUJlKGUsdCxyKSxzPSJvZmZzZXQiK3RbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpO2lmKFBlLnRlc3QoYSkpe2lmKCFuKXJldHVybiBhO2E9ImF1dG8ifXJldHVybighdi5ib3hTaXppbmdSZWxpYWJsZSgpJiZpfHwhdi5yZWxpYWJsZVRyRGltZW5zaW9ucygpJiZBKGUsInRyIil8fCJhdXRvIj09PWF8fCFwYXJzZUZsb2F0KGEpJiYiaW5saW5lIj09PVMuY3NzKGUsImRpc3BsYXkiLCExLHIpKSYmZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmKGk9ImJvcmRlci1ib3giPT09Uy5jc3MoZSwiYm94U2l6aW5nIiwhMSxyKSwobz1zIGluIGUpJiYoYT1lW3NdKSksKGE9cGFyc2VGbG9hdChhKXx8MCkrS2UoZSx0LG58fChpPyJib3JkZXIiOiJjb250ZW50IiksbyxyLGEpKyJweCJ9ZnVuY3Rpb24gZXQoZSx0LG4scixpKXtyZXR1cm4gbmV3IGV0LnByb3RvdHlwZS5pbml0KGUsdCxuLHIsaSl9Uy5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oZSx0KXtpZih0KXt2YXIgbj1CZShlLCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1uPyIxIjpufX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxncmlkQXJlYTohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3RhcnQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7fSxzdHlsZTpmdW5jdGlvbihlLHQsbixyKXtpZihlJiYzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJmUuc3R5bGUpe3ZhciBpLG8sYSxzPVgodCksdT1SZS50ZXN0KHQpLGw9ZS5zdHlsZTtpZih1fHwodD1WZShzKSksYT1TLmNzc0hvb2tzW3RdfHxTLmNzc0hvb2tzW3NdLHZvaWQgMD09PW4pcmV0dXJuIGEmJiJnZXQiaW4gYSYmdm9pZCAwIT09KGk9YS5nZXQoZSwhMSxyKSk/aTpsW3RdOyJzdHJpbmciPT09KG89dHlwZW9mIG4pJiYoaT10ZS5leGVjKG4pKSYmaVsxXSYmKG49c2UoZSx0LGkpLG89Im51bWJlciIpLG51bGwhPW4mJm49PW4mJigibnVtYmVyIiE9PW98fHV8fChuKz1pJiZpWzNdfHwoUy5jc3NOdW1iZXJbc10/IiI6InB4IikpLHYuY2xlYXJDbG9uZVN0eWxlfHwiIiE9PW58fDAhPT10LmluZGV4T2YoImJhY2tncm91bmQiKXx8KGxbdF09ImluaGVyaXQiKSxhJiYic2V0ImluIGEmJnZvaWQgMD09PShuPWEuc2V0KGUsbixyKSl8fCh1P2wuc2V0UHJvcGVydHkodCxuKTpsW3RdPW4pKX19LGNzczpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1YKHQpO3JldHVybiBSZS50ZXN0KHQpfHwodD1WZShzKSksKGE9Uy5jc3NIb29rc1t0XXx8Uy5jc3NIb29rc1tzXSkmJiJnZXQiaW4gYSYmKGk9YS5nZXQoZSwhMCxuKSksdm9pZCAwPT09aSYmKGk9QmUoZSx0LHIpKSwibm9ybWFsIj09PWkmJnQgaW4gUWUmJihpPVFlW3RdKSwiIj09PW58fG4/KG89cGFyc2VGbG9hdChpKSwhMD09PW58fGlzRmluaXRlKG8pP298fDA6aSk6aX19KSxTLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGUsdSl7Uy5jc3NIb29rc1t1XT17Z2V0OmZ1bmN0aW9uKGUsdCxuKXtpZih0KXJldHVybiFHZS50ZXN0KFMuY3NzKGUsImRpc3BsYXkiKSl8fGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg/WmUoZSx1LG4pOkllKGUsWWUsZnVuY3Rpb24oKXtyZXR1cm4gWmUoZSx1LG4pfSl9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT1NZShlKSxvPSF2LnNjcm9sbGJveFNpemUoKSYmImFic29sdXRlIj09PWkucG9zaXRpb24sYT0ob3x8bikmJiJib3JkZXItYm94Ij09PVMuY3NzKGUsImJveFNpemluZyIsITEsaSkscz1uP0tlKGUsdSxuLGEsaSk6MDtyZXR1cm4gYSYmbyYmKHMtPU1hdGguY2VpbChlWyJvZmZzZXQiK3VbMF0udG9VcHBlckNhc2UoKSt1LnNsaWNlKDEpXS1wYXJzZUZsb2F0KGlbdV0pLUtlKGUsdSwiYm9yZGVyIiwhMSxpKS0uNSkpLHMmJihyPXRlLmV4ZWModCkpJiYicHgiIT09KHJbM118fCJweCIpJiYoZS5zdHlsZVt1XT10LHQ9Uy5jc3MoZSx1KSksSmUoMCx0LHMpfX19KSxTLmNzc0hvb2tzLm1hcmdpbkxlZnQ9X2Uodi5yZWxpYWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybihwYXJzZUZsb2F0KEJlKGUsIm1hcmdpbkxlZnQiKSl8fGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC1JZShlLHttYXJnaW5MZWZ0OjB9LGZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0pKSsicHgifSksUy5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oaSxvKXtTLmNzc0hvb2tzW2krb109e2V4cGFuZDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPXt9LHI9InN0cmluZyI9PXR5cGVvZiBlP2Uuc3BsaXQoIiAiKTpbZV07dDw0O3QrKyluW2krbmVbdF0rb109clt0XXx8clt0LTJdfHxyWzBdO3JldHVybiBufX0sIm1hcmdpbiIhPT1pJiYoUy5jc3NIb29rc1tpK29dLnNldD1KZSl9KSxTLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEIodGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9LGE9MDtpZihBcnJheS5pc0FycmF5KHQpKXtmb3Iocj1NZShlKSxpPXQubGVuZ3RoO2E8aTthKyspb1t0W2FdXT1TLmNzcyhlLHRbYV0sITEscik7cmV0dXJuIG99cmV0dXJuIHZvaWQgMCE9PW4/Uy5zdHlsZShlLHQsbik6Uy5jc3MoZSx0KX0sZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9fSksKChTLlR3ZWVuPWV0KS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmV0LGluaXQ6ZnVuY3Rpb24oZSx0LG4scixpLG8pe3RoaXMuZWxlbT1lLHRoaXMucHJvcD1uLHRoaXMuZWFzaW5nPWl8fFMuZWFzaW5nLl9kZWZhdWx0LHRoaXMub3B0aW9ucz10LHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1yLHRoaXMudW5pdD1vfHwoUy5jc3NOdW1iZXJbbl0/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBlPWV0LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBlJiZlLmdldD9lLmdldCh0aGlzKTpldC5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oZSl7dmFyIHQsbj1ldC5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPXQ9Uy5lYXNpbmdbdGhpcy5lYXNpbmddKGUsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmUsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9dD1lLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0K3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLG4mJm4uc2V0P24uc2V0KHRoaXMpOmV0LnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319KS5pbml0LnByb3RvdHlwZT1ldC5wcm90b3R5cGUsKGV0LnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gMSE9PWUuZWxlbS5ub2RlVHlwZXx8bnVsbCE9ZS5lbGVtW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVtlLnByb3BdP2UuZWxlbVtlLnByb3BdOih0PVMuY3NzKGUuZWxlbSxlLnByb3AsIiIpKSYmImF1dG8iIT09dD90OjB9LHNldDpmdW5jdGlvbihlKXtTLmZ4LnN0ZXBbZS5wcm9wXT9TLmZ4LnN0ZXBbZS5wcm9wXShlKToxIT09ZS5lbGVtLm5vZGVUeXBlfHwhUy5jc3NIb29rc1tlLnByb3BdJiZudWxsPT1lLmVsZW0uc3R5bGVbVmUoZS5wcm9wKV0/ZS5lbGVtW2UucHJvcF09ZS5ub3c6Uy5zdHlsZShlLmVsZW0sZS5wcm9wLGUubm93K2UudW5pdCl9fX0pLnNjcm9sbFRvcD1ldC5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGUpe2UuZWxlbS5ub2RlVHlwZSYmZS5lbGVtLnBhcmVudE5vZGUmJihlLmVsZW1bZS5wcm9wXT1lLm5vdyl9fSxTLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxzd2luZzpmdW5jdGlvbihlKXtyZXR1cm4uNS1NYXRoLmNvcyhlKk1hdGguUEkpLzJ9LF9kZWZhdWx0OiJzd2luZyJ9LFMuZng9ZXQucHJvdG90eXBlLmluaXQsUy5meC5zdGVwPXt9O3ZhciB0dCxudCxydCxpdCxvdD0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sYXQ9L3F1ZXVlSG9va3MkLztmdW5jdGlvbiBzdCgpe250JiYoITE9PT1FLmhpZGRlbiYmQy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/Qy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3QpOkMuc2V0VGltZW91dChzdCxTLmZ4LmludGVydmFsKSxTLmZ4LnRpY2soKSl9ZnVuY3Rpb24gdXQoKXtyZXR1cm4gQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dHQ9dm9pZCAwfSksdHQ9RGF0ZS5ub3coKX1mdW5jdGlvbiBsdChlLHQpe3ZhciBuLHI9MCxpPXtoZWlnaHQ6ZX07Zm9yKHQ9dD8xOjA7cjw0O3IrPTItdClpWyJtYXJnaW4iKyhuPW5lW3JdKV09aVsicGFkZGluZyIrbl09ZTtyZXR1cm4gdCYmKGkub3BhY2l0eT1pLndpZHRoPWUpLGl9ZnVuY3Rpb24gY3QoZSx0LG4pe2Zvcih2YXIgcixpPShmdC50d2VlbmVyc1t0XXx8W10pLmNvbmNhdChmdC50d2VlbmVyc1siKiJdKSxvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlmKHI9aVtvXS5jYWxsKG4sdCxlKSlyZXR1cm4gcn1mdW5jdGlvbiBmdChvLGUsdCl7dmFyIG4sYSxyPTAsaT1mdC5wcmVmaWx0ZXJzLmxlbmd0aCxzPVMuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgdS5lbGVtfSksdT1mdW5jdGlvbigpe2lmKGEpcmV0dXJuITE7Zm9yKHZhciBlPXR0fHx1dCgpLHQ9TWF0aC5tYXgoMCxsLnN0YXJ0VGltZStsLmR1cmF0aW9uLWUpLG49MS0odC9sLmR1cmF0aW9ufHwwKSxyPTAsaT1sLnR3ZWVucy5sZW5ndGg7cjxpO3IrKylsLnR3ZWVuc1tyXS5ydW4obik7cmV0dXJuIHMubm90aWZ5V2l0aChvLFtsLG4sdF0pLG48MSYmaT90OihpfHxzLm5vdGlmeVdpdGgobyxbbCwxLDBdKSxzLnJlc29sdmVXaXRoKG8sW2xdKSwhMSl9LGw9cy5wcm9taXNlKHtlbGVtOm8scHJvcHM6Uy5leHRlbmQoe30sZSksb3B0czpTLmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fSxlYXNpbmc6Uy5lYXNpbmcuX2RlZmF1bHR9LHQpLG9yaWdpbmFsUHJvcGVydGllczplLG9yaWdpbmFsT3B0aW9uczp0LHN0YXJ0VGltZTp0dHx8dXQoKSxkdXJhdGlvbjp0LmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihlLHQpe3ZhciBuPVMuVHdlZW4obyxsLm9wdHMsZSx0LGwub3B0cy5zcGVjaWFsRWFzaW5nW2VdfHxsLm9wdHMuZWFzaW5nKTtyZXR1cm4gbC50d2VlbnMucHVzaChuKSxufSxzdG9wOmZ1bmN0aW9uKGUpe3ZhciB0PTAsbj1lP2wudHdlZW5zLmxlbmd0aDowO2lmKGEpcmV0dXJuIHRoaXM7Zm9yKGE9ITA7dDxuO3QrKylsLnR3ZWVuc1t0XS5ydW4oMSk7cmV0dXJuIGU/KHMubm90aWZ5V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbCxlXSkpOnMucmVqZWN0V2l0aChvLFtsLGVdKSx0aGlzfX0pLGM9bC5wcm9wcztmb3IoIWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYTtmb3IobiBpbiBlKWlmKGk9dFtyPVgobildLG89ZVtuXSxBcnJheS5pc0FycmF5KG8pJiYoaT1vWzFdLG89ZVtuXT1vWzBdKSxuIT09ciYmKGVbcl09byxkZWxldGUgZVtuXSksKGE9Uy5jc3NIb29rc1tyXSkmJiJleHBhbmQiaW4gYSlmb3IobiBpbiBvPWEuZXhwYW5kKG8pLGRlbGV0ZSBlW3JdLG8pbiBpbiBlfHwoZVtuXT1vW25dLHRbbl09aSk7ZWxzZSB0W3JdPWl9KGMsbC5vcHRzLnNwZWNpYWxFYXNpbmcpO3I8aTtyKyspaWYobj1mdC5wcmVmaWx0ZXJzW3JdLmNhbGwobCxvLGMsbC5vcHRzKSlyZXR1cm4gbShuLnN0b3ApJiYoUy5fcXVldWVIb29rcyhsLmVsZW0sbC5vcHRzLnF1ZXVlKS5zdG9wPW4uc3RvcC5iaW5kKG4pKSxuO3JldHVybiBTLm1hcChjLGN0LGwpLG0obC5vcHRzLnN0YXJ0KSYmbC5vcHRzLnN0YXJ0LmNhbGwobyxsKSxsLnByb2dyZXNzKGwub3B0cy5wcm9ncmVzcykuZG9uZShsLm9wdHMuZG9uZSxsLm9wdHMuY29tcGxldGUpLmZhaWwobC5vcHRzLmZhaWwpLmFsd2F5cyhsLm9wdHMuYWx3YXlzKSxTLmZ4LnRpbWVyKFMuZXh0ZW5kKHUse2VsZW06byxhbmltOmwscXVldWU6bC5vcHRzLnF1ZXVlfSkpLGx9Uy5BbmltYXRpb249Uy5leHRlbmQoZnQse3R3ZWVuZXJzOnsiKiI6W2Z1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jcmVhdGVUd2VlbihlLHQpO3JldHVybiBzZShuLmVsZW0sZSx0ZS5leGVjKHQpLG4pLG59XX0sdHdlZW5lcjpmdW5jdGlvbihlLHQpe20oZSk/KHQ9ZSxlPVsiKiJdKTplPWUubWF0Y2goUCk7Zm9yKHZhciBuLHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspbj1lW3JdLGZ0LnR3ZWVuZXJzW25dPWZ0LnR3ZWVuZXJzW25dfHxbXSxmdC50d2VlbmVyc1tuXS51bnNoaWZ0KHQpfSxwcmVmaWx0ZXJzOltmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGwsYyxmPSJ3aWR0aCJpbiB0fHwiaGVpZ2h0ImluIHQscD10aGlzLGQ9e30saD1lLnN0eWxlLGc9ZS5ub2RlVHlwZSYmYWUoZSkseT1ZLmdldChlLCJmeHNob3ciKTtmb3IociBpbiBuLnF1ZXVlfHwobnVsbD09KGE9Uy5fcXVldWVIb29rcyhlLCJmeCIpKS51bnF1ZXVlZCYmKGEudW5xdWV1ZWQ9MCxzPWEuZW1wdHkuZmlyZSxhLmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXthLnVucXVldWVkfHxzKCl9KSxhLnVucXVldWVkKysscC5hbHdheXMoZnVuY3Rpb24oKXtwLmFsd2F5cyhmdW5jdGlvbigpe2EudW5xdWV1ZWQtLSxTLnF1ZXVlKGUsImZ4IikubGVuZ3RofHxhLmVtcHR5LmZpcmUoKX0pfSkpLHQpaWYoaT10W3JdLG90LnRlc3QoaSkpe2lmKGRlbGV0ZSB0W3JdLG89b3x8InRvZ2dsZSI9PT1pLGk9PT0oZz8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09aXx8IXl8fHZvaWQgMD09PXlbcl0pY29udGludWU7Zz0hMH1kW3JdPXkmJnlbcl18fFMuc3R5bGUoZSxyKX1pZigodT0hUy5pc0VtcHR5T2JqZWN0KHQpKXx8IVMuaXNFbXB0eU9iamVjdChkKSlmb3IociBpbiBmJiYxPT09ZS5ub2RlVHlwZSYmKG4ub3ZlcmZsb3c9W2gub3ZlcmZsb3csaC5vdmVyZmxvd1gsaC5vdmVyZmxvd1ldLG51bGw9PShsPXkmJnkuZGlzcGxheSkmJihsPVkuZ2V0KGUsImRpc3BsYXkiKSksIm5vbmUiPT09KGM9Uy5jc3MoZSwiZGlzcGxheSIpKSYmKGw/Yz1sOihsZShbZV0sITApLGw9ZS5zdHlsZS5kaXNwbGF5fHxsLGM9Uy5jc3MoZSwiZGlzcGxheSIpLGxlKFtlXSkpKSwoImlubGluZSI9PT1jfHwiaW5saW5lLWJsb2NrIj09PWMmJm51bGwhPWwpJiYibm9uZSI9PT1TLmNzcyhlLCJmbG9hdCIpJiYodXx8KHAuZG9uZShmdW5jdGlvbigpe2guZGlzcGxheT1sfSksbnVsbD09bCYmKGM9aC5kaXNwbGF5LGw9Im5vbmUiPT09Yz8iIjpjKSksaC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksbi5vdmVyZmxvdyYmKGgub3ZlcmZsb3c9ImhpZGRlbiIscC5hbHdheXMoZnVuY3Rpb24oKXtoLm92ZXJmbG93PW4ub3ZlcmZsb3dbMF0saC5vdmVyZmxvd1g9bi5vdmVyZmxvd1sxXSxoLm92ZXJmbG93WT1uLm92ZXJmbG93WzJdfSkpLHU9ITEsZCl1fHwoeT8iaGlkZGVuImluIHkmJihnPXkuaGlkZGVuKTp5PVkuYWNjZXNzKGUsImZ4c2hvdyIse2Rpc3BsYXk6bH0pLG8mJih5LmhpZGRlbj0hZyksZyYmbGUoW2VdLCEwKSxwLmRvbmUoZnVuY3Rpb24oKXtmb3IociBpbiBnfHxsZShbZV0pLFkucmVtb3ZlKGUsImZ4c2hvdyIpLGQpUy5zdHlsZShlLHIsZFtyXSl9KSksdT1jdChnP3lbcl06MCxyLHApLHIgaW4geXx8KHlbcl09dS5zdGFydCxnJiYodS5lbmQ9dS5zdGFydCx1LnN0YXJ0PTApKX1dLHByZWZpbHRlcjpmdW5jdGlvbihlLHQpe3Q/ZnQucHJlZmlsdGVycy51bnNoaWZ0KGUpOmZ0LnByZWZpbHRlcnMucHVzaChlKX19KSxTLnNwZWVkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lJiYib2JqZWN0Ij09dHlwZW9mIGU/Uy5leHRlbmQoe30sZSk6e2NvbXBsZXRlOm58fCFuJiZ0fHxtKGUpJiZlLGR1cmF0aW9uOmUsZWFzaW5nOm4mJnR8fHQmJiFtKHQpJiZ0fTtyZXR1cm4gUy5meC5vZmY/ci5kdXJhdGlvbj0wOiJudW1iZXIiIT10eXBlb2Ygci5kdXJhdGlvbiYmKHIuZHVyYXRpb24gaW4gUy5meC5zcGVlZHM/ci5kdXJhdGlvbj1TLmZ4LnNwZWVkc1tyLmR1cmF0aW9uXTpyLmR1cmF0aW9uPVMuZnguc3BlZWRzLl9kZWZhdWx0KSxudWxsIT1yLnF1ZXVlJiYhMCE9PXIucXVldWV8fChyLnF1ZXVlPSJmeCIpLHIub2xkPXIuY29tcGxldGUsci5jb21wbGV0ZT1mdW5jdGlvbigpe20oci5vbGQpJiZyLm9sZC5jYWxsKHRoaXMpLHIucXVldWUmJlMuZGVxdWV1ZSh0aGlzLHIucXVldWUpfSxyfSxTLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLmZpbHRlcihhZSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTp0fSxlLG4scil9LGFuaW1hdGU6ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9Uy5pc0VtcHR5T2JqZWN0KHQpLG89Uy5zcGVlZChlLG4sciksYT1mdW5jdGlvbigpe3ZhciBlPWZ0KHRoaXMsUy5leHRlbmQoe30sdCksbyk7KGl8fFkuZ2V0KHRoaXMsImZpbmlzaCIpKSYmZS5zdG9wKCEwKX07cmV0dXJuIGEuZmluaXNoPWEsaXx8ITE9PT1vLnF1ZXVlP3RoaXMuZWFjaChhKTp0aGlzLnF1ZXVlKG8ucXVldWUsYSl9LHN0b3A6ZnVuY3Rpb24oaSxlLG8pe3ZhciBhPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RvcDtkZWxldGUgZS5zdG9wLHQobyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgaSYmKG89ZSxlPWksaT12b2lkIDApLGUmJnRoaXMucXVldWUoaXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ITAsdD1udWxsIT1pJiZpKyJxdWV1ZUhvb2tzIixuPVMudGltZXJzLHI9WS5nZXQodGhpcyk7aWYodClyW3RdJiZyW3RdLnN0b3AmJmEoclt0XSk7ZWxzZSBmb3IodCBpbiByKXJbdF0mJnJbdF0uc3RvcCYmYXQudGVzdCh0KSYmYShyW3RdKTtmb3IodD1uLmxlbmd0aDt0LS07KW5bdF0uZWxlbSE9PXRoaXN8fG51bGwhPWkmJm5bdF0ucXVldWUhPT1pfHwoblt0XS5hbmltLnN0b3AobyksZT0hMSxuLnNwbGljZSh0LDEpKTshZSYmb3x8Uy5kZXF1ZXVlKHRoaXMsaSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiExIT09YSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD1ZLmdldCh0aGlzKSxuPXRbYSsicXVldWUiXSxyPXRbYSsicXVldWVIb29rcyJdLGk9Uy50aW1lcnMsbz1uP24ubGVuZ3RoOjA7Zm9yKHQuZmluaXNoPSEwLFMucXVldWUodGhpcyxhLFtdKSxyJiZyLnN0b3AmJnIuc3RvcC5jYWxsKHRoaXMsITApLGU9aS5sZW5ndGg7ZS0tOylpW2VdLmVsZW09PT10aGlzJiZpW2VdLnF1ZXVlPT09YSYmKGlbZV0uYW5pbS5zdG9wKCEwKSxpLnNwbGljZShlLDEpKTtmb3IoZT0wO2U8bztlKyspbltlXSYmbltlXS5maW5pc2gmJm5bZV0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIHQuZmluaXNofSl9fSksUy5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihlLHIpe3ZhciBpPVMuZm5bcl07Uy5mbltyXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09dHlwZW9mIGU/aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGx0KHIsITApLGUsdCxuKX19KSxTLmVhY2goe3NsaWRlRG93bjpsdCgic2hvdyIpLHNsaWRlVXA6bHQoImhpZGUiKSxzbGlkZVRvZ2dsZTpsdCgidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihlLHIpe1MuZm5bZV09ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLmFuaW1hdGUocixlLHQsbil9fSksUy50aW1lcnM9W10sUy5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGUsdD0wLG49Uy50aW1lcnM7Zm9yKHR0PURhdGUubm93KCk7dDxuLmxlbmd0aDt0KyspKGU9blt0XSkoKXx8blt0XSE9PWV8fG4uc3BsaWNlKHQtLSwxKTtuLmxlbmd0aHx8Uy5meC5zdG9wKCksdHQ9dm9pZCAwfSxTLmZ4LnRpbWVyPWZ1bmN0aW9uKGUpe1MudGltZXJzLnB1c2goZSksUy5meC5zdGFydCgpfSxTLmZ4LmludGVydmFsPTEzLFMuZnguc3RhcnQ9ZnVuY3Rpb24oKXtudHx8KG50PSEwLHN0KCkpfSxTLmZ4LnN0b3A9ZnVuY3Rpb24oKXtudD1udWxsfSxTLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxTLmZuLmRlbGF5PWZ1bmN0aW9uKHIsZSl7cmV0dXJuIHI9Uy5meCYmUy5meC5zcGVlZHNbcl18fHIsZT1lfHwiZngiLHRoaXMucXVldWUoZSxmdW5jdGlvbihlLHQpe3ZhciBuPUMuc2V0VGltZW91dChlLHIpO3Quc3RvcD1mdW5jdGlvbigpe0MuY2xlYXJUaW1lb3V0KG4pfX0pfSxydD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksaXQ9RS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChFLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSxydC50eXBlPSJjaGVja2JveCIsdi5jaGVja09uPSIiIT09cnQudmFsdWUsdi5vcHRTZWxlY3RlZD1pdC5zZWxlY3RlZCwocnQ9RS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZT0idCIscnQudHlwZT0icmFkaW8iLHYucmFkaW9WYWx1ZT0idCI9PT1ydC52YWx1ZTt2YXIgcHQsZHQ9Uy5leHByLmF0dHJIYW5kbGU7Uy5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQih0aGlzLFMuYXR0cixlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Uy5yZW1vdmVBdHRyKHRoaXMsZSl9KX19KSxTLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGUuZ2V0QXR0cmlidXRlP1MucHJvcChlLHQsbik6KDE9PT1vJiZTLmlzWE1MRG9jKGUpfHwoaT1TLmF0dHJIb29rc1t0LnRvTG93ZXJDYXNlKCldfHwoUy5leHByLm1hdGNoLmJvb2wudGVzdCh0KT9wdDp2b2lkIDApKSx2b2lkIDAhPT1uP251bGw9PT1uP3ZvaWQgUy5yZW1vdmVBdHRyKGUsdCk6aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6KGUuc2V0QXR0cmlidXRlKHQsbisiIiksbik6aSYmImdldCJpbiBpJiZudWxsIT09KHI9aS5nZXQoZSx0KSk/cjpudWxsPT0ocj1TLmZpbmQuYXR0cihlLHQpKT92b2lkIDA6cil9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGUsdCl7aWYoIXYucmFkaW9WYWx1ZSYmInJhZGlvIj09PXQmJkEoZSwiaW5wdXQiKSl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLHQpLG4mJihlLnZhbHVlPW4pLHR9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10JiZ0Lm1hdGNoKFApO2lmKGkmJjE9PT1lLm5vZGVUeXBlKXdoaWxlKG49aVtyKytdKWUucmVtb3ZlQXR0cmlidXRlKG4pfX0pLHB0PXtzZXQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExPT09dD9TLnJlbW92ZUF0dHIoZSxuKTplLnNldEF0dHJpYnV0ZShuLG4pLG59fSxTLmVhY2goUy5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oZSx0KXt2YXIgYT1kdFt0XXx8Uy5maW5kLmF0dHI7ZHRbdF09ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz10LnRvTG93ZXJDYXNlKCk7cmV0dXJuIG58fChpPWR0W29dLGR0W29dPXIscj1udWxsIT1hKGUsdCxuKT9vOm51bGwsZHRbb109aSkscn19KTt2YXIgaHQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxndD0vXig/OmF8YXJlYSkkL2k7ZnVuY3Rpb24geXQoZSl7cmV0dXJuKGUubWF0Y2goUCl8fFtdKS5qb2luKCIgIil9ZnVuY3Rpb24gdnQoZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ZnVuY3Rpb24gbXQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZToic3RyaW5nIj09dHlwZW9mIGUmJmUubWF0Y2goUCl8fFtdfVMuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEIodGhpcyxTLnByb3AsZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW1MucHJvcEZpeFtlXXx8ZV19KX19KSxTLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4gMT09PW8mJlMuaXNYTUxEb2MoZSl8fCh0PVMucHJvcEZpeFt0XXx8dCxpPVMucHJvcEhvb2tzW3RdKSx2b2lkIDAhPT1uP2kmJiJzZXQiaW4gaSYmdm9pZCAwIT09KHI9aS5zZXQoZSxuLHQpKT9yOmVbdF09bjppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOmVbdF19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihlKXt2YXIgdD1TLmZpbmQuYXR0cihlLCJ0YWJpbmRleCIpO3JldHVybiB0P3BhcnNlSW50KHQsMTApOmh0LnRlc3QoZS5ub2RlTmFtZSl8fGd0LnRlc3QoZS5ub2RlTmFtZSkmJmUuaHJlZj8wOi0xfX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pLHYub3B0U2VsZWN0ZWR8fChTLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3QmJih0LnNlbGVjdGVkSW5kZXgsdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksUy5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sZnVuY3Rpb24oKXtTLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSksUy5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLG8sYTtyZXR1cm4gbSh0KT90aGlzLmVhY2goZnVuY3Rpb24oZSl7Uyh0aGlzKS5hZGRDbGFzcyh0LmNhbGwodGhpcyxlLHZ0KHRoaXMpKSl9KTooZT1tdCh0KSkubGVuZ3RoP3RoaXMuZWFjaChmdW5jdGlvbigpe2lmKHI9dnQodGhpcyksbj0xPT09dGhpcy5ub2RlVHlwZSYmIiAiK3l0KHIpKyIgIil7Zm9yKG89MDtvPGUubGVuZ3RoO28rKylpPWVbb10sbi5pbmRleE9mKCIgIitpKyIgIik8MCYmKG4rPWkrIiAiKTthPXl0KG4pLHIhPT1hJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGEpfX0pOnRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLG8sYTtyZXR1cm4gbSh0KT90aGlzLmVhY2goZnVuY3Rpb24oZSl7Uyh0aGlzKS5yZW1vdmVDbGFzcyh0LmNhbGwodGhpcyxlLHZ0KHRoaXMpKSl9KTphcmd1bWVudHMubGVuZ3RoPyhlPW10KHQpKS5sZW5ndGg/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYocj12dCh0aGlzKSxuPTE9PT10aGlzLm5vZGVUeXBlJiYiICIreXQocikrIiAiKXtmb3Iobz0wO288ZS5sZW5ndGg7bysrKXtpPWVbb107d2hpbGUoLTE8bi5pbmRleE9mKCIgIitpKyIgIikpbj1uLnJlcGxhY2UoIiAiK2krIiAiLCIgIil9YT15dChuKSxyIT09YSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixhKX19KTp0aGlzOnRoaXMuYXR0cigiY2xhc3MiLCIiKX0sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24odCxuKXt2YXIgZSxyLGksbyxhPXR5cGVvZiB0LHM9InN0cmluZyI9PT1hfHxBcnJheS5pc0FycmF5KHQpO3JldHVybiBtKHQpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLnRvZ2dsZUNsYXNzKHQuY2FsbCh0aGlzLGUsdnQodGhpcyksbiksbil9KToiYm9vbGVhbiI9PXR5cGVvZiBuJiZzP24/dGhpcy5hZGRDbGFzcyh0KTp0aGlzLnJlbW92ZUNsYXNzKHQpOihlPW10KHQpLHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHMpZm9yKG89Uyh0aGlzKSxpPTA7aTxlLmxlbmd0aDtpKyspcj1lW2ldLG8uaGFzQ2xhc3Mocik/by5yZW1vdmVDbGFzcyhyKTpvLmFkZENsYXNzKHIpO2Vsc2Ugdm9pZCAwIT09dCYmImJvb2xlYW4iIT09YXx8KChyPXZ0KHRoaXMpKSYmWS5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsciksdGhpcy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIscnx8ITE9PT10PyIiOlkuZ2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpKX0pKX0saGFzQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPTA7dD0iICIrZSsiICI7d2hpbGUobj10aGlzW3IrK10paWYoMT09PW4ubm9kZVR5cGUmJi0xPCgiICIreXQodnQobikpKyIgIikuaW5kZXhPZih0KSlyZXR1cm4hMDtyZXR1cm4hMX19KTt2YXIgeHQ9L1xyL2c7Uy5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihuKXt2YXIgcixlLGksdD10aGlzWzBdO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW0obiksdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0OzE9PT10aGlzLm5vZGVUeXBlJiYobnVsbD09KHQ9aT9uLmNhbGwodGhpcyxlLFModGhpcykudmFsKCkpOm4pP3Q9IiI6Im51bWJlciI9PXR5cGVvZiB0P3QrPSIiOkFycmF5LmlzQXJyYXkodCkmJih0PVMubWFwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6ZSsiIn0pKSwocj1TLnZhbEhvb2tzW3RoaXMudHlwZV18fFMudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJzZXQiaW4gciYmdm9pZCAwIT09ci5zZXQodGhpcyx0LCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT10KSl9KSk6dD8ocj1TLnZhbEhvb2tzW3QudHlwZV18fFMudmFsSG9va3NbdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJnZXQiaW4gciYmdm9pZCAwIT09KGU9ci5nZXQodCwidmFsdWUiKSk/ZToic3RyaW5nIj09dHlwZW9mKGU9dC52YWx1ZSk/ZS5yZXBsYWNlKHh0LCIiKTpudWxsPT1lPyIiOmU6dm9pZCAwfX0pLFMuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5maW5kLmF0dHIoZSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9dD90Onl0KFMudGV4dChlKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaT1lLm9wdGlvbnMsbz1lLnNlbGVjdGVkSW5kZXgsYT0ic2VsZWN0LW9uZSI9PT1lLnR5cGUscz1hP251bGw6W10sdT1hP28rMTppLmxlbmd0aDtmb3Iocj1vPDA/dTphP286MDtyPHU7cisrKWlmKCgobj1pW3JdKS5zZWxlY3RlZHx8cj09PW8pJiYhbi5kaXNhYmxlZCYmKCFuLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFBKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9UyhuKS52YWwoKSxhKXJldHVybiB0O3MucHVzaCh0KX1yZXR1cm4gc30sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpPWUub3B0aW9ucyxvPVMubWFrZUFycmF5KHQpLGE9aS5sZW5ndGg7d2hpbGUoYS0tKSgocj1pW2FdKS5zZWxlY3RlZD0tMTxTLmluQXJyYXkoUy52YWxIb29rcy5vcHRpb24uZ2V0KHIpLG8pKSYmKG49ITApO3JldHVybiBufHwoZS5zZWxlY3RlZEluZGV4PS0xKSxvfX19fSksUy5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Uy52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGUsdCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gZS5jaGVja2VkPS0xPFMuaW5BcnJheShTKGUpLnZhbCgpLHQpfX0sdi5jaGVja09ufHwoUy52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmUudmFsdWV9KX0pLHYuZm9jdXNpbj0ib25mb2N1c2luImluIEM7dmFyIGJ0PS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyx3dD1mdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpfTtTLmV4dGVuZChTLmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbCxjLGYscD1bbnx8RV0sZD15LmNhbGwoZSwidHlwZSIpP2UudHlwZTplLGg9eS5jYWxsKGUsIm5hbWVzcGFjZSIpP2UubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYobz1mPWE9bj1ufHxFLDMhPT1uLm5vZGVUeXBlJiY4IT09bi5ub2RlVHlwZSYmIWJ0LnRlc3QoZCtTLmV2ZW50LnRyaWdnZXJlZCkmJigtMTxkLmluZGV4T2YoIi4iKSYmKGQ9KGg9ZC5zcGxpdCgiLiIpKS5zaGlmdCgpLGguc29ydCgpKSx1PWQuaW5kZXhPZigiOiIpPDAmJiJvbiIrZCwoZT1lW1MuZXhwYW5kb10/ZTpuZXcgUy5FdmVudChkLCJvYmplY3QiPT10eXBlb2YgZSYmZSkpLmlzVHJpZ2dlcj1yPzI6MyxlLm5hbWVzcGFjZT1oLmpvaW4oIi4iKSxlLnJuYW1lc3BhY2U9ZS5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIraC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGUucmVzdWx0PXZvaWQgMCxlLnRhcmdldHx8KGUudGFyZ2V0PW4pLHQ9bnVsbD09dD9bZV06Uy5tYWtlQXJyYXkodCxbZV0pLGM9Uy5ldmVudC5zcGVjaWFsW2RdfHx7fSxyfHwhYy50cmlnZ2VyfHwhMSE9PWMudHJpZ2dlci5hcHBseShuLHQpKSl7aWYoIXImJiFjLm5vQnViYmxlJiYheChuKSl7Zm9yKHM9Yy5kZWxlZ2F0ZVR5cGV8fGQsYnQudGVzdChzK2QpfHwobz1vLnBhcmVudE5vZGUpO287bz1vLnBhcmVudE5vZGUpcC5wdXNoKG8pLGE9bzthPT09KG4ub3duZXJEb2N1bWVudHx8RSkmJnAucHVzaChhLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvd3x8Qyl9aT0wO3doaWxlKChvPXBbaSsrXSkmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpZj1vLGUudHlwZT0xPGk/czpjLmJpbmRUeXBlfHxkLChsPShZLmdldChvLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbZS50eXBlXSYmWS5nZXQobywiaGFuZGxlIikpJiZsLmFwcGx5KG8sdCksKGw9dSYmb1t1XSkmJmwuYXBwbHkmJlYobykmJihlLnJlc3VsdD1sLmFwcGx5KG8sdCksITE9PT1lLnJlc3VsdCYmZS5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gZS50eXBlPWQscnx8ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8Yy5fZGVmYXVsdCYmITEhPT1jLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksdCl8fCFWKG4pfHx1JiZtKG5bZF0pJiYheChuKSYmKChhPW5bdV0pJiYoblt1XT1udWxsKSxTLmV2ZW50LnRyaWdnZXJlZD1kLGUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmZi5hZGRFdmVudExpc3RlbmVyKGQsd3QpLG5bZF0oKSxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLHd0KSxTLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsYSYmKG5bdV09YSkpLGUucmVzdWx0fX0sc2ltdWxhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVMuZXh0ZW5kKG5ldyBTLkV2ZW50LG4se3R5cGU6ZSxpc1NpbXVsYXRlZDohMH0pO1MuZXZlbnQudHJpZ2dlcihyLG51bGwsdCl9fSksUy5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Uy5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXNbMF07aWYobilyZXR1cm4gUy5ldmVudC50cmlnZ2VyKGUsdCxuLCEwKX19KSx2LmZvY3VzaW58fFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24obixyKXt2YXIgaT1mdW5jdGlvbihlKXtTLmV2ZW50LnNpbXVsYXRlKHIsZS50YXJnZXQsUy5ldmVudC5maXgoZSkpfTtTLmV2ZW50LnNwZWNpYWxbcl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLmRvY3VtZW50fHx0aGlzLHQ9WS5hY2Nlc3MoZSxyKTt0fHxlLmFkZEV2ZW50TGlzdGVuZXIobixpLCEwKSxZLmFjY2VzcyhlLHIsKHR8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyx0PVkuYWNjZXNzKGUsciktMTt0P1kuYWNjZXNzKGUscix0KTooZS5yZW1vdmVFdmVudExpc3RlbmVyKG4saSwhMCksWS5yZW1vdmUoZSxyKSl9fX0pO3ZhciBUdD1DLmxvY2F0aW9uLEN0PXtndWlkOkRhdGUubm93KCl9LEV0PS9cPy87Uy5wYXJzZVhNTD1mdW5jdGlvbihlKXt2YXIgdCxuO2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e3Q9KG5ldyBDLkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsInRleHQveG1sIil9Y2F0Y2goZSl7fXJldHVybiBuPXQmJnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIilbMF0sdCYmIW58fFMuZXJyb3IoIkludmFsaWQgWE1MOiAiKyhuP1MubWFwKG4uY2hpbGROb2RlcyxmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pLmpvaW4oIlxuIik6ZSkpLHR9O3ZhciBTdD0vXFtcXSQvLGt0PS9ccj9cbi9nLEF0PS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxOdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24ganQobixlLHIsaSl7dmFyIHQ7aWYoQXJyYXkuaXNBcnJheShlKSlTLmVhY2goZSxmdW5jdGlvbihlLHQpe3J8fFN0LnRlc3Qobik/aShuLHQpOmp0KG4rIlsiKygib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQ/ZToiIikrIl0iLHQscixpKX0pO2Vsc2UgaWYocnx8Im9iamVjdCIhPT13KGUpKWkobixlKTtlbHNlIGZvcih0IGluIGUpanQobisiWyIrdCsiXSIsZVt0XSxyLGkpfVMucGFyYW09ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1tKHQpP3QoKTp0O3Jbci5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChlKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG51bGw9PW4/IiI6bil9O2lmKG51bGw9PWUpcmV0dXJuIiI7aWYoQXJyYXkuaXNBcnJheShlKXx8ZS5qcXVlcnkmJiFTLmlzUGxhaW5PYmplY3QoZSkpUy5lYWNoKGUsZnVuY3Rpb24oKXtpKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKG4gaW4gZSlqdChuLGVbbl0sdCxpKTtyZXR1cm4gci5qb2luKCImIil9LFMuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gUy5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPVMucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBlP1MubWFrZUFycmF5KGUpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgZT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIVModGhpcykuaXMoIjpkaXNhYmxlZCIpJiZOdC50ZXN0KHRoaXMubm9kZU5hbWUpJiYhQXQudGVzdChlKSYmKHRoaXMuY2hlY2tlZHx8IXBlLnRlc3QoZSkpfSkubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIG49Uyh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09bj9udWxsOkFycmF5LmlzQXJyYXkobik/Uy5tYXAobixmdW5jdGlvbihlKXtyZXR1cm57bmFtZTp0Lm5hbWUsdmFsdWU6ZS5yZXBsYWNlKGt0LCJcclxuIil9fSk6e25hbWU6dC5uYW1lLHZhbHVlOm4ucmVwbGFjZShrdCwiXHJcbiIpfX0pLmdldCgpfX0pO3ZhciBEdD0vJTIwL2cscXQ9LyMuKiQvLEx0PS8oWz8mXSlfPVteJl0qLyxIdD0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dtLE90PS9eKD86R0VUfEhFQUQpJC8sUHQ9L15cL1wvLyxSdD17fSxNdD17fSxJdD0iKi8iLmNvbmNhdCgiKiIpLFd0PUUuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIEZ0KG8pe3JldHVybiBmdW5jdGlvbihlLHQpeyJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxlPSIqIik7dmFyIG4scj0wLGk9ZS50b0xvd2VyQ2FzZSgpLm1hdGNoKFApfHxbXTtpZihtKHQpKXdoaWxlKG49aVtyKytdKSIrIj09PW5bMF0/KG49bi5zbGljZSgxKXx8IioiLChvW25dPW9bbl18fFtdKS51bnNoaWZ0KHQpKToob1tuXT1vW25dfHxbXSkucHVzaCh0KX19ZnVuY3Rpb24gJHQodCxpLG8sYSl7dmFyIHM9e30sdT10PT09TXQ7ZnVuY3Rpb24gbChlKXt2YXIgcjtyZXR1cm4gc1tlXT0hMCxTLmVhY2godFtlXXx8W10sZnVuY3Rpb24oZSx0KXt2YXIgbj10KGksbyxhKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIG58fHV8fHNbbl0/dT8hKHI9bik6dm9pZCAwOihpLmRhdGFUeXBlcy51bnNoaWZ0KG4pLGwobiksITEpfSkscn1yZXR1cm4gbChpLmRhdGFUeXBlc1swXSl8fCFzWyIqIl0mJmwoIioiKX1mdW5jdGlvbiBCdChlLHQpe3ZhciBuLHIsaT1TLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKG4gaW4gdCl2b2lkIDAhPT10W25dJiYoKGlbbl0/ZTpyfHwocj17fSkpW25dPXRbbl0pO3JldHVybiByJiZTLmV4dGVuZCghMCxlLHIpLGV9V3QuaHJlZj1UdC5ocmVmLFMuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDpUdC5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDovXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLy50ZXN0KFR0LnByb3RvY29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7IioiOkl0LHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi9cYnhtbFxiLyxodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOkpTT04ucGFyc2UsInRleHQgeG1sIjpTLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9CdChCdChlLFMuYWpheFNldHRpbmdzKSx0KTpCdChTLmFqYXhTZXR0aW5ncyxlKX0sYWpheFByZWZpbHRlcjpGdChSdCksYWpheFRyYW5zcG9ydDpGdChNdCksYWpheDpmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksdD10fHx7fTt2YXIgYyxmLHAsbixkLHIsaCxnLGksbyx5PVMuYWpheFNldHVwKHt9LHQpLHY9eS5jb250ZXh0fHx5LG09eS5jb250ZXh0JiYodi5ub2RlVHlwZXx8di5qcXVlcnkpP1Modik6Uy5ldmVudCx4PVMuRGVmZXJyZWQoKSxiPVMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHc9eS5zdGF0dXNDb2RlfHx7fSxhPXt9LHM9e30sdT0iY2FuY2VsZWQiLFQ9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihlKXt2YXIgdDtpZihoKXtpZighbil7bj17fTt3aGlsZSh0PUh0LmV4ZWMocCkpblt0WzFdLnRvTG93ZXJDYXNlKCkrIiAiXT0oblt0WzFdLnRvTG93ZXJDYXNlKCkrIiAiXXx8W10pLmNvbmNhdCh0WzJdKX10PW5bZS50b0xvd2VyQ2FzZSgpKyIgIl19cmV0dXJuIG51bGw9PXQ/bnVsbDp0LmpvaW4oIiwgIil9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBoP3A6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1oJiYoZT1zW2UudG9Mb3dlckNhc2UoKV09c1tlLnRvTG93ZXJDYXNlKCldfHxlLGFbZV09dCksdGhpc30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09aCYmKHkubWltZVR5cGU9ZSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihlKXt2YXIgdDtpZihlKWlmKGgpVC5hbHdheXMoZVtULnN0YXR1c10pO2Vsc2UgZm9yKHQgaW4gZSl3W3RdPVt3W3RdLGVbdF1dO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihlKXt2YXIgdD1lfHx1O3JldHVybiBjJiZjLmFib3J0KHQpLGwoMCx0KSx0aGlzfX07aWYoeC5wcm9taXNlKFQpLHkudXJsPSgoZXx8eS51cmx8fFR0LmhyZWYpKyIiKS5yZXBsYWNlKFB0LFR0LnByb3RvY29sKyIvLyIpLHkudHlwZT10Lm1ldGhvZHx8dC50eXBlfHx5Lm1ldGhvZHx8eS50eXBlLHkuZGF0YVR5cGVzPSh5LmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goUCl8fFsiIl0sbnVsbD09eS5jcm9zc0RvbWFpbil7cj1FLmNyZWF0ZUVsZW1lbnQoImEiKTt0cnl7ci5ocmVmPXkudXJsLHIuaHJlZj1yLmhyZWYseS5jcm9zc0RvbWFpbj1XdC5wcm90b2NvbCsiLy8iK1d0Lmhvc3QhPXIucHJvdG9jb2wrIi8vIityLmhvc3R9Y2F0Y2goZSl7eS5jcm9zc0RvbWFpbj0hMH19aWYoeS5kYXRhJiZ5LnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIHkuZGF0YSYmKHkuZGF0YT1TLnBhcmFtKHkuZGF0YSx5LnRyYWRpdGlvbmFsKSksJHQoUnQseSx0LFQpLGgpcmV0dXJuIFQ7Zm9yKGkgaW4oZz1TLmV2ZW50JiZ5Lmdsb2JhbCkmJjA9PVMuYWN0aXZlKysmJlMuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IikseS50eXBlPXkudHlwZS50b1VwcGVyQ2FzZSgpLHkuaGFzQ29udGVudD0hT3QudGVzdCh5LnR5cGUpLGY9eS51cmwucmVwbGFjZShxdCwiIikseS5oYXNDb250ZW50P3kuZGF0YSYmeS5wcm9jZXNzRGF0YSYmMD09PSh5LmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJih5LmRhdGE9eS5kYXRhLnJlcGxhY2UoRHQsIisiKSk6KG89eS51cmwuc2xpY2UoZi5sZW5ndGgpLHkuZGF0YSYmKHkucHJvY2Vzc0RhdGF8fCJzdHJpbmciPT10eXBlb2YgeS5kYXRhKSYmKGYrPShFdC50ZXN0KGYpPyImIjoiPyIpK3kuZGF0YSxkZWxldGUgeS5kYXRhKSwhMT09PXkuY2FjaGUmJihmPWYucmVwbGFjZShMdCwiJDEiKSxvPShFdC50ZXN0KGYpPyImIjoiPyIpKyJfPSIrQ3QuZ3VpZCsrK28pLHkudXJsPWYrbykseS5pZk1vZGlmaWVkJiYoUy5sYXN0TW9kaWZpZWRbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLFMubGFzdE1vZGlmaWVkW2ZdKSxTLmV0YWdbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsUy5ldGFnW2ZdKSksKHkuZGF0YSYmeS5oYXNDb250ZW50JiYhMSE9PXkuY29udGVudFR5cGV8fHQuY29udGVudFR5cGUpJiZULnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIseS5jb250ZW50VHlwZSksVC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHkuZGF0YVR5cGVzWzBdJiZ5LmFjY2VwdHNbeS5kYXRhVHlwZXNbMF1dP3kuYWNjZXB0c1t5LmRhdGFUeXBlc1swXV0rKCIqIiE9PXkuZGF0YVR5cGVzWzBdPyIsICIrSXQrIjsgcT0wLjAxIjoiIik6eS5hY2NlcHRzWyIqIl0pLHkuaGVhZGVycylULnNldFJlcXVlc3RIZWFkZXIoaSx5LmhlYWRlcnNbaV0pO2lmKHkuYmVmb3JlU2VuZCYmKCExPT09eS5iZWZvcmVTZW5kLmNhbGwodixULHkpfHxoKSlyZXR1cm4gVC5hYm9ydCgpO2lmKHU9ImFib3J0IixiLmFkZCh5LmNvbXBsZXRlKSxULmRvbmUoeS5zdWNjZXNzKSxULmZhaWwoeS5lcnJvciksYz0kdChNdCx5LHQsVCkpe2lmKFQucmVhZHlTdGF0ZT0xLGcmJm0udHJpZ2dlcigiYWpheFNlbmQiLFtULHldKSxoKXJldHVybiBUO3kuYXN5bmMmJjA8eS50aW1lb3V0JiYoZD1DLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtULmFib3J0KCJ0aW1lb3V0Iil9LHkudGltZW91dCkpO3RyeXtoPSExLGMuc2VuZChhLGwpfWNhdGNoKGUpe2lmKGgpdGhyb3cgZTtsKC0xLGUpfX1lbHNlIGwoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIGwoZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPXQ7aHx8KGg9ITAsZCYmQy5jbGVhclRpbWVvdXQoZCksYz12b2lkIDAscD1yfHwiIixULnJlYWR5U3RhdGU9MDxlPzQ6MCxpPTIwMDw9ZSYmZTwzMDB8fDMwND09PWUsbiYmKHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5jb250ZW50cyx1PWUuZGF0YVR5cGVzO3doaWxlKCIqIj09PXVbMF0pdS5zaGlmdCgpLHZvaWQgMD09PXImJihyPWUubWltZVR5cGV8fHQuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihyKWZvcihpIGluIHMpaWYoc1tpXSYmc1tpXS50ZXN0KHIpKXt1LnVuc2hpZnQoaSk7YnJlYWt9aWYodVswXWluIG4pbz11WzBdO2Vsc2V7Zm9yKGkgaW4gbil7aWYoIXVbMF18fGUuY29udmVydGVyc1tpKyIgIit1WzBdXSl7bz1pO2JyZWFrfWF8fChhPWkpfW89b3x8YX1pZihvKXJldHVybiBvIT09dVswXSYmdS51bnNoaWZ0KG8pLG5bb119KHksVCxuKSksIWkmJi0xPFMuaW5BcnJheSgic2NyaXB0Iix5LmRhdGFUeXBlcykmJlMuaW5BcnJheSgianNvbiIseS5kYXRhVHlwZXMpPDAmJih5LmNvbnZlcnRlcnNbInRleHQgc2NyaXB0Il09ZnVuY3Rpb24oKXt9KSxzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD17fSxjPWUuZGF0YVR5cGVzLnNsaWNlKCk7aWYoY1sxXSlmb3IoYSBpbiBlLmNvbnZlcnRlcnMpbFthLnRvTG93ZXJDYXNlKCldPWUuY29udmVydGVyc1thXTtvPWMuc2hpZnQoKTt3aGlsZShvKWlmKGUucmVzcG9uc2VGaWVsZHNbb10mJihuW2UucmVzcG9uc2VGaWVsZHNbb11dPXQpLCF1JiZyJiZlLmRhdGFGaWx0ZXImJih0PWUuZGF0YUZpbHRlcih0LGUuZGF0YVR5cGUpKSx1PW8sbz1jLnNoaWZ0KCkpaWYoIioiPT09bylvPXU7ZWxzZSBpZigiKiIhPT11JiZ1IT09byl7aWYoIShhPWxbdSsiICIrb118fGxbIiogIitvXSkpZm9yKGkgaW4gbClpZigocz1pLnNwbGl0KCIgIikpWzFdPT09byYmKGE9bFt1KyIgIitzWzBdXXx8bFsiKiAiK3NbMF1dKSl7ITA9PT1hP2E9bFtpXTohMCE9PWxbaV0mJihvPXNbMF0sYy51bnNoaWZ0KHNbMV0pKTticmVha31pZighMCE9PWEpaWYoYSYmZVsidGhyb3dzIl0pdD1hKHQpO2Vsc2UgdHJ5e3Q9YSh0KX1jYXRjaChlKXtyZXR1cm57c3RhdGU6InBhcnNlcmVycm9yIixlcnJvcjphP2U6Ik5vIGNvbnZlcnNpb24gZnJvbSAiK3UrIiB0byAiK299fX1yZXR1cm57c3RhdGU6InN1Y2Nlc3MiLGRhdGE6dH19KHkscyxULGkpLGk/KHkuaWZNb2RpZmllZCYmKCh1PVQuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSkmJihTLmxhc3RNb2RpZmllZFtmXT11KSwodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIikpJiYoUy5ldGFnW2ZdPXUpKSwyMDQ9PT1lfHwiSEVBRCI9PT15LnR5cGU/bD0ibm9jb250ZW50IjozMDQ9PT1lP2w9Im5vdG1vZGlmaWVkIjoobD1zLnN0YXRlLG89cy5kYXRhLGk9IShhPXMuZXJyb3IpKSk6KGE9bCwhZSYmbHx8KGw9ImVycm9yIixlPDAmJihlPTApKSksVC5zdGF0dXM9ZSxULnN0YXR1c1RleHQ9KHR8fGwpKyIiLGk/eC5yZXNvbHZlV2l0aCh2LFtvLGwsVF0pOngucmVqZWN0V2l0aCh2LFtULGwsYV0pLFQuc3RhdHVzQ29kZSh3KSx3PXZvaWQgMCxnJiZtLnRyaWdnZXIoaT8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFtULHksaT9vOmFdKSxiLmZpcmVXaXRoKHYsW1QsbF0pLGcmJihtLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW1QseV0pLC0tUy5hY3RpdmV8fFMuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiBUfSxnZXRKU09OOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUy5nZXQoZSx0LG4sImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFMuZ2V0KGUsdm9pZCAwLHQsInNjcmlwdCIpfX0pLFMuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihlLGkpe1NbaV09ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG0odCkmJihyPXJ8fG4sbj10LHQ9dm9pZCAwKSxTLmFqYXgoUy5leHRlbmQoe3VybDplLHR5cGU6aSxkYXRhVHlwZTpyLGRhdGE6dCxzdWNjZXNzOm59LFMuaXNQbGFpbk9iamVjdChlKSYmZSkpfX0pLFMuYWpheFByZWZpbHRlcihmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlLmhlYWRlcnMpImNvbnRlbnQtdHlwZSI9PT10LnRvTG93ZXJDYXNlKCkmJihlLmNvbnRlbnRUeXBlPWUuaGVhZGVyc1t0XXx8IiIpfSksUy5fZXZhbFVybD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIFMuYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbigpe319LGRhdGFGaWx0ZXI6ZnVuY3Rpb24oZSl7Uy5nbG9iYWxFdmFsKGUsdCxuKX19KX0sUy5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHRoaXNbMF0mJihtKGUpJiYoZT1lLmNhbGwodGhpc1swXSkpLHQ9UyhlLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmdC5pbnNlcnRCZWZvcmUodGhpc1swXSksdC5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3doaWxlKGUuZmlyc3RFbGVtZW50Q2hpbGQpZT1lLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBlfSkuYXBwZW5kKHRoaXMpKSx0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24obil7cmV0dXJuIG0obik/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykud3JhcElubmVyKG4uY2FsbCh0aGlzLGUpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPVModGhpcyksdD1lLmNvbnRlbnRzKCk7dC5sZW5ndGg/dC53cmFwQWxsKG4pOmUuYXBwZW5kKG4pfSl9LHdyYXA6ZnVuY3Rpb24odCl7dmFyIG49bSh0KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykud3JhcEFsbChuP3QuY2FsbCh0aGlzLGUpOnQpfSl9LHVud3JhcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wYXJlbnQoZSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbigpe1ModGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLHRoaXN9fSksUy5leHByLnBzZXVkb3MuaGlkZGVuPWZ1bmN0aW9uKGUpe3JldHVybiFTLmV4cHIucHNldWRvcy52aXNpYmxlKGUpfSxTLmV4cHIucHNldWRvcy52aXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiEhKGUub2Zmc2V0V2lkdGh8fGUub2Zmc2V0SGVpZ2h0fHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX0sUy5hamF4U2V0dGluZ3MueGhyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQy5YTUxIdHRwUmVxdWVzdH1jYXRjaChlKXt9fTt2YXIgX3Q9ezA6MjAwLDEyMjM6MjA0fSx6dD1TLmFqYXhTZXR0aW5ncy54aHIoKTt2LmNvcnM9ISF6dCYmIndpdGhDcmVkZW50aWFscyJpbiB6dCx2LmFqYXg9enQ9ISF6dCxTLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oaSl7dmFyIG8sYTtpZih2LmNvcnN8fHp0JiYhaS5jcm9zc0RvbWFpbilyZXR1cm57c2VuZDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9aS54aHIoKTtpZihyLm9wZW4oaS50eXBlLGkudXJsLGkuYXN5bmMsaS51c2VybmFtZSxpLnBhc3N3b3JkKSxpLnhockZpZWxkcylmb3IobiBpbiBpLnhockZpZWxkcylyW25dPWkueGhyRmllbGRzW25dO2ZvcihuIGluIGkubWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZSYmci5vdmVycmlkZU1pbWVUeXBlKGkubWltZVR5cGUpLGkuY3Jvc3NEb21haW58fGVbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKSxlKXIuc2V0UmVxdWVzdEhlYWRlcihuLGVbbl0pO289ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7byYmKG89YT1yLm9ubG9hZD1yLm9uZXJyb3I9ci5vbmFib3J0PXIub250aW1lb3V0PXIub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsImFib3J0Ij09PWU/ci5hYm9ydCgpOiJlcnJvciI9PT1lPyJudW1iZXIiIT10eXBlb2Ygci5zdGF0dXM/dCgwLCJlcnJvciIpOnQoci5zdGF0dXMsci5zdGF0dXNUZXh0KTp0KF90W3Iuc3RhdHVzXXx8ci5zdGF0dXMsci5zdGF0dXNUZXh0LCJ0ZXh0IiE9PShyLnJlc3BvbnNlVHlwZXx8InRleHQiKXx8InN0cmluZyIhPXR5cGVvZiByLnJlc3BvbnNlVGV4dD97YmluYXJ5OnIucmVzcG9uc2V9Ont0ZXh0OnIucmVzcG9uc2VUZXh0fSxyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSl9fSxyLm9ubG9hZD1vKCksYT1yLm9uZXJyb3I9ci5vbnRpbWVvdXQ9bygiZXJyb3IiKSx2b2lkIDAhPT1yLm9uYWJvcnQ/ci5vbmFib3J0PWE6ci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09ci5yZWFkeVN0YXRlJiZDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtvJiZhKCl9KX0sbz1vKCJhYm9ydCIpO3RyeXtyLnNlbmQoaS5oYXNDb250ZW50JiZpLmRhdGF8fG51bGwpfWNhdGNoKGUpe2lmKG8pdGhyb3cgZX19LGFib3J0OmZ1bmN0aW9uKCl7byYmbygpfX19KSxTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7ZS5jcm9zc0RvbWFpbiYmKGUuY29udGVudHMuc2NyaXB0PSExKX0pLFMuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGUpe3JldHVybiBTLmdsb2JhbEV2YWwoZSksZX19fSksUy5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUuY2FjaGUmJihlLmNhY2hlPSExKSxlLmNyb3NzRG9tYWluJiYoZS50eXBlPSJHRVQiKX0pLFMuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihuKXt2YXIgcixpO2lmKG4uY3Jvc3NEb21haW58fG4uc2NyaXB0QXR0cnMpcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXtyPVMoIjxzY3JpcHQ+IikuYXR0cihuLnNjcmlwdEF0dHJzfHx7fSkucHJvcCh7Y2hhcnNldDpuLnNjcmlwdENoYXJzZXQsc3JjOm4udXJsfSkub24oImxvYWQgZXJyb3IiLGk9ZnVuY3Rpb24oZSl7ci5yZW1vdmUoKSxpPW51bGwsZSYmdCgiZXJyb3IiPT09ZS50eXBlPzQwNDoyMDAsZS50eXBlKX0pLEUuaGVhZC5hcHBlbmRDaGlsZChyWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtpJiZpKCl9fX0pO3ZhciBVdCxYdD1bXSxWdD0vKD0pXD8oPz0mfCQpfFw/XD8vO1MuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT1YdC5wb3AoKXx8Uy5leHBhbmRvKyJfIitDdC5ndWlkKys7cmV0dXJuIHRoaXNbZV09ITAsZX19KSxTLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT0hMSE9PWUuanNvbnAmJihWdC50ZXN0KGUudXJsKT8idXJsIjoic3RyaW5nIj09dHlwZW9mIGUuZGF0YSYmMD09PShlLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJlZ0LnRlc3QoZS5kYXRhKSYmImRhdGEiKTtpZihhfHwianNvbnAiPT09ZS5kYXRhVHlwZXNbMF0pcmV0dXJuIHI9ZS5qc29ucENhbGxiYWNrPW0oZS5qc29ucENhbGxiYWNrKT9lLmpzb25wQ2FsbGJhY2soKTplLmpzb25wQ2FsbGJhY2ssYT9lW2FdPWVbYV0ucmVwbGFjZShWdCwiJDEiK3IpOiExIT09ZS5qc29ucCYmKGUudXJsKz0oRXQudGVzdChlLnVybCk/IiYiOiI/IikrZS5qc29ucCsiPSIrciksZS5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIG98fFMuZXJyb3IocisiIHdhcyBub3QgY2FsbGVkIiksb1swXX0sZS5kYXRhVHlwZXNbMF09Impzb24iLGk9Q1tyXSxDW3JdPWZ1bmN0aW9uKCl7bz1hcmd1bWVudHN9LG4uYWx3YXlzKGZ1bmN0aW9uKCl7dm9pZCAwPT09aT9TKEMpLnJlbW92ZVByb3Aocik6Q1tyXT1pLGVbcl0mJihlLmpzb25wQ2FsbGJhY2s9dC5qc29ucENhbGxiYWNrLFh0LnB1c2gocikpLG8mJm0oaSkmJmkob1swXSksbz1pPXZvaWQgMH0pLCJzY3JpcHQifSksdi5jcmVhdGVIVE1MRG9jdW1lbnQ9KChVdD1FLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keSkuaW5uZXJIVE1MPSI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsMj09PVV0LmNoaWxkTm9kZXMubGVuZ3RoKSxTLnBhcnNlSFRNTD1mdW5jdGlvbihlLHQsbil7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP1tdOigiYm9vbGVhbiI9PXR5cGVvZiB0JiYobj10LHQ9ITEpLHR8fCh2LmNyZWF0ZUhUTUxEb2N1bWVudD8oKHI9KHQ9RS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpKS5jcmVhdGVFbGVtZW50KCJiYXNlIikpLmhyZWY9RS5sb2NhdGlvbi5ocmVmLHQuaGVhZC5hcHBlbmRDaGlsZChyKSk6dD1FKSxvPSFuJiZbXSwoaT1OLmV4ZWMoZSkpP1t0LmNyZWF0ZUVsZW1lbnQoaVsxXSldOihpPXhlKFtlXSx0LG8pLG8mJm8ubGVuZ3RoJiZTKG8pLnJlbW92ZSgpLFMubWVyZ2UoW10saS5jaGlsZE5vZGVzKSkpO3ZhciByLGksb30sUy5mbi5sb2FkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT10aGlzLHM9ZS5pbmRleE9mKCIgIik7cmV0dXJuLTE8cyYmKHI9eXQoZS5zbGljZShzKSksZT1lLnNsaWNlKDAscykpLG0odCk/KG49dCx0PXZvaWQgMCk6dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYoaT0iUE9TVCIpLDA8YS5sZW5ndGgmJlMuYWpheCh7dXJsOmUsdHlwZTppfHwiR0VUIixkYXRhVHlwZToiaHRtbCIsZGF0YTp0fSkuZG9uZShmdW5jdGlvbihlKXtvPWFyZ3VtZW50cyxhLmh0bWwocj9TKCI8ZGl2PiIpLmFwcGVuZChTLnBhcnNlSFRNTChlKSkuZmluZChyKTplKX0pLmFsd2F5cyhuJiZmdW5jdGlvbihlLHQpe2EuZWFjaChmdW5jdGlvbigpe24uYXBwbHkodGhpcyxvfHxbZS5yZXNwb25zZVRleHQsdCxlXSl9KX0pLHRoaXN9LFMuZXhwci5wc2V1ZG9zLmFuaW1hdGVkPWZ1bmN0aW9uKHQpe3JldHVybiBTLmdyZXAoUy50aW1lcnMsZnVuY3Rpb24oZSl7cmV0dXJuIHQ9PT1lLmVsZW19KS5sZW5ndGh9LFMub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsPVMuY3NzKGUsInBvc2l0aW9uIiksYz1TKGUpLGY9e307InN0YXRpYyI9PT1sJiYoZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxzPWMub2Zmc2V0KCksbz1TLmNzcyhlLCJ0b3AiKSx1PVMuY3NzKGUsImxlZnQiKSwoImFic29sdXRlIj09PWx8fCJmaXhlZCI9PT1sKSYmLTE8KG8rdSkuaW5kZXhPZigiYXV0byIpPyhhPShyPWMucG9zaXRpb24oKSkudG9wLGk9ci5sZWZ0KTooYT1wYXJzZUZsb2F0KG8pfHwwLGk9cGFyc2VGbG9hdCh1KXx8MCksbSh0KSYmKHQ9dC5jYWxsKGUsbixTLmV4dGVuZCh7fSxzKSkpLG51bGwhPXQudG9wJiYoZi50b3A9dC50b3Atcy50b3ArYSksbnVsbCE9dC5sZWZ0JiYoZi5sZWZ0PXQubGVmdC1zLmxlZnQraSksInVzaW5nImluIHQ/dC51c2luZy5jYWxsKGUsZik6Yy5jc3MoZil9fSxTLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKHQpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PXQ/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oZSl7Uy5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsdCxlKX0pO3ZhciBlLG4scj10aGlzWzBdO3JldHVybiByP3IuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg/KGU9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyx7dG9wOmUudG9wK24ucGFnZVlPZmZzZXQsbGVmdDplLmxlZnQrbi5wYWdlWE9mZnNldH0pOnt0b3A6MCxsZWZ0OjB9OnZvaWQgMH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgZSx0LG4scj10aGlzWzBdLGk9e3RvcDowLGxlZnQ6MH07aWYoImZpeGVkIj09PVMuY3NzKHIsInBvc2l0aW9uIikpdD1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Vsc2V7dD10aGlzLm9mZnNldCgpLG49ci5vd25lckRvY3VtZW50LGU9ci5vZmZzZXRQYXJlbnR8fG4uZG9jdW1lbnRFbGVtZW50O3doaWxlKGUmJihlPT09bi5ib2R5fHxlPT09bi5kb2N1bWVudEVsZW1lbnQpJiYic3RhdGljIj09PVMuY3NzKGUsInBvc2l0aW9uIikpZT1lLnBhcmVudE5vZGU7ZSYmZSE9PXImJjE9PT1lLm5vZGVUeXBlJiYoKGk9UyhlKS5vZmZzZXQoKSkudG9wKz1TLmNzcyhlLCJib3JkZXJUb3BXaWR0aCIsITApLGkubGVmdCs9Uy5jc3MoZSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpfXJldHVybnt0b3A6dC50b3AtaS50b3AtUy5jc3MociwibWFyZ2luVG9wIiwhMCksbGVmdDp0LmxlZnQtaS5sZWZ0LVMuY3NzKHIsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShlJiYic3RhdGljIj09PVMuY3NzKGUsInBvc2l0aW9uIikpZT1lLm9mZnNldFBhcmVudDtyZXR1cm4gZXx8cmV9KX19KSxTLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24odCxpKXt2YXIgbz0icGFnZVlPZmZzZXQiPT09aTtTLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiBCKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKHgoZSk/cj1lOjk9PT1lLm5vZGVUeXBlJiYocj1lLmRlZmF1bHRWaWV3KSx2b2lkIDA9PT1uKXJldHVybiByP3JbaV06ZVt0XTtyP3Iuc2Nyb2xsVG8obz9yLnBhZ2VYT2Zmc2V0Om4sbz9uOnIucGFnZVlPZmZzZXQpOmVbdF09bn0sdCxlLGFyZ3VtZW50cy5sZW5ndGgpfX0pLFMuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLG4pe1MuY3NzSG9va3Nbbl09X2Uodi5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4gdD1CZShlLG4pLFBlLnRlc3QodCk/UyhlKS5wb3NpdGlvbigpW25dKyJweCI6dH0pfSksUy5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxzKXtTLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6cywiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKHIsbyl7Uy5mbltvXT1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGgmJihyfHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxpPXJ8fCghMD09PWV8fCEwPT09dD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIEIodGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHgoZSk/MD09PW8uaW5kZXhPZigib3V0ZXIiKT9lWyJpbm5lciIrYV06ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWUubm9kZVR5cGU/KHI9ZS5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoZS5ib2R5WyJzY3JvbGwiK2FdLHJbInNjcm9sbCIrYV0sZS5ib2R5WyJvZmZzZXQiK2FdLHJbIm9mZnNldCIrYV0sclsiY2xpZW50IithXSkpOnZvaWQgMD09PW4/Uy5jc3MoZSx0LGkpOlMuc3R5bGUoZSx0LG4saSl9LHMsbj9lOnZvaWQgMCxuKX19KX0pLFMuZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGUsdCl7Uy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbih0LGUpfX0pLFMuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX0saG92ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodHx8ZSl9fSksUy5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsbil7Uy5mbltuXT1mdW5jdGlvbihlLHQpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihuLG51bGwsZSx0KTp0aGlzLnRyaWdnZXIobil9fSk7dmFyIEd0PS9eW1xzXHVGRUZGXHhBMF0rfChbXlxzXHVGRUZGXHhBMF0pW1xzXHVGRUZGXHhBMF0rJC9nO1MucHJveHk9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYobj1lW3RdLHQ9ZSxlPW4pLG0oZSkpcmV0dXJuIHI9cy5jYWxsKGFyZ3VtZW50cywyKSwoaT1mdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHR8fHRoaXMsci5jb25jYXQocy5jYWxsKGFyZ3VtZW50cykpKX0pLmd1aWQ9ZS5ndWlkPWUuZ3VpZHx8Uy5ndWlkKyssaX0sUy5ob2xkUmVhZHk9ZnVuY3Rpb24oZSl7ZT9TLnJlYWR5V2FpdCsrOlMucmVhZHkoITApfSxTLmlzQXJyYXk9QXJyYXkuaXNBcnJheSxTLnBhcnNlSlNPTj1KU09OLnBhcnNlLFMubm9kZU5hbWU9QSxTLmlzRnVuY3Rpb249bSxTLmlzV2luZG93PXgsUy5jYW1lbENhc2U9WCxTLnR5cGU9dyxTLm5vdz1EYXRlLm5vdyxTLmlzTnVtZXJpYz1mdW5jdGlvbihlKXt2YXIgdD1TLnR5cGUoZSk7cmV0dXJuKCJudW1iZXIiPT09dHx8InN0cmluZyI9PT10KSYmIWlzTmFOKGUtcGFyc2VGbG9hdChlKSl9LFMudHJpbT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjooZSsiIikucmVwbGFjZShHdCwiJDEiKX0sImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIFN9KTt2YXIgWXQ9Qy5qUXVlcnksUXQ9Qy4kO3JldHVybiBTLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuJD09PVMmJihDLiQ9UXQpLGUmJkMualF1ZXJ5PT09UyYmKEMualF1ZXJ5PVl0KSxTfSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihDLmpRdWVyeT1DLiQ9UyksU30pOwo="}},"time_used":52,"timings":{"blocked":-1,"dns":0,"connect":9,"send":0,"wait":9,"receive":10,"ssl":20},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/vendor/react.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.029Z","timestamp":1785130090029,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-includes/js/dist/vendor/react.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=KZ8KHOFB8FqO7q6ovI0fA%2Fzs9Vsin6WsE2ak5dBGxs1r33bx0bVmVKwlpIJSoMnkPopkIFeBqJTOPyYdYE92R9lz27mNjAjo6xX7QQ36lMkPQWOXmm6V37mMpsNRWRssaHY1PQJtHA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36be4a120a-OSL\r\ncontent-length: 4783\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":20760,"size_decoded":5605,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text","md5":"d1ac981b533da21d8dd0bbddab4c4ea6","sha1":"1b22173e0a2e7dc804ea65197c96a478efe1191c","sha256":"de89a10d5366dbb89e64dfc3a578f3510faf14225adc0a91e68dd1e7d23a2c84","sha512":"af4b8d6ca81fe48b6f1229c0759d10bab30b6b2afdf11e7a5f9031e4cd09c15659a98c4004a9f11a2e0af18e24c5f00eec9f386ce2049bd6d073ad8ec9ce225c","ssdeep":"192:nqK9+9ZeDrG9COQlleS6eYgy+ISCgAvqvs0kCU4Cv3ty4KrYOM6Qoyi0Mb+RDI6K:nqK9qYEQ7ShaM6mHQSYTxzP","tlshash":"09922e58b9f230309613f03a8a5fe8587236a54f1a4ced10390c96a16f5a57cd3bafdd","first_seen":"2026-07-27T03:56:42.494648Z","last_seen":"2026-07-27T05:30:59.816064Z","times_seen":6,"resource_available":true,"data":"LyoqCiAqIEBsaWNlbnNlIFJlYWN0CiAqIHJlYWN0LnByb2R1Y3Rpb24ubWluLmpzCiAqCiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLgogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGUKICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi8KISBmdW5jdGlvbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBlLCB0OwogICAgZSA9IHRoaXMsIHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgZnVuY3Rpb24gdChlLCB0LCBuKSB7CiAgICAgICAgICAgIHRoaXMucHJvcHMgPSBlLCB0aGlzLmNvbnRleHQgPSB0LCB0aGlzLnJlZnMgPSBMLCB0aGlzLnVwZGF0ZXIgPSBuIHx8IFQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG4oKSB7fQoKICAgICAgICBmdW5jdGlvbiByKGUsIHQsIG4pIHsKICAgICAgICAgICAgdGhpcy5wcm9wcyA9IGUsIHRoaXMuY29udGV4dCA9IHQsIHRoaXMucmVmcyA9IEwsIHRoaXMudXBkYXRlciA9IG4gfHwgVAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbyhlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBvID0ge30sCiAgICAgICAgICAgICAgICB1ID0gbnVsbCwKICAgICAgICAgICAgICAgIGEgPSBudWxsOwogICAgICAgICAgICBpZiAobnVsbCAhPSB0KQogICAgICAgICAgICAgICAgZm9yIChyIGluIHZvaWQgMCAhPT0gdC5yZWYgJiYgKGEgPSB0LnJlZiksIHZvaWQgMCAhPT0gdC5rZXkgJiYgKHUgPSAiIiArIHQua2V5KSwgdCkgRC5jYWxsKHQsIHIpICYmICFWLmhhc093blByb3BlcnR5KHIpICYmIChvW3JdID0gdFtyXSk7CiAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7CiAgICAgICAgICAgIGlmICgxID09PSBpKSBvLmNoaWxkcmVuID0gbjsKICAgICAgICAgICAgZWxzZSBpZiAoMSA8IGkpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSBBcnJheShpKSwgYyA9IDA7IGMgPCBpOyBjKyspIGxbY10gPSBhcmd1bWVudHNbYyArIDJdOwogICAgICAgICAgICAgICAgby5jaGlsZHJlbiA9IGwKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZSAmJiBlLmRlZmF1bHRQcm9wcykKICAgICAgICAgICAgICAgIGZvciAociBpbiBpID0gZS5kZWZhdWx0UHJvcHMpIHZvaWQgMCA9PT0gb1tyXSAmJiAob1tyXSA9IGlbcl0pOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgJCR0eXBlb2Y6IGcsCiAgICAgICAgICAgICAgICB0eXBlOiBlLAogICAgICAgICAgICAgICAga2V5OiB1LAogICAgICAgICAgICAgICAgcmVmOiBhLAogICAgICAgICAgICAgICAgcHJvcHM6IG8sCiAgICAgICAgICAgICAgICBfb3duZXI6IFUuY3VycmVudAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlICYmIG51bGwgIT09IGUgJiYgZS4kJHR5cGVvZiA9PT0gZwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYShlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBudWxsICE9PSBlICYmIG51bGwgIT0gZS5rZXkgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHsKICAgICAgICAgICAgICAgICAgICAiPSI6ICI9MCIsCiAgICAgICAgICAgICAgICAgICAgIjoiOiAiPTIiCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuICIkIiArIGUucmVwbGFjZSgvWz06XS9nLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0W2VdCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSgiIiArIGUua2V5KSA6IHQudG9TdHJpbmcoMzYpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpKGUsIHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgdmFyIGwgPSB0eXBlb2YgZTsKICAgICAgICAgICAgInVuZGVmaW5lZCIgIT09IGwgJiYgImJvb2xlYW4iICE9PSBsIHx8IChlID0gbnVsbCk7CiAgICAgICAgICAgIHZhciBjID0gITE7CiAgICAgICAgICAgIGlmIChudWxsID09PSBlKSBjID0gITA7CiAgICAgICAgICAgIGVsc2Ugc3dpdGNoIChsKSB7CiAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICAgICAgICBjID0gITA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS4kJHR5cGVvZikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGc6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgazoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYykgcmV0dXJuIG8gPSBvKGMgPSBlKSwgZSA9ICIiID09PSByID8gIi4iICsgYShjLCAwKSA6IHIsIE0obykgPyAobiA9ICIiLCBudWxsICE9IGUgJiYgKG4gPSBlLnJlcGxhY2UocSwgIiQmLyIpICsgIi8iKSwgaShvLCB0LCBuLCAiIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0pKSkgOiBudWxsICE9IG8gJiYgKHUobykgJiYgKG8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICQkdHlwZW9mOiBnLAogICAgICAgICAgICAgICAgICAgIHR5cGU6IGUudHlwZSwKICAgICAgICAgICAgICAgICAgICBrZXk6IHQsCiAgICAgICAgICAgICAgICAgICAgcmVmOiBlLnJlZiwKICAgICAgICAgICAgICAgICAgICBwcm9wczogZS5wcm9wcywKICAgICAgICAgICAgICAgICAgICBfb3duZXI6IGUuX293bmVyCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0obywgbiArICghby5rZXkgfHwgYyAmJiBjLmtleSA9PT0gby5rZXkgPyAiIiA6ICgiIiArIG8ua2V5KS5yZXBsYWNlKHEsICIkJi8iKSArICIvIikgKyBlKSksIHQucHVzaChvKSksIDE7CiAgICAgICAgICAgIGlmIChjID0gMCwgciA9ICIiID09PSByID8gIi4iIDogciArICI6IiwgTShlKSkKICAgICAgICAgICAgICAgIGZvciAodmFyIGYgPSAwOyBmIDwgZS5sZW5ndGg7IGYrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gciArIGEobCA9IGVbZl0sIGYpOwogICAgICAgICAgICAgICAgICAgIGMgKz0gaShsLCB0LCBuLCBzLCBvKQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gZSB8fCAib2JqZWN0IiAhPSB0eXBlb2YgZSA/IG51bGwgOiAiZnVuY3Rpb24iID09IHR5cGVvZihlID0gaiAmJiBlW2pdIHx8IGVbIkBAaXRlcmF0b3IiXSkgPyBlIDogbnVsbAogICAgICAgICAgICAgICAgICAgIH0oZSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIHMpCiAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gcy5jYWxsKGUpLCBmID0gMDsgIShsID0gZS5uZXh0KCkpLmRvbmU7KSBjICs9IGkobCA9IGwudmFsdWUsIHQsIG4sIHMgPSByICsgYShsLCBmKyspLCBvKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJvYmplY3QiID09PSBsKSB0aHJvdyB0ID0gU3RyaW5nKGUpLCBFcnJvcigiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAiICsgKCJbb2JqZWN0IE9iamVjdF0iID09PSB0ID8gIm9iamVjdCB3aXRoIGtleXMgeyIgKyBPYmplY3Qua2V5cyhlKS5qb2luKCIsICIpICsgIn0iIDogdCkgKyAiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLiIpOwogICAgICAgICAgICByZXR1cm4gYwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbChlLCB0LCBuKSB7CiAgICAgICAgICAgIGlmIChudWxsID09IGUpIHJldHVybiBlOwogICAgICAgICAgICB2YXIgciA9IFtdLAogICAgICAgICAgICAgICAgbyA9IDA7CiAgICAgICAgICAgIHJldHVybiBpKGUsIHIsICIiLCAiIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0LmNhbGwobiwgZSwgbysrKQogICAgICAgICAgICB9KSksIHIKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgICAgICBpZiAoLTEgPT09IGUuX3N0YXR1cykgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLl9yZXN1bHQ7CiAgICAgICAgICAgICAgICAodCA9IHQoKSkudGhlbigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIDAgIT09IGUuX3N0YXR1cyAmJiAtMSAhPT0gZS5fc3RhdHVzIHx8IChlLl9zdGF0dXMgPSAxLCBlLl9yZXN1bHQgPSB0KQogICAgICAgICAgICAgICAgfSksIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgMCAhPT0gZS5fc3RhdHVzICYmIC0xICE9PSBlLl9zdGF0dXMgfHwgKGUuX3N0YXR1cyA9IDIsIGUuX3Jlc3VsdCA9IHQpCiAgICAgICAgICAgICAgICB9KSksIC0xID09PSBlLl9zdGF0dXMgJiYgKGUuX3N0YXR1cyA9IDAsIGUuX3Jlc3VsdCA9IHQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKDEgPT09IGUuX3N0YXR1cykgcmV0dXJuIGUuX3Jlc3VsdC5kZWZhdWx0OwogICAgICAgICAgICB0aHJvdyBlLl9yZXN1bHQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGYoZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IGUubGVuZ3RoOwogICAgICAgICAgICBlLnB1c2godCk7CiAgICAgICAgICAgIGU6IGZvciAoOyAwIDwgbjspIHsKICAgICAgICAgICAgICAgIHZhciByID0gbiAtIDEgPj4+IDEsCiAgICAgICAgICAgICAgICAgICAgbyA9IGVbcl07CiAgICAgICAgICAgICAgICBpZiAoISgwIDwgeShvLCB0KSkpIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBlW3JdID0gdCwgZVtuXSA9IG8sIG4gPSByCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHMoZSkgewogICAgICAgICAgICByZXR1cm4gMCA9PT0gZS5sZW5ndGggPyBudWxsIDogZVswXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcChlKSB7CiAgICAgICAgICAgIGlmICgwID09PSBlLmxlbmd0aCkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIHZhciB0ID0gZVswXSwKICAgICAgICAgICAgICAgIG4gPSBlLnBvcCgpOwogICAgICAgICAgICBpZiAobiAhPT0gdCkgewogICAgICAgICAgICAgICAgZVswXSA9IG47CiAgICAgICAgICAgICAgICBlOiBmb3IgKHZhciByID0gMCwgbyA9IGUubGVuZ3RoLCB1ID0gbyA+Pj4gMTsgciA8IHU7KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAyICogKHIgKyAxKSAtIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2FdLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlW2xdOwogICAgICAgICAgICAgICAgICAgIGlmICgwID4geShpLCBuKSkgbCA8IG8gJiYgMCA+IHkoYywgaSkgPyAoZVtyXSA9IGMsIGVbbF0gPSBuLCByID0gbCkgOiAoZVtyXSA9IGksIGVbYV0gPSBuLCByID0gYSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGwgPCBvICYmIDAgPiB5KGMsIG4pKSkgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgZVtyXSA9IGMsIGVbbF0gPSBuLCByID0gbAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geShlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gZS5zb3J0SW5kZXggLSB0LnNvcnRJbmRleDsKICAgICAgICAgICAgcmV0dXJuIDAgIT09IG4gPyBuIDogZS5pZCAtIHQuaWQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGQoZSkgewogICAgICAgICAgICBmb3IgKHZhciB0ID0gcyhHKTsgbnVsbCAhPT0gdDspIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB0LmNhbGxiYWNrKSBwKEcpOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEodC5zdGFydFRpbWUgPD0gZSkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIHAoRyksIHQuc29ydEluZGV4ID0gdC5leHBpcmF0aW9uVGltZSwgZihZLCB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdCA9IHMoRykKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYihlKSB7CiAgICAgICAgICAgIGlmIChlZSA9ICExLCBkKGUpLCAhWikKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBzKFkpKSBaID0gITAsIF8odik7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHMoRyk7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gdCAmJiBoKGIsIHQuc3RhcnRUaW1lIC0gZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHYoZSwgdCkgewogICAgICAgICAgICBaID0gITEsIGVlICYmIChlZSA9ICExLCBuZShhZSksIGFlID0gLTEpLCBYID0gITA7CiAgICAgICAgICAgIHZhciBuID0gUTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGZvciAoZCh0KSwgSyA9IHMoWSk7IG51bGwgIT09IEsgJiYgKCEoSy5leHBpcmF0aW9uVGltZSA+IHQpIHx8IGUgJiYgIW0oKSk7KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBLLmNhbGxiYWNrOwogICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEsuY2FsbGJhY2sgPSBudWxsLCBRID0gSy5wcmlvcml0eUxldmVsOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIoSy5leHBpcmF0aW9uVGltZSA8PSB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHooKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbyA/IEsuY2FsbGJhY2sgPSBvIDogSyA9PT0gcyhZKSAmJiBwKFkpLCBkKHQpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHAoWSk7CiAgICAgICAgICAgICAgICAgICAgSyA9IHMoWSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBLKSB2YXIgdSA9ICEwOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBzKEcpOwogICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGEgJiYgaChiLCBhLnN0YXJ0VGltZSAtIHQpLCB1ID0gITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB1CiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICBLID0gbnVsbCwgUSA9IG4sIFggPSAhMQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtKCkgewogICAgICAgICAgICByZXR1cm4gISh6KCkgLSBsZSA8IGllKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gXyhlKSB7CiAgICAgICAgICAgIHVlID0gZSwgb2UgfHwgKG9lID0gITAsIGZlKCkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBoKGUsIHQpIHsKICAgICAgICAgICAgYWUgPSB0ZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBlKHooKSkKICAgICAgICAgICAgfSksIHQpCiAgICAgICAgfQogICAgICAgIHZhciBnID0gU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLAogICAgICAgICAgICBrID0gU3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksCiAgICAgICAgICAgIHcgPSBTeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLAogICAgICAgICAgICBTID0gU3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSwKICAgICAgICAgICAgeCA9IFN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksCiAgICAgICAgICAgIEMgPSBTeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLAogICAgICAgICAgICBFID0gU3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLAogICAgICAgICAgICBSID0gU3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSwKICAgICAgICAgICAgUCA9IFN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIiksCiAgICAgICAgICAgICQgPSBTeW1ib2wuZm9yKCJyZWFjdC5tZW1vIiksCiAgICAgICAgICAgIEkgPSBTeW1ib2wuZm9yKCJyZWFjdC5sYXp5IiksCiAgICAgICAgICAgIGogPSBTeW1ib2wuaXRlcmF0b3IsCiAgICAgICAgICAgIFQgPSB7CiAgICAgICAgICAgICAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uKGUsIHQsIG4pIHt9LAogICAgICAgICAgICAgICAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24oZSwgdCwgbiwgcikge30sCiAgICAgICAgICAgICAgICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHt9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE8gPSBPYmplY3QuYXNzaWduLAogICAgICAgICAgICBMID0ge307CiAgICAgICAgdC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9LCB0LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaWYgKCJvYmplY3QiICE9IHR5cGVvZiBlICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPSBlKSB0aHJvdyBFcnJvcigic2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuIik7CiAgICAgICAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcywgZSwgdCwgInNldFN0YXRlIikKICAgICAgICB9LCB0LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLCBlLCAiZm9yY2VVcGRhdGUiKQogICAgICAgIH0sIG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGU7CiAgICAgICAgdmFyIEYgPSByLnByb3RvdHlwZSA9IG5ldyBuOwogICAgICAgIEYuY29uc3RydWN0b3IgPSByLCBPKEYsIHQucHJvdG90eXBlKSwgRi5pc1B1cmVSZWFjdENvbXBvbmVudCA9ICEwOwogICAgICAgIHZhciBNID0gQXJyYXkuaXNBcnJheSwKICAgICAgICAgICAgRCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksCiAgICAgICAgICAgIFUgPSB7CiAgICAgICAgICAgICAgICBjdXJyZW50OiBudWxsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFYgPSB7CiAgICAgICAgICAgICAgICBrZXk6ICEwLAogICAgICAgICAgICAgICAgcmVmOiAhMCwKICAgICAgICAgICAgICAgIF9fc2VsZjogITAsCiAgICAgICAgICAgICAgICBfX3NvdXJjZTogITAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcSA9IC9cLysvZywKICAgICAgICAgICAgQSA9IHsKICAgICAgICAgICAgICAgIGN1cnJlbnQ6IG51bGwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTiA9IHsKICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IG51bGwKICAgICAgICAgICAgfTsKICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHBlcmZvcm1hbmNlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIHBlcmZvcm1hbmNlLm5vdykgdmFyIEIgPSBwZXJmb3JtYW5jZSwKICAgICAgICAgICAgeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEIubm93KCkKICAgICAgICAgICAgfTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIEggPSBEYXRlLAogICAgICAgICAgICAgICAgVyA9IEgubm93KCk7CiAgICAgICAgICAgIHogPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBILm5vdygpIC0gVwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBZID0gW10sCiAgICAgICAgICAgIEcgPSBbXSwKICAgICAgICAgICAgSiA9IDEsCiAgICAgICAgICAgIEsgPSBudWxsLAogICAgICAgICAgICBRID0gMywKICAgICAgICAgICAgWCA9ICExLAogICAgICAgICAgICBaID0gITEsCiAgICAgICAgICAgIGVlID0gITEsCiAgICAgICAgICAgIHRlID0gImZ1bmN0aW9uIiA9PSB0eXBlb2Ygc2V0VGltZW91dCA/IHNldFRpbWVvdXQgOiBudWxsLAogICAgICAgICAgICBuZSA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGNsZWFyVGltZW91dCA/IGNsZWFyVGltZW91dCA6IG51bGwsCiAgICAgICAgICAgIHJlID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHNldEltbWVkaWF0ZSA/IHNldEltbWVkaWF0ZSA6IG51bGw7CiAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG5hdmlnYXRvciAmJiB2b2lkIDAgIT09IG5hdmlnYXRvci5zY2hlZHVsaW5nICYmIHZvaWQgMCAhPT0gbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcgJiYgbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7CiAgICAgICAgdmFyIG9lID0gITEsCiAgICAgICAgICAgIHVlID0gbnVsbCwKICAgICAgICAgICAgYWUgPSAtMSwKICAgICAgICAgICAgaWUgPSA1LAogICAgICAgICAgICBsZSA9IC0xLAogICAgICAgICAgICBjZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHVlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB6KCk7CiAgICAgICAgICAgICAgICAgICAgbGUgPSBlOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gITA7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHVlKCEwLCBlKQogICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPyBmZSgpIDogKG9lID0gITEsIHVlID0gbnVsbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2Ugb2UgPSAhMQogICAgICAgICAgICB9OwogICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiByZSkgdmFyIGZlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJlKGNlKQogICAgICAgIH07CiAgICAgICAgZWxzZSBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIE1lc3NhZ2VDaGFubmVsKSB7CiAgICAgICAgICAgIHZhciBzZSA9IChGID0gbmV3IE1lc3NhZ2VDaGFubmVsKS5wb3J0MjsKICAgICAgICAgICAgRi5wb3J0MS5vbm1lc3NhZ2UgPSBjZSwgZmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHNlLnBvc3RNZXNzYWdlKG51bGwpCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgZmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGUoY2UsIDApCiAgICAgICAgfTsKICAgICAgICBGID0gewogICAgICAgICAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyOiBBLAogICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lcjogVSwKICAgICAgICAgICAgUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6IE4sCiAgICAgICAgICAgIFNjaGVkdWxlcjogewogICAgICAgICAgICAgICAgX19wcm90b19fOiBudWxsLAogICAgICAgICAgICAgICAgdW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHk6IDEsCiAgICAgICAgICAgICAgICB1bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eTogMiwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX05vcm1hbFByaW9yaXR5OiAzLAogICAgICAgICAgICAgICAgdW5zdGFibGVfSWRsZVByaW9yaXR5OiA1LAogICAgICAgICAgICAgICAgdW5zdGFibGVfTG93UHJpb3JpdHk6IDQsCiAgICAgICAgICAgICAgICB1bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBuID0gUTsKICAgICAgICAgICAgICAgICAgICBRID0gZTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCgpCiAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgUSA9IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfbmV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoUSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gUQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFE7CiAgICAgICAgICAgICAgICAgICAgUSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUoKQogICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFEgPSBuCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHooKTsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG4gPSAib2JqZWN0IiA9PSB0eXBlb2YgbiAmJiBudWxsICE9PSBuICYmICJudW1iZXIiID09IHR5cGVvZihuID0gbi5kZWxheSkgJiYgMCA8IG4gPyByICsgbiA6IHIsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMjUwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxMDczNzQxODIzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxZTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSA1ZTMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBKKyssCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eUxldmVsOiBlLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyYXRpb25UaW1lOiBvID0gbiArIG8sCiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRJbmRleDogLTEKICAgICAgICAgICAgICAgICAgICB9LCBuID4gciA/IChlLnNvcnRJbmRleCA9IG4sIGYoRywgZSksIG51bGwgPT09IHMoWSkgJiYgZSA9PT0gcyhHKSAmJiAoZWUgPyAobmUoYWUpLCBhZSA9IC0xKSA6IGVlID0gITAsIGgoYiwgbiAtIHIpKSkgOiAoZS5zb3J0SW5kZXggPSBvLCBmKFksIGUpLCBaIHx8IFggfHwgKFogPSAhMCwgXyh2KSkpLCBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLmNhbGxiYWNrID0gbnVsbAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX3dyYXBDYWxsYmFjazogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gUTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gUTsKICAgICAgICAgICAgICAgICAgICAgICAgUSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRID0gbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX3Nob3VsZFlpZWxkOiBtLAogICAgICAgICAgICAgICAgdW5zdGFibGVfcmVxdWVzdFBhaW50OiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfY29udGludWVFeGVjdXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIFogfHwgWCB8fCAoWiA9ICEwLCBfKHYpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzKFkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0IHVuc3RhYmxlX25vdygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gegogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgMCA+IGUgfHwgMTI1IDwgZSA/IGNvbnNvbGUuZXJyb3IoImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZCIpIDogaWUgPSAwIDwgZSA/IE1hdGguZmxvb3IoMWUzIC8gZSkgOiA1CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfUHJvZmlsaW5nOiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9LCBlLkNoaWxkcmVuID0gewogICAgICAgICAgICBtYXA6IGwsCiAgICAgICAgICAgIGZvckVhY2g6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGwoZSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgfSksIG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvdW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gbChlLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdCsrCiAgICAgICAgICAgICAgICB9KSksIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdG9BcnJheTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGwoZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfSkpIHx8IFtdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9ubHk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmICghdShlKSkgdGhyb3cgRXJyb3IoIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfQogICAgICAgIH0sIGUuQ29tcG9uZW50ID0gdCwgZS5GcmFnbWVudCA9IHcsIGUuUHJvZmlsZXIgPSB4LCBlLlB1cmVDb21wb25lbnQgPSByLCBlLlN0cmljdE1vZGUgPSBTLCBlLlN1c3BlbnNlID0gUCwgZS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCA9IEYsIGUuY2xvbmVFbGVtZW50ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICBpZiAobnVsbCA9PSBlKSB0aHJvdyBFcnJvcigiUmVhY3QuY2xvbmVFbGVtZW50KC4uLik6IFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgUmVhY3QgZWxlbWVudCwgYnV0IHlvdSBwYXNzZWQgIiArIGUgKyAiLiIpOwogICAgICAgICAgICB2YXIgciA9IE8oe30sIGUucHJvcHMpLAogICAgICAgICAgICAgICAgbyA9IGUua2V5LAogICAgICAgICAgICAgICAgdSA9IGUucmVmLAogICAgICAgICAgICAgICAgYSA9IGUuX293bmVyOwogICAgICAgICAgICBpZiAobnVsbCAhPSB0KSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSB0LnJlZiAmJiAodSA9IHQucmVmLCBhID0gVS5jdXJyZW50KSwgdm9pZCAwICE9PSB0LmtleSAmJiAobyA9ICIiICsgdC5rZXkpLCBlLnR5cGUgJiYgZS50eXBlLmRlZmF1bHRQcm9wcykgdmFyIGkgPSBlLnR5cGUuZGVmYXVsdFByb3BzOwogICAgICAgICAgICAgICAgZm9yIChsIGluIHQpIEQuY2FsbCh0LCBsKSAmJiAhVi5oYXNPd25Qcm9wZXJ0eShsKSAmJiAocltsXSA9IHZvaWQgMCA9PT0gdFtsXSAmJiB2b2lkIDAgIT09IGkgPyBpW2xdIDogdFtsXSkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyOwogICAgICAgICAgICBpZiAoMSA9PT0gbCkgci5jaGlsZHJlbiA9IG47CiAgICAgICAgICAgIGVsc2UgaWYgKDEgPCBsKSB7CiAgICAgICAgICAgICAgICBpID0gQXJyYXkobCk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGw7IGMrKykgaVtjXSA9IGFyZ3VtZW50c1tjICsgMl07CiAgICAgICAgICAgICAgICByLmNoaWxkcmVuID0gaQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAkJHR5cGVvZjogZywKICAgICAgICAgICAgICAgIHR5cGU6IGUudHlwZSwKICAgICAgICAgICAgICAgIGtleTogbywKICAgICAgICAgICAgICAgIHJlZjogdSwKICAgICAgICAgICAgICAgIHByb3BzOiByLAogICAgICAgICAgICAgICAgX293bmVyOiBhCiAgICAgICAgICAgIH0KICAgICAgICB9LCBlLmNyZWF0ZUNvbnRleHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAoZSA9IHsKICAgICAgICAgICAgICAgICQkdHlwZW9mOiBFLAogICAgICAgICAgICAgICAgX2N1cnJlbnRWYWx1ZTogZSwKICAgICAgICAgICAgICAgIF9jdXJyZW50VmFsdWUyOiBlLAogICAgICAgICAgICAgICAgX3RocmVhZENvdW50OiAwLAogICAgICAgICAgICAgICAgUHJvdmlkZXI6IG51bGwsCiAgICAgICAgICAgICAgICBDb25zdW1lcjogbnVsbCwKICAgICAgICAgICAgICAgIF9kZWZhdWx0VmFsdWU6IG51bGwsCiAgICAgICAgICAgICAgICBfZ2xvYmFsTmFtZTogbnVsbAogICAgICAgICAgICB9KS5Qcm92aWRlciA9IHsKICAgICAgICAgICAgICAgICQkdHlwZW9mOiBDLAogICAgICAgICAgICAgICAgX2NvbnRleHQ6IGUKICAgICAgICAgICAgfSwgZS5Db25zdW1lciA9IGUKICAgICAgICB9LCBlLmNyZWF0ZUVsZW1lbnQgPSBvLCBlLmNyZWF0ZUZhY3RvcnkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gby5iaW5kKG51bGwsIGUpOwogICAgICAgICAgICByZXR1cm4gdC50eXBlID0gZSwgdAogICAgICAgIH0sIGUuY3JlYXRlUmVmID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBjdXJyZW50OiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9LCBlLmZvcndhcmRSZWYgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAkJHR5cGVvZjogUiwKICAgICAgICAgICAgICAgIHJlbmRlcjogZQogICAgICAgICAgICB9CiAgICAgICAgfSwgZS5pc1ZhbGlkRWxlbWVudCA9IHUsIGUubGF6eSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICQkdHlwZW9mOiBJLAogICAgICAgICAgICAgICAgX3BheWxvYWQ6IHsKICAgICAgICAgICAgICAgICAgICBfc3RhdHVzOiAtMSwKICAgICAgICAgICAgICAgICAgICBfcmVzdWx0OiBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX2luaXQ6IGMKICAgICAgICAgICAgfQogICAgICAgIH0sIGUubWVtbyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICQkdHlwZW9mOiAkLAogICAgICAgICAgICAgICAgdHlwZTogZSwKICAgICAgICAgICAgICAgIGNvbXBhcmU6IHZvaWQgMCA9PT0gdCA/IG51bGwgOiB0CiAgICAgICAgICAgIH0KICAgICAgICB9LCBlLnN0YXJ0VHJhbnNpdGlvbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdCA9IE4udHJhbnNpdGlvbiwgTi50cmFuc2l0aW9uID0ge307CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBlKCkKICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIE4udHJhbnNpdGlvbiA9IHQKICAgICAgICAgICAgfQogICAgICAgIH0sIGUudW5zdGFibGVfYWN0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0aHJvdyBFcnJvcigiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC4iKQogICAgICAgIH0sIGUudXNlQ2FsbGJhY2sgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlQ2FsbGJhY2soZSwgdCkKICAgICAgICB9LCBlLnVzZUNvbnRleHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlQ29udGV4dChlKQogICAgICAgIH0sIGUudXNlRGVidWdWYWx1ZSA9IGZ1bmN0aW9uKGUsIHQpIHt9LCBlLnVzZURlZmVycmVkVmFsdWUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShlKQogICAgICAgIH0sIGUudXNlRWZmZWN0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gQS5jdXJyZW50LnVzZUVmZmVjdChlLCB0KQogICAgICAgIH0sIGUudXNlSWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VJZCgpCiAgICAgICAgfSwgZS51c2VJbXBlcmF0aXZlSGFuZGxlID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gQS5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoZSwgdCwgbikKICAgICAgICB9LCBlLnVzZUluc2VydGlvbkVmZmVjdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VJbnNlcnRpb25FZmZlY3QoZSwgdCkKICAgICAgICB9LCBlLnVzZUxheW91dEVmZmVjdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VMYXlvdXRFZmZlY3QoZSwgdCkKICAgICAgICB9LCBlLnVzZU1lbW8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlTWVtbyhlLCB0KQogICAgICAgIH0sIGUudXNlUmVkdWNlciA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VSZWR1Y2VyKGUsIHQsIG4pCiAgICAgICAgfSwgZS51c2VSZWYgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlUmVmKGUpCiAgICAgICAgfSwgZS51c2VTdGF0ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VTdGF0ZShlKQogICAgICAgIH0sIGUudXNlU3luY0V4dGVybmFsU3RvcmUgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlU3luY0V4dGVybmFsU3RvcmUoZSwgdCwgbikKICAgICAgICB9LCBlLnVzZVRyYW5zaXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VUcmFuc2l0aW9uKCkKICAgICAgICB9LCBlLnZlcnNpb24gPSAiMTguMi4wIgogICAgfSwgIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IHQoZXhwb3J0cykgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImV4cG9ydHMiXSwgdCkgOiB0KChlID0gZSB8fCBzZWxmKS5SZWFjdCA9IHt9KQp9KCk7"}},"time_used":10,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":10,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/js/frontend-modules.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.037Z","timestamp":1785130090037,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/elementor/assets/js/frontend-modules.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=JlYqtlcYYcMYu0%2FJWe1xLcFCxuUzuTrJluNIPDc1CeeNarMHsvadR9Bqo9HFqj49MY%2F%2BhaBF6ufdGwn%2FFFcYc0qCj%2FUhyLZeMDEfhuoEKrre%2FA7VV0WvOFzVzIjzyzTAjbSyGMNdFw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ce54120a-OSL\r\ncontent-length: 19525\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":107003,"size_decoded":20358,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text","md5":"7e25b7796ac981c38bebe069a30ee42e","sha1":"5ee20daf7ade107cfadc92eae1c1fd8b42076447","sha256":"c97728ffd1021d64c2d755ec0c0f1395c159e1975eefe22343f8ae8523652d47","sha512":"52288a6a73c662822683535b8dfd4758c6c5660068ee93181df7281c3d6405cf78eaa93ba1663944167bd148446b865bc4f52d6efe000f5520ececd8fe12ce0d","ssdeep":"1536:Voyhu6PRC+4zwCyshWEPbUn18GoYXHgO8i56uOHupJWZUNpr8+WAqqzVctERfjDB:bDSUESRfB","tlshash":"28a3700a76f264668247f07a1a1fe906b231845b280dfd1d3d1c42a99f6583d47faff8","first_seen":"2026-07-27T04:11:05.705747Z","last_seen":"2026-07-27T05:30:59.820416Z","times_seen":3,"resource_available":true,"data":"LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNy0wMi0yMDI0ICovCihzZWxmLndlYnBhY2tDaHVua2VsZW1lbnRvciA9IHNlbGYud2VicGFja0NodW5rZWxlbWVudG9yIHx8IFtdKS5wdXNoKFtbMzU0XSwgewogICAgMzgxOiAoZSx0KT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICB0LmRlZmF1bHQgPSAoZSx0KT0+ewogICAgICAgICAgICB0ID0gQXJyYXkuaXNBcnJheSh0KSA/IHQgOiBbdF07CiAgICAgICAgICAgIGZvciAoY29uc3QgbiBvZiB0KQogICAgICAgICAgICAgICAgaWYgKGUuY29uc3RydWN0b3IubmFtZSA9PT0gbi5wcm90b3R5cGVbU3ltYm9sLnRvU3RyaW5nVGFnXSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITA7CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDgxMzU6IChlLHQpPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlIHsKICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHM6ICIuZWxlbWVudG9yLWVsZW1lbnQiLAogICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWREb2N1bWVudEVsZW1lbnRzOiAiLmVsZW1lbnRvciAuZWxlbWVudG9yLWVsZW1lbnQiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRNb2RlOiAiZWxlbWVudG9yLWVkaXQtbW9kZSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAkZWxlbWVudHM6IHRoaXMuJGVsZW1lbnQuZmluZChlLmVsZW1lbnRzKS5ub3QodGhpcy4kZWxlbWVudC5maW5kKGUubmVzdGVkRG9jdW1lbnRFbGVtZW50cykpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0RG9jdW1lbnRTZXR0aW5ncyhlKSB7CiAgICAgICAgICAgICAgICBsZXQgdDsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRWRpdCkgewogICAgICAgICAgICAgICAgICAgIHQgPSB7fTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yLnNldHRpbmdzLnBhZ2UubW9kZWw7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goZS5nZXRBY3RpdmVDb250cm9scygpLCAobj0+ewogICAgICAgICAgICAgICAgICAgICAgICB0W25dID0gZS5hdHRyaWJ1dGVzW25dCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy4kZWxlbWVudC5kYXRhKCJlbGVtZW50b3Itc2V0dGluZ3MiKSB8fCB7fTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1zKHQsIGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcnVuRWxlbWVudHNIYW5kbGVycygpIHsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGVsZW1lbnRzLmVhY2goKChlLHQpPT5zZXRUaW1lb3V0KCgoKT0+ZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLnJ1blJlYWR5VHJpZ2dlcih0KSkpKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50ID0gdGhpcy5nZXRTZXR0aW5ncygiJGVsZW1lbnQiKSwKICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCgpLAogICAgICAgICAgICAgICAgdGhpcy5pc0VkaXQgPSB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMuZWRpdE1vZGUiKSksCiAgICAgICAgICAgICAgICB0aGlzLmlzRWRpdCA/IGVsZW1lbnRvci5vbigiZG9jdW1lbnQ6bG9hZGVkIiwgKCgpPT57CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yLnNldHRpbmdzLnBhZ2UubW9kZWwub24oImNoYW5nZSIsIHRoaXMub25TZXR0aW5nc0NoYW5nZS5iaW5kKHRoaXMpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSkgOiB0aGlzLnJ1bkVsZW1lbnRzSGFuZGxlcnMoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uU2V0dGluZ3NDaGFuZ2UoKSB7fQogICAgICAgIH0KICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgfQogICAgLAogICAgNjc1MjogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMzIwMyk7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgdmFyIHIgPSBpKG4oMzA5MCkpOwogICAgICAgIGNsYXNzIE5lc3RlZFRpdGxlS2V5Ym9hcmRIYW5kbGVyIGV4dGVuZHMgci5kZWZhdWx0IHsKICAgICAgICAgICAgX19jb25zdHJ1Y3QoZSkgewogICAgICAgICAgICAgICAgc3VwZXIuX19jb25zdHJ1Y3QoZSksCiAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGlvbk5leHQgPSAibmV4dCIsCiAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGlvblByZXZpb3VzID0gInByZXZpb3VzIiwKICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNhYmxlRWxlbWVudFNlbGVjdG9yID0gJ2F1ZGlvLCBidXR0b24sIGNhbnZhcywgZGV0YWlscywgaWZyYW1lLCBpbnB1dCwgc2VsZWN0LCBzdW1tYXJ5LCB0ZXh0YXJlYSwgdmlkZW8sIFthY2Nlc3NrZXldLCBbY29udGVudGVkaXRhYmxlXSwgW2hyZWZdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9Ii0xIl0pJwogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UaXRsZTogIi5lLW4tdGFiLXRpdGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUNvbnRhaW5lcjogIi5lLW4tdGFicy1jb250ZW50ID4gLmUtY29uIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVTdGF0ZUF0dHJpYnV0ZTogImFyaWEtc2VsZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUaXRsZVNlbGVjdG9yOiAnW2FyaWEtc2VsZWN0ZWQ9InRydWUiXScKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRhdGFzZXRzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlSW5kZXg6ICJkYXRhLXRhYi1pbmRleCIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGtleURpcmVjdGlvbjogewogICAgICAgICAgICAgICAgICAgICAgICBBcnJvd0xlZnQ6IGVsZW1lbnRvckZyb250ZW5kQ29uZmlnLmlzX3J0bCA/IHRoaXMuZGlyZWN0aW9uTmV4dCA6IHRoaXMuZGlyZWN0aW9uUHJldmlvdXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEFycm93VXA6IHRoaXMuZGlyZWN0aW9uUHJldmlvdXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEFycm93UmlnaHQ6IGVsZW1lbnRvckZyb250ZW5kQ29uZmlnLmlzX3J0bCA/IHRoaXMuZGlyZWN0aW9uUHJldmlvdXMgOiB0aGlzLmRpcmVjdGlvbk5leHQsCiAgICAgICAgICAgICAgICAgICAgICAgIEFycm93RG93bjogdGhpcy5kaXJlY3Rpb25OZXh0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgJGl0ZW1UaXRsZXM6IHRoaXMuZmluZEVsZW1lbnQoZS5pdGVtVGl0bGUpLAogICAgICAgICAgICAgICAgICAgICRpdGVtQ29udGFpbmVyczogdGhpcy5maW5kRWxlbWVudChlLml0ZW1Db250YWluZXIpLAogICAgICAgICAgICAgICAgICAgICRmb2N1c2FibGVDb250YWluZXJFbGVtZW50czogdGhpcy5nZXRGb2N1c2FibGVFbGVtZW50cyh0aGlzLmZpbmRFbGVtZW50KGUuaXRlbUNvbnRhaW5lcikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0Rm9jdXNhYmxlRWxlbWVudHMoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuZmluZCh0aGlzLmZvY3VzYWJsZUVsZW1lbnRTZWxlY3Rvcikubm90KCJbZGlzYWJsZWRdLCBbaW5lcnRdIikKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRLZXlEaXJlY3Rpb25WYWx1ZShlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRTZXR0aW5ncygia2V5RGlyZWN0aW9uIilbZS5rZXldOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uTmV4dCA9PT0gdCA/IDEgOiAtMQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldFRpdGxlSW5kZXgoZSkgewogICAgICAgICAgICAgICAgY29uc3Qge3RpdGxlSW5kZXg6IHR9ID0gdGhpcy5nZXRTZXR0aW5ncygiZGF0YXNldHMiKTsKICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSh0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldFRpdGxlRmlsdGVyU2VsZWN0b3IoZSkgewogICAgICAgICAgICAgICAgY29uc3Qge3RpdGxlSW5kZXg6IHR9ID0gdGhpcy5nZXRTZXR0aW5ncygiZGF0YXNldHMiKTsKICAgICAgICAgICAgICAgIHJldHVybiBgWyR7dH09IiR7ZX0iXWAKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRBY3RpdmVUaXRsZUVsZW1lbnQoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygiYXJpYUF0dHJpYnV0ZXMiKS5hY3RpdmVUaXRsZVNlbGVjdG9yOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudHMuJGl0ZW1UaXRsZXMuZmlsdGVyKGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cykKICAgICAgICAgICAgfQogICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kaXRlbVRpdGxlcy5vbih0aGlzLmdldFRpdGxlRXZlbnRzKCkpLAogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kZm9jdXNhYmxlQ29udGFpbmVyRWxlbWVudHMub24odGhpcy5nZXRDb250ZW50RWxlbWVudEV2ZW50cygpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGl0ZW1UaXRsZXMub2ZmKCksCiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRpdGVtQ29udGFpbmVycy5jaGlsZHJlbigpLm9mZigpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0VGl0bGVFdmVudHMoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGtleWRvd246IHRoaXMuaGFuZGxlVGl0bGVLZXlib2FyZE5hdmlnYXRpb24uYmluZCh0aGlzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldENvbnRlbnRFbGVtZW50RXZlbnRzKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBrZXlkb3duOiB0aGlzLmhhbmRsZUNvbnRlbnRFbGVtZW50S2V5Ym9hcmROYXZpZ2F0aW9uLmJpbmQodGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpc0RpcmVjdGlvbktleShlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gWyJBcnJvd0xlZnQiLCAiQXJyb3dSaWdodCIsICJBcnJvd1VwIiwgIkFycm93RG93biIsICJIb21lIiwgIkVuZCJdLmluY2x1ZGVzKGUua2V5KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzQWN0aXZhdGlvbktleShlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gWyJFbnRlciIsICIgIl0uaW5jbHVkZXMoZS5rZXkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGFuZGxlVGl0bGVLZXlib2FyZE5hdmlnYXRpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEaXJlY3Rpb25LZXkoZSkpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHBhcnNlSW50KHRoaXMuZ2V0VGl0bGVJbmRleChlLmN1cnJlbnRUYXJnZXQpKSB8fCAxCiAgICAgICAgICAgICAgICAgICAgICAsIG4gPSB0aGlzLmVsZW1lbnRzLiRpdGVtVGl0bGVzLmxlbmd0aAogICAgICAgICAgICAgICAgICAgICAgLCBpID0gdGhpcy5nZXRUaXRsZUluZGV4Rm9jdXNVcGRhdGVkKGUsIHQsIG4pOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlVGl0bGVGb2N1cyhpKSwKICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNBY3RpdmF0aW9uS2V5KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUucHJldmVudERlZmF1bHQoKSwKICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRlVGl0bGVMaW5rRW50ZXJPclNwYWNlRXZlbnQoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRUaXRsZUluZGV4KGUuY3VycmVudFRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJHdpbmRvdy50cmlnZ2VyKCJlbGVtZW50b3IvbmVzdGVkLWVsZW1lbnRzL2FjdGl2YXRlLWJ5LWtleWJvYXJkIiwgewogICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRJZDogdGhpcy5nZXRJRCgpLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUluZGV4OiB0CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICJFc2NhcGUiID09PSBlLmtleSAmJiB0aGlzLmhhbmRsZVRpdGxlRXNjYXBlS2V5RXZlbnRzKGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGFuZGVUaXRsZUxpbmtFbnRlck9yU3BhY2VFdmVudChlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gImEiID09PSBlPy5jdXJyZW50VGFyZ2V0Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgcmV0dXJuICFlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgdCAmJiAoZT8uY3VycmVudFRhcmdldD8uY2xpY2soKSwKICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCkpLAogICAgICAgICAgICAgICAgdAogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldFRpdGxlSW5kZXhGb2N1c1VwZGF0ZWQoZSwgdCwgbikgewogICAgICAgICAgICAgICAgbGV0IGkgPSAwOwogICAgICAgICAgICAgICAgc3dpdGNoIChlLmtleSkgewogICAgICAgICAgICAgICAgY2FzZSAiSG9tZSI6CiAgICAgICAgICAgICAgICAgICAgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJFbmQiOgogICAgICAgICAgICAgICAgICAgIGkgPSBuOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gdGhpcy5nZXRLZXlEaXJlY3Rpb25WYWx1ZShlKTsKICAgICAgICAgICAgICAgICAgICBpID0gbiA8IHQgKyByID8gMSA6IDAgPT09IHQgKyByID8gbiA6IHQgKyByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNoYW5nZVRpdGxlRm9jdXMoZSkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZWxlbWVudHMuJGl0ZW1UaXRsZXMuZmlsdGVyKHRoaXMuZ2V0VGl0bGVGaWx0ZXJTZWxlY3RvcihlKSk7CiAgICAgICAgICAgICAgICB0aGlzLnNldFRpdGxlVGFiaW5kZXgoZSksCiAgICAgICAgICAgICAgICB0LnRyaWdnZXIoImZvY3VzIikKICAgICAgICAgICAgfQogICAgICAgICAgICBzZXRUaXRsZVRhYmluZGV4KGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGl0ZW1UaXRsZXMuYXR0cigidGFiaW5kZXgiLCAiLTEiKTsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGl0ZW1UaXRsZXMuZmlsdGVyKHRoaXMuZ2V0VGl0bGVGaWx0ZXJTZWxlY3RvcihlKSkuYXR0cigidGFiaW5kZXgiLCAiMCIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGFuZGxlVGl0bGVFc2NhcGVLZXlFdmVudHMoKSB7fQogICAgICAgICAgICBoYW5kbGVDb250ZW50RWxlbWVudEtleWJvYXJkTmF2aWdhdGlvbihlKSB7CiAgICAgICAgICAgICAgICAiVGFiIiAhPT0gZS5rZXkgfHwgZS5zaGlmdEtleSA/ICJFc2NhcGUiID09PSBlLmtleSAmJiAoZS5wcmV2ZW50RGVmYXVsdCgpLAogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKSwKICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29udGVudEVsZW1lbnRFc2NhcGVFdmVudHMoZSkpIDogdGhpcy5oYW5kbGVDb250ZW50RWxlbWVudFRhYkV2ZW50cyhlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGhhbmRsZUNvbnRlbnRFbGVtZW50RXNjYXBlRXZlbnRzKCkgewogICAgICAgICAgICAgICAgdGhpcy5nZXRBY3RpdmVUaXRsZUVsZW1lbnQoKS50cmlnZ2VyKCJmb2N1cyIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGFuZGxlQ29udGVudEVsZW1lbnRUYWJFdmVudHMoKSB7fQogICAgICAgIH0KICAgICAgICB0LmRlZmF1bHQgPSBOZXN0ZWRUaXRsZUtleWJvYXJkSGFuZGxlcgogICAgfQogICAgLAogICAgMTI5MjogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMzIwMyk7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgdmFyIHIgPSBpKG4oMjgyMSkpOwogICAgICAgIGNsYXNzIENhcm91c2VsSGFuZGxlckJhc2UgZXh0ZW5kcyByLmRlZmF1bHQgewogICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICBjYXJvdXNlbDogYC4ke2VsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5zd2lwZXJDbGFzc31gLAogICAgICAgICAgICAgICAgICAgICAgICBzd2lwZXJXcmFwcGVyOiAiLnN3aXBlci13cmFwcGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVDb250ZW50OiAiLnN3aXBlci1zbGlkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXBlckFycm93OiAiLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbldyYXBwZXI6ICIuc3dpcGVyLXBhZ2luYXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQnVsbGV0OiAiLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb25CdWxsZXRXcmFwcGVyOiAiLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKQogICAgICAgICAgICAgICAgICAsIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgJHN3aXBlckNvbnRhaW5lcjogdGhpcy4kZWxlbWVudC5maW5kKGUuY2Fyb3VzZWwpLAogICAgICAgICAgICAgICAgICAgICRzd2lwZXJXcmFwcGVyOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5zd2lwZXJXcmFwcGVyKSwKICAgICAgICAgICAgICAgICAgICAkc3dpcGVyQXJyb3dzOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5zd2lwZXJBcnJvdyksCiAgICAgICAgICAgICAgICAgICAgJHBhZ2luYXRpb25XcmFwcGVyOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5wYWdpbmF0aW9uV3JhcHBlciksCiAgICAgICAgICAgICAgICAgICAgJHBhZ2luYXRpb25CdWxsZXRzOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5wYWdpbmF0aW9uQnVsbGV0KSwKICAgICAgICAgICAgICAgICAgICAkcGFnaW5hdGlvbkJ1bGxldFdyYXBwZXI6IHRoaXMuJGVsZW1lbnQuZmluZChlLnBhZ2luYXRpb25CdWxsZXRXcmFwcGVyKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiB0LiRzbGlkZXMgPSB0LiRzd2lwZXJDb250YWluZXIuZmluZChlLnNsaWRlQ29udGVudCksCiAgICAgICAgICAgICAgICB0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0U3dpcGVyU2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKQogICAgICAgICAgICAgICAgICAsIHQgPSArZS5zbGlkZXNfdG9fc2hvdyB8fCAzCiAgICAgICAgICAgICAgICAgICwgbiA9IDEgPT09IHQKICAgICAgICAgICAgICAgICAgLCBpID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnJlc3BvbnNpdmUuYWN0aXZlQnJlYWtwb2ludHMKICAgICAgICAgICAgICAgICAgLCByID0gewogICAgICAgICAgICAgICAgICAgIG1vYmlsZTogMSwKICAgICAgICAgICAgICAgICAgICB0YWJsZXQ6IG4gPyAxIDogMgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAsIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogdCwKICAgICAgICAgICAgICAgICAgICBsb29wOiAieWVzIiA9PT0gZS5pbmZpbml0ZSwKICAgICAgICAgICAgICAgICAgICBzcGVlZDogZS5zcGVlZCwKICAgICAgICAgICAgICAgICAgICBoYW5kbGVFbGVtZW50b3JCcmVha3BvaW50czogITAsCiAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludHM6IHt9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgbGV0IG8gPSB0OwogICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaSkucmV2ZXJzZSgpLmZvckVhY2goKHQ9PnsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gclt0XSA/IHJbdF0gOiBvOwogICAgICAgICAgICAgICAgICAgIHMuYnJlYWtwb2ludHNbaVt0XS52YWx1ZV0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6ICtlWyJzbGlkZXNfdG9fc2hvd18iICsgdF0gfHwgbiwKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6ICtlWyJzbGlkZXNfdG9fc2Nyb2xsXyIgKyB0XSB8fCAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlLmltYWdlX3NwYWNpbmdfY3VzdG9tICYmIChzLmJyZWFrcG9pbnRzW2lbdF0udmFsdWVdLnNwYWNlQmV0d2VlbiA9IHRoaXMuZ2V0U3BhY2VCZXR3ZWVuKHQpKSwKICAgICAgICAgICAgICAgICAgICBvID0gK2VbInNsaWRlc190b19zaG93XyIgKyB0XSB8fCBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApKSwKICAgICAgICAgICAgICAgICJ5ZXMiID09PSBlLmF1dG9wbGF5ICYmIChzLmF1dG9wbGF5ID0gewogICAgICAgICAgICAgICAgICAgIGRlbGF5OiBlLmF1dG9wbGF5X3NwZWVkLAogICAgICAgICAgICAgICAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiAieWVzIiA9PT0gZS5wYXVzZV9vbl9pbnRlcmFjdGlvbgogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBuID8gKHMuZWZmZWN0ID0gZS5lZmZlY3QsCiAgICAgICAgICAgICAgICAiZmFkZSIgPT09IGUuZWZmZWN0ICYmIChzLmZhZGVFZmZlY3QgPSB7CiAgICAgICAgICAgICAgICAgICAgY3Jvc3NGYWRlOiAhMAogICAgICAgICAgICAgICAgfSkpIDogcy5zbGlkZXNQZXJHcm91cCA9ICtlLnNsaWRlc190b19zY3JvbGwgfHwgMSwKICAgICAgICAgICAgICAgIGUuaW1hZ2Vfc3BhY2luZ19jdXN0b20gJiYgKHMuc3BhY2VCZXR3ZWVuID0gdGhpcy5nZXRTcGFjZUJldHdlZW4oKSk7CiAgICAgICAgICAgICAgICBjb25zdCBhID0gImFycm93cyIgPT09IGUubmF2aWdhdGlvbiB8fCAiYm90aCIgPT09IGUubmF2aWdhdGlvbgogICAgICAgICAgICAgICAgICAsIGwgPSAiZG90cyIgPT09IGUubmF2aWdhdGlvbiB8fCAiYm90aCIgPT09IGUubmF2aWdhdGlvbiB8fCBlLnBhZ2luYXRpb247CiAgICAgICAgICAgICAgICByZXR1cm4gYSAmJiAocy5uYXZpZ2F0aW9uID0gewogICAgICAgICAgICAgICAgICAgIHByZXZFbDogIi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IiwKICAgICAgICAgICAgICAgICAgICBuZXh0RWw6ICIuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCIKICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgbCAmJiAocy5wYWdpbmF0aW9uID0gewogICAgICAgICAgICAgICAgICAgIGVsOiBgLmVsZW1lbnRvci1lbGVtZW50LSR7dGhpcy5nZXRJRCgpfSAuc3dpcGVyLXBhZ2luYXRpb25gLAogICAgICAgICAgICAgICAgICAgIHR5cGU6IGUucGFnaW5hdGlvbiA/IGUucGFnaW5hdGlvbiA6ICJidWxsZXRzIiwKICAgICAgICAgICAgICAgICAgICBjbGlja2FibGU6ICEwLAogICAgICAgICAgICAgICAgICAgIHJlbmRlckJ1bGxldDogKGUsdCk9PmA8c3BhbiBjbGFzcz0iJHt0fSIgZGF0YS1idWxsZXQtaW5kZXg9IiR7ZX0iIGFyaWEtbGFiZWw9IiR7ZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmkxOG4uYTExeUNhcm91c2VsUGFnaW5hdGlvbkJ1bGxldE1lc3NhZ2V9ICR7ZSArIDF9Ij48L3NwYW4+YAogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAieWVzIiA9PT0gZS5sYXp5bG9hZCAmJiAocy5sYXp5ID0gewogICAgICAgICAgICAgICAgICAgIGxvYWRQcmV2TmV4dDogITAsCiAgICAgICAgICAgICAgICAgICAgbG9hZFByZXZOZXh0QW1vdW50OiAxCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIHMuYTExeSA9IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICBwcmV2U2xpZGVNZXNzYWdlOiBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaTE4bi5hMTF5Q2Fyb3VzZWxQcmV2U2xpZGVNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgIG5leHRTbGlkZU1lc3NhZ2U6IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pMThuLmExMXlDYXJvdXNlbE5leHRTbGlkZU1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgZmlyc3RTbGlkZU1lc3NhZ2U6IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pMThuLmExMXlDYXJvdXNlbEZpcnN0U2xpZGVNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgIGxhc3RTbGlkZU1lc3NhZ2U6IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pMThuLmExMXlDYXJvdXNlbExhc3RTbGlkZU1lc3NhZ2UKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzLm9uID0gewogICAgICAgICAgICAgICAgICAgIHNsaWRlQ2hhbmdlVHJhbnNpdGlvbkVuZDogKCk9PnsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hMTF5U2V0U2xpZGVBcmlhSGlkZGVuKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLAogICAgICAgICAgICAgICAgICAgIHNsaWRlQ2hhbmdlOiAoKT0+ewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmExMXlTZXRQYWdpbmF0aW9uVGFiaW5kZXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFbGVtZW50SGFuZGxlcnMoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAsCiAgICAgICAgICAgICAgICAgICAgaW5pdDogKCk9PnsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hMTF5U2V0V2lkZ2V0QXJpYURldGFpbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hMTF5U2V0UGFnaW5hdGlvblRhYmluZGV4KCksCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYTExeVNldFNsaWRlQXJpYUhpZGRlbigiaW5pdGlhbGlzYXRpb24iKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5T2Zmc2V0U2V0dGluZ3MoZSwgcywgdCksCiAgICAgICAgICAgICAgICBzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0T2Zmc2V0V2lkdGgoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKTsKICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JGcm9udGVuZC51dGlscy5jb250cm9scy5nZXRSZXNwb25zaXZlQ29udHJvbFZhbHVlKHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksICJvZmZzZXRfd2lkdGgiLCAic2l6ZSIsIGUpIHx8IDAKICAgICAgICAgICAgfQogICAgICAgICAgICBhcHBseU9mZnNldFNldHRpbmdzKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBlLm9mZnNldF9zaWRlczsKICAgICAgICAgICAgICAgIGlmIChlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgIk5lc3RlZENhcm91c2VsIiA9PT0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIHx8ICFpIHx8ICJub25lIiA9PT0gaSkKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB0aGlzLmdldE9mZnNldFdpZHRoKCk7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKICAgICAgICAgICAgICAgIGNhc2UgInJpZ2h0IjoKICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcmNlU2xpZGVyVG9TaG93TmV4dFNsaWRlV2hlbk9uTGFzdCh0LCBuKSwKICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENsYXNzVG9Td2lwZXJDb250YWluZXIoIm9mZnNldC1yaWdodCIpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAibGVmdCI6CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRDbGFzc1RvU3dpcGVyQ29udGFpbmVyKCJvZmZzZXQtbGVmdCIpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiYm90aCI6CiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JjZVNsaWRlclRvU2hvd05leHRTbGlkZVdoZW5Pbkxhc3QodCwgbiksCiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRDbGFzc1RvU3dpcGVyQ29udGFpbmVyKCJvZmZzZXQtYm90aCIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yY2VTbGlkZXJUb1Nob3dOZXh0U2xpZGVXaGVuT25MYXN0KGUsIHQpIHsKICAgICAgICAgICAgICAgIGUuc2xpZGVzUGVyVmlldyA9IHQgKyAuMDAxCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYWRkQ2xhc3NUb1N3aXBlckNvbnRhaW5lcihlKSB7CiAgICAgICAgICAgICAgICB0aGlzLmdldERlZmF1bHRFbGVtZW50cygpLiRzd2lwZXJDb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZChlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGFzeW5jIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgIGlmIChzdXBlci5vbkluaXQoLi4uYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgICF0aGlzLmVsZW1lbnRzLiRzd2lwZXJDb250YWluZXIubGVuZ3RoIHx8IDIgPiB0aGlzLmVsZW1lbnRzLiRzbGlkZXMubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBlbGVtZW50b3JGcm9udGVuZC51dGlscy5zd2lwZXI7CiAgICAgICAgICAgICAgICB0aGlzLnN3aXBlciA9IGF3YWl0IG5ldyBlKHRoaXMuZWxlbWVudHMuJHN3aXBlckNvbnRhaW5lcix0aGlzLmdldFN3aXBlclNldHRpbmdzKCkpLAogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kc3dpcGVyQ29udGFpbmVyLmRhdGEoInN3aXBlciIsIHRoaXMuc3dpcGVyKTsKICAgICAgICAgICAgICAgICJ5ZXMiID09PSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLnBhdXNlX29uX2hvdmVyICYmIHRoaXMudG9nZ2xlUGF1c2VPbkhvdmVyKCEwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRzd2lwZXJBcnJvd3Mub24oImtleWRvd24iLCB0aGlzLm9uRGlyZWN0aW9uQXJyb3dLZXlkb3duLmJpbmQodGhpcykpLAogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kcGFnaW5hdGlvbldyYXBwZXIub24oImtleWRvd24iLCAiLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCIsIHRoaXMub25EaXJlY3Rpb25BcnJvd0tleWRvd24uYmluZCh0aGlzKSksCiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRzd2lwZXJDb250YWluZXIub24oImtleWRvd24iLCAiLnN3aXBlci1zbGlkZSIsIHRoaXMub25EaXJlY3Rpb25BcnJvd0tleWRvd24uYmluZCh0aGlzKSksCiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoIjpmb2N1c2FibGUiKS5vbigiZm9jdXMiLCB0aGlzLm9uRm9jdXNEaXNhYmxlQXV0b3BsYXkuYmluZCh0aGlzKSksCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9uKCJyZXNpemUiLCB0aGlzLmdldFN3aXBlclNldHRpbmdzLmJpbmQodGhpcykpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5iaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kc3dpcGVyQXJyb3dzLm9mZigpLAogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kcGFnaW5hdGlvbldyYXBwZXIub2ZmKCksCiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRzd2lwZXJDb250YWluZXIub2ZmKCksCiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoIjpmb2N1c2FibGUiKS5vZmYoKSwKICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub2ZmKCJyZXNpemUiKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uRGlyZWN0aW9uQXJyb3dLZXlkb3duKGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaXNfcnRsCiAgICAgICAgICAgICAgICAgICwgbiA9IGUub3JpZ2luYWxFdmVudC5jb2RlCiAgICAgICAgICAgICAgICAgICwgaSA9IHQgPyAiQXJyb3dMZWZ0IiA6ICJBcnJvd1JpZ2h0IjsKICAgICAgICAgICAgICAgIGlmICghKC0xICE9PSBbIkFycm93TGVmdCIsICJBcnJvd1JpZ2h0Il0uaW5kZXhPZihuKSkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgKHQgPyAiQXJyb3dSaWdodCIgOiAiQXJyb3dMZWZ0IikgPT09IG4gPyB0aGlzLnN3aXBlci5zbGlkZVByZXYoKSA6IGkgPT09IG4gJiYgdGhpcy5zd2lwZXIuc2xpZGVOZXh0KCkKICAgICAgICAgICAgfQogICAgICAgICAgICBvbkZvY3VzRGlzYWJsZUF1dG9wbGF5KCkgewogICAgICAgICAgICAgICAgdGhpcy5zd2lwZXIuYXV0b3BsYXkuc3RvcCgpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdXBkYXRlU3dpcGVyT3B0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpW2VdCiAgICAgICAgICAgICAgICAgICwgbiA9IHRoaXMuc3dpcGVyLnBhcmFtczsKICAgICAgICAgICAgICAgIHN3aXRjaCAoZSkgewogICAgICAgICAgICAgICAgY2FzZSAiYXV0b3BsYXlfc3BlZWQiOgogICAgICAgICAgICAgICAgICAgIG4uYXV0b3BsYXkuZGVsYXkgPSB0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAic3BlZWQiOgogICAgICAgICAgICAgICAgICAgIG4uc3BlZWQgPSB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLnN3aXBlci51cGRhdGUoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldENoYW5nZWFibGVQcm9wZXJ0aWVzKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBwYXVzZV9vbl9ob3ZlcjogInBhdXNlT25Ib3ZlciIsCiAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXlfc3BlZWQ6ICJkZWxheSIsCiAgICAgICAgICAgICAgICAgICAgc3BlZWQ6ICJzcGVlZCIsCiAgICAgICAgICAgICAgICAgICAgYXJyb3dzX3Bvc2l0aW9uOiAiYXJyb3dzX3Bvc2l0aW9uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZS5pbmRleE9mKCJpbWFnZV9zcGFjaW5nX2N1c3RvbSIpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIHRoaXMudXBkYXRlU3BhY2VCZXR3ZWVuKGUpOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Q2hhbmdlYWJsZVByb3BlcnRpZXMoKVtlXSkKICAgICAgICAgICAgICAgICAgICBpZiAoInBhdXNlX29uX2hvdmVyIiA9PT0gZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoInBhdXNlX29uX2hvdmVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlUGF1c2VPbkhvdmVyKCJ5ZXMiID09PSBlKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN3aXBlck9wdGlvbihlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uRWRpdFNldHRpbmdzQ2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICJhY3RpdmVJdGVtSW5kZXgiID09PSBlICYmIHRoaXMuc3dpcGVyLnNsaWRlVG9Mb29wKHRoaXMuZ2V0RWRpdFNldHRpbmdzKCJhY3RpdmVJdGVtSW5kZXgiKSAtIDEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0U3BhY2VCZXR3ZWVuKCkgewogICAgICAgICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IG51bGw7CiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuY29udHJvbHMuZ2V0UmVzcG9uc2l2ZUNvbnRyb2xWYWx1ZSh0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLCAiaW1hZ2Vfc3BhY2luZ19jdXN0b20iLCAic2l6ZSIsIGUpIHx8IDAKICAgICAgICAgICAgfQogICAgICAgICAgICB1cGRhdGVTcGFjZUJldHdlZW4oZSkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IGUubWF0Y2goImltYWdlX3NwYWNpbmdfY3VzdG9tXyguKikiKQogICAgICAgICAgICAgICAgICAsIG4gPSB0ID8gdFsxXSA6ICJkZXNrdG9wIgogICAgICAgICAgICAgICAgICAsIGkgPSB0aGlzLmdldFNwYWNlQmV0d2VlbihuKTsKICAgICAgICAgICAgICAgICJkZXNrdG9wIiAhPT0gbiAmJiAodGhpcy5zd2lwZXIucGFyYW1zLmJyZWFrcG9pbnRzW2VsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5yZXNwb25zaXZlLmFjdGl2ZUJyZWFrcG9pbnRzW25dLnZhbHVlXS5zcGFjZUJldHdlZW4gPSBpKSwKICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyLnBhcmFtcy5zcGFjZUJldHdlZW4gPSBpLAogICAgICAgICAgICAgICAgdGhpcy5zd2lwZXIudXBkYXRlKCkKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRQYWdpbmF0aW9uQnVsbGV0cygpIHsKICAgICAgICAgICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiAiYXJyYXkiOwogICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuJGVsZW1lbnQuZmluZCh0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKS5wYWdpbmF0aW9uQnVsbGV0KTsKICAgICAgICAgICAgICAgIHJldHVybiAiYXJyYXkiID09PSBlID8gQXJyYXkuZnJvbSh0KSA6IHQKICAgICAgICAgICAgfQogICAgICAgICAgICBhMTF5U2V0V2lkZ2V0QXJpYURldGFpbHMoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy4kZWxlbWVudDsKICAgICAgICAgICAgICAgIGUuYXR0cigiYXJpYS1yb2xlZGVzY3JpcHRpb24iLCAiY2Fyb3VzZWwiKSwKICAgICAgICAgICAgICAgIGUuYXR0cigiYXJpYS1sYWJlbCIsIGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pMThuLmExMXlDYXJvdXNlbFdyYXBwZXJBcmlhTGFiZWwpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYTExeVNldFBhZ2luYXRpb25UYWJpbmRleCgpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLnN3aXBlcj8ucGFyYW1zLnBhZ2luYXRpb24uYnVsbGV0Q2xhc3MKICAgICAgICAgICAgICAgICAgLCB0ID0gdGhpcy5zd2lwZXI/LnBhcmFtcy5wYWdpbmF0aW9uLmJ1bGxldEFjdGl2ZUNsYXNzOwogICAgICAgICAgICAgICAgdGhpcy5nZXRQYWdpbmF0aW9uQnVsbGV0cygpLmZvckVhY2goKGU9PnsKICAgICAgICAgICAgICAgICAgICBlLmNsYXNzTGlzdD8uY29udGFpbnModCkgfHwgZS5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4IikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICAgICAgY29uc3QgbiA9ICJBcnJvd0xlZnQiID09PSBldmVudD8uY29kZSB8fCAiQXJyb3dSaWdodCIgPT09IGV2ZW50Py5jb2RlOwogICAgICAgICAgICAgICAgZXZlbnQ/LnRhcmdldD8uY2xhc3NMaXN0Py5jb250YWlucyhlKSAmJiBuICYmIHRoaXMuJGVsZW1lbnQuZmluZChgLiR7dH1gKS50cmlnZ2VyKCJmb2N1cyIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0U3dpcGVyV3JhcHBlclRyYW5mb3JtWFZhbHVlKCkgewogICAgICAgICAgICAgICAgbGV0IGUgPSB0aGlzLmVsZW1lbnRzLiRzd2lwZXJXcmFwcGVyWzBdPy5zdHlsZS50cmFuc2Zvcm07CiAgICAgICAgICAgICAgICByZXR1cm4gZSA9IGUucmVwbGFjZSgidHJhbnNsYXRlM2QoIiwgIiIpLAogICAgICAgICAgICAgICAgZSA9IGUuc3BsaXQoIiwiKSwKICAgICAgICAgICAgICAgIGUgPSBwYXJzZUludChlWzBdLnJlcGxhY2UoInB4IiwgIiIpKSwKICAgICAgICAgICAgICAgIGUgfHwgMAogICAgICAgICAgICB9CiAgICAgICAgICAgIGExMXlTZXRTbGlkZUFyaWFIaWRkZW4oKSB7CiAgICAgICAgICAgICAgICBpZiAoIm51bWJlciIgIT0gdHlwZW9mICgiaW5pdGlhbGlzYXRpb24iID09PSAoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiAiIikgPyAwIDogdGhpcy5zd2lwZXI/LmFjdGl2ZUluZGV4KSkKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTd2lwZXJXcmFwcGVyVHJhbmZvcm1YVmFsdWUoKQogICAgICAgICAgICAgICAgICAsIHQgPSB0aGlzLmVsZW1lbnRzLiRzd2lwZXJXcmFwcGVyWzBdLmNsaWVudFdpZHRoOwogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kc3dpcGVyQ29udGFpbmVyLmZpbmQodGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIikuc2xpZGVDb250ZW50KS5lYWNoKCgobixpKT0+ewogICAgICAgICAgICAgICAgICAgIDAgPD0gaS5vZmZzZXRMZWZ0ICsgZSAmJiB0ID4gaS5vZmZzZXRMZWZ0ICsgZSA/IChpLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSwKICAgICAgICAgICAgICAgICAgICBpLnJlbW92ZUF0dHJpYnV0ZSgiaW5lcnQiKSkgOiAoaS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwgITApLAogICAgICAgICAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlKCJpbmVydCIsICIiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGFuZGxlRWxlbWVudEhhbmRsZXJzKCkge30KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gQ2Fyb3VzZWxIYW5kbGVyQmFzZQogICAgfQogICAgLAogICAgMjgyMTogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMzIwMyk7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgdmFyIHIgPSBpKG4oMzA5MCkpOwogICAgICAgIGNsYXNzIFN3aXBlckhhbmRsZXJCYXNlIGV4dGVuZHMgci5kZWZhdWx0IHsKICAgICAgICAgICAgZ2V0SW5pdGlhbFNsaWRlKCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWRpdFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5hY3RpdmVJdGVtSW5kZXggPyBlLmFjdGl2ZUl0ZW1JbmRleCAtIDEgOiAwCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0U2xpZGVzQ291bnQoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50cy4kc2xpZGVzLmxlbmd0aAogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvZ2dsZVBhdXNlT25Ib3ZlcihlKSB7CiAgICAgICAgICAgICAgICBlID8gdGhpcy5lbGVtZW50cy4kc3dpcGVyQ29udGFpbmVyLm9uKHsKICAgICAgICAgICAgICAgICAgICBtb3VzZWVudGVyOiAoKT0+ewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN3aXBlci5hdXRvcGxheS5zdG9wKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLAogICAgICAgICAgICAgICAgICAgIG1vdXNlbGVhdmU6ICgpPT57CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyLmF1dG9wbGF5LnN0YXJ0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSA6IHRoaXMuZWxlbWVudHMuJHN3aXBlckNvbnRhaW5lci5vZmYoIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGFuZGxlS2VuQnVybnMoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgdGhpcy4kYWN0aXZlSW1hZ2VCZyAmJiB0aGlzLiRhY3RpdmVJbWFnZUJnLnJlbW92ZUNsYXNzKGUuY2xhc3Nlcy5rZW5CdXJuc0FjdGl2ZSksCiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1JbmRleCA9IHRoaXMuc3dpcGVyID8gdGhpcy5zd2lwZXIuYWN0aXZlSW5kZXggOiB0aGlzLmdldEluaXRpYWxTbGlkZSgpLAogICAgICAgICAgICAgICAgdGhpcy5zd2lwZXIgPyB0aGlzLiRhY3RpdmVJbWFnZUJnID0galF1ZXJ5KHRoaXMuc3dpcGVyLnNsaWRlc1t0aGlzLmFjdGl2ZUl0ZW1JbmRleF0pLmNoaWxkcmVuKCIuIiArIGUuY2xhc3Nlcy5zbGlkZUJhY2tncm91bmQpIDogdGhpcy4kYWN0aXZlSW1hZ2VCZyA9IGpRdWVyeSh0aGlzLmVsZW1lbnRzLiRzbGlkZXNbMF0pLmNoaWxkcmVuKCIuIiArIGUuY2xhc3Nlcy5zbGlkZUJhY2tncm91bmQpLAogICAgICAgICAgICAgICAgdGhpcy4kYWN0aXZlSW1hZ2VCZy5hZGRDbGFzcyhlLmNsYXNzZXMua2VuQnVybnNBY3RpdmUpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gU3dpcGVySGFuZGxlckJhc2UKICAgIH0KICAgICwKICAgIDMwOTA6IGU9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgZS5leHBvcnRzID0gZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlLmV4dGVuZCh7CiAgICAgICAgICAgICRlbGVtZW50OiBudWxsLAogICAgICAgICAgICBlZGl0b3JMaXN0ZW5lcnM6IG51bGwsCiAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZTogbnVsbCwKICAgICAgICAgICAgb25FZGl0U2V0dGluZ3NDaGFuZ2U6IG51bGwsCiAgICAgICAgICAgIG9uUGFnZVNldHRpbmdzQ2hhbmdlOiBudWxsLAogICAgICAgICAgICBpc0VkaXQ6IG51bGwsCiAgICAgICAgICAgIF9fY29uc3RydWN0KGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUoZSkgJiYgKHRoaXMuJGVsZW1lbnQgPSBlLiRlbGVtZW50LAogICAgICAgICAgICAgICAgdGhpcy5pc0VkaXQgPSB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJlbGVtZW50b3ItZWxlbWVudC1lZGl0LW1vZGUiKSwKICAgICAgICAgICAgICAgIHRoaXMuaXNFZGl0ICYmIHRoaXMuYWRkRWRpdG9yTGlzdGVuZXJzKCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGlzQWN0aXZlOiAoKT0+ITAsCiAgICAgICAgICAgIGlzRWxlbWVudEluVGhlQ3VycmVudERvY3VtZW50KCkgewogICAgICAgICAgICAgICAgcmV0dXJuICEhZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpICYmIGVsZW1lbnRvci5kb2N1bWVudHMuY3VycmVudERvY3VtZW50LmlkLnRvU3RyaW5nKCkgPT09IHRoaXMuJGVsZW1lbnRbMF0uY2xvc2VzdCgiLmVsZW1lbnRvciIpLmRhdGFzZXQuZWxlbWVudG9ySWQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmluZEVsZW1lbnQoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLiRlbGVtZW50OwogICAgICAgICAgICAgICAgcmV0dXJuIHQuZmluZChlKS5maWx0ZXIoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkodGhpcykucGFyZW50KCkuY2xvc2VzdCgiLmVsZW1lbnRvci1lbGVtZW50IikuaXModCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFVuaXF1ZUhhbmRsZXJJRChlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSB8fCAoZSA9IHRoaXMuZ2V0TW9kZWxDSUQoKSksCiAgICAgICAgICAgICAgICB0IHx8ICh0ID0gdGhpcy4kZWxlbWVudCksCiAgICAgICAgICAgICAgICBlICsgdC5hdHRyKCJkYXRhLWVsZW1lbnRfdHlwZSIpICsgdGhpcy5nZXRDb25zdHJ1Y3RvcklEKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5pdEVkaXRvckxpc3RlbmVycygpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgIGlmIChlLmVkaXRvckxpc3RlbmVycyA9IFt7CiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICJlbGVtZW50OmRlc3Ryb3kiLAogICAgICAgICAgICAgICAgICAgIHRvOiBlbGVtZW50b3IuY2hhbm5lbHMuZGF0YSwKICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuY2lkID09PSBlLmdldE1vZGVsQ0lEKCkgJiYgZS5vbkRlc3Ryb3koKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgZS5vbkVsZW1lbnRDaGFuZ2UpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5nZXRXaWRnZXRUeXBlKCkgfHwgZS5nZXRFbGVtZW50VHlwZSgpOwogICAgICAgICAgICAgICAgICAgIGxldCBuID0gImNoYW5nZSI7CiAgICAgICAgICAgICAgICAgICAgImdsb2JhbCIgIT09IHQgJiYgKG4gKz0gIjoiICsgdCksCiAgICAgICAgICAgICAgICAgICAgZS5lZGl0b3JMaXN0ZW5lcnMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBuLAogICAgICAgICAgICAgICAgICAgICAgICB0bzogZWxlbWVudG9yLmNoYW5uZWxzLmVkaXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nZXRVbmlxdWVIYW5kbGVySUQobi5tb2RlbC5jaWQsIG4uJGVsKSA9PT0gZS5nZXRVbmlxdWVIYW5kbGVySUQoKSAmJiBlLm9uRWxlbWVudENoYW5nZSh0Lm1vZGVsLmdldCgibmFtZSIpLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUub25FZGl0U2V0dGluZ3NDaGFuZ2UgJiYgZS5lZGl0b3JMaXN0ZW5lcnMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICJjaGFuZ2U6ZWRpdFNldHRpbmdzIiwKICAgICAgICAgICAgICAgICAgICB0bzogZWxlbWVudG9yLmNoYW5uZWxzLmVkaXRvciwKICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLm1vZGVsLmNpZCAhPT0gZS5nZXRNb2RlbENJRCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gT2JqZWN0LmtleXModC5jaGFuZ2VkKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5vbkVkaXRTZXR0aW5nc0NoYW5nZShpLCB0LmNoYW5nZWRbaV0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBbInBhZ2UiXS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAib24iICsgdFswXS50b1VwcGVyQ2FzZSgpICsgdC5zbGljZSgxKSArICJTZXR0aW5nc0NoYW5nZSI7CiAgICAgICAgICAgICAgICAgICAgZVtuXSAmJiBlLmVkaXRvckxpc3RlbmVycy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICJjaGFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICB0bzogZWxlbWVudG9yLnNldHRpbmdzW3RdLm1vZGVsLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW25dKHQuY2hhbmdlZCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRFZGl0b3JMaXN0ZW5lcnMoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JMaXN0ZW5lcnMgfHwgdGhpcy5pbml0RWRpdG9yTGlzdGVuZXJzKCksCiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvckxpc3RlbmVycwogICAgICAgICAgICB9LAogICAgICAgICAgICBhZGRFZGl0b3JMaXN0ZW5lcnMoKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0VW5pcXVlSGFuZGxlcklEKCk7CiAgICAgICAgICAgICAgICB0aGlzLmdldEVkaXRvckxpc3RlbmVycygpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5hZGRMaXN0ZW5lck9uY2UoZSwgdC5ldmVudCwgdC5jYWxsYmFjaywgdC50bykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbW92ZUVkaXRvckxpc3RlbmVycygpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5nZXRVbmlxdWVIYW5kbGVySUQoKTsKICAgICAgICAgICAgICAgIHRoaXMuZ2V0RWRpdG9yTGlzdGVuZXJzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLnJlbW92ZUxpc3RlbmVycyhlLCB0LmV2ZW50LCBudWxsLCB0LnRvKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RWxlbWVudFR5cGUoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZWxlbWVudC5kYXRhKCJlbGVtZW50X3R5cGUiKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRXaWRnZXRUeXBlKCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuJGVsZW1lbnQuZGF0YSgid2lkZ2V0X3R5cGUiKTsKICAgICAgICAgICAgICAgIGlmIChlKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnNwbGl0KCIuIilbMF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0SUQoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZWxlbWVudC5kYXRhKCJpZCIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldE1vZGVsQ0lEKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnQuZGF0YSgibW9kZWwtY2lkIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RWxlbWVudFNldHRpbmdzKGUpIHsKICAgICAgICAgICAgICAgIGxldCB0ID0ge307CiAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5nZXRNb2RlbENJRCgpOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNFZGl0ICYmIG4pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmVsZW1lbnRzLmRhdGFbbl0KICAgICAgICAgICAgICAgICAgICAgICwgaSA9IGUuYXR0cmlidXRlczsKICAgICAgICAgICAgICAgICAgICBsZXQgciA9IGkud2lkZ2V0VHlwZSB8fCBpLmVsVHlwZTsKICAgICAgICAgICAgICAgICAgICBpLmlzSW5uZXIgJiYgKHIgPSAiaW5uZXItIiArIHIpOwogICAgICAgICAgICAgICAgICAgIGxldCBzID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmVsZW1lbnRzLmtleXNbcl07CiAgICAgICAgICAgICAgICAgICAgcyB8fCAocyA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5lbGVtZW50cy5rZXlzW3JdID0gW10sCiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goZS5jb250cm9scywgKChlLHQpPT57CiAgICAgICAgICAgICAgICAgICAgICAgIHQuZnJvbnRlbmRfYXZhaWxhYmxlICYmIHMucHVzaChlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApKSksCiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goZS5nZXRBY3RpdmVDb250cm9scygpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgIT09IHMuaW5kZXhPZihlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSBpW2VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi50b0pTT04gJiYgKG4gPSBuLnRvSlNPTigpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRbZV0gPSBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLiRlbGVtZW50LmRhdGEoInNldHRpbmdzIikgfHwge307CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyh0LCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRFZGl0U2V0dGluZ3MoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB7fTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRWRpdCAmJiAodCA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5lbGVtZW50cy5lZGl0U2V0dGluZ3NbdGhpcy5nZXRNb2RlbENJRCgpXS5hdHRyaWJ1dGVzKSwKICAgICAgICAgICAgICAgIHRoaXMuZ2V0SXRlbXModCwgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0Q3VycmVudERldmljZVNldHRpbmcoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VTZXR0aW5nKHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUodGhpcy5nZXRTZXR0aW5ncygpKSAmJiBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUucHJvdG90eXBlLm9uSW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uRGVzdHJveSgpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXNFZGl0ICYmIHRoaXMucmVtb3ZlRWRpdG9yTGlzdGVuZXJzKCksCiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZEV2ZW50cyAmJiB0aGlzLnVuYmluZEV2ZW50cygpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfQogICAgLAogICAgMjI2MzogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMzIwMyk7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgdmFyIHIgPSBpKG4oMzA5MCkpOwogICAgICAgIGNsYXNzIFN0cmV0Y2hlZEVsZW1lbnQgZXh0ZW5kcyByLmRlZmF1bHQgewogICAgICAgICAgICBnZXRTdHJldGNoZWRDbGFzcygpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiZS1zdHJldGNoZWQiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0U3RyZXRjaFNldHRpbmdOYW1lKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJzdHJldGNoX2VsZW1lbnQiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0U3RyZXRjaEFjdGl2ZVZhbHVlKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJ5ZXMiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFVuaXF1ZUhhbmRsZXJJRCgpOwogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuYWRkTGlzdGVuZXJPbmNlKGUsICJyZXNpemUiLCB0aGlzLnN0cmV0Y2gpLAogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuYWRkTGlzdGVuZXJPbmNlKGUsICJzdGlja3k6c3RpY2siLCB0aGlzLnN0cmV0Y2gsIHRoaXMuJGVsZW1lbnQpLAogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuYWRkTGlzdGVuZXJPbmNlKGUsICJzdGlja3k6dW5zdGljayIsIHRoaXMuc3RyZXRjaCwgdGhpcy4kZWxlbWVudCksCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgKHRoaXMub25LaXRDaGFuZ2VTdHJldGNoQ29udGFpbmVyQ2hhbmdlID0gdGhpcy5vbktpdENoYW5nZVN0cmV0Y2hDb250YWluZXJDaGFuZ2UuYmluZCh0aGlzKSwKICAgICAgICAgICAgICAgIGVsZW1lbnRvci5jaGFubmVscy5lZGl0b3Iub24oImtpdDpjaGFuZ2U6c3RyZXRjaENvbnRhaW5lciIsIHRoaXMub25LaXRDaGFuZ2VTdHJldGNoQ29udGFpbmVyQ2hhbmdlKSkKICAgICAgICAgICAgfQogICAgICAgICAgICB1bmJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5yZW1vdmVMaXN0ZW5lcnModGhpcy5nZXRVbmlxdWVIYW5kbGVySUQoKSwgInJlc2l6ZSIsIHRoaXMuc3RyZXRjaCksCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgZWxlbWVudG9yLmNoYW5uZWxzLmVkaXRvci5vZmYoImtpdDpjaGFuZ2U6c3RyZXRjaENvbnRhaW5lciIsIHRoaXMub25LaXRDaGFuZ2VTdHJldGNoQ29udGFpbmVyQ2hhbmdlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzQWN0aXZlKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgfHwgZS4kZWxlbWVudC5oYXNDbGFzcyh0aGlzLmdldFN0cmV0Y2hlZENsYXNzKCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0U3RyZXRjaEVsZW1lbnRGb3JDb25maWcoKSB7CiAgICAgICAgICAgICAgICBsZXQgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogbnVsbDsKICAgICAgICAgICAgICAgIHJldHVybiBlID8gdGhpcy4kZWxlbWVudC5maW5kKGUpIDogdGhpcy4kZWxlbWVudAogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldFN0cmV0Y2hFbGVtZW50Q29uZmlnKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzLmdldFN0cmV0Y2hFbGVtZW50Rm9yQ29uZmlnKCksCiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5nZXRTdHJldGNoQ29udGFpbmVyKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNvbnNpZGVyU2Nyb2xsYmFyOiBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmlzX3J0bAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXRTdHJldGNoKCkgewogICAgICAgICAgICAgICAgdGhpcy5zdHJldGNoID0gdGhpcy5zdHJldGNoLmJpbmQodGhpcyksCiAgICAgICAgICAgICAgICB0aGlzLnN0cmV0Y2hFbGVtZW50ID0gbmV3IGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQudG9vbHMuU3RyZXRjaEVsZW1lbnQodGhpcy5nZXRTdHJldGNoRWxlbWVudENvbmZpZygpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldFN0cmV0Y2hDb250YWluZXIoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRnJvbnRlbmQuZ2V0S2l0U2V0dGluZ3MoInN0cmV0Y2hlZF9zZWN0aW9uX2NvbnRhaW5lciIpIHx8IHdpbmRvdwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzU3RyZXRjaFNldHRpbmdFbmFibGVkKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKHRoaXMuZ2V0U3RyZXRjaFNldHRpbmdOYW1lKCkpID09PSB0aGlzLmdldFN0cmV0Y2hBY3RpdmVWYWx1ZSgpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RyZXRjaCgpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXNTdHJldGNoU2V0dGluZ0VuYWJsZWQoKSAmJiB0aGlzLnN0cmV0Y2hFbGVtZW50LnN0cmV0Y2goKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUodGhpcy5nZXRTZXR0aW5ncygpKSAmJiAodGhpcy5pbml0U3RyZXRjaCgpLAogICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICB0aGlzLnN0cmV0Y2goKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoZSkgewogICAgICAgICAgICAgICAgdGhpcy5nZXRTdHJldGNoU2V0dGluZ05hbWUoKSA9PT0gZSAmJiAodGhpcy5pc1N0cmV0Y2hTZXR0aW5nRW5hYmxlZCgpID8gdGhpcy5zdHJldGNoKCkgOiB0aGlzLnN0cmV0Y2hFbGVtZW50LnJlc2V0KCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgb25LaXRDaGFuZ2VTdHJldGNoQ29udGFpbmVyQ2hhbmdlKCkgewogICAgICAgICAgICAgICAgdGhpcy5zdHJldGNoRWxlbWVudC5zZXRTZXR0aW5ncygic2VsZWN0b3JzLmNvbnRhaW5lciIsIHRoaXMuZ2V0U3RyZXRjaENvbnRhaW5lcigpKSwKICAgICAgICAgICAgICAgIHRoaXMuc3RyZXRjaCgpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gU3RyZXRjaGVkRWxlbWVudAogICAgfQogICAgLAogICAgNjQxMjogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMzIwMykKICAgICAgICAgICwgciA9IGkobig1OTU1KSkKICAgICAgICAgICwgcyA9IGkobig4MTM1KSkKICAgICAgICAgICwgbyA9IGkobig1NjU4KSkKICAgICAgICAgICwgYSA9IGkobigyMjYzKSkKICAgICAgICAgICwgbCA9IGkobigzMDkwKSkKICAgICAgICAgICwgYyA9IGkobigyODIxKSkKICAgICAgICAgICwgdSA9IGkobigxMjkyKSkKICAgICAgICAgICwgZCA9IGkobig3MzIzKSkKICAgICAgICAgICwgaCA9IGkobigzMikpCiAgICAgICAgICAsIGcgPSBpKG4oNjc1MikpOwogICAgICAgIHIuZGVmYXVsdC5mcm9udGVuZCA9IHsKICAgICAgICAgICAgRG9jdW1lbnQ6IHMuZGVmYXVsdCwKICAgICAgICAgICAgdG9vbHM6IHsKICAgICAgICAgICAgICAgIFN0cmV0Y2hFbGVtZW50OiBvLmRlZmF1bHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaGFuZGxlcnM6IHsKICAgICAgICAgICAgICAgIEJhc2U6IGwuZGVmYXVsdCwKICAgICAgICAgICAgICAgIFN0cmV0Y2hlZEVsZW1lbnQ6IGEuZGVmYXVsdCwKICAgICAgICAgICAgICAgIFN3aXBlckJhc2U6IGMuZGVmYXVsdCwKICAgICAgICAgICAgICAgIENhcm91c2VsQmFzZTogdS5kZWZhdWx0LAogICAgICAgICAgICAgICAgTmVzdGVkVGFiczogZC5kZWZhdWx0LAogICAgICAgICAgICAgICAgTmVzdGVkQWNjb3JkaW9uOiBoLmRlZmF1bHQsCiAgICAgICAgICAgICAgICBOZXN0ZWRUaXRsZUtleWJvYXJkSGFuZGxlcjogZy5kZWZhdWx0CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAsCiAgICA1NjU4OiBlPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIGUuZXhwb3J0cyA9IGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZS5leHRlbmQoewogICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3M6ICgpPT4oewogICAgICAgICAgICAgICAgZWxlbWVudDogbnVsbCwKICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmlzX3J0bCA/ICJyaWdodCIgOiAibGVmdCIsCiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHdpbmRvdwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbnNpZGVyU2Nyb2xsYmFyOiAhMSwKICAgICAgICAgICAgICAgIGNzc091dHB1dDogImlubGluZSIKICAgICAgICAgICAgfSksCiAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQ6IGpRdWVyeSh0aGlzLmdldFNldHRpbmdzKCJlbGVtZW50IikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0cmV0Y2goKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgbGV0IHQ7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHQgPSBqUXVlcnkoZS5zZWxlY3RvcnMuY29udGFpbmVyKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIHQgJiYgdC5sZW5ndGggfHwgKHQgPSBqUXVlcnkodGhpcy5nZXREZWZhdWx0U2V0dGluZ3MoKS5zZWxlY3RvcnMuY29udGFpbmVyKSksCiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuZWxlbWVudHMuJGVsZW1lbnQKICAgICAgICAgICAgICAgICAgLCBpID0gdC5pbm5lcldpZHRoKCkKICAgICAgICAgICAgICAgICAgLCByID0gbi5vZmZzZXQoKS5sZWZ0CiAgICAgICAgICAgICAgICAgICwgcyA9ICJmaXhlZCIgPT09IG4uY3NzKCJwb3NpdGlvbiIpCiAgICAgICAgICAgICAgICAgICwgbyA9IHMgPyAwIDogcgogICAgICAgICAgICAgICAgICAsIGEgPSB3aW5kb3cgPT09IHRbMF07CiAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHQub2Zmc2V0KCkubGVmdDsKICAgICAgICAgICAgICAgICAgICBzICYmIChvID0gbCksCiAgICAgICAgICAgICAgICAgICAgciA+IGwgJiYgKG8gPSByIC0gbCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlLmNvbnNpZGVyU2Nyb2xsYmFyICYmIGEpIHsKICAgICAgICAgICAgICAgICAgICBvIC09IHdpbmRvdy5pbm5lcldpZHRoIC0gaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcyB8fCAoZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmlzX3J0bCAmJiAobyA9IGkgLSAobi5vdXRlcldpZHRoKCkgKyBvKSksCiAgICAgICAgICAgICAgICBvID0gLW8pLAogICAgICAgICAgICAgICAgZS5tYXJnaW4gJiYgKG8gKz0gZS5tYXJnaW4pOwogICAgICAgICAgICAgICAgdmFyIGMgPSB7fTsKICAgICAgICAgICAgICAgIGxldCB1ID0gaTsKICAgICAgICAgICAgICAgIGUubWFyZ2luICYmICh1IC09IDIgKiBlLm1hcmdpbiksCiAgICAgICAgICAgICAgICBjLndpZHRoID0gdSArICJweCIsCiAgICAgICAgICAgICAgICBjW2UuZGlyZWN0aW9uXSA9IG8gKyAicHgiLAogICAgICAgICAgICAgICAgInZhcmlhYmxlcyIgIT09IGUuY3NzT3V0cHV0ID8gbi5jc3MoYykgOiB0aGlzLmFwcGx5Q3NzVmFyaWFibGVzKG4sIGMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlc2V0KCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHt9CiAgICAgICAgICAgICAgICAgICwgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoKQogICAgICAgICAgICAgICAgICAsIG4gPSB0aGlzLmVsZW1lbnRzLiRlbGVtZW50OwogICAgICAgICAgICAgICAgInZhcmlhYmxlcyIgIT09IHQuY3NzT3V0cHV0ID8gKGUud2lkdGggPSAiIiwKICAgICAgICAgICAgICAgIGVbdC5kaXJlY3Rpb25dID0gIiIsCiAgICAgICAgICAgICAgICBuLmNzcyhlKSkgOiB0aGlzLnJlc2V0Q3NzVmFyaWFibGVzKG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFwcGx5Q3NzVmFyaWFibGVzKGUsIHQpIHsKICAgICAgICAgICAgICAgIGUuY3NzKCItLXN0cmV0Y2gtd2lkdGgiLCB0LndpZHRoKSwKICAgICAgICAgICAgICAgIHQubGVmdCA/IGUuY3NzKCItLXN0cmV0Y2gtbGVmdCIsIHQubGVmdCkgOiBlLmNzcygiLS1zdHJldGNoLXJpZ2h0IiwgdC5yaWdodCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVzZXRDc3NWYXJpYWJsZXMoZSkgewogICAgICAgICAgICAgICAgZS5jc3MoewogICAgICAgICAgICAgICAgICAgICItLXN0cmV0Y2gtd2lkdGgiOiAiIiwKICAgICAgICAgICAgICAgICAgICAiLS1zdHJldGNoLWxlZnQiOiAiIiwKICAgICAgICAgICAgICAgICAgICAiLS1zdHJldGNoLXJpZ2h0IjogIiIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfQogICAgLAogICAgNjYzMDogKGUsdCk9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgZnVuY3Rpb24gZ2V0Q2hpbGRyZW5XaWR0aChlKSB7CiAgICAgICAgICAgIGxldCB0ID0gMDsKICAgICAgICAgICAgY29uc3QgbiA9IGVbMF0ucGFyZW50Tm9kZQogICAgICAgICAgICAgICwgaSA9IGdldENvbXB1dGVkU3R5bGUobikKICAgICAgICAgICAgICAsIHIgPSBwYXJzZUZsb2F0KGkuZ2FwKSB8fCAwOwogICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGUubGVuZ3RoOyBuKyspCiAgICAgICAgICAgICAgICB0ICs9IGVbbl0ub2Zmc2V0V2lkdGggKyByOwogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0KICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuY2hhbmdlU2Nyb2xsU3RhdHVzID0gZnVuY3Rpb24gY2hhbmdlU2Nyb2xsU3RhdHVzKGUsIHQpIHsKICAgICAgICAgICAgIm1vdXNlZG93biIgPT09IHQudHlwZSA/IChlLmNsYXNzTGlzdC5hZGQoImUtc2Nyb2xsIiksCiAgICAgICAgICAgIGUuZGF0YXNldC5wYWdlWCA9IHQucGFnZVgpIDogKGUuY2xhc3NMaXN0LnJlbW92ZSgiZS1zY3JvbGwiLCAiZS1zY3JvbGwtYWN0aXZlIiksCiAgICAgICAgICAgIGUuZGF0YXNldC5wYWdlWCA9ICIiKQogICAgICAgIH0KICAgICAgICAsCiAgICAgICAgdC5zZXRIb3Jpem9udGFsU2Nyb2xsQWxpZ25tZW50ID0gZnVuY3Rpb24gc2V0SG9yaXpvbnRhbFNjcm9sbEFsaWdubWVudChlKSB7CiAgICAgICAgICAgIGxldCB7ZWxlbWVudDogdCwgZGlyZWN0aW9uOiBuLCBqdXN0aWZ5Q1NTVmFyaWFibGU6IGksIGhvcml6b250YWxTY3JvbGxTdGF0dXM6IHJ9ID0gZTsKICAgICAgICAgICAgaWYgKCF0KQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAhZnVuY3Rpb24gaXNIb3Jpem9udGFsU2Nyb2xsKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmNsaWVudFdpZHRoIDwgZ2V0Q2hpbGRyZW5XaWR0aChlLmNoaWxkcmVuKSAmJiAiZW5hYmxlIiA9PT0gdAogICAgICAgICAgICB9KHQsIHIpID8gdC5zdHlsZS5zZXRQcm9wZXJ0eShpLCAiIikgOiBmdW5jdGlvbiBpbml0aWFsU2Nyb2xsUG9zaXRpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgY29uc3QgaSA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pc19ydGw7CiAgICAgICAgICAgICAgICBpZiAoImVuZCIgPT09IHQpCiAgICAgICAgICAgICAgICAgICAgZS5zdHlsZS5zZXRQcm9wZXJ0eShuLCAic3RhcnQiKSwKICAgICAgICAgICAgICAgICAgICBlLnNjcm9sbExlZnQgPSBpID8gLTEgKiBnZXRDaGlsZHJlbldpZHRoKGUuY2hpbGRyZW4pIDogZ2V0Q2hpbGRyZW5XaWR0aChlLmNoaWxkcmVuKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBlLnN0eWxlLnNldFByb3BlcnR5KG4sICJzdGFydCIpLAogICAgICAgICAgICAgICAgICAgIGUuc2Nyb2xsTGVmdCA9IDAKICAgICAgICAgICAgfSh0LCBuLCBpKQogICAgICAgIH0KICAgICAgICAsCiAgICAgICAgdC5zZXRIb3Jpem9udGFsVGl0bGVTY3JvbGxWYWx1ZXMgPSBmdW5jdGlvbiBzZXRIb3Jpem9udGFsVGl0bGVTY3JvbGxWYWx1ZXMoZSwgdCwgbikgewogICAgICAgICAgICBjb25zdCBpID0gZS5jbGFzc0xpc3QuY29udGFpbnMoImUtc2Nyb2xsIikKICAgICAgICAgICAgICAsIHIgPSAiZW5hYmxlIiA9PT0gdAogICAgICAgICAgICAgICwgcyA9IGUuc2Nyb2xsV2lkdGggPiBlLmNsaWVudFdpZHRoOwogICAgICAgICAgICBpZiAoIWkgfHwgIXIgfHwgIXMpCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIG4ucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgY29uc3QgbyA9IHBhcnNlRmxvYXQoZS5kYXRhc2V0LnBhZ2VYKQogICAgICAgICAgICAgICwgYSA9IG4ucGFnZVggLSBvOwogICAgICAgICAgICBsZXQgbCA9IDA7CiAgICAgICAgICAgIGwgPSAyMCA8IGEgPyA1IDogLTIwID4gYSA/IC01IDogYTsKICAgICAgICAgICAgZS5zY3JvbGxMZWZ0ID0gZS5zY3JvbGxMZWZ0IC0gbCwKICAgICAgICAgICAgZS5jbGFzc0xpc3QuYWRkKCJlLXNjcm9sbC1hY3RpdmUiKQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDI2MTg6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDMyMDMpOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwLAogICAgICAgIG4oNzQwKTsKICAgICAgICB2YXIgciA9IGkobig3NTk3KSkKICAgICAgICAgICwgcyA9IGkobigzODEpKTsKICAgICAgICBjbGFzcyBBcmdzT2JqZWN0IGV4dGVuZHMgci5kZWZhdWx0IHsKICAgICAgICAgICAgc3RhdGljIGdldEluc3RhbmNlVHlwZSgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiQXJnc09iamVjdCIKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdHJ1Y3RvcihlKSB7CiAgICAgICAgICAgICAgICBzdXBlcigpLAogICAgICAgICAgICAgICAgdGhpcy5hcmdzID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlcXVpcmVBcmd1bWVudChlKSB7CiAgICAgICAgICAgICAgICBsZXQgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogdGhpcy5hcmdzOwogICAgICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwgZSkpCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYCR7ZX0gaXMgcmVxdWlyZWQuYCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXF1aXJlQXJndW1lbnRUeXBlKGUsIHQpIHsKICAgICAgICAgICAgICAgIGxldCBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiB0aGlzLmFyZ3M7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXF1aXJlQXJndW1lbnQoZSwgbiksCiAgICAgICAgICAgICAgICB0eXBlb2YgbltlXSAhPT0gdCkKICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgJHtlfSBpbnZhbGlkIHR5cGU6ICR7dH0uYCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXF1aXJlQXJndW1lbnRJbnN0YW5jZShlLCB0KSB7CiAgICAgICAgICAgICAgICBsZXQgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogdGhpcy5hcmdzOwogICAgICAgICAgICAgICAgaWYgKHRoaXMucmVxdWlyZUFyZ3VtZW50KGUsIG4pLAogICAgICAgICAgICAgICAgIShuW2VdaW5zdGFuY2VvZiB0IHx8ICgwLAogICAgICAgICAgICAgICAgcy5kZWZhdWx0KShuW2VdLCB0KSkpCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYCR7ZX0gaW52YWxpZCBpbnN0YW5jZS5gKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlcXVpcmVBcmd1bWVudENvbnN0cnVjdG9yKGUsIHQpIHsKICAgICAgICAgICAgICAgIGxldCBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiB0aGlzLmFyZ3M7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXF1aXJlQXJndW1lbnQoZSwgbiksCiAgICAgICAgICAgICAgICBuW2VdLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkgIT09IHQucHJvdG90eXBlLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYCR7ZX0gaW52YWxpZCBjb25zdHJ1Y3RvciB0eXBlLmApCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gQXJnc09iamVjdAogICAgfQogICAgLAogICAgODY5OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdC5Gb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uID0gdm9pZCAwLAogICAgICAgIG4oNzQwKTsKICAgICAgICBjbGFzcyBGb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uIGV4dGVuZHMgRXJyb3IgewogICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiB7fQogICAgICAgICAgICAgICAgICAsIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IHt9OwogICAgICAgICAgICAgICAgc3VwZXIoYCR7ZS5pc1N0YXRpYyA/ICJzdGF0aWMgIiA6ICIifSR7ZS5mdWxsTmFtZX0oKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQsIHBsZWFzZSBwcm92aWRlICcke2UuZnVuY3Rpb25OYW1lIHx8IGUuZnVsbE5hbWV9JyBmdW5jdGlvbmFsaXR5LmAsIHQpLAogICAgICAgICAgICAgICAgT2JqZWN0LmtleXModCkubGVuZ3RoICYmIGNvbnNvbGUuZXJyb3IodCksCiAgICAgICAgICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBGb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHQuRm9yY2VNZXRob2RJbXBsZW1lbnRhdGlvbiA9IEZvcmNlTWV0aG9kSW1wbGVtZW50YXRpb247CiAgICAgICAgdC5kZWZhdWx0ID0gZT0+ewogICAgICAgICAgICBjb25zdCB0ID0gRXJyb3IoKS5zdGFjay5zcGxpdCgiXG4iKVsyXS50cmltKCkKICAgICAgICAgICAgICAsIG4gPSB0LnN0YXJ0c1dpdGgoImF0IG5ldyIpID8gImNvbnN0cnVjdG9yIiA6IHQuc3BsaXQoIiAiKVsxXQogICAgICAgICAgICAgICwgaSA9IHt9OwogICAgICAgICAgICBpZiAoaS5mdW5jdGlvbk5hbWUgPSBuLAogICAgICAgICAgICBpLmZ1bGxOYW1lID0gbiwKICAgICAgICAgICAgaS5mdW5jdGlvbk5hbWUuaW5jbHVkZXMoIi4iKSkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IGkuZnVuY3Rpb25OYW1lLnNwbGl0KCIuIik7CiAgICAgICAgICAgICAgICBpLmNsYXNzTmFtZSA9IGVbMF0sCiAgICAgICAgICAgICAgICBpLmZ1bmN0aW9uTmFtZSA9IGVbMV0KICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBpLmlzU3RhdGljID0gITA7CiAgICAgICAgICAgIHRocm93IG5ldyBGb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uKGksZSkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICA3NTk3OiAoZSx0KT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICBjbGFzcyBJbnN0YW5jZVR5cGUgewogICAgICAgICAgICBzdGF0aWNbU3ltYm9sLmhhc0luc3RhbmNlXShlKSB7CiAgICAgICAgICAgICAgICBsZXQgdCA9IHN1cGVyW1N5bWJvbC5oYXNJbnN0YW5jZV0oZSk7CiAgICAgICAgICAgICAgICBpZiAoZSAmJiAhZS5jb25zdHJ1Y3Rvci5nZXRJbnN0YW5jZVR5cGUpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICBpZiAoZSAmJiAoZS5pbnN0YW5jZVR5cGVzIHx8IChlLmluc3RhbmNlVHlwZXMgPSBbXSksCiAgICAgICAgICAgICAgICB0IHx8IHRoaXMuZ2V0SW5zdGFuY2VUeXBlKCkgPT09IGUuY29uc3RydWN0b3IuZ2V0SW5zdGFuY2VUeXBlKCkgJiYgKHQgPSAhMCksCiAgICAgICAgICAgICAgICB0KSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldEluc3RhbmNlVHlwZSA9PT0gSW5zdGFuY2VUeXBlLmdldEluc3RhbmNlVHlwZSA/ICJCYXNlSW5zdGFuY2VUeXBlIiA6IHRoaXMuZ2V0SW5zdGFuY2VUeXBlKCk7CiAgICAgICAgICAgICAgICAgICAgLTEgPT09IGUuaW5zdGFuY2VUeXBlcy5pbmRleE9mKHQpICYmIGUuaW5zdGFuY2VUeXBlcy5wdXNoKHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gIXQgJiYgZSAmJiAodCA9IGUuaW5zdGFuY2VUeXBlcyAmJiBBcnJheS5pc0FycmF5KGUuaW5zdGFuY2VUeXBlcykgJiYgLTEgIT09IGUuaW5zdGFuY2VUeXBlcy5pbmRleE9mKHRoaXMuZ2V0SW5zdGFuY2VUeXBlKCkpKSwKICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZ2V0SW5zdGFuY2VUeXBlKCkgewogICAgICAgICAgICAgICAgZWxlbWVudG9yTW9kdWxlcy5Gb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uKCkKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgIGxldCBlID0gbmV3LnRhcmdldDsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBbXTsKICAgICAgICAgICAgICAgIGZvciAoOyBlLl9fcHJvdG9fXyAmJiBlLl9fcHJvdG9fXy5uYW1lOyApCiAgICAgICAgICAgICAgICAgICAgdC5wdXNoKGUuX19wcm90b19fKSwKICAgICAgICAgICAgICAgICAgICBlID0gZS5fX3Byb3RvX187CiAgICAgICAgICAgICAgICB0LnJldmVyc2UoKS5mb3JFYWNoKChlPT50aGlzIGluc3RhbmNlb2YgZSkpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gSW5zdGFuY2VUeXBlCiAgICB9CiAgICAsCiAgICAxMTkyOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIG4oNzQwKTsKICAgICAgICBjb25zdCBNb2R1bGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgY29uc3QgZSA9IGpRdWVyeQogICAgICAgICAgICAgICwgdCA9IGFyZ3VtZW50cwogICAgICAgICAgICAgICwgbiA9IHRoaXMKICAgICAgICAgICAgICAsIGkgPSB7fTsKICAgICAgICAgICAgbGV0IHI7CiAgICAgICAgICAgIHRoaXMuZ2V0SXRlbXMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0LnNwbGl0KCIuIikKICAgICAgICAgICAgICAgICAgICAgICwgaSA9IG4uc3BsaWNlKDAsIDEpOwogICAgICAgICAgICAgICAgICAgIGlmICghbi5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlW2ldOwogICAgICAgICAgICAgICAgICAgIGlmICghZVtpXSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1zKGVbaV0sIG4uam9pbigiLiIpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfQogICAgICAgICAgICAsCiAgICAgICAgICAgIHRoaXMuZ2V0U2V0dGluZ3MgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyhyLCBlKQogICAgICAgICAgICB9CiAgICAgICAgICAgICwKICAgICAgICAgICAgdGhpcy5zZXRTZXR0aW5ncyA9IGZ1bmN0aW9uKHQsIGksIHMpIHsKICAgICAgICAgICAgICAgIGlmIChzIHx8IChzID0gciksCiAgICAgICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgdCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5leHRlbmQocywgdCksCiAgICAgICAgICAgICAgICAgICAgbjsKICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB0LnNwbGl0KCIuIikKICAgICAgICAgICAgICAgICAgLCBhID0gby5zcGxpY2UoMCwgMSk7CiAgICAgICAgICAgICAgICByZXR1cm4gby5sZW5ndGggPyAoc1thXSB8fCAoc1thXSA9IHt9KSwKICAgICAgICAgICAgICAgIG4uc2V0U2V0dGluZ3Moby5qb2luKCIuIiksIGksIHNbYV0pKSA6IChzW2FdID0gaSwKICAgICAgICAgICAgICAgIG4pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLAogICAgICAgICAgICB0aGlzLmdldEVycm9yTWVzc2FnZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGxldCBuOwogICAgICAgICAgICAgICAgaWYgKCJmb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uIiA9PT0gZSkKICAgICAgICAgICAgICAgICAgICBuID0gYFRoZSBtZXRob2QgJyR7dH0nIG11c3QgdG8gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGluaGVyaXRvciBjaGlsZC5gOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIG4gPSAiQW4gZXJyb3Igb2NjdXJzIjsKICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLAogICAgICAgICAgICB0aGlzLmZvcmNlTWV0aG9kSW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoImZvcmNlTWV0aG9kSW1wbGVtZW50YXRpb24iLCBlKSkKICAgICAgICAgICAgfQogICAgICAgICAgICAsCiAgICAgICAgICAgIHRoaXMub24gPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHQpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZWFjaCh0LCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBuLm9uKGUsIHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICkpLAogICAgICAgICAgICAgICAgICAgIG47CiAgICAgICAgICAgICAgICByZXR1cm4gdC5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpW2VdIHx8IChpW2VdID0gW10pLAogICAgICAgICAgICAgICAgICAgIGlbZV0ucHVzaChyKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSksCiAgICAgICAgICAgICAgICBuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLAogICAgICAgICAgICB0aGlzLm9mZiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGlmICghaVtlXSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICAgICAgICAgIGlmICghdCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlIGlbZV0sCiAgICAgICAgICAgICAgICAgICAgbjsKICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBpW2VdLmluZGV4T2YodCk7CiAgICAgICAgICAgICAgICByZXR1cm4gLTEgIT09IHIgJiYgKGRlbGV0ZSBpW2VdW3JdLAogICAgICAgICAgICAgICAgaVtlXSA9IGlbZV0uZmlsdGVyKChlPT5lKSkpLAogICAgICAgICAgICAgICAgbgogICAgICAgICAgICB9CiAgICAgICAgICAgICwKICAgICAgICAgICAgdGhpcy50cmlnZ2VyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9ICJvbiIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpCiAgICAgICAgICAgICAgICAgICwgcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgICAgICAgICAgICAgICBuW3JdICYmIG5bcl0uYXBwbHkobiwgcyk7CiAgICAgICAgICAgICAgICBjb25zdCBvID0gaVt0XTsKICAgICAgICAgICAgICAgIHJldHVybiBvID8gKGUuZWFjaChvLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHQuYXBwbHkobiwgcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpLAogICAgICAgICAgICAgICAgbikgOiBuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLAogICAgICAgICAgICBuLl9fY29uc3RydWN0LmFwcGx5KG4sIHQpLAogICAgICAgICAgICBlLmVhY2gobiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBuW2VdOwogICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdCAmJiAobltlXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmFwcGx5KG4sIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgfQogICAgICAgICAgICApKSwKICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByID0gbi5nZXREZWZhdWx0U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB0WzBdOwogICAgICAgICAgICAgICAgaSAmJiBlLmV4dGVuZCghMCwgciwgaSkKICAgICAgICAgICAgfSgpLAogICAgICAgICAgICBuLnRyaWdnZXIoImluaXQiKQogICAgICAgIH07CiAgICAgICAgTW9kdWxlLnByb3RvdHlwZS5fX2NvbnN0cnVjdCA9IGZ1bmN0aW9uKCkge30KICAgICAgICAsCiAgICAgICAgTW9kdWxlLnByb3RvdHlwZS5nZXREZWZhdWx0U2V0dGluZ3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHt9CiAgICAgICAgfQogICAgICAgICwKICAgICAgICBNb2R1bGUucHJvdG90eXBlLmdldENvbnN0cnVjdG9ySUQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZQogICAgICAgIH0KICAgICAgICAsCiAgICAgICAgTW9kdWxlLmV4dGVuZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgY29uc3QgdCA9IGpRdWVyeQogICAgICAgICAgICAgICwgbiA9IHRoaXMKICAgICAgICAgICAgICAsIGNoaWxkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiB0LmV4dGVuZChjaGlsZCwgbiksCiAgICAgICAgICAgIChjaGlsZC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQuZXh0ZW5kKHt9LCBuLnByb3RvdHlwZSwgZSkpKS5jb25zdHJ1Y3RvciA9IGNoaWxkLAogICAgICAgICAgICBjaGlsZC5fX3N1cGVyX18gPSBuLnByb3RvdHlwZSwKICAgICAgICAgICAgY2hpbGQKICAgICAgICB9CiAgICAgICAgLAogICAgICAgIGUuZXhwb3J0cyA9IE1vZHVsZQogICAgfQogICAgLAogICAgNjUxNjogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMzIwMyk7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KSwKICAgICAgICB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgdmFyIHIgPSBpKG4oMjY0MCkpLmRlZmF1bHQuZXh0ZW5kKHsKICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzOiAoKT0+KHsKICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCwKICAgICAgICAgICAgICAgIGl0ZW1zOiBudWxsLAogICAgICAgICAgICAgICAgY29sdW1uc0NvdW50OiAzLAogICAgICAgICAgICAgICAgdmVydGljYWxTcGFjZUJldHdlZW46IDMwCiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICRjb250YWluZXI6IGpRdWVyeSh0aGlzLmdldFNldHRpbmdzKCJjb250YWluZXIiKSksCiAgICAgICAgICAgICAgICAgICAgJGl0ZW1zOiBqUXVlcnkodGhpcy5nZXRTZXR0aW5ncygiaXRlbXMiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcnVuKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBbXQogICAgICAgICAgICAgICAgICAsIHQgPSB0aGlzLmVsZW1lbnRzLiRjb250YWluZXIucG9zaXRpb24oKS50b3AKICAgICAgICAgICAgICAgICAgLCBuID0gdGhpcy5nZXRTZXR0aW5ncygpCiAgICAgICAgICAgICAgICAgICwgaSA9IG4uY29sdW1uc0NvdW50OwogICAgICAgICAgICAgICAgdCArPSBwYXJzZUludCh0aGlzLmVsZW1lbnRzLiRjb250YWluZXIuY3NzKCJtYXJnaW4tdG9wIiksIDEwKSwKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGl0ZW1zLmVhY2goKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IE1hdGguZmxvb3IociAvIGkpCiAgICAgICAgICAgICAgICAgICAgICAsIG8gPSBqUXVlcnkodGhpcykKICAgICAgICAgICAgICAgICAgICAgICwgYSA9IG9bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ICsgbi52ZXJ0aWNhbFNwYWNlQmV0d2VlbjsKICAgICAgICAgICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG8ucG9zaXRpb24oKQogICAgICAgICAgICAgICAgICAgICAgICAgICwgYyA9IHIgJSBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgLCB1ID0gbC50b3AgLSB0IC0gZVtjXTsKICAgICAgICAgICAgICAgICAgICAgICAgdSAtPSBwYXJzZUludChvLmNzcygibWFyZ2luLXRvcCIpLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIHUgKj0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgIG8uY3NzKCJtYXJnaW4tdG9wIiwgdSArICJweCIpLAogICAgICAgICAgICAgICAgICAgICAgICBlW2NdICs9IGEKICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZS5wdXNoKGEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApKQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdC5kZWZhdWx0ID0gcgogICAgfQogICAgLAogICAgNDAwOiAoZSx0KT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICB0LmRlZmF1bHQgPSBjbGFzcyBTY3JvbGwgewogICAgICAgICAgICBzdGF0aWMgc2Nyb2xsT2JzZXJ2ZXIoZSkgewogICAgICAgICAgICAgICAgbGV0IHQgPSAwOwogICAgICAgICAgICAgICAgY29uc3QgbiA9IHsKICAgICAgICAgICAgICAgICAgICByb290OiBlLnJvb3QgfHwgbnVsbCwKICAgICAgICAgICAgICAgICAgICByb290TWFyZ2luOiBlLm9mZnNldCB8fCAiMHB4IiwKICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA+IDAgJiYgZSA8PSAxMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSAxMDAgLyBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPD0gMTAwOyBlICs9IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5wdXNoKGUgLyAxMDApCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5wdXNoKDApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgIH0oZS5zZW5zaXRpdml0eSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChmdW5jdGlvbiBoYW5kbGVJbnRlcnNlY3QobikgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBuWzBdLmJvdW5kaW5nQ2xpZW50UmVjdC55CiAgICAgICAgICAgICAgICAgICAgICAsIHIgPSBuWzBdLmlzSW50ZXJzZWN0aW5nCiAgICAgICAgICAgICAgICAgICAgICAsIHMgPSBpIDwgdCA/ICJkb3duIiA6ICJ1cCIKICAgICAgICAgICAgICAgICAgICAgICwgbyA9IE1hdGguYWJzKHBhcnNlRmxvYXQoKDEwMCAqIG5bMF0uaW50ZXJzZWN0aW9uUmF0aW8pLnRvRml4ZWQoMikpKTsKICAgICAgICAgICAgICAgICAgICBlLmNhbGxiYWNrKHsKICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc2l0aXZpdHk6IGUuc2Vuc2l0aXZpdHksCiAgICAgICAgICAgICAgICAgICAgICAgIGlzSW5WaWV3cG9ydDogciwKICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsUGVyY2VudGFnZTogbywKICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9uU2Nyb2xsRGlyZWN0aW9uOiBzCiAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgdCA9IGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICksbikKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZ2V0RWxlbWVudFZpZXdwb3J0UGVyY2VudGFnZShlKSB7CiAgICAgICAgICAgICAgICBsZXQgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDoge307CiAgICAgICAgICAgICAgICBjb25zdCBuID0gZVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKQogICAgICAgICAgICAgICAgICAsIGkgPSB0LnN0YXJ0IHx8IDAKICAgICAgICAgICAgICAgICAgLCByID0gdC5lbmQgfHwgMAogICAgICAgICAgICAgICAgICAsIHMgPSB3aW5kb3cuaW5uZXJIZWlnaHQgKiBpIC8gMTAwCiAgICAgICAgICAgICAgICAgICwgbyA9IHdpbmRvdy5pbm5lckhlaWdodCAqIHIgLyAxMDAKICAgICAgICAgICAgICAgICAgLCBhID0gbi50b3AgLSB3aW5kb3cuaW5uZXJIZWlnaHQKICAgICAgICAgICAgICAgICAgLCBsID0gMCAtIGEgKyBzCiAgICAgICAgICAgICAgICAgICwgYyA9IG4udG9wICsgcyArIGUuaGVpZ2h0KCkgLSBhICsgbwogICAgICAgICAgICAgICAgICAsIHUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihsIC8gYywgMSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoKDEwMCAqIHUpLnRvRml4ZWQoMikpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RhdGljIGdldFBhZ2VTY3JvbGxQZXJjZW50YWdlKCkgewogICAgICAgICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHt9CiAgICAgICAgICAgICAgICAgICwgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwOwogICAgICAgICAgICAgICAgY29uc3QgbiA9IGUuc3RhcnQgfHwgMAogICAgICAgICAgICAgICAgICAsIGkgPSBlLmVuZCB8fCAwCiAgICAgICAgICAgICAgICAgICwgciA9IHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQKICAgICAgICAgICAgICAgICAgLCBzID0gciAqIG4gLyAxMDAKICAgICAgICAgICAgICAgICAgLCBvID0gciArIHMgKyByICogaSAvIDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCArIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wICsgcykgLyBvICogMTAwCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAsCiAgICAyNjQwOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigzMjAzKTsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICB2YXIgciA9IGkobigxMTkyKSkuZGVmYXVsdC5leHRlbmQoewogICAgICAgICAgICBlbGVtZW50czogbnVsbCwKICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzOiAoKT0+KHt9KSwKICAgICAgICAgICAgYmluZEV2ZW50cygpIHt9LAogICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICB0aGlzLmluaXRFbGVtZW50cygpLAogICAgICAgICAgICAgICAgdGhpcy5iaW5kRXZlbnRzKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5pdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cyA9IHRoaXMuZ2V0RGVmYXVsdEVsZW1lbnRzKCkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHQuZGVmYXVsdCA9IHIKICAgIH0KICAgICwKICAgIDU5NTU6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDMyMDMpOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIHZhciByID0gaShuKDExOTIpKQogICAgICAgICAgLCBzID0gaShuKDI2NDApKQogICAgICAgICAgLCBvID0gaShuKDI2MTgpKQogICAgICAgICAgLCBhID0gaShuKDY1MTYpKQogICAgICAgICAgLCBsID0gaShuKDQwMCkpCiAgICAgICAgICAsIGMgPSBpKG4oODY5KSkKICAgICAgICAgICwgdSA9IHdpbmRvdy5lbGVtZW50b3JNb2R1bGVzID0gewogICAgICAgICAgICBNb2R1bGU6IHIuZGVmYXVsdCwKICAgICAgICAgICAgVmlld01vZHVsZTogcy5kZWZhdWx0LAogICAgICAgICAgICBBcmdzT2JqZWN0OiBvLmRlZmF1bHQsCiAgICAgICAgICAgIEZvcmNlTWV0aG9kSW1wbGVtZW50YXRpb246IGMuZGVmYXVsdCwKICAgICAgICAgICAgdXRpbHM6IHsKICAgICAgICAgICAgICAgIE1hc29ucnk6IGEuZGVmYXVsdCwKICAgICAgICAgICAgICAgIFNjcm9sbDogbC5kZWZhdWx0CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHQuZGVmYXVsdCA9IHUKICAgIH0KICAgICwKICAgIDcxNDg6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDMyMDMpOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSksCiAgICAgICAgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgIHZhciByID0gaShuKDY3NTIpKTsKICAgICAgICBjbGFzcyBOZXN0ZWRBY2NvcmRpb25UaXRsZUtleWJvYXJkSGFuZGxlciBleHRlbmRzIHIuZGVmYXVsdCB7CiAgICAgICAgICAgIF9fY29uc3RydWN0KCkgewogICAgICAgICAgICAgICAgc3VwZXIuX19jb25zdHJ1Y3QoLi4uYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgPyB2b2lkIDAgOiBhcmd1bWVudHNbMF07CiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVRpdGxlID0gZS50b2dnbGVUaXRsZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgLi4uc3VwZXIuZ2V0RGVmYXVsdFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UaXRsZTogIi5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICBpdGVtQ29udGFpbmVyOiAiLmUtbi1hY2NvcmRpb24taXRlbSA+IC5lLWNvbiIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFyaWFBdHRyaWJ1dGVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlU3RhdGVBdHRyaWJ1dGU6ICJhcmlhLWV4cGFuZGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGl0bGVTZWxlY3RvcjogJ1thcmlhLWV4cGFuZGVkPSJ0cnVlIl0nCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkYXRhc2V0czogewogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUluZGV4OiAiZGF0YS1hY2NvcmRpb24taW5kZXgiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGhhbmRlVGl0bGVMaW5rRW50ZXJPclNwYWNlRXZlbnQoZSkgewogICAgICAgICAgICAgICAgdGhpcy50b2dnbGVUaXRsZShlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGhhbmRsZUNvbnRlbnRFbGVtZW50RXNjYXBlRXZlbnRzKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWN0aXZlVGl0bGVFbGVtZW50KCkudHJpZ2dlcigiZm9jdXMiKSwKICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlVGl0bGUoZSkKICAgICAgICAgICAgfQogICAgICAgICAgICBoYW5kbGVUaXRsZUVzY2FwZUtleUV2ZW50cyhlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gZT8uY3VycmVudFRhcmdldD8ucGFyZW50RWxlbWVudAogICAgICAgICAgICAgICAgICAsIG4gPSB0Py5vcGVuOwogICAgICAgICAgICAgICAgbiAmJiB0aGlzLnRvZ2dsZVRpdGxlKGUpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gTmVzdGVkQWNjb3JkaW9uVGl0bGVLZXlib2FyZEhhbmRsZXIKICAgIH0KICAgICwKICAgIDMyOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigzMjAzKTsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICB2YXIgciA9IGkobigzMDkwKSkKICAgICAgICAgICwgcyA9IGkobig3MTQ4KSk7CiAgICAgICAgY2xhc3MgTmVzdGVkQWNjb3JkaW9uIGV4dGVuZHMgci5kZWZhdWx0IHsKICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpLAogICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpb25zID0gbmV3IE1hcAogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjY29yZGlvbjogIi5lLW4tYWNjb3JkaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW9uQ29udGVudENvbnRhaW5lcnM6ICIuZS1uLWFjY29yZGlvbiA+IC5lLWNvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFjY29yZGlvbkl0ZW1zOiAiLmUtbi1hY2NvcmRpb24taXRlbSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFjY29yZGlvbkl0ZW1UaXRsZXM6ICIuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW9uQ29udGVudDogIi5lLW4tYWNjb3JkaW9uLWl0ZW0gPiAuZS1jb24iLAogICAgICAgICAgICAgICAgICAgICAgICBhY2NvcmRpb25XcmFwcGVyOiAiLmUtbi1hY2NvcmRpb24taXRlbSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfc3RhdGU6ICJleHBhbmRlZCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIik7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICRhY2NvcmRpb246IHRoaXMuZmluZEVsZW1lbnQoZS5hY2NvcmRpb24pLAogICAgICAgICAgICAgICAgICAgICRjb250ZW50Q29udGFpbmVyczogdGhpcy5maW5kRWxlbWVudChlLmFjY29yZGlvbkNvbnRlbnRDb250YWluZXJzKSwKICAgICAgICAgICAgICAgICAgICAkYWNjb3JkaW9uSXRlbXM6IHRoaXMuZmluZEVsZW1lbnQoZS5hY2NvcmRpb25JdGVtcyksCiAgICAgICAgICAgICAgICAgICAgJGFjY29yZGlvblRpdGxlczogdGhpcy5maW5kRWxlbWVudChlLmFjY29yZGlvbkl0ZW1UaXRsZXMpLAogICAgICAgICAgICAgICAgICAgICRhY2NvcmRpb25Db250ZW50OiB0aGlzLmZpbmRFbGVtZW50KGUuYWNjb3JkaW9uQ29udGVudCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICBzdXBlci5vbkluaXQoLi4uYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiB0aGlzLmludGVybGFjZUNvbnRhaW5lcnMoKSwKICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0S2V5Ym9hcmRIYW5kbGVyKCkKICAgICAgICAgICAgfQogICAgICAgICAgICBpbmplY3RLZXlib2FyZEhhbmRsZXIoKSB7CiAgICAgICAgICAgICAgICAibmVzdGVkLWFjY29yZGlvbi5kZWZhdWx0IiA9PT0gdGhpcy5nZXRTZXR0aW5ncygiZWxlbWVudE5hbWUiKSAmJiBuZXcgcy5kZWZhdWx0KHsKICAgICAgICAgICAgICAgICAgICAkZWxlbWVudDogdGhpcy4kZWxlbWVudCwKICAgICAgICAgICAgICAgICAgICB0b2dnbGVUaXRsZTogdGhpcy5jbGlja0xpc3RlbmVyLmJpbmQodGhpcykKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW50ZXJsYWNlQ29udGFpbmVycygpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHskY29udGVudENvbnRhaW5lcnM6IGUsICRhY2NvcmRpb25JdGVtczogdH0gPSB0aGlzLmdldERlZmF1bHRFbGVtZW50cygpOwogICAgICAgICAgICAgICAgZS5lYWNoKCgoZSxuKT0+ewogICAgICAgICAgICAgICAgICAgIHRbZV0uYXBwZW5kQ2hpbGQobikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGFjY29yZGlvblRpdGxlcy5vbigiY2xpY2siLCB0aGlzLmNsaWNrTGlzdGVuZXIuYmluZCh0aGlzKSkKICAgICAgICAgICAgfQogICAgICAgICAgICB1bmJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRhY2NvcmRpb25UaXRsZXMub2ZmKCkKICAgICAgICAgICAgfQogICAgICAgICAgICBjbGlja0xpc3RlbmVyKGUpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldFNldHRpbmdzKCkKICAgICAgICAgICAgICAgICAgLCBuID0gZT8uY3VycmVudFRhcmdldD8uY2xvc2VzdCh0LnNlbGVjdG9ycy5hY2NvcmRpb25XcmFwcGVyKQogICAgICAgICAgICAgICAgICAsIGkgPSBuLnF1ZXJ5U2VsZWN0b3IodC5zZWxlY3RvcnMuYWNjb3JkaW9uSXRlbVRpdGxlcykKICAgICAgICAgICAgICAgICAgLCByID0gbi5xdWVyeVNlbGVjdG9yKHQuc2VsZWN0b3JzLmFjY29yZGlvbkNvbnRlbnQpCiAgICAgICAgICAgICAgICAgICwge21heF9pdGVtc19leHBlbmRlZDogc30gPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpCiAgICAgICAgICAgICAgICAgICwgeyRhY2NvcmRpb25UaXRsZXM6IG8sICRhY2NvcmRpb25JdGVtczogYX0gPSB0aGlzLmVsZW1lbnRzOwogICAgICAgICAgICAgICAgIm9uZSIgPT09IHMgJiYgdGhpcy5jbG9zZUFsbEl0ZW1zKGEsIG8pLAogICAgICAgICAgICAgICAgbi5vcGVuID8gdGhpcy5jbG9zZUFjY29yZGlvbkl0ZW0obiwgaSkgOiB0aGlzLnByZXBhcmVPcGVuQW5pbWF0aW9uKG4sIGksIHIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYW5pbWF0ZUl0ZW0oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgZS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwogICAgICAgICAgICAgICAgbGV0IHIgPSB0aGlzLmFuaW1hdGlvbnMuZ2V0KGUpOwogICAgICAgICAgICAgICAgciAmJiByLmNhbmNlbCgpLAogICAgICAgICAgICAgICAgciA9IGUuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBbdCwgbl0KICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogdGhpcy5nZXRBbmltYXRpb25EdXJhdGlvbigpCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIHIub25maW5pc2ggPSAoKT0+dGhpcy5vbkFuaW1hdGlvbkZpbmlzaChlLCBpKSwKICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0aW9ucy5zZXQoZSwgciksCiAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3IoInN1bW1hcnkiKT8uc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwgaSkKICAgICAgICAgICAgfQogICAgICAgICAgICBjbG9zZUFjY29yZGlvbkl0ZW0oZSwgdCkgewogICAgICAgICAgICAgICAgY29uc3QgbiA9IGAke2Uub2Zmc2V0SGVpZ2h0fXB4YAogICAgICAgICAgICAgICAgICAsIGkgPSBgJHt0Lm9mZnNldEhlaWdodH1weGA7CiAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGVJdGVtKGUsIG4sIGksICExKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHByZXBhcmVPcGVuQW5pbWF0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGUuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIiwKICAgICAgICAgICAgICAgIGUuc3R5bGUuaGVpZ2h0ID0gYCR7ZS5vZmZzZXRIZWlnaHR9cHhgLAogICAgICAgICAgICAgICAgZS5vcGVuID0gITAsCiAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5vcGVuQWNjb3JkaW9uSXRlbShlLCB0LCBuKSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgb3BlbkFjY29yZGlvbkl0ZW0oZSwgdCwgbikgewogICAgICAgICAgICAgICAgY29uc3QgaSA9IGAke2Uub2Zmc2V0SGVpZ2h0fXB4YAogICAgICAgICAgICAgICAgICAsIHIgPSBgJHt0Lm9mZnNldEhlaWdodCArIG4ub2Zmc2V0SGVpZ2h0fXB4YDsKICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZUl0ZW0oZSwgaSwgciwgITApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgb25BbmltYXRpb25GaW5pc2goZSwgdCkgewogICAgICAgICAgICAgICAgZS5vcGVuID0gdCwKICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0aW9ucy5zZXQoZSwgbnVsbCksCiAgICAgICAgICAgICAgICBlLnN0eWxlLmhlaWdodCA9IGUuc3R5bGUub3ZlcmZsb3cgPSAiIgogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsb3NlQWxsSXRlbXMoZSwgdCkgewogICAgICAgICAgICAgICAgdC5lYWNoKCgodCxuKT0+ewogICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VBY2NvcmRpb25JdGVtKGVbdF0sIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldEFuaW1hdGlvbkR1cmF0aW9uKCkgewogICAgICAgICAgICAgICAgY29uc3Qge3NpemU6IGUsIHVuaXQ6IHR9ID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoIm5fYWNjb3JkaW9uX2FuaW1hdGlvbl9kdXJhdGlvbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUgKiAoIm1zIiA9PT0gdCA/IDEgOiAxZTMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gTmVzdGVkQWNjb3JkaW9uCiAgICB9CiAgICAsCiAgICA3MzIzOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigzMjAzKTsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pLAogICAgICAgIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICB2YXIgciA9IGkobigzMDkwKSkKICAgICAgICAgICwgcyA9IG4oNjYzMCk7CiAgICAgICAgY2xhc3MgTmVzdGVkVGFicyBleHRlbmRzIHIuZGVmYXVsdCB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXJOZXN0ZWRUYWJzID0gbnVsbAogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldFRhYlRpdGxlRmlsdGVyU2VsZWN0b3IoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGBbZGF0YS10YWItaW5kZXg9IiR7ZX0iXWAKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRUYWJDb250ZW50RmlsdGVyU2VsZWN0b3IoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGAqOm50aC1jaGlsZCgke2V9KWAKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXRUYWJJbmRleChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImRhdGEtdGFiLWluZGV4IikKICAgICAgICAgICAgfQogICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRDb250YWluZXI6ICIuZS1uLXRhYnMiLAogICAgICAgICAgICAgICAgICAgICAgICB0YWJUaXRsZTogIi5lLW4tdGFiLXRpdGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgdGFiQ29udGVudDogIi5lLW4tdGFicy1jb250ZW50ID4gLmUtY29uIiwKICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZ0NvbnRhaW5lcjogIi5lLW4tdGFicy1oZWFkaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiQ29udGVudENvbnRhaW5lcnM6ICIuZS1jb24uZS1hY3RpdmUiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogImUtYWN0aXZlIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVTdGF0ZUF0dHJpYnV0ZTogImFyaWEtc2VsZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUaXRsZVNlbGVjdG9yOiAnW2FyaWEtc2VsZWN0ZWQ9InRydWUiXScKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNob3dUYWJGbjogInNob3ciLAogICAgICAgICAgICAgICAgICAgIGhpZGVUYWJGbjogImhpZGUiLAogICAgICAgICAgICAgICAgICAgIHRvZ2dsZVNlbGY6ICExLAogICAgICAgICAgICAgICAgICAgIGhpZGVQcmV2aW91czogITAsCiAgICAgICAgICAgICAgICAgICAgYXV0b0V4cGFuZDogITAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIik7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICR0YWJUaXRsZXM6IHRoaXMuZmluZEVsZW1lbnQoZS50YWJUaXRsZSksCiAgICAgICAgICAgICAgICAgICAgJHRhYkNvbnRlbnRzOiB0aGlzLmZpbmRFbGVtZW50KGUudGFiQ29udGVudCksCiAgICAgICAgICAgICAgICAgICAgJGhlYWRpbmdDb250YWluZXI6IHRoaXMuZmluZEVsZW1lbnQoZS5oZWFkaW5nQ29udGFpbmVyKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldEtleWJvYXJkTmF2aWdhdGlvblNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2V0dGluZ3MoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGFjdGl2YXRlRGVmYXVsdFRhYigpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCkKICAgICAgICAgICAgICAgICAgLCB0ID0gdGhpcy5nZXRFZGl0U2V0dGluZ3MoImFjdGl2ZUl0ZW1JbmRleCIpIHx8IDEKICAgICAgICAgICAgICAgICAgLCBuID0gewogICAgICAgICAgICAgICAgICAgIHNob3dUYWJGbjogZS5zaG93VGFiRm4sCiAgICAgICAgICAgICAgICAgICAgaGlkZVRhYkZuOiBlLmhpZGVUYWJGbgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuc2V0U2V0dGluZ3MoewogICAgICAgICAgICAgICAgICAgIHNob3dUYWJGbjogInNob3ciLAogICAgICAgICAgICAgICAgICAgIGhpZGVUYWJGbjogImhpZGUiCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlQWN0aXZlVGFiKHQpLAogICAgICAgICAgICAgICAgdGhpcy5zZXRTZXR0aW5ncyhuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGRlYWN0aXZhdGVBY3RpdmVUYWIoZSkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoKQogICAgICAgICAgICAgICAgICAsIG4gPSB0LmNsYXNzZXMuYWN0aXZlCiAgICAgICAgICAgICAgICAgICwgaSA9IHQuYXJpYUF0dHJpYnV0ZXMuYWN0aXZlVGl0bGVTZWxlY3RvcgogICAgICAgICAgICAgICAgICAsIHIgPSAiLiIgKyBuCiAgICAgICAgICAgICAgICAgICwgcyA9IHRoaXMuZWxlbWVudHMuJHRhYlRpdGxlcy5maWx0ZXIoaSkKICAgICAgICAgICAgICAgICAgLCBvID0gdGhpcy5lbGVtZW50cy4kdGFiQ29udGVudHMuZmlsdGVyKHIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VGFiRGVhY3RpdmF0aW9uQXR0cmlidXRlcyhzLCBlKSwKICAgICAgICAgICAgICAgIG8ucmVtb3ZlQ2xhc3MobiksCiAgICAgICAgICAgICAgICBvW3QuaGlkZVRhYkZuXSgwLCAoKCk9PnRoaXMub25IaWRlVGFiQ29udGVudChvKSkpLAogICAgICAgICAgICAgICAgbwogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldFRpdGxlQWN0aXZhdGlvbkF0dHJpYnV0ZXMoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHRhYmluZGV4OiAiMCIsCiAgICAgICAgICAgICAgICAgICAgW3RoaXMuZ2V0U2V0dGluZ3MoImFyaWFBdHRyaWJ1dGVzIikudGl0bGVTdGF0ZUF0dHJpYnV0ZV06ICJ0cnVlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNldFRhYkRlYWN0aXZhdGlvbkF0dHJpYnV0ZXMoZSkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoImFyaWFBdHRyaWJ1dGVzIikudGl0bGVTdGF0ZUF0dHJpYnV0ZTsKICAgICAgICAgICAgICAgIGUuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg6ICItMSIsCiAgICAgICAgICAgICAgICAgICAgW3RdOiAiZmFsc2UiCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uSGlkZVRhYkNvbnRlbnQoKSB7fQogICAgICAgICAgICBhY3RpdmF0ZVRhYihlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRTZXR0aW5ncygpCiAgICAgICAgICAgICAgICAgICwgbiA9IHQuY2xhc3Nlcy5hY3RpdmUKICAgICAgICAgICAgICAgICAgLCBpID0gInNob3ciID09PSB0LnNob3dUYWJGbiA/IDAgOiA0MDA7CiAgICAgICAgICAgICAgICBsZXQgciA9IHRoaXMuZWxlbWVudHMuJHRhYlRpdGxlcy5maWx0ZXIodGhpcy5nZXRUYWJUaXRsZUZpbHRlclNlbGVjdG9yKGUpKQogICAgICAgICAgICAgICAgICAsIHMgPSB0aGlzLmVsZW1lbnRzLiR0YWJDb250ZW50cy5maWx0ZXIodGhpcy5nZXRUYWJDb250ZW50RmlsdGVyU2VsZWN0b3IoZSkpOwogICAgICAgICAgICAgICAgaWYgKCFyLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBNYXRoLm1heChlIC0gMSwgMSk7CiAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZWxlbWVudHMuJHRhYlRpdGxlcy5maWx0ZXIodGhpcy5nZXRUYWJUaXRsZUZpbHRlclNlbGVjdG9yKHQpKSwKICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5lbGVtZW50cy4kdGFiQ29udGVudHMuZmlsdGVyKHRoaXMuZ2V0VGFiQ29udGVudEZpbHRlclNlbGVjdG9yKHQpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgci5hdHRyKHRoaXMuZ2V0VGl0bGVBY3RpdmF0aW9uQXR0cmlidXRlcygpKSwKICAgICAgICAgICAgICAgIHMuYWRkQ2xhc3MobiksCiAgICAgICAgICAgICAgICBzW3Quc2hvd1RhYkZuXShpLCAoKCk9PnRoaXMub25TaG93VGFiQ29udGVudChzKSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgb25TaG93VGFiQ29udGVudChlKSB7CiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93LnRyaWdnZXIoImVsZW1lbnRvci1wcm8vbW90aW9uLWZ4L3JlY2FsYyIpLAogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJHdpbmRvdy50cmlnZ2VyKCJlbGVtZW50b3IvbmVzdGVkLXRhYnMvYWN0aXZhdGUiLCBlKSwKICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cudHJpZ2dlcigiZWxlbWVudG9yL2JnLXZpZGVvL3JlY2FsYyIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaXNBY3RpdmVUYWIoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJ0cnVlIiA9PT0gdGhpcy5lbGVtZW50cy4kdGFiVGl0bGVzLmZpbHRlcignW2RhdGEtdGFiLWluZGV4PSInICsgZSArICciXScpLmF0dHIodGhpcy5nZXRTZXR0aW5ncygiYXJpYUF0dHJpYnV0ZXMiKS50aXRsZVN0YXRlQXR0cmlidXRlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uVGFiQ2xpY2soZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpLAogICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VBY3RpdmVUYWIoZS5jdXJyZW50VGFyZ2V0Py5nZXRBdHRyaWJ1dGUoImRhdGEtdGFiLWluZGV4IiksICEwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGdldFRhYkV2ZW50cygpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgY2xpY2s6IHRoaXMub25UYWJDbGljay5iaW5kKHRoaXMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0SGVhZGluZ0V2ZW50cygpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmVsZW1lbnRzLiRoZWFkaW5nQ29udGFpbmVyWzBdOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBtb3VzZWRvd246IHMuY2hhbmdlU2Nyb2xsU3RhdHVzLmJpbmQodGhpcywgZSksCiAgICAgICAgICAgICAgICAgICAgbW91c2V1cDogcy5jaGFuZ2VTY3JvbGxTdGF0dXMuYmluZCh0aGlzLCBlKSwKICAgICAgICAgICAgICAgICAgICBtb3VzZWxlYXZlOiBzLmNoYW5nZVNjcm9sbFN0YXR1cy5iaW5kKHRoaXMsIGUpLAogICAgICAgICAgICAgICAgICAgIG1vdXNlbW92ZTogcy5zZXRIb3Jpem9udGFsVGl0bGVTY3JvbGxWYWx1ZXMuYmluZCh0aGlzLCBlLCB0aGlzLmdldEhvcml6b250YWxTY3JvbGxTZXR0aW5nKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJHRhYlRpdGxlcy5vbih0aGlzLmdldFRhYkV2ZW50cygpKSwKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGhlYWRpbmdDb250YWluZXIub24odGhpcy5nZXRIZWFkaW5nRXZlbnRzKCkpOwogICAgICAgICAgICAgICAgY29uc3QgZSA9IHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzLmVsZW1lbnRzLiRoZWFkaW5nQ29udGFpbmVyWzBdLAogICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5nZXRUYWJzRGlyZWN0aW9uKCksCiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNTU1ZhcmlhYmxlOiAiLS1uLXRhYnMtaGVhZGluZy1qdXN0aWZ5LWNvbnRlbnQiLAogICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxTY3JvbGxTdGF0dXM6IHRoaXMuZ2V0SG9yaXpvbnRhbFNjcm9sbFNldHRpbmcoKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXJOZXN0ZWRUYWJzID0gcy5zZXRIb3Jpem9udGFsU2Nyb2xsQWxpZ25tZW50LmJpbmQodGhpcywgZSksCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9uKCJyZXNpemUiLCB0aGlzLnJlc2l6ZUxpc3RlbmVyTmVzdGVkVGFicyksCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9uKCJyZXNpemUiLCB0aGlzLnNldFRvdWNoTW9kZS5iaW5kKHRoaXMpKSwKICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub24oImVsZW1lbnRvci9uZXN0ZWQtdGFicy9hY3RpdmF0ZSIsIHRoaXMucmVJbml0U3dpcGVycyksCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9uKCJlbGVtZW50b3IvbmVzdGVkLWVsZW1lbnRzL2FjdGl2YXRlLWJ5LWtleWJvYXJkIiwgdGhpcy5jaGFuZ2VBY3RpdmVUYWJCeUtleWJvYXJkLmJpbmQodGhpcykpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5iaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kdGFiVGl0bGVzLm9mZigpLAogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kaGVhZGluZ0NvbnRhaW5lci5vZmYoKSwKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJHRhYkNvbnRlbnRzLmNoaWxkcmVuKCkub2ZmKCksCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9mZigicmVzaXplIiksCiAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9mZigiZWxlbWVudG9yL25lc3RlZC10YWJzL2FjdGl2YXRlIikKICAgICAgICAgICAgfQogICAgICAgICAgICByZUluaXRTd2lwZXJzKGUsIHQpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke2VsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5zd2lwZXJDbGFzc31gKTsKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlLnN3aXBlcikKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGUuc3dpcGVyLmluaXRpYWxpemVkID0gITEsCiAgICAgICAgICAgICAgICAgICAgZS5zd2lwZXIuaW5pdCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICB0aGlzLmdldFNldHRpbmdzKCJhdXRvRXhwYW5kIikgJiYgdGhpcy5hY3RpdmF0ZURlZmF1bHRUYWIoKTsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5lbGVtZW50cy4kaGVhZGluZ0NvbnRhaW5lclswXSwKICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMuZ2V0VGFic0RpcmVjdGlvbigpLAogICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDU1NWYXJpYWJsZTogIi0tbi10YWJzLWhlYWRpbmctanVzdGlmeS1jb250ZW50IiwKICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsU3RhdHVzOiB0aGlzLmdldEhvcml6b250YWxTY3JvbGxTZXR0aW5nKCkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAoMCwKICAgICAgICAgICAgICAgIHMuc2V0SG9yaXpvbnRhbFNjcm9sbEFsaWdubWVudCkoZSksCiAgICAgICAgICAgICAgICB0aGlzLnNldFRvdWNoTW9kZSgpLAogICAgICAgICAgICAgICAgIm5lc3RlZC10YWJzLmRlZmF1bHQiID09PSB0aGlzLmdldFNldHRpbmdzKCJlbGVtZW50TmFtZSIpICYmIG5ldyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLk5lc3RlZFRpdGxlS2V5Ym9hcmRIYW5kbGVyKHRoaXMuZ2V0S2V5Ym9hcmROYXZpZ2F0aW9uU2V0dGluZ3MoKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBvbkVkaXRTZXR0aW5nc0NoYW5nZShlLCB0KSB7CiAgICAgICAgICAgICAgICAiYWN0aXZlSXRlbUluZGV4IiA9PT0gZSAmJiB0aGlzLmNoYW5nZUFjdGl2ZVRhYih0LCAhMSkKICAgICAgICAgICAgfQogICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2UoZSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tTbGlkZXJQcm9wc1RvV2F0Y2goZSkpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzLmVsZW1lbnRzLiRoZWFkaW5nQ29udGFpbmVyWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMuZ2V0VGFic0RpcmVjdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q1NTVmFyaWFibGU6ICItLW4tdGFicy1oZWFkaW5nLWp1c3RpZnktY29udGVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxTY3JvbGxTdGF0dXM6IHRoaXMuZ2V0SG9yaXpvbnRhbFNjcm9sbFNldHRpbmcoKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgKDAsCiAgICAgICAgICAgICAgICAgICAgcy5zZXRIb3Jpem9udGFsU2Nyb2xsQWxpZ25tZW50KShlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNoZWNrU2xpZGVyUHJvcHNUb1dhdGNoKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBlLmluZGV4T2YoImhvcml6b250YWxfc2Nyb2xsIikgfHwgImJyZWFrcG9pbnRfc2VsZWN0b3IiID09PSBlIHx8IDAgPT09IGUuaW5kZXhPZigidGFic19qdXN0aWZ5X2hvcml6b250YWwiKSB8fCAwID09PSBlLmluZGV4T2YoInRhYnNfdGl0bGVfc3BhY2VfYmV0d2VlbiIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2hhbmdlQWN0aXZlVGFiKGUpIHsKICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSAmJiBhcmd1bWVudHNbMV0gJiYgdGhpcy5pc0VkaXQgJiYgdGhpcy5pc0VsZW1lbnRJblRoZUN1cnJlbnREb2N1bWVudCgpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cudG9wLiRlLnJ1bigiZG9jdW1lbnQvcmVwZWF0ZXIvc2VsZWN0IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IGVsZW1lbnRvci5nZXRDb250YWluZXIodGhpcy4kZWxlbWVudC5hdHRyKCJkYXRhLWlkIikpLAogICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogcGFyc2VJbnQoZSkKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmlzQWN0aXZlVGFiKGUpCiAgICAgICAgICAgICAgICAgICwgbiA9IHRoaXMuZ2V0U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgIGlmICghbi50b2dnbGVTZWxmICYmIHQgfHwgIW4uaGlkZVByZXZpb3VzIHx8IHRoaXMuZGVhY3RpdmF0ZUFjdGl2ZVRhYihlKSwKICAgICAgICAgICAgICAgICFuLmhpZGVQcmV2aW91cyAmJiB0ICYmIHRoaXMuZGVhY3RpdmF0ZUFjdGl2ZVRhYihlKSwKICAgICAgICAgICAgICAgICF0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBY2NvcmRpb25WZXJzaW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIHRoaXMuYWN0aXZhdGVNb2JpbGVUYWIoZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZVRhYihlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNoYW5nZUFjdGl2ZVRhYkJ5S2V5Ym9hcmQoZSwgdCkgewogICAgICAgICAgICAgICAgdC53aWRnZXRJZC50b1N0cmluZygpID09PSB0aGlzLmdldElEKCkudG9TdHJpbmcoKSAmJiB0aGlzLmNoYW5nZUFjdGl2ZVRhYih0LnRpdGxlSW5kZXgsICEwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGFjdGl2YXRlTW9iaWxlVGFiKGUpIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCgpPT57CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZVRhYihlKSwKICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcmNlQWN0aXZlVGFiVG9CZUluVmlld3BvcnQoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICksIDEwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcmNlQWN0aXZlVGFiVG9CZUluVmlld3BvcnQoZSkgewogICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZWxlbWVudHMuJHRhYlRpdGxlcy5maWx0ZXIodGhpcy5nZXRUYWJUaXRsZUZpbHRlclNlbGVjdG9yKGUpKTsKICAgICAgICAgICAgICAgIGVsZW1lbnRvci5oZWxwZXJzLmlzSW5WaWV3cG9ydCh0WzBdKSB8fCB0WzBdLnNjcm9sbEludG9WaWV3KHsKICAgICAgICAgICAgICAgICAgICBibG9jazogImNlbnRlciIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0QWN0aXZlQ2xhc3MoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZXR0aW5ncygpLmNsYXNzZXMuYWN0aXZlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0VGFic0RpcmVjdGlvbigpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBlbGVtZW50b3JGcm9udGVuZC5nZXRDdXJyZW50RGV2aWNlTW9kZSgpOwogICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLmNvbnRyb2xzLmdldFJlc3BvbnNpdmVDb250cm9sVmFsdWUodGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwgInRhYnNfanVzdGlmeV9ob3Jpem9udGFsIiwgIiIsIGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ2V0SG9yaXpvbnRhbFNjcm9sbFNldHRpbmcoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKTsKICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JGcm9udGVuZC51dGlscy5jb250cm9scy5nZXRSZXNwb25zaXZlQ29udHJvbFZhbHVlKHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksICJob3Jpem9udGFsX3Njcm9sbCIsICIiLCBlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzQWNjb3JkaW9uVmVyc2lvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiY29udGVudHMiID09PSB0aGlzLmVsZW1lbnRzLiRoZWFkaW5nQ29udGFpbmVyLmNzcygiZGlzcGxheSIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0VG91Y2hNb2RlKCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLndpZGdldENvbnRhaW5lcjsKICAgICAgICAgICAgICAgIGlmIChlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgfHwgInJlc2l6ZSIgPT09IGV2ZW50Py50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IFsibW9iaWxlIiwgIm1vYmlsZV9leHRyYSIsICJ0YWJsZXQiLCAidGFibGV0X2V4dHJhIl0KICAgICAgICAgICAgICAgICAgICAgICwgbiA9IGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VNb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKC0xICE9PSB0LmluZGV4T2YobikpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIHRoaXMuJGVsZW1lbnQuZmluZChlKS5hdHRyKCJkYXRhLXRvdWNoLW1vZGUiLCAidHJ1ZSIpCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCJvbnRvdWNoc3RhcnQiaW4gd2luZG93KQogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIHRoaXMuJGVsZW1lbnQuZmluZChlKS5hdHRyKCJkYXRhLXRvdWNoLW1vZGUiLCAidHJ1ZSIpOwogICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKGUpLmF0dHIoImRhdGEtdG91Y2gtbW9kZSIsICJmYWxzZSIpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdC5kZWZhdWx0ID0gTmVzdGVkVGFicwogICAgfQogICAgLAogICAgNTA4OTogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oOTMwKQogICAgICAgICAgLCByID0gbig5MjY4KQogICAgICAgICAgLCBzID0gVHlwZUVycm9yOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKGkoZSkpCiAgICAgICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgICAgdGhyb3cgcyhyKGUpICsgIiBpcyBub3QgYSBmdW5jdGlvbiIpCiAgICAgICAgfQogICAgfQogICAgLAogICAgMTM3ODogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oOTMwKQogICAgICAgICAgLCByID0gU3RyaW5nCiAgICAgICAgICAsIHMgPSBUeXBlRXJyb3I7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUgfHwgaShlKSkKICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICB0aHJvdyBzKCJDYW4ndCBzZXQgIiArIHIoZSkgKyAiIGFzIGEgcHJvdG90eXBlIikKICAgICAgICB9CiAgICB9CiAgICAsCiAgICA2MTEyOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig4NzU5KQogICAgICAgICAgLCByID0gU3RyaW5nCiAgICAgICAgICAsIHMgPSBUeXBlRXJyb3I7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoaShlKSkKICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICB0aHJvdyBzKHIoZSkgKyAiIGlzIG5vdCBhbiBvYmplY3QiKQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDYxOTg6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDQwODgpCiAgICAgICAgICAsIHIgPSBuKDc3NDApCiAgICAgICAgICAsIHMgPSBuKDI4NzEpCiAgICAgICAgICAsIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIG8pIHsKICAgICAgICAgICAgICAgIHZhciBhLCBsID0gaSh0KSwgYyA9IHMobCksIHUgPSByKG8sIGMpOwogICAgICAgICAgICAgICAgaWYgKGUgJiYgbiAhPSBuKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGMgPiB1OyApCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSA9IGxbdSsrXSkgIT0gYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGMgPiB1OyB1KyspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZSB8fCB1IGluIGwpICYmIGxbdV0gPT09IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSB8fCB1IHx8IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gIWUgJiYgLTEKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgZS5leHBvcnRzID0gewogICAgICAgICAgICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKCEwKSwKICAgICAgICAgICAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKCExKQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDIzMDY6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDgyNDApCiAgICAgICAgICAsIHIgPSBpKHt9LnRvU3RyaW5nKQogICAgICAgICAgLCBzID0gaSgiIi5zbGljZSk7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gcyhyKGUpLCA4LCAtMSkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICAzNzU6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDIzNzEpCiAgICAgICAgICAsIHIgPSBuKDkzMCkKICAgICAgICAgICwgcyA9IG4oMjMwNikKICAgICAgICAgICwgbyA9IG4oMjExKSgidG9TdHJpbmdUYWciKQogICAgICAgICAgLCBhID0gT2JqZWN0CiAgICAgICAgICAsIGwgPSAiQXJndW1lbnRzIiA9PSBzKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzCiAgICAgICAgfSgpKTsKICAgICAgICBlLmV4cG9ydHMgPSBpID8gcyA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIGk7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgPyAiVW5kZWZpbmVkIiA6IG51bGwgPT09IGUgPyAiTnVsbCIgOiAic3RyaW5nIiA9PSB0eXBlb2YgKG4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlW3RdCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICB9KHQgPSBhKGUpLCBvKSkgPyBuIDogbCA/IHModCkgOiAiT2JqZWN0IiA9PSAoaSA9IHModCkpICYmIHIodC5jYWxsZWUpID8gIkFyZ3VtZW50cyIgOiBpCiAgICAgICAgfQogICAgfQogICAgLAogICAgODQ3NDogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oOTYwNikKICAgICAgICAgICwgciA9IG4oNjA5NSkKICAgICAgICAgICwgcyA9IG4oNDM5OSkKICAgICAgICAgICwgbyA9IG4oNzgyNik7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICBmb3IgKHZhciBhID0gcih0KSwgbCA9IG8uZiwgYyA9IHMuZiwgdSA9IDA7IHUgPCBhLmxlbmd0aDsgdSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGFbdV07CiAgICAgICAgICAgICAgICBpKGUsIGQpIHx8IG4gJiYgaShuLCBkKSB8fCBsKGUsIGQsIGModCwgZCkpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAsCiAgICAyNTg1OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig1MjgzKQogICAgICAgICAgLCByID0gbig3ODI2KQogICAgICAgICAgLCBzID0gbig1NzM2KTsKICAgICAgICBlLmV4cG9ydHMgPSBpID8gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gci5mKGUsIHQsIHMoMSwgbikpCiAgICAgICAgfQogICAgICAgIDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gZVt0XSA9IG4sCiAgICAgICAgICAgIGUKICAgICAgICB9CiAgICB9CiAgICAsCiAgICA1NzM2OiBlPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEoMSAmIGUpLAogICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhKDIgJiBlKSwKICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhKDQgJiBlKSwKICAgICAgICAgICAgICAgIHZhbHVlOiB0CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAsCiAgICAxMzQzOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig5MzApCiAgICAgICAgICAsIHIgPSBuKDc4MjYpCiAgICAgICAgICAsIHMgPSBuKDM3MTIpCiAgICAgICAgICAsIG8gPSBuKDk0NDQpOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4sIGEpIHsKICAgICAgICAgICAgYSB8fCAoYSA9IHt9KTsKICAgICAgICAgICAgdmFyIGwgPSBhLmVudW1lcmFibGUKICAgICAgICAgICAgICAsIGMgPSB2b2lkIDAgIT09IGEubmFtZSA/IGEubmFtZSA6IHQ7CiAgICAgICAgICAgIGlmIChpKG4pICYmIHMobiwgYywgYSksCiAgICAgICAgICAgIGEuZ2xvYmFsKQogICAgICAgICAgICAgICAgbCA/IGVbdF0gPSBuIDogbyh0LCBuKTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGEudW5zYWZlID8gZVt0XSAmJiAobCA9ICEwKSA6IGRlbGV0ZSBlW3RdCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgbCA/IGVbdF0gPSBuIDogci5mKGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICFhLm5vbkNvbmZpZ3VyYWJsZSwKICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogIWEubm9uV3JpdGFibGUKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9CiAgICB9CiAgICAsCiAgICA5NDQ0OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigyMDg2KQogICAgICAgICAgLCByID0gT2JqZWN0LmRlZmluZVByb3BlcnR5OwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHIoaSwgZSwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0LAogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICBpW2VdID0gdAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQogICAgfQogICAgLAogICAgNTI4MzogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMzY3Nyk7CiAgICAgICAgZS5leHBvcnRzID0gIWkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gNyAhPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSlbMV0KICAgICAgICB9CiAgICAgICAgKSkKICAgIH0KICAgICwKICAgIDc4ODY6IGU9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIHQgPSAib2JqZWN0IiA9PSB0eXBlb2YgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsCiAgICAgICAgICAsIG4gPSB2b2lkIDAgPT09IHQgJiYgdm9pZCAwICE9PSB0OwogICAgICAgIGUuZXhwb3J0cyA9IHsKICAgICAgICAgICAgYWxsOiB0LAogICAgICAgICAgICBJU19IVE1MRERBOiBuCiAgICAgICAgfQogICAgfQogICAgLAogICAgODIxOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigyMDg2KQogICAgICAgICAgLCByID0gbig4NzU5KQogICAgICAgICAgLCBzID0gaS5kb2N1bWVudAogICAgICAgICAgLCBvID0gcihzKSAmJiByKHMuY3JlYXRlRWxlbWVudCk7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbyA/IHMuY3JlYXRlRWxlbWVudChlKSA6IHt9CiAgICAgICAgfQogICAgfQogICAgLAogICAgNDk5OTogZT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICBlLmV4cG9ydHMgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbmF2aWdhdG9yICYmIFN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAiIgogICAgfQogICAgLAogICAgMTQ0ODogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSwgciwgcyA9IG4oMjA4NiksIG8gPSBuKDQ5OTkpLCBhID0gcy5wcm9jZXNzLCBsID0gcy5EZW5vLCBjID0gYSAmJiBhLnZlcnNpb25zIHx8IGwgJiYgbC52ZXJzaW9uLCB1ID0gYyAmJiBjLnY4OwogICAgICAgIHUgJiYgKHIgPSAoaSA9IHUuc3BsaXQoIi4iKSlbMF0gPiAwICYmIGlbMF0gPCA0ID8gMSA6ICsoaVswXSArIGlbMV0pKSwKICAgICAgICAhciAmJiBvICYmICghKGkgPSBvLm1hdGNoKC9FZGdlXC8oXGQrKS8pKSB8fCBpWzFdID49IDc0KSAmJiAoaSA9IG8ubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkgJiYgKHIgPSAraVsxXSksCiAgICAgICAgZS5leHBvcnRzID0gcgogICAgfQogICAgLAogICAgODY4NDogZT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICBlLmV4cG9ydHMgPSBbImNvbnN0cnVjdG9yIiwgImhhc093blByb3BlcnR5IiwgImlzUHJvdG90eXBlT2YiLCAicHJvcGVydHlJc0VudW1lcmFibGUiLCAidG9Mb2NhbGVTdHJpbmciLCAidG9TdHJpbmciLCAidmFsdWVPZiJdCiAgICB9CiAgICAsCiAgICA3OTogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oODI0MCkKICAgICAgICAgICwgciA9IEVycm9yCiAgICAgICAgICAsIHMgPSBpKCIiLnJlcGxhY2UpCiAgICAgICAgICAsIG8gPSBTdHJpbmcocigienhjYXNkIikuc3RhY2spCiAgICAgICAgICAsIGEgPSAvXG5ccyphdCBbXjpdKjpbXlxuXSovCiAgICAgICAgICAsIGwgPSBhLnRlc3Qobyk7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBpZiAobCAmJiAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiAhci5wcmVwYXJlU3RhY2tUcmFjZSkKICAgICAgICAgICAgICAgIGZvciAoOyB0LS07ICkKICAgICAgICAgICAgICAgICAgICBlID0gcyhlLCBhLCAiIik7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfQogICAgfQogICAgLAogICAgODM5NTogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMjU4NSkKICAgICAgICAgICwgciA9IG4oNzkpCiAgICAgICAgICAsIHMgPSBuKDIxMTQpCiAgICAgICAgICAsIG8gPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuLCBhKSB7CiAgICAgICAgICAgIHMgJiYgKG8gPyBvKGUsIHQpIDogaShlLCAic3RhY2siLCByKG4sIGEpKSkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICAyMTE0OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigzNjc3KQogICAgICAgICAgLCByID0gbig1NzM2KTsKICAgICAgICBlLmV4cG9ydHMgPSAhaSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gRXJyb3IoImEiKTsKICAgICAgICAgICAgcmV0dXJuICEoInN0YWNrImluIGUpIHx8IChPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgInN0YWNrIiwgcigxLCA3KSksCiAgICAgICAgICAgIDcgIT09IGUuc3RhY2spCiAgICAgICAgfQogICAgICAgICkpCiAgICB9CiAgICAsCiAgICAxNjk1OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigyMDg2KQogICAgICAgICAgLCByID0gbig0Mzk5KS5mCiAgICAgICAgICAsIHMgPSBuKDI1ODUpCiAgICAgICAgICAsIG8gPSBuKDEzNDMpCiAgICAgICAgICAsIGEgPSBuKDk0NDQpCiAgICAgICAgICAsIGwgPSBuKDg0NzQpCiAgICAgICAgICAsIGMgPSBuKDcxODkpOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4sIHUsIGQsIGgsIGcsIHAgPSBlLnRhcmdldCwgZiA9IGUuZ2xvYmFsLCBtID0gZS5zdGF0OwogICAgICAgICAgICBpZiAobiA9IGYgPyBpIDogbSA/IGlbcF0gfHwgYShwLCB7fSkgOiAoaVtwXSB8fCB7fSkucHJvdG90eXBlKQogICAgICAgICAgICAgICAgZm9yICh1IGluIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IHRbdV0sCiAgICAgICAgICAgICAgICAgICAgZCA9IGUuZG9udENhbGxHZXRTZXQgPyAoZyA9IHIobiwgdSkpICYmIGcudmFsdWUgOiBuW3VdLAogICAgICAgICAgICAgICAgICAgICFjKGYgPyB1IDogcCArIChtID8gIi4iIDogIiMiKSArIHUsIGUuZm9yY2VkKSAmJiB2b2lkIDAgIT09IGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoID09IHR5cGVvZiBkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGwoaCwgZCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKGUuc2hhbSB8fCBkICYmIGQuc2hhbSkgJiYgcyhoLCAic2hhbSIsICEwKSwKICAgICAgICAgICAgICAgICAgICBvKG4sIHUsIGgsIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgLAogICAgMzY3NzogZT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlKCkKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAsCiAgICA3MjU4OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig2MDU5KQogICAgICAgICAgLCByID0gRnVuY3Rpb24ucHJvdG90eXBlCiAgICAgICAgICAsIHMgPSByLmFwcGx5CiAgICAgICAgICAsIG8gPSByLmNhbGw7CiAgICAgICAgZS5leHBvcnRzID0gIm9iamVjdCIgPT0gdHlwZW9mIFJlZmxlY3QgJiYgUmVmbGVjdC5hcHBseSB8fCAoaSA/IG8uYmluZChzKSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gby5hcHBseShzLCBhcmd1bWVudHMpCiAgICAgICAgfQogICAgICAgICkKICAgIH0KICAgICwKICAgIDYwNTk6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDM2NzcpOwogICAgICAgIGUuZXhwb3J0cyA9ICFpKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBmdW5jdGlvbigpIHt9CiAgICAgICAgICAgIC5iaW5kKCk7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iICE9IHR5cGVvZiBlIHx8IGUuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpCiAgICAgICAgfQogICAgICAgICkpCiAgICB9CiAgICAsCiAgICA5NDEzOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig2MDU5KQogICAgICAgICAgLCByID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7CiAgICAgICAgZS5leHBvcnRzID0gaSA/IHIuYmluZChyKSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gci5hcHBseShyLCBhcmd1bWVudHMpCiAgICAgICAgfQogICAgfQogICAgLAogICAgNDM5ODogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oNTI4MykKICAgICAgICAgICwgciA9IG4oOTYwNikKICAgICAgICAgICwgcyA9IEZ1bmN0aW9uLnByb3RvdHlwZQogICAgICAgICAgLCBvID0gaSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCiAgICAgICAgICAsIGEgPSByKHMsICJuYW1lIikKICAgICAgICAgICwgbCA9IGEgJiYgInNvbWV0aGluZyIgPT09IGZ1bmN0aW9uIHNvbWV0aGluZygpIHt9CiAgICAgICAgLm5hbWUKICAgICAgICAgICwgYyA9IGEgJiYgKCFpIHx8IGkgJiYgbyhzLCAibmFtZSIpLmNvbmZpZ3VyYWJsZSk7CiAgICAgICAgZS5leHBvcnRzID0gewogICAgICAgICAgICBFWElTVFM6IGEsCiAgICAgICAgICAgIFBST1BFUjogbCwKICAgICAgICAgICAgQ09ORklHVVJBQkxFOiBjCiAgICAgICAgfQogICAgfQogICAgLAogICAgMTUxODogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oODI0MCkKICAgICAgICAgICwgciA9IG4oNTA4OSk7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkocihPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpW25dKSkKICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICB9CiAgICB9CiAgICAsCiAgICA4MjQwOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig2MDU5KQogICAgICAgICAgLCByID0gRnVuY3Rpb24ucHJvdG90eXBlCiAgICAgICAgICAsIHMgPSByLmNhbGwKICAgICAgICAgICwgbyA9IGkgJiYgci5iaW5kLmJpbmQocywgcyk7CiAgICAgICAgZS5leHBvcnRzID0gaSA/IG8gOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzLmFwcGx5KGUsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDU2MzogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMjA4NikKICAgICAgICAgICwgciA9IG4oOTMwKTsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IChuID0gaVtlXSwKICAgICAgICAgICAgcihuKSA/IG4gOiB2b2lkIDApIDogaVtlXSAmJiBpW2VdW3RdOwogICAgICAgICAgICB2YXIgbgogICAgICAgIH0KICAgIH0KICAgICwKICAgIDI5NjQ6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDUwODkpCiAgICAgICAgICAsIHIgPSBuKDE4NTgpOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSBlW3RdOwogICAgICAgICAgICByZXR1cm4gcihuKSA/IHZvaWQgMCA6IGkobikKICAgICAgICB9CiAgICB9CiAgICAsCiAgICAyMDg2OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBjaGVjayA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5NYXRoID09IE1hdGggJiYgZQogICAgICAgIH07CiAgICAgICAgZS5leHBvcnRzID0gY2hlY2soIm9iamVjdCIgPT0gdHlwZW9mIGdsb2JhbFRoaXMgJiYgZ2xvYmFsVGhpcykgfHwgY2hlY2soIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdyAmJiB3aW5kb3cpIHx8IGNoZWNrKCJvYmplY3QiID09IHR5cGVvZiBzZWxmICYmIHNlbGYpIHx8IGNoZWNrKCJvYmplY3QiID09IHR5cGVvZiBuLmcgJiYgbi5nKSB8fCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9KCkgfHwgdGhpcyB8fCBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpCiAgICB9LAogICAgOTYwNjogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oODI0MCkKICAgICAgICAgICwgciA9IG4oMzA2MCkKICAgICAgICAgICwgcyA9IGkoe30uaGFzT3duUHJvcGVydHkpOwogICAgICAgIGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHMocihlKSwgdCkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICA3MTUzOiBlPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIGUuZXhwb3J0cyA9IHt9CiAgICB9CiAgICAsCiAgICA2NzYxOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig1MjgzKQogICAgICAgICAgLCByID0gbigzNjc3KQogICAgICAgICAgLCBzID0gbig4MjEpOwogICAgICAgIGUuZXhwb3J0cyA9ICFpICYmICFyKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIDcgIT0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHMoImRpdiIpLCAiYSIsIHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuYQogICAgICAgIH0KICAgICAgICApKQogICAgfQogICAgLAogICAgNTk3NDogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oODI0MCkKICAgICAgICAgICwgciA9IG4oMzY3NykKICAgICAgICAgICwgcyA9IG4oMjMwNikKICAgICAgICAgICwgbyA9IE9iamVjdAogICAgICAgICAgLCBhID0gaSgiIi5zcGxpdCk7CiAgICAgICAgZS5leHBvcnRzID0gcigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAhbygieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApCiAgICAgICAgfQogICAgICAgICkpID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gIlN0cmluZyIgPT0gcyhlKSA/IGEoZSwgIiIpIDogbyhlKQogICAgICAgIH0KICAgICAgICA6IG8KICAgIH0KICAgICwKICAgIDUwNzA6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDkzMCkKICAgICAgICAgICwgciA9IG4oODc1OSkKICAgICAgICAgICwgcyA9IG4oNzUzMCk7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgbywgYTsKICAgICAgICAgICAgcmV0dXJuIHMgJiYgaShvID0gdC5jb25zdHJ1Y3RvcikgJiYgbyAhPT0gbiAmJiByKGEgPSBvLnByb3RvdHlwZSkgJiYgYSAhPT0gbi5wcm90b3R5cGUgJiYgcyhlLCBhKSwKICAgICAgICAgICAgZQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDkyNzc6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDgyNDApCiAgICAgICAgICAsIHIgPSBuKDkzMCkKICAgICAgICAgICwgcyA9IG4oNDQ4OSkKICAgICAgICAgICwgbyA9IGkoRnVuY3Rpb24udG9TdHJpbmcpOwogICAgICAgIHIocy5pbnNwZWN0U291cmNlKSB8fCAocy5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbyhlKQogICAgICAgIH0KICAgICAgICApLAogICAgICAgIGUuZXhwb3J0cyA9IHMuaW5zcGVjdFNvdXJjZQogICAgfQogICAgLAogICAgODk0NTogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oODc1OSkKICAgICAgICAgICwgciA9IG4oMjU4NSk7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBpKHQpICYmICJjYXVzZSJpbiB0ICYmIHIoZSwgImNhdXNlIiwgdC5jYXVzZSkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICAzMjc4OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpLCByLCBzLCBvID0gbig2NDApLCBhID0gbigyMDg2KSwgbCA9IG4oODc1OSksIGMgPSBuKDI1ODUpLCB1ID0gbig5NjA2KSwgZCA9IG4oNDQ4OSksIGggPSBuKDg5NDQpLCBnID0gbig3MTUzKSwgcCA9ICJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIsIGYgPSBhLlR5cGVFcnJvciwgbSA9IGEuV2Vha01hcDsKICAgICAgICBpZiAobyB8fCBkLnN0YXRlKSB7CiAgICAgICAgICAgIHZhciB2ID0gZC5zdGF0ZSB8fCAoZC5zdGF0ZSA9IG5ldyBtKTsKICAgICAgICAgICAgdi5nZXQgPSB2LmdldCwKICAgICAgICAgICAgdi5oYXMgPSB2LmhhcywKICAgICAgICAgICAgdi5zZXQgPSB2LnNldCwKICAgICAgICAgICAgaSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGlmICh2LmhhcyhlKSkKICAgICAgICAgICAgICAgICAgICB0aHJvdyBmKHApOwogICAgICAgICAgICAgICAgcmV0dXJuIHQuZmFjYWRlID0gZSwKICAgICAgICAgICAgICAgIHYuc2V0KGUsIHQpLAogICAgICAgICAgICAgICAgdAogICAgICAgICAgICB9CiAgICAgICAgICAgICwKICAgICAgICAgICAgciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB2LmdldChlKSB8fCB7fQogICAgICAgICAgICB9CiAgICAgICAgICAgICwKICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB2LmhhcyhlKQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIGIgPSBoKCJzdGF0ZSIpOwogICAgICAgICAgICBnW2JdID0gITAsCiAgICAgICAgICAgIGkgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAodShlLCBiKSkKICAgICAgICAgICAgICAgICAgICB0aHJvdyBmKHApOwogICAgICAgICAgICAgICAgcmV0dXJuIHQuZmFjYWRlID0gZSwKICAgICAgICAgICAgICAgIGMoZSwgYiwgdCksCiAgICAgICAgICAgICAgICB0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLAogICAgICAgICAgICByID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHUoZSwgYikgPyBlW2JdIDoge30KICAgICAgICAgICAgfQogICAgICAgICAgICAsCiAgICAgICAgICAgIHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdShlLCBiKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGUuZXhwb3J0cyA9IHsKICAgICAgICAgICAgc2V0OiBpLAogICAgICAgICAgICBnZXQ6IHIsCiAgICAgICAgICAgIGhhczogcywKICAgICAgICAgICAgZW5mb3JjZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHMoZSkgPyByKGUpIDogaShlLCB7fSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0dGVyRm9yOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICAgICAgICAgIGlmICghbCh0KSB8fCAobiA9IHIodCkpLnR5cGUgIT09IGUpCiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGYoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIiArIGUgKyAiIHJlcXVpcmVkIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDkzMDogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oNzg4NikKICAgICAgICAgICwgciA9IGkuYWxsOwogICAgICAgIGUuZXhwb3J0cyA9IGkuSVNfSFRNTEREQSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgfHwgZSA9PT0gcgogICAgICAgIH0KICAgICAgICA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUKICAgICAgICB9CiAgICB9CiAgICAsCiAgICA3MTg5OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigzNjc3KQogICAgICAgICAgLCByID0gbig5MzApCiAgICAgICAgICAsIHMgPSAvI3xcLnByb3RvdHlwZVwuLwogICAgICAgICAgLCBpc0ZvcmNlZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSBhW28oZSldOwogICAgICAgICAgICByZXR1cm4gbiA9PSBjIHx8IG4gIT0gbCAmJiAocih0KSA/IGkodCkgOiAhIXQpCiAgICAgICAgfQogICAgICAgICAgLCBvID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UocywgIi4iKS50b0xvd2VyQ2FzZSgpCiAgICAgICAgfQogICAgICAgICAgLCBhID0gaXNGb3JjZWQuZGF0YSA9IHt9CiAgICAgICAgICAsIGwgPSBpc0ZvcmNlZC5OQVRJVkUgPSAiTiIKICAgICAgICAgICwgYyA9IGlzRm9yY2VkLlBPTFlGSUxMID0gIlAiOwogICAgICAgIGUuZXhwb3J0cyA9IGlzRm9yY2VkCiAgICB9CiAgICAsCiAgICAxODU4OiBlPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDg3NTk6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDkzMCkKICAgICAgICAgICwgciA9IG4oNzg4NikKICAgICAgICAgICwgcyA9IHIuYWxsOwogICAgICAgIGUuZXhwb3J0cyA9IHIuSVNfSFRNTEREQSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlID8gbnVsbCAhPT0gZSA6IGkoZSkgfHwgZSA9PT0gcwogICAgICAgIH0KICAgICAgICA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlID8gbnVsbCAhPT0gZSA6IGkoZSkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICAzMjk2OiBlPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIGUuZXhwb3J0cyA9ICExCiAgICB9CiAgICAsCiAgICAyMDcxOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig1NjMpCiAgICAgICAgICAsIHIgPSBuKDkzMCkKICAgICAgICAgICwgcyA9IG4oNTUxNikKICAgICAgICAgICwgbyA9IG4oMTg3NikKICAgICAgICAgICwgYSA9IE9iamVjdDsKICAgICAgICBlLmV4cG9ydHMgPSBvID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gInN5bWJvbCIgPT0gdHlwZW9mIGUKICAgICAgICB9CiAgICAgICAgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gaSgiU3ltYm9sIik7CiAgICAgICAgICAgIHJldHVybiByKHQpICYmIHModC5wcm90b3R5cGUsIGEoZSkpCiAgICAgICAgfQogICAgfQogICAgLAogICAgMjg3MTogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oNDAwNSk7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gaShlLmxlbmd0aCkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICAzNzEyOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig4MjQwKQogICAgICAgICAgLCByID0gbigzNjc3KQogICAgICAgICAgLCBzID0gbig5MzApCiAgICAgICAgICAsIG8gPSBuKDk2MDYpCiAgICAgICAgICAsIGEgPSBuKDUyODMpCiAgICAgICAgICAsIGwgPSBuKDQzOTgpLkNPTkZJR1VSQUJMRQogICAgICAgICAgLCBjID0gbig5Mjc3KQogICAgICAgICAgLCB1ID0gbigzMjc4KQogICAgICAgICAgLCBkID0gdS5lbmZvcmNlCiAgICAgICAgICAsIGggPSB1LmdldAogICAgICAgICAgLCBnID0gU3RyaW5nCiAgICAgICAgICAsIHAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkKICAgICAgICAgICwgZiA9IGkoIiIuc2xpY2UpCiAgICAgICAgICAsIG0gPSBpKCIiLnJlcGxhY2UpCiAgICAgICAgICAsIHYgPSBpKFtdLmpvaW4pCiAgICAgICAgICAsIGIgPSBhICYmICFyKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIDggIT09IHAoKGZ1bmN0aW9uKCkge30KICAgICAgICAgICAgKSwgImxlbmd0aCIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiA4CiAgICAgICAgICAgIH0pLmxlbmd0aAogICAgICAgIH0KICAgICAgICApKQogICAgICAgICAgLCB5ID0gU3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpCiAgICAgICAgICAsIFMgPSBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICJTeW1ib2woIiA9PT0gZihnKHQpLCAwLCA3KSAmJiAodCA9ICJbIiArIG0oZyh0KSwgL15TeW1ib2xcKChbXildKilcKS8sICIkMSIpICsgIl0iKSwKICAgICAgICAgICAgbiAmJiBuLmdldHRlciAmJiAodCA9ICJnZXQgIiArIHQpLAogICAgICAgICAgICBuICYmIG4uc2V0dGVyICYmICh0ID0gInNldCAiICsgdCksCiAgICAgICAgICAgICghbyhlLCAibmFtZSIpIHx8IGwgJiYgZS5uYW1lICE9PSB0KSAmJiAoYSA/IHAoZSwgIm5hbWUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogdCwKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgfSkgOiBlLm5hbWUgPSB0KSwKICAgICAgICAgICAgYiAmJiBuICYmIG8obiwgImFyaXR5IikgJiYgZS5sZW5ndGggIT09IG4uYXJpdHkgJiYgcChlLCAibGVuZ3RoIiwgewogICAgICAgICAgICAgICAgdmFsdWU6IG4uYXJpdHkKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBuICYmIG8obiwgImNvbnN0cnVjdG9yIikgJiYgbi5jb25zdHJ1Y3RvciA/IGEgJiYgcChlLCAicHJvdG90eXBlIiwgewogICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMQogICAgICAgICAgICAgICAgfSkgOiBlLnByb3RvdHlwZSAmJiAoZS5wcm90b3R5cGUgPSB2b2lkIDApCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIHZhciBpID0gZChlKTsKICAgICAgICAgICAgcmV0dXJuIG8oaSwgInNvdXJjZSIpIHx8IChpLnNvdXJjZSA9IHYoeSwgInN0cmluZyIgPT0gdHlwZW9mIHQgPyB0IDogIiIpKSwKICAgICAgICAgICAgZQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gUygoZnVuY3Rpb24gdG9TdHJpbmcoKSB7CiAgICAgICAgICAgIHJldHVybiBzKHRoaXMpICYmIGgodGhpcykuc291cmNlIHx8IGModGhpcykKICAgICAgICB9CiAgICAgICAgKSwgInRvU3RyaW5nIikKICAgIH0KICAgICwKICAgIDU2ODE6IGU9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIHQgPSBNYXRoLmNlaWwKICAgICAgICAgICwgbiA9IE1hdGguZmxvb3I7CiAgICAgICAgZS5leHBvcnRzID0gTWF0aC50cnVuYyB8fCBmdW5jdGlvbiB0cnVuYyhlKSB7CiAgICAgICAgICAgIHZhciBpID0gK2U7CiAgICAgICAgICAgIHJldHVybiAoaSA+IDAgPyBuIDogdCkoaSkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICAxODc5OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig0MDU5KTsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgPyBhcmd1bWVudHMubGVuZ3RoIDwgMiA/ICIiIDogdCA6IGkoZSkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICA3ODI2OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig1MjgzKQogICAgICAgICAgLCByID0gbig2NzYxKQogICAgICAgICAgLCBzID0gbig4MjAyKQogICAgICAgICAgLCBvID0gbig2MTEyKQogICAgICAgICAgLCBhID0gbigyMjU4KQogICAgICAgICAgLCBsID0gVHlwZUVycm9yCiAgICAgICAgICAsIGMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkKICAgICAgICAgICwgdSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IKICAgICAgICAgICwgZCA9ICJlbnVtZXJhYmxlIgogICAgICAgICAgLCBoID0gImNvbmZpZ3VyYWJsZSIKICAgICAgICAgICwgZyA9ICJ3cml0YWJsZSI7CiAgICAgICAgdC5mID0gaSA/IHMgPyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShlLCB0LCBuKSB7CiAgICAgICAgICAgIGlmIChvKGUpLAogICAgICAgICAgICB0ID0gYSh0KSwKICAgICAgICAgICAgbyhuKSwKICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiAicHJvdG90eXBlIiA9PT0gdCAmJiAidmFsdWUiaW4gbiAmJiBnIGluIG4gJiYgIW5bZ10pIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdShlLCB0KTsKICAgICAgICAgICAgICAgIGkgJiYgaVtnXSAmJiAoZVt0XSA9IG4udmFsdWUsCiAgICAgICAgICAgICAgICBuID0gewogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogaCBpbiBuID8gbltoXSA6IGlbaF0sCiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZCBpbiBuID8gbltkXSA6IGlbZF0sCiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICExCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBjKGUsIHQsIG4pCiAgICAgICAgfQogICAgICAgIDogYyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGUsIHQsIG4pIHsKICAgICAgICAgICAgaWYgKG8oZSksCiAgICAgICAgICAgIHQgPSBhKHQpLAogICAgICAgICAgICBvKG4pLAogICAgICAgICAgICByKQogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhlLCB0LCBuKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgaWYgKCJnZXQiaW4gbiB8fCAic2V0ImluIG4pCiAgICAgICAgICAgICAgICB0aHJvdyBsKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICAgICByZXR1cm4gInZhbHVlImluIG4gJiYgKGVbdF0gPSBuLnZhbHVlKSwKICAgICAgICAgICAgZQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDQzOTk6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDUyODMpCiAgICAgICAgICAsIHIgPSBuKDk0MTMpCiAgICAgICAgICAsIHMgPSBuKDc0NDYpCiAgICAgICAgICAsIG8gPSBuKDU3MzYpCiAgICAgICAgICAsIGEgPSBuKDQwODgpCiAgICAgICAgICAsIGwgPSBuKDIyNTgpCiAgICAgICAgICAsIGMgPSBuKDk2MDYpCiAgICAgICAgICAsIHUgPSBuKDY3NjEpCiAgICAgICAgICAsIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwogICAgICAgIHQuZiA9IGkgPyBkIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpIHsKICAgICAgICAgICAgaWYgKGUgPSBhKGUpLAogICAgICAgICAgICB0ID0gbCh0KSwKICAgICAgICAgICAgdSkKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQoZSwgdCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIGlmIChjKGUsIHQpKQogICAgICAgICAgICAgICAgcmV0dXJuIG8oIXIocy5mLCBlLCB0KSwgZVt0XSkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICA2MjogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMTM1MikKICAgICAgICAgICwgciA9IG4oODY4NCkuY29uY2F0KCJsZW5ndGgiLCAicHJvdG90eXBlIik7CiAgICAgICAgdC5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhlKSB7CiAgICAgICAgICAgIHJldHVybiBpKGUsIHIpCiAgICAgICAgfQogICAgfQogICAgLAogICAgNjk1MjogKGUsdCk9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdC5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scwogICAgfQogICAgLAogICAgNTUxNjogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oODI0MCk7CiAgICAgICAgZS5leHBvcnRzID0gaSh7fS5pc1Byb3RvdHlwZU9mKQogICAgfQogICAgLAogICAgMTM1MjogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oODI0MCkKICAgICAgICAgICwgciA9IG4oOTYwNikKICAgICAgICAgICwgcyA9IG4oNDA4OCkKICAgICAgICAgICwgbyA9IG4oNjE5OCkuaW5kZXhPZgogICAgICAgICAgLCBhID0gbig3MTUzKQogICAgICAgICAgLCBsID0gaShbXS5wdXNoKTsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCBpID0gcyhlKSwgYyA9IDAsIHUgPSBbXTsKICAgICAgICAgICAgZm9yIChuIGluIGkpCiAgICAgICAgICAgICAgICAhcihhLCBuKSAmJiByKGksIG4pICYmIGwodSwgbik7CiAgICAgICAgICAgIGZvciAoOyB0Lmxlbmd0aCA+IGM7ICkKICAgICAgICAgICAgICAgIHIoaSwgbiA9IHRbYysrXSkgJiYgKH5vKHUsIG4pIHx8IGwodSwgbikpOwogICAgICAgICAgICByZXR1cm4gdQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDc0NDY6IChlLHQpPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBuID0ge30ucHJvcGVydHlJc0VudW1lcmFibGUKICAgICAgICAgICwgaSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IKICAgICAgICAgICwgciA9IGkgJiYgIW4uY2FsbCh7CiAgICAgICAgICAgIDE6IDIKICAgICAgICB9LCAxKTsKICAgICAgICB0LmYgPSByID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoZSkgewogICAgICAgICAgICB2YXIgdCA9IGkodGhpcywgZSk7CiAgICAgICAgICAgIHJldHVybiAhIXQgJiYgdC5lbnVtZXJhYmxlCiAgICAgICAgfQogICAgICAgIDogbgogICAgfQogICAgLAogICAgNzUzMDogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMTUxOCkKICAgICAgICAgICwgciA9IG4oNjExMikKICAgICAgICAgICwgcyA9IG4oMTM3OCk7CiAgICAgICAgZS5leHBvcnRzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgiX19wcm90b19fImluIHt9ID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlLCB0ID0gITEsIG4gPSB7fTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIChlID0gaShPYmplY3QucHJvdG90eXBlLCAiX19wcm90b19fIiwgInNldCIpKShuLCBbXSksCiAgICAgICAgICAgICAgICB0ID0gbiBpbnN0YW5jZW9mIEFycmF5CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihuLCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcihuKSwKICAgICAgICAgICAgICAgIHMoaSksCiAgICAgICAgICAgICAgICB0ID8gZShuLCBpKSA6IG4uX19wcm90b19fID0gaSwKICAgICAgICAgICAgICAgIG4KICAgICAgICAgICAgfQogICAgICAgIH0oKSA6IHZvaWQgMCkKICAgIH0KICAgICwKICAgIDc5OTk6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDk0MTMpCiAgICAgICAgICAsIHIgPSBuKDkzMCkKICAgICAgICAgICwgcyA9IG4oODc1OSkKICAgICAgICAgICwgbyA9IFR5cGVFcnJvcjsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCBhOwogICAgICAgICAgICBpZiAoInN0cmluZyIgPT09IHQgJiYgcihuID0gZS50b1N0cmluZykgJiYgIXMoYSA9IGkobiwgZSkpKQogICAgICAgICAgICAgICAgcmV0dXJuIGE7CiAgICAgICAgICAgIGlmIChyKG4gPSBlLnZhbHVlT2YpICYmICFzKGEgPSBpKG4sIGUpKSkKICAgICAgICAgICAgICAgIHJldHVybiBhOwogICAgICAgICAgICBpZiAoInN0cmluZyIgIT09IHQgJiYgcihuID0gZS50b1N0cmluZykgJiYgIXMoYSA9IGkobiwgZSkpKQogICAgICAgICAgICAgICAgcmV0dXJuIGE7CiAgICAgICAgICAgIHRocm93IG8oIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpCiAgICAgICAgfQogICAgfQogICAgLAogICAgNjA5NTogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oNTYzKQogICAgICAgICAgLCByID0gbig4MjQwKQogICAgICAgICAgLCBzID0gbig2MikKICAgICAgICAgICwgbyA9IG4oNjk1MikKICAgICAgICAgICwgYSA9IG4oNjExMikKICAgICAgICAgICwgbCA9IHIoW10uY29uY2F0KTsKICAgICAgICBlLmV4cG9ydHMgPSBpKCJSZWZsZWN0IiwgIm93bktleXMiKSB8fCBmdW5jdGlvbiBvd25LZXlzKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBzLmYoYShlKSkKICAgICAgICAgICAgICAsIG4gPSBvLmY7CiAgICAgICAgICAgIHJldHVybiBuID8gbCh0LCBuKGUpKSA6IHQKICAgICAgICB9CiAgICB9CiAgICAsCiAgICAxNjMyOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig3ODI2KS5mOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgbiBpbiBlIHx8IGkoZSwgbiwgewogICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbbl0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0W25dID0gZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDk1ODY6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDE4NTgpCiAgICAgICAgICAsIHIgPSBUeXBlRXJyb3I7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoaShlKSkKICAgICAgICAgICAgICAgIHRocm93IHIoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIgKyBlKTsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9CiAgICB9CiAgICAsCiAgICA4OTQ0OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig5MTk3KQogICAgICAgICAgLCByID0gbig1NDIyKQogICAgICAgICAgLCBzID0gaSgia2V5cyIpOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHNbZV0gfHwgKHNbZV0gPSByKGUpKQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDQ0ODk6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDIwODYpCiAgICAgICAgICAsIHIgPSBuKDk0NDQpCiAgICAgICAgICAsIHMgPSAiX19jb3JlLWpzX3NoYXJlZF9fIgogICAgICAgICAgLCBvID0gaVtzXSB8fCByKHMsIHt9KTsKICAgICAgICBlLmV4cG9ydHMgPSBvCiAgICB9CiAgICAsCiAgICA5MTk3OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigzMjk2KQogICAgICAgICAgLCByID0gbig0NDg5KTsKICAgICAgICAoZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gcltlXSB8fCAocltlXSA9IHZvaWQgMCAhPT0gdCA/IHQgOiB7fSkKICAgICAgICB9CiAgICAgICAgKSgidmVyc2lvbnMiLCBbXSkucHVzaCh7CiAgICAgICAgICAgIHZlcnNpb246ICIzLjMyLjAiLAogICAgICAgICAgICBtb2RlOiBpID8gInB1cmUiIDogImdsb2JhbCIsCiAgICAgICAgICAgIGNvcHlyaWdodDogIsKpIDIwMTQtMjAyMyBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsCiAgICAgICAgICAgIGxpY2Vuc2U6ICJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjMyLjAvTElDRU5TRSIsCiAgICAgICAgICAgIHNvdXJjZTogImh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIgogICAgICAgIH0pCiAgICB9CiAgICAsCiAgICA1NTU4OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigxNDQ4KQogICAgICAgICAgLCByID0gbigzNjc3KQogICAgICAgICAgLCBzID0gbigyMDg2KS5TdHJpbmc7CiAgICAgICAgZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFyKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBTeW1ib2woKTsKICAgICAgICAgICAgcmV0dXJuICFzKGUpIHx8ICEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpIHx8ICFTeW1ib2wuc2hhbSAmJiBpICYmIGkgPCA0MQogICAgICAgIH0KICAgICAgICApKQogICAgfQogICAgLAogICAgNzc0MDogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oOTUwMikKICAgICAgICAgICwgciA9IE1hdGgubWF4CiAgICAgICAgICAsIHMgPSBNYXRoLm1pbjsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gaShlKTsKICAgICAgICAgICAgcmV0dXJuIG4gPCAwID8gcihuICsgdCwgMCkgOiBzKG4sIHQpCiAgICAgICAgfQogICAgfQogICAgLAogICAgNDA4ODogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oNTk3NCkKICAgICAgICAgICwgciA9IG4oOTU4Nik7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gaShyKGUpKQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDk1MDI6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDU2ODEpOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSArZTsKICAgICAgICAgICAgcmV0dXJuIHQgIT0gdCB8fCAwID09PSB0ID8gMCA6IGkodCkKICAgICAgICB9CiAgICB9CiAgICAsCiAgICA0MDA1OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig5NTAyKQogICAgICAgICAgLCByID0gTWF0aC5taW47CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZSA+IDAgPyByKGkoZSksIDkwMDcxOTkyNTQ3NDA5OTEpIDogMAogICAgICAgIH0KICAgIH0KICAgICwKICAgIDMwNjA6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDk1ODYpCiAgICAgICAgICAsIHIgPSBPYmplY3Q7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gcihpKGUpKQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDEyODg6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDk0MTMpCiAgICAgICAgICAsIHIgPSBuKDg3NTkpCiAgICAgICAgICAsIHMgPSBuKDIwNzEpCiAgICAgICAgICAsIG8gPSBuKDI5NjQpCiAgICAgICAgICAsIGEgPSBuKDc5OTkpCiAgICAgICAgICAsIGwgPSBuKDIxMSkKICAgICAgICAgICwgYyA9IFR5cGVFcnJvcgogICAgICAgICAgLCB1ID0gbCgidG9QcmltaXRpdmUiKTsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGlmICghcihlKSB8fCBzKGUpKQogICAgICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgICAgIHZhciBuLCBsID0gbyhlLCB1KTsKICAgICAgICAgICAgaWYgKGwpIHsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHQgJiYgKHQgPSAiZGVmYXVsdCIpLAogICAgICAgICAgICAgICAgbiA9IGkobCwgZSwgdCksCiAgICAgICAgICAgICAgICAhcihuKSB8fCBzKG4pKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBuOwogICAgICAgICAgICAgICAgdGhyb3cgYygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIikKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ICYmICh0ID0gIm51bWJlciIpLAogICAgICAgICAgICBhKGUsIHQpCiAgICAgICAgfQogICAgfQogICAgLAogICAgMjI1ODogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMTI4OCkKICAgICAgICAgICwgciA9IG4oMjA3MSk7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGkoZSwgInN0cmluZyIpOwogICAgICAgICAgICByZXR1cm4gcih0KSA/IHQgOiB0ICsgIiIKICAgICAgICB9CiAgICB9CiAgICAsCiAgICAyMzcxOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0ge307CiAgICAgICAgaVtuKDIxMSkoInRvU3RyaW5nVGFnIildID0gInoiLAogICAgICAgIGUuZXhwb3J0cyA9ICJbb2JqZWN0IHpdIiA9PT0gU3RyaW5nKGkpCiAgICB9CiAgICAsCiAgICA0MDU5OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigzNzUpCiAgICAgICAgICAsIHIgPSBTdHJpbmc7CiAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIlN5bWJvbCIgPT09IGkoZSkpCiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7CiAgICAgICAgICAgIHJldHVybiByKGUpCiAgICAgICAgfQogICAgfQogICAgLAogICAgOTI2ODogZT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgdCA9IFN0cmluZzsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdChlKQogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIk9iamVjdCIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDU0MjI6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDgyNDApCiAgICAgICAgICAsIHIgPSAwCiAgICAgICAgICAsIHMgPSBNYXRoLnJhbmRvbSgpCiAgICAgICAgICAsIG8gPSBpKDEuLnRvU3RyaW5nKTsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiU3ltYm9sKCIgKyAodm9pZCAwID09PSBlID8gIiIgOiBlKSArICIpXyIgKyBvKCsrciArIHMsIDM2KQogICAgICAgIH0KICAgIH0KICAgICwKICAgIDE4NzY6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDU1NTgpOwogICAgICAgIGUuZXhwb3J0cyA9IGkgJiYgIVN5bWJvbC5zaGFtICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IKICAgIH0KICAgICwKICAgIDgyMDI6IChlLHQsbik9PnsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIGkgPSBuKDUyODMpCiAgICAgICAgICAsIHIgPSBuKDM2NzcpOwogICAgICAgIGUuZXhwb3J0cyA9IGkgJiYgcigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiA0MiAhPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCkge30KICAgICAgICAgICAgKSwgInByb3RvdHlwZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiA0MiwKICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMQogICAgICAgICAgICB9KS5wcm90b3R5cGUKICAgICAgICB9CiAgICAgICAgKSkKICAgIH0KICAgICwKICAgIDY0MDogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMjA4NikKICAgICAgICAgICwgciA9IG4oOTMwKQogICAgICAgICAgLCBzID0gaS5XZWFrTWFwOwogICAgICAgIGUuZXhwb3J0cyA9IHIocykgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhzKSkKICAgIH0KICAgICwKICAgIDIxMTogKGUsdCxuKT0+ewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgaSA9IG4oMjA4NikKICAgICAgICAgICwgciA9IG4oOTE5NykKICAgICAgICAgICwgcyA9IG4oOTYwNikKICAgICAgICAgICwgbyA9IG4oNTQyMikKICAgICAgICAgICwgYSA9IG4oNTU1OCkKICAgICAgICAgICwgbCA9IG4oMTg3NikKICAgICAgICAgICwgYyA9IGkuU3ltYm9sCiAgICAgICAgICAsIHUgPSByKCJ3a3MiKQogICAgICAgICAgLCBkID0gbCA/IGMuZm9yIHx8IGMgOiBjICYmIGMud2l0aG91dFNldHRlciB8fCBvOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHModSwgZSkgfHwgKHVbZV0gPSBhICYmIHMoYywgZSkgPyBjW2VdIDogZCgiU3ltYm9sLiIgKyBlKSksCiAgICAgICAgICAgIHVbZV0KICAgICAgICB9CiAgICB9CiAgICAsCiAgICAxNTU3OiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbig1NjMpCiAgICAgICAgICAsIHIgPSBuKDk2MDYpCiAgICAgICAgICAsIHMgPSBuKDI1ODUpCiAgICAgICAgICAsIG8gPSBuKDU1MTYpCiAgICAgICAgICAsIGEgPSBuKDc1MzApCiAgICAgICAgICAsIGwgPSBuKDg0NzQpCiAgICAgICAgICAsIGMgPSBuKDE2MzIpCiAgICAgICAgICAsIHUgPSBuKDUwNzApCiAgICAgICAgICAsIGQgPSBuKDE4NzkpCiAgICAgICAgICAsIGggPSBuKDg5NDUpCiAgICAgICAgICAsIGcgPSBuKDgzOTUpCiAgICAgICAgICAsIHAgPSBuKDUyODMpCiAgICAgICAgICAsIGYgPSBuKDMyOTYpOwogICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4sIG0pIHsKICAgICAgICAgICAgdmFyIHYgPSAic3RhY2tUcmFjZUxpbWl0IgogICAgICAgICAgICAgICwgYiA9IG0gPyAyIDogMQogICAgICAgICAgICAgICwgeSA9IGUuc3BsaXQoIi4iKQogICAgICAgICAgICAgICwgUyA9IHlbeS5sZW5ndGggLSAxXQogICAgICAgICAgICAgICwgdyA9IGkuYXBwbHkobnVsbCwgeSk7CiAgICAgICAgICAgIGlmICh3KSB7CiAgICAgICAgICAgICAgICB2YXIgRSA9IHcucHJvdG90eXBlOwogICAgICAgICAgICAgICAgaWYgKCFmICYmIHIoRSwgImNhdXNlIikgJiYgZGVsZXRlIEUuY2F1c2UsCiAgICAgICAgICAgICAgICAhbikKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdzsKICAgICAgICAgICAgICAgIHZhciBUID0gaSgiRXJyb3IiKQogICAgICAgICAgICAgICAgICAsIEMgPSB0KChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBkKG0gPyB0IDogZSwgdm9pZCAwKQogICAgICAgICAgICAgICAgICAgICAgLCBpID0gbSA/IG5ldyB3KGUpIDogbmV3IHc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gbiAmJiBzKGksICJtZXNzYWdlIiwgbiksCiAgICAgICAgICAgICAgICAgICAgZyhpLCBDLCBpLnN0YWNrLCAyKSwKICAgICAgICAgICAgICAgICAgICB0aGlzICYmIG8oRSwgdGhpcykgJiYgdShpLCB0aGlzLCBDKSwKICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMubGVuZ3RoID4gYiAmJiBoKGksIGFyZ3VtZW50c1tiXSksCiAgICAgICAgICAgICAgICAgICAgaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICAgICBpZiAoQy5wcm90b3R5cGUgPSBFLAogICAgICAgICAgICAgICAgIkVycm9yIiAhPT0gUyA/IGEgPyBhKEMsIFQpIDogbChDLCBULCB7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogITAKICAgICAgICAgICAgICAgIH0pIDogcCAmJiB2IGluIHcgJiYgKGMoQywgdywgdiksCiAgICAgICAgICAgICAgICBjKEMsIHcsICJwcmVwYXJlU3RhY2tUcmFjZSIpKSwKICAgICAgICAgICAgICAgIGwoQywgdyksCiAgICAgICAgICAgICAgICAhZikKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBFLm5hbWUgIT09IFMgJiYgcyhFLCAibmFtZSIsIFMpLAogICAgICAgICAgICAgICAgICAgICAgICBFLmNvbnN0cnVjdG9yID0gQwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICByZXR1cm4gQwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgLAogICAgNzQwOiAoZSx0LG4pPT57CiAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgIHZhciBpID0gbigxNjk1KQogICAgICAgICAgLCByID0gbigyMDg2KQogICAgICAgICAgLCBzID0gbig3MjU4KQogICAgICAgICAgLCBvID0gbigxNTU3KQogICAgICAgICAgLCBhID0gIldlYkFzc2VtYmx5IgogICAgICAgICAgLCBsID0gclthXQogICAgICAgICAgLCBjID0gNyAhPT0gRXJyb3IoImUiLCB7CiAgICAgICAgICAgIGNhdXNlOiA3CiAgICAgICAgfSkuY2F1c2UKICAgICAgICAgICwgZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0ge307CiAgICAgICAgICAgIG5bZV0gPSBvKGUsIHQsIGMpLAogICAgICAgICAgICBpKHsKICAgICAgICAgICAgICAgIGdsb2JhbDogITAsCiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsCiAgICAgICAgICAgICAgICBhcml0eTogMSwKICAgICAgICAgICAgICAgIGZvcmNlZDogYwogICAgICAgICAgICB9LCBuKQogICAgICAgIH0KICAgICAgICAgICwgZXhwb3J0V2ViQXNzZW1ibHlFcnJvckNhdXNlV3JhcHBlciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaWYgKGwgJiYgbFtlXSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB7fTsKICAgICAgICAgICAgICAgIG5bZV0gPSBvKGEgKyAiLiIgKyBlLCB0LCBjKSwKICAgICAgICAgICAgICAgIGkoewogICAgICAgICAgICAgICAgICAgIHRhcmdldDogYSwKICAgICAgICAgICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsCiAgICAgICAgICAgICAgICAgICAgYXJpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgZm9yY2VkOiBjCiAgICAgICAgICAgICAgICB9LCBuKQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcigiRXJyb3IiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gRXJyb3IodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHMoZSwgdGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICkpLAogICAgICAgIGV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCJFdmFsRXJyb3IiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gRXZhbEVycm9yKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzKGUsIHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICApKSwKICAgICAgICBleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcigiUmFuZ2VFcnJvciIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBSYW5nZUVycm9yKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzKGUsIHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICApKSwKICAgICAgICBleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcigiUmVmZXJlbmNlRXJyb3IiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gUmVmZXJlbmNlRXJyb3IodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHMoZSwgdGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICkpLAogICAgICAgIGV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCJTeW50YXhFcnJvciIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBTeW50YXhFcnJvcih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcyhlLCB0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgKSksCiAgICAgICAgZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoIlR5cGVFcnJvciIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBUeXBlRXJyb3IodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHMoZSwgdGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICkpLAogICAgICAgIGV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCJVUklFcnJvciIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBVUklFcnJvcih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcyhlLCB0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgKSksCiAgICAgICAgZXhwb3J0V2ViQXNzZW1ibHlFcnJvckNhdXNlV3JhcHBlcigiQ29tcGlsZUVycm9yIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIENvbXBpbGVFcnJvcih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcyhlLCB0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgKSksCiAgICAgICAgZXhwb3J0V2ViQXNzZW1ibHlFcnJvckNhdXNlV3JhcHBlcigiTGlua0Vycm9yIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIExpbmtFcnJvcih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcyhlLCB0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgKSksCiAgICAgICAgZXhwb3J0V2ViQXNzZW1ibHlFcnJvckNhdXNlV3JhcHBlcigiUnVudGltZUVycm9yIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIFJ1bnRpbWVFcnJvcih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcyhlLCB0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgKSkKICAgIH0KICAgICwKICAgIDMyMDM6IGU9PnsKICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGUKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAsCiAgICAgICAgZS5leHBvcnRzLl9fZXNNb2R1bGUgPSAhMCwKICAgICAgICBlLmV4cG9ydHMuZGVmYXVsdCA9IGUuZXhwb3J0cwogICAgfQp9LCBlPT57CiAgICB2YXIgdDsKICAgIHQgPSA2NDEyLAogICAgZShlLnMgPSB0KQp9Cl0pOwo="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.039Z","timestamp":1785130090039,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=AVPdPRPxNcnCe3KRsoQON5wKPT90tOu%2BzTOq4pY50fM%2BK%2FSTXtgVNb4xh%2F7Jp0SukJo%2B6fYzP2nCM%2FygNUCZ1v1vk5wK83LagBciEvjZ6wjxl%2BI%2BXZ8FtVL6yp4GnBqJNynC%2BLPHfA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ce53120a-OSL\r\ncontent-length: 3227\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":16048,"size_decoded":4065,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (1161)","md5":"6bf2d21e9bdb4d04e40b5f9decc60314","sha1":"1f16da2e4fd4d2c9db5fce1e101c3a44be54dd89","sha256":"02f83fb268599737a5a5c8e1db12d562bdaa9ae73cb906c4f63c7b871eeecdb4","sha512":"c23497a91d4221d642363cdf3f47b1a867ab0dca284df0029fd1277848585f119df5268816158889bb15991d477b1e94214ae0eca3d1e26adf7e99ecf53b8fad","ssdeep":"384:ZDCVFGE8Psl1GbOdoEMTGT6Gt7w50xioyTQTflUw4OSIU/3P:5/0JTHlh45IU/3P","tlshash":"de72df096ebb20126f9f7069fd0b55857237402b54899c2778dcd7d80fe24386eb6fa8","first_seen":"2023-03-12T11:49:12Z","last_seen":"2026-07-27T10:21:19.575257Z","times_seen":64,"resource_available":true,"data":"ISBmdW5jdGlvbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBXYXlwb2ludChvcHRpb25zKSB7CiAgICAgICAgaWYgKCFvcHRpb25zKSB0aHJvdyBuZXcgRXJyb3IoIk5vIG9wdGlvbnMgcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yIik7CiAgICAgICAgaWYgKCFvcHRpb25zLmVsZW1lbnQpIHRocm93IG5ldyBFcnJvcigiTm8gZWxlbWVudCBvcHRpb24gcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yIik7CiAgICAgICAgaWYgKCFvcHRpb25zLmhhbmRsZXIpIHRocm93IG5ldyBFcnJvcigiTm8gaGFuZGxlciBvcHRpb24gcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yIik7CiAgICAgICAgdGhpcy5rZXkgPSAid2F5cG9pbnQtIiArIGtleUNvdW50ZXIsIHRoaXMub3B0aW9ucyA9IFdheXBvaW50LkFkYXB0ZXIuZXh0ZW5kKHt9LCBXYXlwb2ludC5kZWZhdWx0cywgb3B0aW9ucyksIHRoaXMuZWxlbWVudCA9IHRoaXMub3B0aW9ucy5lbGVtZW50LCB0aGlzLmFkYXB0ZXIgPSBuZXcgV2F5cG9pbnQuQWRhcHRlcih0aGlzLmVsZW1lbnQpLCB0aGlzLmNhbGxiYWNrID0gb3B0aW9ucy5oYW5kbGVyLCB0aGlzLmF4aXMgPSB0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbCA/ICJob3Jpem9udGFsIiA6ICJ2ZXJ0aWNhbCIsIHRoaXMuZW5hYmxlZCA9IHRoaXMub3B0aW9ucy5lbmFibGVkLCB0aGlzLnRyaWdnZXJQb2ludCA9IG51bGwsIHRoaXMuZ3JvdXAgPSBXYXlwb2ludC5Hcm91cC5maW5kT3JDcmVhdGUoewogICAgICAgICAgICBuYW1lOiB0aGlzLm9wdGlvbnMuZ3JvdXAsCiAgICAgICAgICAgIGF4aXM6IHRoaXMuYXhpcwogICAgICAgIH0pLCB0aGlzLmNvbnRleHQgPSBXYXlwb2ludC5Db250ZXh0LmZpbmRPckNyZWF0ZUJ5RWxlbWVudCh0aGlzLm9wdGlvbnMuY29udGV4dCksIFdheXBvaW50Lm9mZnNldEFsaWFzZXNbdGhpcy5vcHRpb25zLm9mZnNldF0gJiYgKHRoaXMub3B0aW9ucy5vZmZzZXQgPSBXYXlwb2ludC5vZmZzZXRBbGlhc2VzW3RoaXMub3B0aW9ucy5vZmZzZXRdKSwgdGhpcy5ncm91cC5hZGQodGhpcyksIHRoaXMuY29udGV4dC5hZGQodGhpcyksIGFsbFdheXBvaW50c1t0aGlzLmtleV0gPSB0aGlzLCBrZXlDb3VudGVyICs9IDEKICAgIH0KICAgIHZhciBrZXlDb3VudGVyID0gMCwKICAgICAgICBhbGxXYXlwb2ludHMgPSB7fTsKICAgIFdheXBvaW50LnByb3RvdHlwZS5xdWV1ZVRyaWdnZXIgPSBmdW5jdGlvbihkaXJlY3Rpb24pIHsKICAgICAgICB0aGlzLmdyb3VwLnF1ZXVlVHJpZ2dlcih0aGlzLCBkaXJlY3Rpb24pCiAgICB9LCBXYXlwb2ludC5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uKGFyZ3MpIHsKICAgICAgICB0aGlzLmVuYWJsZWQgJiYgdGhpcy5jYWxsYmFjayAmJiB0aGlzLmNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3MpCiAgICB9LCBXYXlwb2ludC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuY29udGV4dC5yZW1vdmUodGhpcyksIHRoaXMuZ3JvdXAucmVtb3ZlKHRoaXMpLCBkZWxldGUgYWxsV2F5cG9pbnRzW3RoaXMua2V5XQogICAgfSwgV2F5cG9pbnQucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5lbmFibGVkID0gITEsIHRoaXMKICAgIH0sIFdheXBvaW50LnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJlZnJlc2goKSwgdGhpcy5lbmFibGVkID0gITAsIHRoaXMKICAgIH0sIFdheXBvaW50LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAubmV4dCh0aGlzKQogICAgfSwgV2F5cG9pbnQucHJvdG90eXBlLnByZXZpb3VzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAucHJldmlvdXModGhpcykKICAgIH0sIFdheXBvaW50Lmludm9rZUFsbCA9IGZ1bmN0aW9uKG1ldGhvZCkgewogICAgICAgIHZhciBhbGxXYXlwb2ludHNBcnJheSA9IFtdOwogICAgICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIGFsbFdheXBvaW50cykgYWxsV2F5cG9pbnRzQXJyYXkucHVzaChhbGxXYXlwb2ludHNbd2F5cG9pbnRLZXldKTsKICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gYWxsV2F5cG9pbnRzQXJyYXkubGVuZ3RoOyBpIDwgZW5kOyBpKyspIGFsbFdheXBvaW50c0FycmF5W2ldW21ldGhvZF0oKQogICAgfSwgV2F5cG9pbnQuZGVzdHJveUFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIFdheXBvaW50Lmludm9rZUFsbCgiZGVzdHJveSIpCiAgICB9LCBXYXlwb2ludC5kaXNhYmxlQWxsID0gZnVuY3Rpb24oKSB7CiAgICAgICAgV2F5cG9pbnQuaW52b2tlQWxsKCJkaXNhYmxlIikKICAgIH0sIFdheXBvaW50LmVuYWJsZUFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIFdheXBvaW50LkNvbnRleHQucmVmcmVzaEFsbCgpOwogICAgICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIGFsbFdheXBvaW50cykgYWxsV2F5cG9pbnRzW3dheXBvaW50S2V5XS5lbmFibGVkID0gITA7CiAgICAgICAgcmV0dXJuIHRoaXMKICAgIH0sIFdheXBvaW50LnJlZnJlc2hBbGwgPSBmdW5jdGlvbigpIHsKICAgICAgICBXYXlwb2ludC5Db250ZXh0LnJlZnJlc2hBbGwoKQogICAgfSwgV2F5cG9pbnQudmlld3BvcnRIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQKICAgIH0sIFdheXBvaW50LnZpZXdwb3J0V2lkdGggPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoCiAgICB9LCBXYXlwb2ludC5hZGFwdGVycyA9IFtdLCBXYXlwb2ludC5kZWZhdWx0cyA9IHsKICAgICAgICBjb250ZXh0OiB3aW5kb3csCiAgICAgICAgY29udGludW91czogITAsCiAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgZ3JvdXA6ICJkZWZhdWx0IiwKICAgICAgICBob3Jpem9udGFsOiAhMSwKICAgICAgICBvZmZzZXQ6IDAKICAgIH0sIFdheXBvaW50Lm9mZnNldEFsaWFzZXMgPSB7CiAgICAgICAgImJvdHRvbS1pbi12aWV3IjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQuaW5uZXJIZWlnaHQoKSAtIHRoaXMuYWRhcHRlci5vdXRlckhlaWdodCgpCiAgICAgICAgfSwKICAgICAgICAicmlnaHQtaW4tdmlldyI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LmlubmVyV2lkdGgoKSAtIHRoaXMuYWRhcHRlci5vdXRlcldpZHRoKCkKICAgICAgICB9CiAgICB9LCB3aW5kb3cuV2F5cG9pbnQgPSBXYXlwb2ludAp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZVNoaW0oY2FsbGJhY2spIHsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgMWUzIC8gNjApCiAgICB9CgogICAgZnVuY3Rpb24gQ29udGV4dChlbGVtZW50KSB7CiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudCwgdGhpcy5BZGFwdGVyID0gV2F5cG9pbnQuQWRhcHRlciwgdGhpcy5hZGFwdGVyID0gbmV3IHRoaXMuQWRhcHRlcihlbGVtZW50KSwgdGhpcy5rZXkgPSAid2F5cG9pbnQtY29udGV4dC0iICsga2V5Q291bnRlciwgdGhpcy5kaWRTY3JvbGwgPSAhMSwgdGhpcy5kaWRSZXNpemUgPSAhMSwgdGhpcy5vbGRTY3JvbGwgPSB7CiAgICAgICAgICAgIHg6IHRoaXMuYWRhcHRlci5zY3JvbGxMZWZ0KCksCiAgICAgICAgICAgIHk6IHRoaXMuYWRhcHRlci5zY3JvbGxUb3AoKQogICAgICAgIH0sIHRoaXMud2F5cG9pbnRzID0gewogICAgICAgICAgICB2ZXJ0aWNhbDoge30sCiAgICAgICAgICAgIGhvcml6b250YWw6IHt9CiAgICAgICAgfSwgZWxlbWVudC53YXlwb2ludENvbnRleHRLZXkgPSB0aGlzLmtleSwgY29udGV4dHNbZWxlbWVudC53YXlwb2ludENvbnRleHRLZXldID0gdGhpcywga2V5Q291bnRlciArPSAxLCBXYXlwb2ludC53aW5kb3dDb250ZXh0IHx8IChXYXlwb2ludC53aW5kb3dDb250ZXh0ID0gITAsIFdheXBvaW50LndpbmRvd0NvbnRleHQgPSBuZXcgQ29udGV4dCh3aW5kb3cpKSwgdGhpcy5jcmVhdGVUaHJvdHRsZWRTY3JvbGxIYW5kbGVyKCksIHRoaXMuY3JlYXRlVGhyb3R0bGVkUmVzaXplSGFuZGxlcigpCiAgICB9CiAgICB2YXIga2V5Q291bnRlciA9IDAsCiAgICAgICAgY29udGV4dHMgPSB7fSwKICAgICAgICBXYXlwb2ludCA9IHdpbmRvdy5XYXlwb2ludCwKICAgICAgICBvbGRXaW5kb3dMb2FkID0gd2luZG93Lm9ubG9hZDsKICAgIENvbnRleHQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKHdheXBvaW50KSB7CiAgICAgICAgdmFyIGF4aXMgPSB3YXlwb2ludC5vcHRpb25zLmhvcml6b250YWwgPyAiaG9yaXpvbnRhbCIgOiAidmVydGljYWwiOwogICAgICAgIHRoaXMud2F5cG9pbnRzW2F4aXNdW3dheXBvaW50LmtleV0gPSB3YXlwb2ludCwgdGhpcy5yZWZyZXNoKCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmNoZWNrRW1wdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaG9yaXpvbnRhbEVtcHR5ID0gdGhpcy5BZGFwdGVyLmlzRW1wdHlPYmplY3QodGhpcy53YXlwb2ludHMuaG9yaXpvbnRhbCksCiAgICAgICAgICAgIHZlcnRpY2FsRW1wdHkgPSB0aGlzLkFkYXB0ZXIuaXNFbXB0eU9iamVjdCh0aGlzLndheXBvaW50cy52ZXJ0aWNhbCksCiAgICAgICAgICAgIGlzV2luZG93ID0gdGhpcy5lbGVtZW50ID09IHRoaXMuZWxlbWVudC53aW5kb3c7CiAgICAgICAgaG9yaXpvbnRhbEVtcHR5ICYmIHZlcnRpY2FsRW1wdHkgJiYgIWlzV2luZG93ICYmICh0aGlzLmFkYXB0ZXIub2ZmKCIud2F5cG9pbnRzIiksIGRlbGV0ZSBjb250ZXh0c1t0aGlzLmtleV0pCiAgICB9LCBDb250ZXh0LnByb3RvdHlwZS5jcmVhdGVUaHJvdHRsZWRSZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gcmVzaXplSGFuZGxlcigpIHsKICAgICAgICAgICAgc2VsZi5oYW5kbGVSZXNpemUoKSwgc2VsZi5kaWRSZXNpemUgPSAhMQogICAgICAgIH0KICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgdGhpcy5hZGFwdGVyLm9uKCJyZXNpemUud2F5cG9pbnRzIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHNlbGYuZGlkUmVzaXplIHx8IChzZWxmLmRpZFJlc2l6ZSA9ICEwLCBXYXlwb2ludC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzaXplSGFuZGxlcikpCiAgICAgICAgfSkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmNyZWF0ZVRocm90dGxlZFNjcm9sbEhhbmRsZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICBmdW5jdGlvbiBzY3JvbGxIYW5kbGVyKCkgewogICAgICAgICAgICBzZWxmLmhhbmRsZVNjcm9sbCgpLCBzZWxmLmRpZFNjcm9sbCA9ICExCiAgICAgICAgfQogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICB0aGlzLmFkYXB0ZXIub24oInNjcm9sbC53YXlwb2ludHMiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgc2VsZi5kaWRTY3JvbGwgJiYgIVdheXBvaW50LmlzVG91Y2ggfHwgKHNlbGYuZGlkU2Nyb2xsID0gITAsIFdheXBvaW50LnJlcXVlc3RBbmltYXRpb25GcmFtZShzY3JvbGxIYW5kbGVyKSkKICAgICAgICB9KQogICAgfSwgQ29udGV4dC5wcm90b3R5cGUuaGFuZGxlUmVzaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgV2F5cG9pbnQuQ29udGV4dC5yZWZyZXNoQWxsKCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciB0cmlnZ2VyZWRHcm91cHMgPSB7fSwKICAgICAgICAgICAgYXhlcyA9IHsKICAgICAgICAgICAgICAgIGhvcml6b250YWw6IHsKICAgICAgICAgICAgICAgICAgICBuZXdTY3JvbGw6IHRoaXMuYWRhcHRlci5zY3JvbGxMZWZ0KCksCiAgICAgICAgICAgICAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC54LAogICAgICAgICAgICAgICAgICAgIGZvcndhcmQ6ICJyaWdodCIsCiAgICAgICAgICAgICAgICAgICAgYmFja3dhcmQ6ICJsZWZ0IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHZlcnRpY2FsOiB7CiAgICAgICAgICAgICAgICAgICAgbmV3U2Nyb2xsOiB0aGlzLmFkYXB0ZXIuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC55LAogICAgICAgICAgICAgICAgICAgIGZvcndhcmQ6ICJkb3duIiwKICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZDogInVwIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIGZvciAodmFyIGF4aXNLZXkgaW4gYXhlcykgewogICAgICAgICAgICB2YXIgYXhpcyA9IGF4ZXNbYXhpc0tleV0sCiAgICAgICAgICAgICAgICBpc0ZvcndhcmQgPSBheGlzLm5ld1Njcm9sbCA+IGF4aXMub2xkU2Nyb2xsLAogICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gaXNGb3J3YXJkID8gYXhpcy5mb3J3YXJkIDogYXhpcy5iYWNrd2FyZDsKICAgICAgICAgICAgZm9yICh2YXIgd2F5cG9pbnRLZXkgaW4gdGhpcy53YXlwb2ludHNbYXhpc0tleV0pIHsKICAgICAgICAgICAgICAgIHZhciB3YXlwb2ludCA9IHRoaXMud2F5cG9pbnRzW2F4aXNLZXldW3dheXBvaW50S2V5XTsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB3YXlwb2ludC50cmlnZ2VyUG9pbnQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgd2FzQmVmb3JlVHJpZ2dlclBvaW50ID0gYXhpcy5vbGRTY3JvbGwgPCB3YXlwb2ludC50cmlnZ2VyUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIG5vd0FmdGVyVHJpZ2dlclBvaW50ID0gYXhpcy5uZXdTY3JvbGwgPj0gd2F5cG9pbnQudHJpZ2dlclBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICBjcm9zc2VkRm9yd2FyZCA9IHdhc0JlZm9yZVRyaWdnZXJQb2ludCAmJiBub3dBZnRlclRyaWdnZXJQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NlZEJhY2t3YXJkID0gIXdhc0JlZm9yZVRyaWdnZXJQb2ludCAmJiAhbm93QWZ0ZXJUcmlnZ2VyUG9pbnQ7CiAgICAgICAgICAgICAgICAgICAgKGNyb3NzZWRGb3J3YXJkIHx8IGNyb3NzZWRCYWNrd2FyZCkgJiYgKHdheXBvaW50LnF1ZXVlVHJpZ2dlcihkaXJlY3Rpb24pLCB0cmlnZ2VyZWRHcm91cHNbd2F5cG9pbnQuZ3JvdXAuaWRdID0gd2F5cG9pbnQuZ3JvdXApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yICh2YXIgZ3JvdXBLZXkgaW4gdHJpZ2dlcmVkR3JvdXBzKSB0cmlnZ2VyZWRHcm91cHNbZ3JvdXBLZXldLmZsdXNoVHJpZ2dlcnMoKTsKICAgICAgICB0aGlzLm9sZFNjcm9sbCA9IHsKICAgICAgICAgICAgeDogYXhlcy5ob3Jpem9udGFsLm5ld1Njcm9sbCwKICAgICAgICAgICAgeTogYXhlcy52ZXJ0aWNhbC5uZXdTY3JvbGwKICAgICAgICB9CiAgICB9LCBDb250ZXh0LnByb3RvdHlwZS5pbm5lckhlaWdodCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQgPT0gdGhpcy5lbGVtZW50LndpbmRvdyA/IFdheXBvaW50LnZpZXdwb3J0SGVpZ2h0KCkgOiB0aGlzLmFkYXB0ZXIuaW5uZXJIZWlnaHQoKQogICAgfSwgQ29udGV4dC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24od2F5cG9pbnQpIHsKICAgICAgICBkZWxldGUgdGhpcy53YXlwb2ludHNbd2F5cG9pbnQuYXhpc11bd2F5cG9pbnQua2V5XSwgdGhpcy5jaGVja0VtcHR5KCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmlubmVyV2lkdGggPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50ID09IHRoaXMuZWxlbWVudC53aW5kb3cgPyBXYXlwb2ludC52aWV3cG9ydFdpZHRoKCkgOiB0aGlzLmFkYXB0ZXIuaW5uZXJXaWR0aCgpCiAgICB9LCBDb250ZXh0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGFsbFdheXBvaW50cyA9IFtdOwogICAgICAgIGZvciAodmFyIGF4aXMgaW4gdGhpcy53YXlwb2ludHMpCiAgICAgICAgICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIHRoaXMud2F5cG9pbnRzW2F4aXNdKSBhbGxXYXlwb2ludHMucHVzaCh0aGlzLndheXBvaW50c1theGlzXVt3YXlwb2ludEtleV0pOwogICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSBhbGxXYXlwb2ludHMubGVuZ3RoOyBpIDwgZW5kOyBpKyspIGFsbFdheXBvaW50c1tpXS5kZXN0cm95KCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYXhlcywgaXNXaW5kb3cgPSB0aGlzLmVsZW1lbnQgPT0gdGhpcy5lbGVtZW50LndpbmRvdywKICAgICAgICAgICAgY29udGV4dE9mZnNldCA9IGlzV2luZG93ID8gdm9pZCAwIDogdGhpcy5hZGFwdGVyLm9mZnNldCgpLAogICAgICAgICAgICB0cmlnZ2VyZWRHcm91cHMgPSB7fTsKICAgICAgICB0aGlzLmhhbmRsZVNjcm9sbCgpLCBheGVzID0gewogICAgICAgICAgICBob3Jpem9udGFsOiB7CiAgICAgICAgICAgICAgICBjb250ZXh0T2Zmc2V0OiBpc1dpbmRvdyA/IDAgOiBjb250ZXh0T2Zmc2V0LmxlZnQsCiAgICAgICAgICAgICAgICBjb250ZXh0U2Nyb2xsOiBpc1dpbmRvdyA/IDAgOiB0aGlzLm9sZFNjcm9sbC54LAogICAgICAgICAgICAgICAgY29udGV4dERpbWVuc2lvbjogdGhpcy5pbm5lcldpZHRoKCksCiAgICAgICAgICAgICAgICBvbGRTY3JvbGw6IHRoaXMub2xkU2Nyb2xsLngsCiAgICAgICAgICAgICAgICBmb3J3YXJkOiAicmlnaHQiLAogICAgICAgICAgICAgICAgYmFja3dhcmQ6ICJsZWZ0IiwKICAgICAgICAgICAgICAgIG9mZnNldFByb3A6ICJsZWZ0IgogICAgICAgICAgICB9LAogICAgICAgICAgICB2ZXJ0aWNhbDogewogICAgICAgICAgICAgICAgY29udGV4dE9mZnNldDogaXNXaW5kb3cgPyAwIDogY29udGV4dE9mZnNldC50b3AsCiAgICAgICAgICAgICAgICBjb250ZXh0U2Nyb2xsOiBpc1dpbmRvdyA/IDAgOiB0aGlzLm9sZFNjcm9sbC55LAogICAgICAgICAgICAgICAgY29udGV4dERpbWVuc2lvbjogdGhpcy5pbm5lckhlaWdodCgpLAogICAgICAgICAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC55LAogICAgICAgICAgICAgICAgZm9yd2FyZDogImRvd24iLAogICAgICAgICAgICAgICAgYmFja3dhcmQ6ICJ1cCIsCiAgICAgICAgICAgICAgICBvZmZzZXRQcm9wOiAidG9wIgogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBmb3IgKHZhciBheGlzS2V5IGluIGF4ZXMpIHsKICAgICAgICAgICAgdmFyIGF4aXMgPSBheGVzW2F4aXNLZXldOwogICAgICAgICAgICBmb3IgKHZhciB3YXlwb2ludEtleSBpbiB0aGlzLndheXBvaW50c1theGlzS2V5XSkgewogICAgICAgICAgICAgICAgdmFyIGNvbnRleHRNb2RpZmllciwgd2FzQmVmb3JlU2Nyb2xsLCBub3dBZnRlclNjcm9sbCwgdHJpZ2dlcmVkQmFja3dhcmQsIHRyaWdnZXJlZEZvcndhcmQsIHdheXBvaW50ID0gdGhpcy53YXlwb2ludHNbYXhpc0tleV1bd2F5cG9pbnRLZXldLAogICAgICAgICAgICAgICAgICAgIGFkanVzdG1lbnQgPSB3YXlwb2ludC5vcHRpb25zLm9mZnNldCwKICAgICAgICAgICAgICAgICAgICBvbGRUcmlnZ2VyUG9pbnQgPSB3YXlwb2ludC50cmlnZ2VyUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgZWxlbWVudE9mZnNldCA9IDAsCiAgICAgICAgICAgICAgICAgICAgZnJlc2hXYXlwb2ludCA9IG51bGwgPT0gb2xkVHJpZ2dlclBvaW50OwogICAgICAgICAgICAgICAgd2F5cG9pbnQuZWxlbWVudCAhPT0gd2F5cG9pbnQuZWxlbWVudC53aW5kb3cgJiYgKGVsZW1lbnRPZmZzZXQgPSB3YXlwb2ludC5hZGFwdGVyLm9mZnNldCgpW2F4aXMub2Zmc2V0UHJvcF0pLCAiZnVuY3Rpb24iID09IHR5cGVvZiBhZGp1c3RtZW50ID8gYWRqdXN0bWVudCA9IGFkanVzdG1lbnQuYXBwbHkod2F5cG9pbnQpIDogInN0cmluZyIgPT0gdHlwZW9mIGFkanVzdG1lbnQgJiYgKGFkanVzdG1lbnQgPSBwYXJzZUZsb2F0KGFkanVzdG1lbnQpLCB3YXlwb2ludC5vcHRpb25zLm9mZnNldC5pbmRleE9mKCIlIikgPiAtMSAmJiAoYWRqdXN0bWVudCA9IE1hdGguY2VpbChheGlzLmNvbnRleHREaW1lbnNpb24gKiBhZGp1c3RtZW50IC8gMTAwKSkpLCBjb250ZXh0TW9kaWZpZXIgPSBheGlzLmNvbnRleHRTY3JvbGwgLSBheGlzLmNvbnRleHRPZmZzZXQsIHdheXBvaW50LnRyaWdnZXJQb2ludCA9IE1hdGguZmxvb3IoZWxlbWVudE9mZnNldCArIGNvbnRleHRNb2RpZmllciAtIGFkanVzdG1lbnQpLCB3YXNCZWZvcmVTY3JvbGwgPSBvbGRUcmlnZ2VyUG9pbnQgPCBheGlzLm9sZFNjcm9sbCwgbm93QWZ0ZXJTY3JvbGwgPSB3YXlwb2ludC50cmlnZ2VyUG9pbnQgPj0gYXhpcy5vbGRTY3JvbGwsIHRyaWdnZXJlZEJhY2t3YXJkID0gd2FzQmVmb3JlU2Nyb2xsICYmIG5vd0FmdGVyU2Nyb2xsLCB0cmlnZ2VyZWRGb3J3YXJkID0gIXdhc0JlZm9yZVNjcm9sbCAmJiAhbm93QWZ0ZXJTY3JvbGwsICFmcmVzaFdheXBvaW50ICYmIHRyaWdnZXJlZEJhY2t3YXJkID8gKHdheXBvaW50LnF1ZXVlVHJpZ2dlcihheGlzLmJhY2t3YXJkKSwgdHJpZ2dlcmVkR3JvdXBzW3dheXBvaW50Lmdyb3VwLmlkXSA9IHdheXBvaW50Lmdyb3VwKSA6ICFmcmVzaFdheXBvaW50ICYmIHRyaWdnZXJlZEZvcndhcmQgPyAod2F5cG9pbnQucXVldWVUcmlnZ2VyKGF4aXMuZm9yd2FyZCksIHRyaWdnZXJlZEdyb3Vwc1t3YXlwb2ludC5ncm91cC5pZF0gPSB3YXlwb2ludC5ncm91cCkgOiBmcmVzaFdheXBvaW50ICYmIGF4aXMub2xkU2Nyb2xsID49IHdheXBvaW50LnRyaWdnZXJQb2ludCAmJiAod2F5cG9pbnQucXVldWVUcmlnZ2VyKGF4aXMuZm9yd2FyZCksIHRyaWdnZXJlZEdyb3Vwc1t3YXlwb2ludC5ncm91cC5pZF0gPSB3YXlwb2ludC5ncm91cCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gV2F5cG9pbnQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmb3IgKHZhciBncm91cEtleSBpbiB0cmlnZ2VyZWRHcm91cHMpIHRyaWdnZXJlZEdyb3Vwc1tncm91cEtleV0uZmx1c2hUcmlnZ2VycygpCiAgICAgICAgfSksIHRoaXMKICAgIH0sIENvbnRleHQuZmluZE9yQ3JlYXRlQnlFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgIHJldHVybiBDb250ZXh0LmZpbmRCeUVsZW1lbnQoZWxlbWVudCkgfHwgbmV3IENvbnRleHQoZWxlbWVudCkKICAgIH0sIENvbnRleHQucmVmcmVzaEFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZvciAodmFyIGNvbnRleHRJZCBpbiBjb250ZXh0cykgY29udGV4dHNbY29udGV4dElkXS5yZWZyZXNoKCkKICAgIH0sIENvbnRleHQuZmluZEJ5RWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICByZXR1cm4gY29udGV4dHNbZWxlbWVudC53YXlwb2ludENvbnRleHRLZXldCiAgICB9LCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgb2xkV2luZG93TG9hZCAmJiBvbGRXaW5kb3dMb2FkKCksIENvbnRleHQucmVmcmVzaEFsbCgpCiAgICB9LCBXYXlwb2ludC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICAgIHZhciByZXF1ZXN0Rm4gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVTaGltOwogICAgICAgIHJlcXVlc3RGbi5jYWxsKHdpbmRvdywgY2FsbGJhY2spCiAgICB9LCBXYXlwb2ludC5Db250ZXh0ID0gQ29udGV4dAp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGJ5VHJpZ2dlclBvaW50KGEsIGIpIHsKICAgICAgICByZXR1cm4gYS50cmlnZ2VyUG9pbnQgLSBiLnRyaWdnZXJQb2ludAogICAgfQoKICAgIGZ1bmN0aW9uIGJ5UmV2ZXJzZVRyaWdnZXJQb2ludChhLCBiKSB7CiAgICAgICAgcmV0dXJuIGIudHJpZ2dlclBvaW50IC0gYS50cmlnZ2VyUG9pbnQKICAgIH0KCiAgICBmdW5jdGlvbiBHcm91cChvcHRpb25zKSB7CiAgICAgICAgdGhpcy5uYW1lID0gb3B0aW9ucy5uYW1lLCB0aGlzLmF4aXMgPSBvcHRpb25zLmF4aXMsIHRoaXMuaWQgPSB0aGlzLm5hbWUgKyAiLSIgKyB0aGlzLmF4aXMsIHRoaXMud2F5cG9pbnRzID0gW10sIHRoaXMuY2xlYXJUcmlnZ2VyUXVldWVzKCksIGdyb3Vwc1t0aGlzLmF4aXNdW3RoaXMubmFtZV0gPSB0aGlzCiAgICB9CiAgICB2YXIgZ3JvdXBzID0gewogICAgICAgICAgICB2ZXJ0aWNhbDoge30sCiAgICAgICAgICAgIGhvcml6b250YWw6IHt9CiAgICAgICAgfSwKICAgICAgICBXYXlwb2ludCA9IHdpbmRvdy5XYXlwb2ludDsKICAgIEdyb3VwLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbih3YXlwb2ludCkgewogICAgICAgIHRoaXMud2F5cG9pbnRzLnB1c2god2F5cG9pbnQpCiAgICB9LCBHcm91cC5wcm90b3R5cGUuY2xlYXJUcmlnZ2VyUXVldWVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy50cmlnZ2VyUXVldWVzID0gewogICAgICAgICAgICB1cDogW10sCiAgICAgICAgICAgIGRvd246IFtdLAogICAgICAgICAgICBsZWZ0OiBbXSwKICAgICAgICAgICAgcmlnaHQ6IFtdCiAgICAgICAgfQogICAgfSwgR3JvdXAucHJvdG90eXBlLmZsdXNoVHJpZ2dlcnMgPSBmdW5jdGlvbigpIHsKICAgICAgICBmb3IgKHZhciBkaXJlY3Rpb24gaW4gdGhpcy50cmlnZ2VyUXVldWVzKSB7CiAgICAgICAgICAgIHZhciB3YXlwb2ludHMgPSB0aGlzLnRyaWdnZXJRdWV1ZXNbZGlyZWN0aW9uXSwKICAgICAgICAgICAgICAgIHJldmVyc2UgPSAidXAiID09PSBkaXJlY3Rpb24gfHwgImxlZnQiID09PSBkaXJlY3Rpb247CiAgICAgICAgICAgIHdheXBvaW50cy5zb3J0KHJldmVyc2UgPyBieVJldmVyc2VUcmlnZ2VyUG9pbnQgOiBieVRyaWdnZXJQb2ludCk7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSB3YXlwb2ludHMubGVuZ3RoOyBpIDwgZW5kOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgIHZhciB3YXlwb2ludCA9IHdheXBvaW50c1tpXTsKICAgICAgICAgICAgICAgICh3YXlwb2ludC5vcHRpb25zLmNvbnRpbnVvdXMgfHwgaSA9PT0gd2F5cG9pbnRzLmxlbmd0aCAtIDEpICYmIHdheXBvaW50LnRyaWdnZXIoW2RpcmVjdGlvbl0pCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdGhpcy5jbGVhclRyaWdnZXJRdWV1ZXMoKQogICAgfSwgR3JvdXAucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbih3YXlwb2ludCkgewogICAgICAgIHRoaXMud2F5cG9pbnRzLnNvcnQoYnlUcmlnZ2VyUG9pbnQpOwogICAgICAgIHZhciBpbmRleCA9IFdheXBvaW50LkFkYXB0ZXIuaW5BcnJheSh3YXlwb2ludCwgdGhpcy53YXlwb2ludHMpLAogICAgICAgICAgICBpc0xhc3QgPSBpbmRleCA9PT0gdGhpcy53YXlwb2ludHMubGVuZ3RoIC0gMTsKICAgICAgICByZXR1cm4gaXNMYXN0ID8gbnVsbCA6IHRoaXMud2F5cG9pbnRzW2luZGV4ICsgMV0KICAgIH0sIEdyb3VwLnByb3RvdHlwZS5wcmV2aW91cyA9IGZ1bmN0aW9uKHdheXBvaW50KSB7CiAgICAgICAgdGhpcy53YXlwb2ludHMuc29ydChieVRyaWdnZXJQb2ludCk7CiAgICAgICAgdmFyIGluZGV4ID0gV2F5cG9pbnQuQWRhcHRlci5pbkFycmF5KHdheXBvaW50LCB0aGlzLndheXBvaW50cyk7CiAgICAgICAgcmV0dXJuIGluZGV4ID8gdGhpcy53YXlwb2ludHNbaW5kZXggLSAxXSA6IG51bGwKICAgIH0sIEdyb3VwLnByb3RvdHlwZS5xdWV1ZVRyaWdnZXIgPSBmdW5jdGlvbih3YXlwb2ludCwgZGlyZWN0aW9uKSB7CiAgICAgICAgdGhpcy50cmlnZ2VyUXVldWVzW2RpcmVjdGlvbl0ucHVzaCh3YXlwb2ludCkKICAgIH0sIEdyb3VwLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbih3YXlwb2ludCkgewogICAgICAgIHZhciBpbmRleCA9IFdheXBvaW50LkFkYXB0ZXIuaW5BcnJheSh3YXlwb2ludCwgdGhpcy53YXlwb2ludHMpOwogICAgICAgIGluZGV4ID4gLTEgJiYgdGhpcy53YXlwb2ludHMuc3BsaWNlKGluZGV4LCAxKQogICAgfSwgR3JvdXAucHJvdG90eXBlLmZpcnN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMud2F5cG9pbnRzWzBdCiAgICB9LCBHcm91cC5wcm90b3R5cGUubGFzdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLndheXBvaW50c1t0aGlzLndheXBvaW50cy5sZW5ndGggLSAxXQogICAgfSwgR3JvdXAuZmluZE9yQ3JlYXRlID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIHJldHVybiBncm91cHNbb3B0aW9ucy5heGlzXVtvcHRpb25zLm5hbWVdIHx8IG5ldyBHcm91cChvcHRpb25zKQogICAgfSwgV2F5cG9pbnQuR3JvdXAgPSBHcm91cAp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIEpRdWVyeUFkYXB0ZXIoZWxlbWVudCkgewogICAgICAgIHRoaXMuJGVsZW1lbnQgPSAkKGVsZW1lbnQpCiAgICB9CiAgICB2YXIgJCA9IHdpbmRvdy5qUXVlcnksCiAgICAgICAgV2F5cG9pbnQgPSB3aW5kb3cuV2F5cG9pbnQ7CiAgICAkLmVhY2goWyJpbm5lckhlaWdodCIsICJpbm5lcldpZHRoIiwgIm9mZiIsICJvZmZzZXQiLCAib24iLCAib3V0ZXJIZWlnaHQiLCAib3V0ZXJXaWR0aCIsICJzY3JvbGxMZWZ0IiwgInNjcm9sbFRvcCJdLCBmdW5jdGlvbihpLCBtZXRob2QpIHsKICAgICAgICBKUXVlcnlBZGFwdGVyLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnRbbWV0aG9kXS5hcHBseSh0aGlzLiRlbGVtZW50LCBhcmdzKQogICAgICAgIH0KICAgIH0pLCAkLmVhY2goWyJleHRlbmQiLCAiaW5BcnJheSIsICJpc0VtcHR5T2JqZWN0Il0sIGZ1bmN0aW9uKGksIG1ldGhvZCkgewogICAgICAgIEpRdWVyeUFkYXB0ZXJbbWV0aG9kXSA9ICRbbWV0aG9kXQogICAgfSksIFdheXBvaW50LmFkYXB0ZXJzLnB1c2goewogICAgICAgIG5hbWU6ICJqcXVlcnkiLAogICAgICAgIEFkYXB0ZXI6IEpRdWVyeUFkYXB0ZXIKICAgIH0pLCBXYXlwb2ludC5BZGFwdGVyID0gSlF1ZXJ5QWRhcHRlcgp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGNyZWF0ZUV4dGVuc2lvbihmcmFtZXdvcmspIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB3YXlwb2ludHMgPSBbXSwKICAgICAgICAgICAgICAgIG92ZXJyaWRlcyA9IGFyZ3VtZW50c1swXTsKICAgICAgICAgICAgcmV0dXJuIGZyYW1ld29yay5pc0Z1bmN0aW9uKGFyZ3VtZW50c1swXSkgJiYgKG92ZXJyaWRlcyA9IGZyYW1ld29yay5leHRlbmQoe30sIGFyZ3VtZW50c1sxXSksIG92ZXJyaWRlcy5oYW5kbGVyID0gYXJndW1lbnRzWzBdKSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBmcmFtZXdvcmsuZXh0ZW5kKHt9LCBvdmVycmlkZXMsIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBvcHRpb25zLmNvbnRleHQgJiYgKG9wdGlvbnMuY29udGV4dCA9IGZyYW1ld29yayh0aGlzKS5jbG9zZXN0KG9wdGlvbnMuY29udGV4dClbMF0pLCB3YXlwb2ludHMucHVzaChuZXcgV2F5cG9pbnQob3B0aW9ucykpCiAgICAgICAgICAgIH0pLCB3YXlwb2ludHMKICAgICAgICB9CiAgICB9CiAgICB2YXIgV2F5cG9pbnQgPSB3aW5kb3cuV2F5cG9pbnQ7CiAgICB3aW5kb3cualF1ZXJ5ICYmICh3aW5kb3cualF1ZXJ5LmZuLmVsZW1lbnRvcldheXBvaW50ID0gY3JlYXRlRXh0ZW5zaW9uKHdpbmRvdy5qUXVlcnkpKSwgd2luZG93LlplcHRvICYmICh3aW5kb3cuWmVwdG8uZm4uZWxlbWVudG9yV2F5cG9pbnQgPSBjcmVhdGVFeHRlbnNpb24od2luZG93LlplcHRvKSkKfSgpOw=="}},"time_used":10,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":10,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/images/payments/payment-ethereum.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.093Z","timestamp":1785130090093,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/images/payments/payment-ethereum.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=05cu4N%2BlEeSIEJmG6TpJ44LXukcdLLH85l7siFiFIR9LitIKT76GwL8cFuMuPwA9z8oaVm8EwEmKZLrXnMPYHK7EgwA2QvIZ7obhXvaXUCueUyUmnNF5wDEJJcvPYyH7hkvF8X41ug%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d371e6b120a-OSL\r\ncontent-length: 1554\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":1554,"size_decoded":2315,"mime_type":"image/png","magic":"PNG image data, 148 x 51, 8-bit/color RGBA, non-interlaced","md5":"df3a916108a4235346b8a544ee681d66","sha1":"8030bad0b6c72bce57f34bc1e471e72c93d766dd","sha256":"bb5f47e8bb8931ff94761bda3b7808fea2b1e3465fd6729ca00dfcdb2f24869f","sha512":"5c3462c0a64198429941ce0132d13e64d6edda94fd4843a6cbcff05b185863cdbbd19804ef580be1417f71263374386902a635fc16f4579449d110ab7ab6e78e","ssdeep":"","tlshash":"d1312a30e200c348833570bb4339ad1289e5efe59f2da35f5be44ae400a3194f910406","first_seen":"2026-07-27T04:11:05.735741Z","last_seen":"2026-07-27T05:30:59.796517Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/css2/calculator.css","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.999Z","timestamp":1785130089999,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/css2/calculator.css HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=qEZmuPoQrgXg%2FNfgNddPiSUEFgkM4d67wZmfFvQJX%2F%2B8xRIPrLfzSqxPc8PSHb2mAUE9CRtHC18F73UZKZ1mdYbUQNs%2B9bF3c42rzupiA1SHEWj8EzOTvOvsw60whh0VYHDnC9t1Kg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d368e38120a-OSL\r\ncontent-length: 595\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":2793,"size_decoded":1408,"mime_type":"text/css","magic":"ASCII text, with CRLF line terminators","md5":"8dd7e9f7f708a4f98e6d7b9a10497850","sha1":"27abc15bad3aff07b5e6eeeac56a12227b44b82f","sha256":"f337a9df8e0acbaa71fda3293da003d8c5561e0426ab9a4304fe7e38cbc7dd4e","sha512":"430a486b30e30d72a5b6b455529e91d823dbe5dd0bab5ae533d1de35dfe9671aaf80eaff3fd79ce31e15cea83e8cb402546b0f99cb3451a7a4591a8c1e997fbe","ssdeep":"","tlshash":"e3519ca9e2458087603785f06b674756ef6923330f0101757ff266648fbe169d610fde","first_seen":"2026-07-27T03:56:42.501306Z","last_seen":"2026-07-27T05:30:59.82449Z","times_seen":6,"resource_available":false,"data":"LmNhbGMtYmcgLmNhbC1iZyAuY2FsYmcgew0KICAgIHBhZGRpbmc6IDE1cHggMHB4IDBweCAwcHg7DQp9DQoNCi5jYWxjLWJnIC5jYWwtYmcgLmNhbGJnIHVsIHsNCiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7DQogICAgcGFkZGluZzogMHB4Ow0KICAgIG1hcmdpbjogMHB4Ow0KfQ0KDQouY2FsYy1iZyAuY2FsLWJnIC5jYWxiZyB1bCBsaSB7DQogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgIHBhZGRpbmc6IDdweCAwcHg7DQogICAgbWFyZ2luOiAwLjE1ZW07DQogICAgd2lkdGg6IDE5JTsNCn0NCg0KLmNhbGMtYmcgLmNhbC1iZyAuY2FsYmcgdWwgbGkgLmNhbDEgew0KICAgIG1hcmdpbjogMHB4IGF1dG8gMHB4Ow0KfQ0KDQouY2FsYy1iZyAuY2FsLWJnIC5jYWxiZyB1bCBsaSAuY2FsMSAuY2FsLXRpdGxlIHsNCiAgICBmb250LXNpemU6IDIwcHg7DQogICAgY29sb3I6ICM5N2E2YTU7DQogICAgZm9udC13ZWlnaHQ6IDUwMDsNCiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQouY2FsYy1iZyAuY2FsLWJnIC5jYWxiZyB1bCBsaSAuY2FsMSAuY2FsLWludmVzdCB7DQogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQp9DQoNCi5jYWxjLWJnIC5jYWwtYmcgLmNhbGJnIHVsIGxpIC5jYWwxIC5jYWwtaW52ZXN0IGlucHV0IHsNCiAgICBmb250LXNpemU6IDIwcHg7DQogICAgY29sb3I6ICMxMjYyZmY7DQogICAgaGVpZ2h0OiA0MHB4Ow0KICAgIHdpZHRoOiA5NSU7DQogICAgYm9yZGVyOiAxcHggc29saWQgIzEyNjJmZjsNCiAgICBiYWNrZ3JvdW5kOiAjMWUyMDI4Ow0KICAgIG91dGxpbmU6IG5vbmU7DQogICAgcGFkZGluZzogMHB4IDIwcHg7DQogICAgZm9udC13ZWlnaHQ6IDUwMDsNCiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7DQp9DQoNCi5jYWxjLWJnIC5jYWwtYmcgLmNhbGJnIHVsIGxpIC5jYWwyIC5jYWwtaW52ZXN0IGlucHV0IHsNCiAgICBmb250LXNpemU6IDIwcHg7DQogICAgY29sb3I6ICMxMjYyZmY7DQogICAgaGVpZ2h0OiA0MHB4Ow0KICAgIHdpZHRoOiA5NSU7DQogICAgYm9yZGVyOiAxcHggc29saWQgIzEyNjJmZjsNCiAgICBiYWNrZ3JvdW5kOiAjMWUyMDI4Ow0KICAgIG91dGxpbmU6IG5vbmU7DQogICAgcGFkZGluZzogMHB4IDMycHg7DQogICAgZm9udC13ZWlnaHQ6IDUwMDsNCiAgICBib3JkZXItcmFkaXVzOiAwcHg7DQogICAgYm9yZGVyLWxlZnQ6IG5vbmU7DQp9DQoNCi5jYWxjLWJnIC5jYWwtYmcgLmNhbGJnIHVsIGxpIC5jYWwyIC5jYWwtaW52ZXN0IHAgew0KICAgIHBhZGRpbmc6IDhweCAxN3B4Ow0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBjb2xvcjogIzEyNjJmZjsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIGJvcmRlci1yYWRpdXM6IDZweDsNCiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsNCiAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgZmxvYXQ6IGxlZnQ7DQogICAgbWFyZ2luLXRvcDogLTM5cHg7DQp9DQoNCi5jYWxjLWJnIC5jYWwtYmcgLmNhbGJnIHVsIGxpIC5jYWwyIC5jYWwtaW52ZXN0IHNlbGVjdCB7DQogICAgZm9udC1zaXplOiAyMHB4Ow0KICAgIGNvbG9yOiAjMTI2MmZmOw0KICAgIGhlaWdodDogNDBweDsNCiAgICB3aWR0aDogOTUlOw0KICAgIGJvcmRlcjogMXB4IHNvbGlkICMxMjYyZmY7DQogICAgYmFja2dyb3VuZDogIzFlMjAyODsNCiAgICBvdXRsaW5lOiBub25lOw0KICAgIHBhZGRpbmc6IDBweCAxMHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiA1MDA7DQogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50Ow0KfQ0KDQouY2FsYy11bCB7DQogICAgZGlzcGxheTogZmxleDsNCiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsNCiAgICBmbGV4LXdyYXA6IHdyYXA7DQp9DQoNCi5wbGFuLWxlZnQgew0KICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICBjb2xvcjogI2ZmZmZmZjsNCiAgICBoZWlnaHQ6IDQwcHg7DQogICAgLyogd2lkdGg6IDk1JTsgKi8NCiAgICBib3JkZXI6IDFweCBzb2xpZCAjMTI2MmZmOw0KICAgIGJhY2tncm91bmQ6ICMxZTIwMjg7DQogICAgb3V0bGluZTogbm9uZTsNCiAgICBwYWRkaW5nOiAwcHggMTBweDsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsNCiAgICBkaXNwbGF5OiBibG9jazsNCiAgICBkaXNwbGF5OiBmbGV4Ow0KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQp9DQoNCi5jYWwyIHsNCiAgICBkaXNwbGF5OiBmbGV4Ow0KfQ0KDQouY2FsMSB7DQogICAgZGlzcGxheTogZmxleDsNCn0NCg0KLmNhbGJnIHsNCiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoOSwgNTMsIDEwMSwgMCkgMyUsIHJnYigzOCA1NiA5NCkgMyUsIHJnYmEoNiwgMzYsIDc1LCAxKSA0OCUsIHJnYigzOCA1NiA5NCkgOTclLCByZ2JhKDksIDYwLCAxMjAsIDApIDk3JSk7DQogICAgcGFkZGluZzogMTVweCA1cHggIWltcG9ydGFudDsNCn0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7DQogICAgLmNhbGMtYmcgLmNhbC1iZyAuY2FsYmcgdWwgbGkgew0KICAgICAgICB3aWR0aDogMzMlOw0KICAgIH0NCn0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7DQogICAgLmNhbGMtYmcgLmNhbC1iZyAuY2FsYmcgdWwgbGkgew0KICAgICAgICB3aWR0aDogNzUlOw0KICAgIH0NCn0NCg0KLnBsYW4tYmlnIHsNCiAgICBmb250LXNpemU6IDI0cHg7DQogICAgY29sb3I6ICMxNTg4ZjA7DQp9"}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/themes/hello-elementor/assets/js/hello-frontend.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.021Z","timestamp":1785130090021,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/themes/hello-elementor/assets/js/hello-frontend.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=UUBz5KEr6sPB0FHwGbjlgJdf0c%2FhA201XCRe15N8czadezQm9REcdYUfyc0TeZtuPu5WkpPwepaYKgmb6phQZxFoqdoNmwAS%2FGyjoMhRUm8czsh7jADCensAirT1DIGiYtLT5YEOKA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ae43120a-OSL\r\ncontent-length: 634\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":2543,"size_decoded":1457,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (410)","md5":"f84c03076112dbf6b5eff97b11a38188","sha1":"3394bec63bddd933513570fc21ef72f764e1e038","sha256":"6c40ba651502891d2444bcfe5c62e8abe1f6d57fd015b9a1960cf86ec806c5b5","sha512":"02181a6ccfbcf08f447eee69c3ed43d33ec1e025dcf0a666fd9c258fa8e8695b0e66c1ce814d5a817ab524f7dac13b516bcaceaef8adcb5023aaba1ac04eda68","ssdeep":"","tlshash":"2d519d0ab29259fa913f20637f0b991e7126809f74056a78356cb3cd4f54ca07bf2b75","first_seen":"2026-07-27T03:56:42.490535Z","last_seen":"2026-07-27T05:30:59.82332Z","times_seen":6,"resource_available":true,"data":"KCgpID0+IHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIGNsYXNzIGVsZW1lbnRvckhlbGxvVGhlbWVIYW5kbGVyIHsKICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgdGhpcy5pbml0U2V0dGluZ3MoKSwgdGhpcy5pbml0RWxlbWVudHMoKSwgdGhpcy5iaW5kRXZlbnRzKCkKICAgICAgICB9CiAgICAgICAgaW5pdFNldHRpbmdzKCkgewogICAgICAgICAgICB0aGlzLnNldHRpbmdzID0gewogICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiAiaGVhZGVyLnNpdGUtaGVhZGVyIiwKICAgICAgICAgICAgICAgICAgICBmb290ZXI6ICJmb290ZXIuc2l0ZS1mb290ZXIiLAogICAgICAgICAgICAgICAgICAgIG1lbnVUb2dnbGU6ICIuc2l0ZS1oZWFkZXIgLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUiLAogICAgICAgICAgICAgICAgICAgIG1lbnVUb2dnbGVIb2xkZXI6ICIuc2l0ZS1oZWFkZXIgLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUtaG9sZGVyIiwKICAgICAgICAgICAgICAgICAgICBkcm9wZG93bk1lbnU6ICIuc2l0ZS1oZWFkZXIgLnNpdGUtbmF2aWdhdGlvbi1kcm9wZG93biIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpbml0RWxlbWVudHMoKSB7CiAgICAgICAgICAgIHRoaXMuZWxlbWVudHMgPSB7CiAgICAgICAgICAgICAgICAkd2luZG93OiBqUXVlcnkod2luZG93KSwKICAgICAgICAgICAgICAgICRkb2N1bWVudDogalF1ZXJ5KGRvY3VtZW50KSwKICAgICAgICAgICAgICAgICRoZWFkZXI6IGpRdWVyeSh0aGlzLnNldHRpbmdzLnNlbGVjdG9ycy5oZWFkZXIpLAogICAgICAgICAgICAgICAgJGZvb3RlcjogalF1ZXJ5KHRoaXMuc2V0dGluZ3Muc2VsZWN0b3JzLmZvb3RlciksCiAgICAgICAgICAgICAgICAkbWVudVRvZ2dsZTogalF1ZXJ5KHRoaXMuc2V0dGluZ3Muc2VsZWN0b3JzLm1lbnVUb2dnbGUpLAogICAgICAgICAgICAgICAgJG1lbnVUb2dnbGVIb2xkZXI6IGpRdWVyeSh0aGlzLnNldHRpbmdzLnNlbGVjdG9ycy5tZW51VG9nZ2xlSG9sZGVyKSwKICAgICAgICAgICAgICAgICRkcm9wZG93bk1lbnU6IGpRdWVyeSh0aGlzLnNldHRpbmdzLnNlbGVjdG9ycy5kcm9wZG93bk1lbnUpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kbWVudVRvZ2dsZS5vbigiY2xpY2siLCAoKCkgPT4gdGhpcy5oYW5kbGVNZW51VG9nZ2xlKCkpKS5vbigia2V5dXAiLCAoZSA9PiB7CiAgICAgICAgICAgICAgICAxMyAhPT0gZS5rZXlDb2RlICYmIDMyICE9PSBlLmtleUNvZGUgfHwgZS5jdXJyZW50VGFyZ2V0LmNsaWNrKCkKICAgICAgICAgICAgfSkpLCB0aGlzLmVsZW1lbnRzLiRkcm9wZG93bk1lbnUub24oImNsaWNrIiwgIi5tZW51LWl0ZW0taGFzLWNoaWxkcmVuID4gYSIsIHRoaXMuaGFuZGxlTWVudUNoaWxkcmVuKQogICAgICAgIH0KICAgICAgICBjbG9zZU1lbnVJdGVtcygpIHsKICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kbWVudVRvZ2dsZUhvbGRlci5yZW1vdmVDbGFzcygiZWxlbWVudG9yLWFjdGl2ZSIpLCB0aGlzLmVsZW1lbnRzLiR3aW5kb3cub2ZmKCJyZXNpemUiLCAoKCkgPT4gdGhpcy5jbG9zZU1lbnVJdGVtcygpKSkKICAgICAgICB9CiAgICAgICAgaGFuZGxlTWVudVRvZ2dsZSgpIHsKICAgICAgICAgICAgY29uc3QgZSA9ICF0aGlzLmVsZW1lbnRzLiRtZW51VG9nZ2xlSG9sZGVyLmhhc0NsYXNzKCJlbGVtZW50b3ItYWN0aXZlIik7CiAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJG1lbnVUb2dnbGUuYXR0cigiYXJpYS1leHBhbmRlZCIsIGUpLCB0aGlzLmVsZW1lbnRzLiRkcm9wZG93bk1lbnUuYXR0cigiYXJpYS1oaWRkZW4iLCAhZSksIHRoaXMuZWxlbWVudHMuJG1lbnVUb2dnbGVIb2xkZXIudG9nZ2xlQ2xhc3MoImVsZW1lbnRvci1hY3RpdmUiLCBlKSwgdGhpcy5lbGVtZW50cy4kZHJvcGRvd25NZW51LmZpbmQoIi5lbGVtZW50b3ItYWN0aXZlIikucmVtb3ZlQ2xhc3MoImVsZW1lbnRvci1hY3RpdmUiKSwgZSA/IHRoaXMuZWxlbWVudHMuJHdpbmRvdy5vbigicmVzaXplIiwgKCgpID0+IHRoaXMuY2xvc2VNZW51SXRlbXMoKSkpIDogdGhpcy5lbGVtZW50cy4kd2luZG93Lm9mZigicmVzaXplIiwgKCgpID0+IHRoaXMuY2xvc2VNZW51SXRlbXMoKSkpCiAgICAgICAgfQogICAgICAgIGhhbmRsZU1lbnVDaGlsZHJlbihlKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSBqUXVlcnkoZS5jdXJyZW50VGFyZ2V0KS5wYXJlbnQoImxpIik7CiAgICAgICAgICAgIHQuaGFzQ2xhc3MoImVsZW1lbnRvci1hY3RpdmUiKSA/IHQucmVtb3ZlQ2xhc3MoImVsZW1lbnRvci1hY3RpdmUiKSA6IHQuYWRkQ2xhc3MoImVsZW1lbnRvci1hY3RpdmUiKQogICAgICAgIH0KICAgIH0KICAgIGpRdWVyeSgoKCkgPT4gewogICAgICAgIG5ldyBlbGVtZW50b3JIZWxsb1RoZW1lSGFuZGxlcgogICAgfSkpCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWhlbGxvLWZyb250ZW5kLm1pbi5qcy5tYXA="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/element.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.034Z","timestamp":1785130090034,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-includes/js/dist/element.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=MXi6iORfi6MbY%2FB2PcTN7dyQH8WBDFzWHaNGSXvN3C0IG4dO9xdwalMDNAh4WqRwhffQz5%2FCIs5S%2F24r3IRcIkS%2F7Z4CgQ5m2FFHlNuiINCyrMcsDqRAa%2BolBhVNxOnPY0JVQk1a7g%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36be4e120a-OSL\r\ncontent-length: 5576\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":21505,"size_decoded":6406,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (1274)","md5":"9e414da9a59d14ccb2d0d80972bb9a18","sha1":"216532fed7a75d05b461bf01ea0d50c7f67c3236","sha256":"42eae30cf3fc974e933c55a54c82f2abbe14ab7374e7dd324ac519861773f96b","sha512":"3a1fb35733a27004a4bcbe7c18b502683eaf0157cf3a6c3e3c65a0d6cfe1acdb39cfcdddb7cfebdf14d7ef9bcee428f92e690bafc0fa6f4c719a13fa82355bbc","ssdeep":"192:jit81bMjT+RDsPomVvivym+pMhuyGnZGWPUAfvEDk4atSxp/NpKD+sF1Vbel9v1o:/Sb59i6uh8rKHCY0bKIySVHka6jUZGM","tlshash":"13a25f9db8f265278243f07d95afc008b135540b255dad987a0c81b86f9e83c86f7bec","first_seen":"2026-07-27T04:11:05.701664Z","last_seen":"2026-07-27T05:30:59.803311Z","times_seen":3,"resource_available":true,"data":"LyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLwohZnVuY3Rpb24oKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgZSA9IHsKICAgICAgICA0NDcwOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByID0gbigxODUwKTsKICAgICAgICAgICAgdC5zID0gci5jcmVhdGVSb290LAogICAgICAgICAgICB0LmEgPSByLmh5ZHJhdGVSb290CiAgICAgICAgfSwKICAgICAgICAxODUwOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IHdpbmRvdy5SZWFjdERPTQogICAgICAgIH0KICAgIH0KICAgICAgLCB0ID0ge307CiAgICBmdW5jdGlvbiBuKHIpIHsKICAgICAgICB2YXIgbyA9IHRbcl07CiAgICAgICAgaWYgKHZvaWQgMCAhPT0gbykKICAgICAgICAgICAgcmV0dXJuIG8uZXhwb3J0czsKICAgICAgICB2YXIgaSA9IHRbcl0gPSB7CiAgICAgICAgICAgIGV4cG9ydHM6IHt9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gZVtyXShpLCBpLmV4cG9ydHMsIG4pLAogICAgICAgIGkuZXhwb3J0cwogICAgfQogICAgbi5kID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIGZvciAodmFyIHIgaW4gdCkKICAgICAgICAgICAgbi5vKHQsIHIpICYmICFuLm8oZSwgcikgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHsKICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgZ2V0OiB0W3JdCiAgICAgICAgICAgIH0pCiAgICB9CiAgICAsCiAgICBuLm8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCB0KQogICAgfQogICAgLAogICAgbi5yID0gZnVuY3Rpb24oZSkgewogICAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBTeW1ib2wgJiYgU3ltYm9sLnRvU3RyaW5nVGFnICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsKICAgICAgICAgICAgdmFsdWU6ICJNb2R1bGUiCiAgICAgICAgfSksCiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KQogICAgfQogICAgOwogICAgdmFyIHIgPSB7fTsKICAgICFmdW5jdGlvbigpIHsKICAgICAgICBuLnIociksCiAgICAgICAgbi5kKHIsIHsKICAgICAgICAgICAgQ2hpbGRyZW46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuQ2hpbGRyZW4KICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29tcG9uZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLkNvbXBvbmVudAogICAgICAgICAgICB9LAogICAgICAgICAgICBGcmFnbWVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5GcmFnbWVudAogICAgICAgICAgICB9LAogICAgICAgICAgICBQbGF0Zm9ybTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYgogICAgICAgICAgICB9LAogICAgICAgICAgICBSYXdIVE1MOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBBCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN0cmljdE1vZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuU3RyaWN0TW9kZQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdXNwZW5zZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5TdXNwZW5zZQogICAgICAgICAgICB9LAogICAgICAgICAgICBjbG9uZUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuY2xvbmVFbGVtZW50CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvbmNhdENoaWxkcmVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBoCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZUNvbnRleHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuY3JlYXRlQ29udGV4dAogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmNyZWF0ZUVsZW1lbnQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlSW50ZXJwb2xhdGVFbGVtZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZVBvcnRhbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZy5jcmVhdGVQb3J0YWwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlUmVmOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmNyZWF0ZVJlZgogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGVSb290OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB5LnMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmluZERPTU5vZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGcuZmluZERPTU5vZGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmx1c2hTeW5jOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBnLmZsdXNoU3luYwogICAgICAgICAgICB9LAogICAgICAgICAgICBmb3J3YXJkUmVmOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmZvcndhcmRSZWYKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaHlkcmF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZy5oeWRyYXRlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGh5ZHJhdGVSb290OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB5LmEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXNFbXB0eUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHYKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXNWYWxpZEVsZW1lbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuaXNWYWxpZEVsZW1lbnQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbGF6eTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5sYXp5CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG1lbW86IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUubWVtbwogICAgICAgICAgICB9LAogICAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGcucmVuZGVyCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbmRlclRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBHCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0YXJ0VHJhbnNpdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5zdGFydFRyYW5zaXRpb24KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc3dpdGNoQ2hpbGRyZW5Ob2RlTmFtZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbQogICAgICAgICAgICB9LAogICAgICAgICAgICB1bm1vdW50Q29tcG9uZW50QXROb2RlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBnLnVubW91bnRDb21wb25lbnRBdE5vZGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUudXNlQ2FsbGJhY2sKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlQ29udGV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VDb250ZXh0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVzZURlYnVnVmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUudXNlRGVidWdWYWx1ZQogICAgICAgICAgICB9LAogICAgICAgICAgICB1c2VEZWZlcnJlZFZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZURlZmVycmVkVmFsdWUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlRWZmZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZUVmZmVjdAogICAgICAgICAgICB9LAogICAgICAgICAgICB1c2VJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VJZAogICAgICAgICAgICB9LAogICAgICAgICAgICB1c2VJbXBlcmF0aXZlSGFuZGxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZUltcGVyYXRpdmVIYW5kbGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlSW5zZXJ0aW9uRWZmZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZUluc2VydGlvbkVmZmVjdAogICAgICAgICAgICB9LAogICAgICAgICAgICB1c2VMYXlvdXRFZmZlY3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUudXNlTGF5b3V0RWZmZWN0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVzZU1lbW86IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUudXNlTWVtbwogICAgICAgICAgICB9LAogICAgICAgICAgICB1c2VSZWR1Y2VyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZVJlZHVjZXIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlUmVmOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZVJlZgogICAgICAgICAgICB9LAogICAgICAgICAgICB1c2VTdGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VTdGF0ZQogICAgICAgICAgICB9LAogICAgICAgICAgICB1c2VTeW5jRXh0ZXJuYWxTdG9yZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VTeW5jRXh0ZXJuYWxTdG9yZQogICAgICAgICAgICB9LAogICAgICAgICAgICB1c2VUcmFuc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZVRyYW5zaXRpb24KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHZhciBlID0gd2luZG93LlJlYWN0OwogICAgICAgIGxldCB0LCBvLCBpLCBhOwogICAgICAgIGNvbnN0IHUgPSAvPChcLyk/KFx3KylccyooXC8pPz4vZzsKICAgICAgICBmdW5jdGlvbiBzKGUsIHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGUsCiAgICAgICAgICAgICAgICB0b2tlblN0YXJ0OiB0LAogICAgICAgICAgICAgICAgdG9rZW5MZW5ndGg6IG4sCiAgICAgICAgICAgICAgICBwcmV2T2Zmc2V0OiByLAogICAgICAgICAgICAgICAgbGVhZGluZ1RleHRTdGFydDogbywKICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvbnN0IGMgPSB0PT57CiAgICAgICAgICAgIGNvbnN0IG4gPSAib2JqZWN0IiA9PSB0eXBlb2YgdAogICAgICAgICAgICAgICwgciA9IG4gJiYgT2JqZWN0LnZhbHVlcyh0KTsKICAgICAgICAgICAgcmV0dXJuIG4gJiYgci5sZW5ndGggJiYgci5ldmVyeSgodD0+KDAsCiAgICAgICAgICAgIGUuaXNWYWxpZEVsZW1lbnQpKHQpKSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGwobikgewogICAgICAgICAgICBjb25zdCByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdS5leGVjKHQpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGUpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsibm8tbW9yZS10b2tlbnMiXTsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlLmluZGV4CiAgICAgICAgICAgICAgICAgICwgW3IsbyxpLGFdID0gZQogICAgICAgICAgICAgICAgICAsIHMgPSByLmxlbmd0aDsKICAgICAgICAgICAgICAgIGlmIChhKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBbInNlbGYtY2xvc2VkIiwgaSwgbiwgc107CiAgICAgICAgICAgICAgICBpZiAobykKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyJjbG9zZXIiLCBpLCBuLCBzXTsKICAgICAgICAgICAgICAgIHJldHVybiBbIm9wZW5lciIsIGksIG4sIHNdCiAgICAgICAgICAgIH0oKQogICAgICAgICAgICAgICwgW2MsbCxwLGhdID0gcgogICAgICAgICAgICAgICwgbSA9IGEubGVuZ3RoCiAgICAgICAgICAgICAgLCBnID0gcCA+IG8gPyBvIDogbnVsbDsKICAgICAgICAgICAgaWYgKCFuW2xdKQogICAgICAgICAgICAgICAgcmV0dXJuIGYoKSwKICAgICAgICAgICAgICAgICExOwogICAgICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgICAgY2FzZSAibm8tbW9yZS10b2tlbnMiOgogICAgICAgICAgICAgICAgaWYgKDAgIT09IG0pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7bGVhZGluZ1RleHRTdGFydDogZSwgdG9rZW5TdGFydDogbn0gPSBhLnBvcCgpOwogICAgICAgICAgICAgICAgICAgIGkucHVzaCh0LnN1YnN0cihlLCBuKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBmKCksCiAgICAgICAgICAgICAgICAhMTsKICAgICAgICAgICAgY2FzZSAic2VsZi1jbG9zZWQiOgogICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IG0gPyAobnVsbCAhPT0gZyAmJiBpLnB1c2godC5zdWJzdHIoZywgcCAtIGcpKSwKICAgICAgICAgICAgICAgIGkucHVzaChuW2xdKSwKICAgICAgICAgICAgICAgIG8gPSBwICsgaCwKICAgICAgICAgICAgICAgICEwKSA6IChkKHMobltsXSwgcCwgaCkpLAogICAgICAgICAgICAgICAgbyA9IHAgKyBoLAogICAgICAgICAgICAgICAgITApOwogICAgICAgICAgICBjYXNlICJvcGVuZXIiOgogICAgICAgICAgICAgICAgcmV0dXJuIGEucHVzaChzKG5bbF0sIHAsIGgsIHAgKyBoLCBnKSksCiAgICAgICAgICAgICAgICBvID0gcCArIGgsCiAgICAgICAgICAgICAgICAhMDsKICAgICAgICAgICAgY2FzZSAiY2xvc2VyIjoKICAgICAgICAgICAgICAgIGlmICgxID09PSBtKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHtlbGVtZW50OiByLCBsZWFkaW5nVGV4dFN0YXJ0OiBvLCBwcmV2T2Zmc2V0OiB1LCB0b2tlblN0YXJ0OiBzLCBjaGlsZHJlbjogY30gPSBhLnBvcCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgLCBsID0gbiA/IHQuc3Vic3RyKHUsIG4gLSB1KSA6IHQuc3Vic3RyKHUpOwogICAgICAgICAgICAgICAgICAgICAgICBsICYmIGMucHVzaChsKTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gbyAmJiBpLnB1c2godC5zdWJzdHIobywgcyAtIG8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5wdXNoKCgwLAogICAgICAgICAgICAgICAgICAgICAgICBlLmNsb25lRWxlbWVudCkociwgbnVsbCwgLi4uYykpCiAgICAgICAgICAgICAgICAgICAgfShwKSwKICAgICAgICAgICAgICAgICAgICBvID0gcCArIGgsCiAgICAgICAgICAgICAgICAgICAgITA7CiAgICAgICAgICAgICAgICBjb25zdCByID0gYS5wb3AoKQogICAgICAgICAgICAgICAgICAsIHUgPSB0LnN1YnN0cihyLnByZXZPZmZzZXQsIHAgLSByLnByZXZPZmZzZXQpOwogICAgICAgICAgICAgICAgci5jaGlsZHJlbi5wdXNoKHUpLAogICAgICAgICAgICAgICAgci5wcmV2T2Zmc2V0ID0gcCArIGg7CiAgICAgICAgICAgICAgICBjb25zdCBjID0gcyhyLmVsZW1lbnQsIHIudG9rZW5TdGFydCwgci50b2tlbkxlbmd0aCwgcCArIGgpOwogICAgICAgICAgICAgICAgcmV0dXJuIGMuY2hpbGRyZW4gPSByLmNoaWxkcmVuLAogICAgICAgICAgICAgICAgZChjKSwKICAgICAgICAgICAgICAgIG8gPSBwICsgaCwKICAgICAgICAgICAgICAgICEwOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuIGYoKSwKICAgICAgICAgICAgICAgICExCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gZigpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHQubGVuZ3RoIC0gbzsKICAgICAgICAgICAgMCAhPT0gZSAmJiBpLnB1c2godC5zdWJzdHIobywgZSkpCiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGQobikgewogICAgICAgICAgICBjb25zdCB7ZWxlbWVudDogciwgdG9rZW5TdGFydDogbywgdG9rZW5MZW5ndGg6IGksIHByZXZPZmZzZXQ6IHUsIGNoaWxkcmVuOiBzfSA9IG4KICAgICAgICAgICAgICAsIGMgPSBhW2EubGVuZ3RoIC0gMV0KICAgICAgICAgICAgICAsIGwgPSB0LnN1YnN0cihjLnByZXZPZmZzZXQsIG8gLSBjLnByZXZPZmZzZXQpOwogICAgICAgICAgICBsICYmIGMuY2hpbGRyZW4ucHVzaChsKSwKICAgICAgICAgICAgYy5jaGlsZHJlbi5wdXNoKCgwLAogICAgICAgICAgICBlLmNsb25lRWxlbWVudCkociwgbnVsbCwgLi4ucykpLAogICAgICAgICAgICBjLnByZXZPZmZzZXQgPSB1IHx8IG8gKyBpCiAgICAgICAgfQogICAgICAgIHZhciBwID0gKG4scik9PnsKICAgICAgICAgICAgaWYgKHQgPSBuLAogICAgICAgICAgICBvID0gMCwKICAgICAgICAgICAgaSA9IFtdLAogICAgICAgICAgICBhID0gW10sCiAgICAgICAgICAgIHUubGFzdEluZGV4ID0gMCwKICAgICAgICAgICAgIWMocikpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgY29udmVyc2lvbk1hcCBwcm92aWRlZCBpcyBub3QgdmFsaWQuIEl0IG11c3QgYmUgYW4gb2JqZWN0IHdpdGggdmFsdWVzIHRoYXQgYXJlIFdQRWxlbWVudHMiKTsKICAgICAgICAgICAgZG8ge30gd2hpbGUgKGwocikpOwogICAgICAgICAgICByZXR1cm4gKDAsCiAgICAgICAgICAgIGUuY3JlYXRlRWxlbWVudCkoZS5GcmFnbWVudCwgbnVsbCwgLi4uaSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGgoLi4udCkgewogICAgICAgICAgICByZXR1cm4gdC5yZWR1Y2UoKCh0LG4scik9PihlLkNoaWxkcmVuLmZvckVhY2gobiwgKChuLG8pPT57CiAgICAgICAgICAgICAgICBuICYmICJzdHJpbmciICE9IHR5cGVvZiBuICYmIChuID0gKDAsCiAgICAgICAgICAgICAgICBlLmNsb25lRWxlbWVudCkobiwgewogICAgICAgICAgICAgICAgICAgIGtleTogW3IsIG9dLmpvaW4oKQogICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgdC5wdXNoKG4pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgKSksCiAgICAgICAgICAgIHQpKSwgW10pCiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIG0odCwgbikgewogICAgICAgICAgICByZXR1cm4gdCAmJiBlLkNoaWxkcmVuLm1hcCh0LCAoKHQscik9PnsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdD8udmFsdWVPZigpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwKICAgICAgICAgICAgICAgICAgICBlLmNyZWF0ZUVsZW1lbnQpKG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiByCiAgICAgICAgICAgICAgICAgICAgfSwgdCk7CiAgICAgICAgICAgICAgICBjb25zdCB7Y2hpbGRyZW46IG8sIC4uLml9ID0gdC5wcm9wczsKICAgICAgICAgICAgICAgIHJldHVybiAoMCwKICAgICAgICAgICAgICAgIGUuY3JlYXRlRWxlbWVudCkobiwgewogICAgICAgICAgICAgICAgICAgIGtleTogciwKICAgICAgICAgICAgICAgICAgICAuLi5pCiAgICAgICAgICAgICAgICB9LCBvKQogICAgICAgICAgICB9CiAgICAgICAgICAgICkpCiAgICAgICAgfQogICAgICAgIHZhciBnID0gbigxODUwKQogICAgICAgICAgLCB5ID0gbig0NDcwKTsKICAgICAgICBjb25zdCB2ID0gZT0+Im51bWJlciIgIT0gdHlwZW9mIGUgJiYgKCJzdHJpbmciID09IHR5cGVvZiBlPy52YWx1ZU9mKCkgfHwgQXJyYXkuaXNBcnJheShlKSA/ICFlLmxlbmd0aCA6ICFlKTsKICAgICAgICB2YXIgYiA9IHsKICAgICAgICAgICAgT1M6ICJ3ZWIiLAogICAgICAgICAgICBzZWxlY3Q6IGU9PiJ3ZWIiaW4gZSA/IGUud2ViIDogZS5kZWZhdWx0LAogICAgICAgICAgICBpc1dlYjogITAKICAgICAgICB9OwogICAgICAgIC8qIQogKiBpcy1wbGFpbi1vYmplY3QgPGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L2lzLXBsYWluLW9iamVjdD4KICoKICogQ29weXJpZ2h0IChjKSAyMDE0LTIwMTcsIEpvbiBTY2hsaW5rZXJ0LgogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAqLwogICAgICAgIGZ1bmN0aW9uIGsoZSkgewogICAgICAgICAgICByZXR1cm4gIltvYmplY3QgT2JqZWN0XSIgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKQogICAgICAgIH0KICAgICAgICB2YXIgdyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCwgbiA9IDEsIHIgPSBhcmd1bWVudHMubGVuZ3RoOyBuIDwgcjsgbisrKQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gaW4gdCA9IGFyZ3VtZW50c1tuXSkKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIG8pICYmIChlW29dID0gdFtvXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9CiAgICAgICAgICAgICwKICAgICAgICAgICAgdy5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgfTsKICAgICAgICBPYmplY3QuY3JlYXRlOwogICAgICAgIE9iamVjdC5jcmVhdGU7CiAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3VwcHJlc3NlZEVycm9yICYmIFN1cHByZXNzZWRFcnJvcjsKICAgICAgICBmdW5jdGlvbiBTKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUudG9Mb3dlckNhc2UoKQogICAgICAgIH0KICAgICAgICB2YXIgeCA9IFsvKFthLXowLTldKShbQS1aXSkvZywgLyhbQS1aXSkoW0EtWl1bYS16XSkvZ10KICAgICAgICAgICwgTyA9IC9bXkEtWjAtOV0rL2dpOwogICAgICAgIGZ1bmN0aW9uIEMoZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gdCBpbnN0YW5jZW9mIFJlZ0V4cCA/IGUucmVwbGFjZSh0LCBuKSA6IHQucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5yZXBsYWNlKHQsIG4pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgKSwgZSkKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gRShlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgJiYgKHQgPSB7fSksCiAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9IHt9KTsKICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSB0LnNwbGl0UmVnZXhwLCByID0gdm9pZCAwID09PSBuID8geCA6IG4sIG8gPSB0LnN0cmlwUmVnZXhwLCBpID0gdm9pZCAwID09PSBvID8gTyA6IG8sIGEgPSB0LnRyYW5zZm9ybSwgdSA9IHZvaWQgMCA9PT0gYSA/IFMgOiBhLCBzID0gdC5kZWxpbWl0ZXIsIGMgPSB2b2lkIDAgPT09IHMgPyAiICIgOiBzLCBsID0gQyhDKGUsIHIsICIkMVwwJDIiKSwgaSwgIlwwIiksIGYgPSAwLCBkID0gbC5sZW5ndGg7ICJcMCIgPT09IGwuY2hhckF0KGYpOyApCiAgICAgICAgICAgICAgICAgICAgZisrOwogICAgICAgICAgICAgICAgZm9yICg7ICJcMCIgPT09IGwuY2hhckF0KGQgLSAxKTsgKQogICAgICAgICAgICAgICAgICAgIGQtLTsKICAgICAgICAgICAgICAgIHJldHVybiBsLnNsaWNlKGYsIGQpLnNwbGl0KCJcMCIpLm1hcCh1KS5qb2luKGMpCiAgICAgICAgICAgIH0oZSwgdyh7CiAgICAgICAgICAgICAgICBkZWxpbWl0ZXI6ICIuIgogICAgICAgICAgICB9LCB0KSkKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gUihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgJiYgKHQgPSB7fSksCiAgICAgICAgICAgIEUoZSwgdyh7CiAgICAgICAgICAgICAgICBkZWxpbWl0ZXI6ICItIgogICAgICAgICAgICB9LCB0KSkKICAgICAgICB9CiAgICAgICAgdmFyIFQgPSB3aW5kb3cud3AuZXNjYXBlSHRtbDsKICAgICAgICBmdW5jdGlvbiBBKHtjaGlsZHJlbjogdCwgLi4ubn0pIHsKICAgICAgICAgICAgbGV0IHIgPSAiIjsKICAgICAgICAgICAgcmV0dXJuIGUuQ2hpbGRyZW4udG9BcnJheSh0KS5mb3JFYWNoKChlPT57CiAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiAiIiAhPT0gZS50cmltKCkgJiYgKHIgKz0gZSkKICAgICAgICAgICAgfQogICAgICAgICAgICApKSwKICAgICAgICAgICAgKDAsCiAgICAgICAgICAgIGUuY3JlYXRlRWxlbWVudCkoImRpdiIsIHsKICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7CiAgICAgICAgICAgICAgICAgICAgX19odG1sOiByCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgLi4ubgogICAgICAgICAgICB9KQogICAgICAgIH0KICAgICAgICBjb25zdCB7UHJvdmlkZXI6IE0sIENvbnN1bWVyOiBJfSA9ICgwLAogICAgICAgIGUuY3JlYXRlQ29udGV4dCkodm9pZCAwKQogICAgICAgICAgLCBMID0gKDAsCiAgICAgICAgZS5mb3J3YXJkUmVmKSgoKCk9Pm51bGwpKQogICAgICAgICAgLCBQID0gbmV3IFNldChbInN0cmluZyIsICJib29sZWFuIiwgIm51bWJlciJdKQogICAgICAgICAgLCBqID0gbmV3IFNldChbImFyZWEiLCAiYmFzZSIsICJiciIsICJjb2wiLCAiY29tbWFuZCIsICJlbWJlZCIsICJociIsICJpbWciLCAiaW5wdXQiLCAia2V5Z2VuIiwgImxpbmsiLCAibWV0YSIsICJwYXJhbSIsICJzb3VyY2UiLCAidHJhY2siLCAid2JyIl0pCiAgICAgICAgICAsIEggPSBuZXcgU2V0KFsiYWxsb3dmdWxsc2NyZWVuIiwgImFsbG93cGF5bWVudHJlcXVlc3QiLCAiYWxsb3d1c2VybWVkaWEiLCAiYXN5bmMiLCAiYXV0b2ZvY3VzIiwgImF1dG9wbGF5IiwgImNoZWNrZWQiLCAiY29udHJvbHMiLCAiZGVmYXVsdCIsICJkZWZlciIsICJkaXNhYmxlZCIsICJkb3dubG9hZCIsICJmb3Jtbm92YWxpZGF0ZSIsICJoaWRkZW4iLCAiaXNtYXAiLCAiaXRlbXNjb3BlIiwgImxvb3AiLCAibXVsdGlwbGUiLCAibXV0ZWQiLCAibm9tb2R1bGUiLCAibm92YWxpZGF0ZSIsICJvcGVuIiwgInBsYXlzaW5saW5lIiwgInJlYWRvbmx5IiwgInJlcXVpcmVkIiwgInJldmVyc2VkIiwgInNlbGVjdGVkIiwgInR5cGVtdXN0bWF0Y2giXSkKICAgICAgICAgICwgeiA9IG5ldyBTZXQoWyJhdXRvY2FwaXRhbGl6ZSIsICJhdXRvY29tcGxldGUiLCAiY2hhcnNldCIsICJjb250ZW50ZWRpdGFibGUiLCAiY3Jvc3NvcmlnaW4iLCAiZGVjb2RpbmciLCAiZGlyIiwgImRyYWdnYWJsZSIsICJlbmN0eXBlIiwgImZvcm1lbmN0eXBlIiwgImZvcm1tZXRob2QiLCAiaHR0cC1lcXVpdiIsICJpbnB1dG1vZGUiLCAia2luZCIsICJtZXRob2QiLCAicHJlbG9hZCIsICJzY29wZSIsICJzaGFwZSIsICJzcGVsbGNoZWNrIiwgInRyYW5zbGF0ZSIsICJ0eXBlIiwgIndyYXAiXSkKICAgICAgICAgICwgRCA9IG5ldyBTZXQoWyJhbmltYXRpb24iLCAiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCAiYmFzZWxpbmVTaGlmdCIsICJib3JkZXJJbWFnZU91dHNldCIsICJib3JkZXJJbWFnZVNsaWNlIiwgImJvcmRlckltYWdlV2lkdGgiLCAiY29sdW1uQ291bnQiLCAiY3giLCAiY3kiLCAiZmlsbE9wYWNpdHkiLCAiZmxleEdyb3ciLCAiZmxleFNocmluayIsICJmbG9vZE9wYWNpdHkiLCAiZm9udFdlaWdodCIsICJncmlkQ29sdW1uRW5kIiwgImdyaWRDb2x1bW5TdGFydCIsICJncmlkUm93RW5kIiwgImdyaWRSb3dTdGFydCIsICJsaW5lSGVpZ2h0IiwgIm9wYWNpdHkiLCAib3JkZXIiLCAib3JwaGFucyIsICJyIiwgInJ4IiwgInJ5IiwgInNoYXBlSW1hZ2VUaHJlc2hvbGQiLCAic3RvcE9wYWNpdHkiLCAic3Ryb2tlRGFzaGFycmF5IiwgInN0cm9rZURhc2hvZmZzZXQiLCAic3Ryb2tlTWl0ZXJsaW1pdCIsICJzdHJva2VPcGFjaXR5IiwgInN0cm9rZVdpZHRoIiwgInRhYlNpemUiLCAid2lkb3dzIiwgIngiLCAieSIsICJ6SW5kZXgiLCAiem9vbSJdKTsKICAgICAgICBmdW5jdGlvbiBWKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQuc29tZSgodD0+MCA9PT0gZS5pbmRleE9mKHQpKSkKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gVyhlKSB7CiAgICAgICAgICAgIHJldHVybiAia2V5IiA9PT0gZSB8fCAiY2hpbGRyZW4iID09PSBlCiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIF8oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gInN0eWxlIiA9PT0gZSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmICh0ID0gZSwKICAgICAgICAgICAgICAgICExID09PSBrKHQpIHx8IHZvaWQgMCAhPT0gKG4gPSB0LmNvbnN0cnVjdG9yKSAmJiAoITEgPT09IGsociA9IG4ucHJvdG90eXBlKSB8fCAhMSA9PT0gci5oYXNPd25Qcm9wZXJ0eSgiaXNQcm90b3R5cGVPZiIpKSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgICAgICAgIHZhciB0LCBuLCByOwogICAgICAgICAgICAgICAgbGV0IG87CiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgaW4gZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlW3RdOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IG4pCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIG8gPyBvICs9ICI7IiA6IG8gPSAiIjsKICAgICAgICAgICAgICAgICAgICBvICs9IHEodCkgKyAiOiIgKyBYKHQsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICB9KHQpIDogdAogICAgICAgIH0KICAgICAgICBjb25zdCBGID0gWyJhY2NlbnRIZWlnaHQiLCAiYWxpZ25tZW50QmFzZWxpbmUiLCAiYXJhYmljRm9ybSIsICJiYXNlbGluZVNoaWZ0IiwgImNhcEhlaWdodCIsICJjbGlwUGF0aCIsICJjbGlwUnVsZSIsICJjb2xvckludGVycG9sYXRpb24iLCAiY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyIsICJjb2xvclByb2ZpbGUiLCAiY29sb3JSZW5kZXJpbmciLCAiZG9taW5hbnRCYXNlbGluZSIsICJlbmFibGVCYWNrZ3JvdW5kIiwgImZpbGxPcGFjaXR5IiwgImZpbGxSdWxlIiwgImZsb29kQ29sb3IiLCAiZmxvb2RPcGFjaXR5IiwgImZvbnRGYW1pbHkiLCAiZm9udFNpemUiLCAiZm9udFNpemVBZGp1c3QiLCAiZm9udFN0cmV0Y2giLCAiZm9udFN0eWxlIiwgImZvbnRWYXJpYW50IiwgImZvbnRXZWlnaHQiLCAiZ2x5cGhOYW1lIiwgImdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIiwgImdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCIsICJob3JpekFkdlgiLCAiaG9yaXpPcmlnaW5YIiwgImltYWdlUmVuZGVyaW5nIiwgImxldHRlclNwYWNpbmciLCAibGlnaHRpbmdDb2xvciIsICJtYXJrZXJFbmQiLCAibWFya2VyTWlkIiwgIm1hcmtlclN0YXJ0IiwgIm92ZXJsaW5lUG9zaXRpb24iLCAib3ZlcmxpbmVUaGlja25lc3MiLCAicGFpbnRPcmRlciIsICJwYW5vc2UxIiwgInBvaW50ZXJFdmVudHMiLCAicmVuZGVyaW5nSW50ZW50IiwgInNoYXBlUmVuZGVyaW5nIiwgInN0b3BDb2xvciIsICJzdG9wT3BhY2l0eSIsICJzdHJpa2V0aHJvdWdoUG9zaXRpb24iLCAic3RyaWtldGhyb3VnaFRoaWNrbmVzcyIsICJzdHJva2VEYXNoYXJyYXkiLCAic3Ryb2tlRGFzaG9mZnNldCIsICJzdHJva2VMaW5lY2FwIiwgInN0cm9rZUxpbmVqb2luIiwgInN0cm9rZU1pdGVybGltaXQiLCAic3Ryb2tlT3BhY2l0eSIsICJzdHJva2VXaWR0aCIsICJ0ZXh0QW5jaG9yIiwgInRleHREZWNvcmF0aW9uIiwgInRleHRSZW5kZXJpbmciLCAidW5kZXJsaW5lUG9zaXRpb24iLCAidW5kZXJsaW5lVGhpY2tuZXNzIiwgInVuaWNvZGVCaWRpIiwgInVuaWNvZGVSYW5nZSIsICJ1bml0c1BlckVtIiwgInZBbHBoYWJldGljIiwgInZIYW5naW5nIiwgInZJZGVvZ3JhcGhpYyIsICJ2TWF0aGVtYXRpY2FsIiwgInZlY3RvckVmZmVjdCIsICJ2ZXJ0QWR2WSIsICJ2ZXJ0T3JpZ2luWCIsICJ2ZXJ0T3JpZ2luWSIsICJ3b3JkU3BhY2luZyIsICJ3cml0aW5nTW9kZSIsICJ4bWxuc1hsaW5rIiwgInhIZWlnaHQiXS5yZWR1Y2UoKChlLHQpPT4oZVt0LnRvTG93ZXJDYXNlKCldID0gdCwKICAgICAgICBlKSksIHt9KQogICAgICAgICAgLCBOID0gWyJhbGxvd1Jlb3JkZXIiLCAiYXR0cmlidXRlTmFtZSIsICJhdHRyaWJ1dGVUeXBlIiwgImF1dG9SZXZlcnNlIiwgImJhc2VGcmVxdWVuY3kiLCAiYmFzZVByb2ZpbGUiLCAiY2FsY01vZGUiLCAiY2xpcFBhdGhVbml0cyIsICJjb250ZW50U2NyaXB0VHlwZSIsICJjb250ZW50U3R5bGVUeXBlIiwgImRpZmZ1c2VDb25zdGFudCIsICJlZGdlTW9kZSIsICJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwgImZpbHRlclJlcyIsICJmaWx0ZXJVbml0cyIsICJnbHlwaFJlZiIsICJncmFkaWVudFRyYW5zZm9ybSIsICJncmFkaWVudFVuaXRzIiwgImtlcm5lbE1hdHJpeCIsICJrZXJuZWxVbml0TGVuZ3RoIiwgImtleVBvaW50cyIsICJrZXlTcGxpbmVzIiwgImtleVRpbWVzIiwgImxlbmd0aEFkanVzdCIsICJsaW1pdGluZ0NvbmVBbmdsZSIsICJtYXJrZXJIZWlnaHQiLCAibWFya2VyVW5pdHMiLCAibWFya2VyV2lkdGgiLCAibWFza0NvbnRlbnRVbml0cyIsICJtYXNrVW5pdHMiLCAibnVtT2N0YXZlcyIsICJwYXRoTGVuZ3RoIiwgInBhdHRlcm5Db250ZW50VW5pdHMiLCAicGF0dGVyblRyYW5zZm9ybSIsICJwYXR0ZXJuVW5pdHMiLCAicG9pbnRzQXRYIiwgInBvaW50c0F0WSIsICJwb2ludHNBdFoiLCAicHJlc2VydmVBbHBoYSIsICJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwgInByaW1pdGl2ZVVuaXRzIiwgInJlZlgiLCAicmVmWSIsICJyZXBlYXRDb3VudCIsICJyZXBlYXREdXIiLCAicmVxdWlyZWRFeHRlbnNpb25zIiwgInJlcXVpcmVkRmVhdHVyZXMiLCAic3BlY3VsYXJDb25zdGFudCIsICJzcGVjdWxhckV4cG9uZW50IiwgInNwcmVhZE1ldGhvZCIsICJzdGFydE9mZnNldCIsICJzdGREZXZpYXRpb24iLCAic3RpdGNoVGlsZXMiLCAic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiwgInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIsICJzdXJmYWNlU2NhbGUiLCAic3lzdGVtTGFuZ3VhZ2UiLCAidGFibGVWYWx1ZXMiLCAidGFyZ2V0WCIsICJ0YXJnZXRZIiwgInRleHRMZW5ndGgiLCAidmlld0JveCIsICJ2aWV3VGFyZ2V0IiwgInhDaGFubmVsU2VsZWN0b3IiLCAieUNoYW5uZWxTZWxlY3RvciJdLnJlZHVjZSgoKGUsdCk9PihlW3QudG9Mb3dlckNhc2UoKV0gPSB0LAogICAgICAgIGUpKSwge30pCiAgICAgICAgICAsIFUgPSBbInhsaW5rOmFjdHVhdGUiLCAieGxpbms6YXJjcm9sZSIsICJ4bGluazpocmVmIiwgInhsaW5rOnJvbGUiLCAieGxpbms6c2hvdyIsICJ4bGluazp0aXRsZSIsICJ4bGluazp0eXBlIiwgInhtbDpiYXNlIiwgInhtbDpsYW5nIiwgInhtbDpzcGFjZSIsICJ4bWxuczp4bGluayJdLnJlZHVjZSgoKGUsdCk9PihlW3QucmVwbGFjZSgiOiIsICIiKS50b0xvd2VyQ2FzZSgpXSA9IHQsCiAgICAgICAgZSkpLCB7fSk7CiAgICAgICAgZnVuY3Rpb24gJChlKSB7CiAgICAgICAgICAgIHN3aXRjaCAoZSkgewogICAgICAgICAgICBjYXNlICJodG1sRm9yIjoKICAgICAgICAgICAgICAgIHJldHVybiAiZm9yIjsKICAgICAgICAgICAgY2FzZSAiY2xhc3NOYW1lIjoKICAgICAgICAgICAgICAgIHJldHVybiAiY2xhc3MiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgdCA9IGUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgcmV0dXJuIE5bdF0gPyBOW3RdIDogRlt0XSA/IFIoRlt0XSkgOiBVW3RdID8gVVt0XSA6IHQKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gcShlKSB7CiAgICAgICAgICAgIHJldHVybiBlLnN0YXJ0c1dpdGgoIi0tIikgPyBlIDogVihlLCBbIm1zIiwgIk8iLCAiTW96IiwgIldlYmtpdCJdKSA/ICItIiArIFIoZSkgOiBSKGUpCiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIFgoZSwgdCkgewogICAgICAgICAgICByZXR1cm4gIm51bWJlciIgIT0gdHlwZW9mIHQgfHwgMCA9PT0gdCB8fCBELmhhcyhlKSA/IHQgOiB0ICsgInB4IgogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBCKHQsIG4sIHI9e30pIHsKICAgICAgICAgICAgaWYgKG51bGwgPT0gdCB8fCAhMSA9PT0gdCkKICAgICAgICAgICAgICAgIHJldHVybiAiIjsKICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpCiAgICAgICAgICAgICAgICByZXR1cm4gWih0LCBuLCByKTsKICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgdCkgewogICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgcmV0dXJuICgwLAogICAgICAgICAgICAgICAgVC5lc2NhcGVIVE1MKSh0KTsKICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICAgIHJldHVybiB0LnRvU3RyaW5nKCkKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCB7dHlwZTogbywgcHJvcHM6IGl9ID0gdDsKICAgICAgICAgICAgc3dpdGNoIChvKSB7CiAgICAgICAgICAgIGNhc2UgZS5TdHJpY3RNb2RlOgogICAgICAgICAgICBjYXNlIGUuRnJhZ21lbnQ6CiAgICAgICAgICAgICAgICByZXR1cm4gWihpLmNoaWxkcmVuLCBuLCByKTsKICAgICAgICAgICAgY2FzZSBBOgogICAgICAgICAgICAgICAgY29uc3Qge2NoaWxkcmVuOiB0LCAuLi5vfSA9IGk7CiAgICAgICAgICAgICAgICByZXR1cm4gWShPYmplY3Qua2V5cyhvKS5sZW5ndGggPyAiZGl2IiA6IG51bGwsIHsKICAgICAgICAgICAgICAgICAgICAuLi5vLAogICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9faHRtbDogdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIG4sIHIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgbykgewogICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgcmV0dXJuIFkobywgaSwgbiwgcik7CiAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgIHJldHVybiBvLnByb3RvdHlwZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBvLnByb3RvdHlwZS5yZW5kZXIgPyBmdW5jdGlvbihlLCB0LCBuLCByPXt9KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IG5ldyBlKHQscik7CiAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygby5nZXRDaGlsZENvbnRleHQgJiYgT2JqZWN0LmFzc2lnbihyLCBvLmdldENoaWxkQ29udGV4dCgpKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gQihvLnJlbmRlcigpLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgfShvLCBpLCBuLCByKSA6IEIobyhpLCByKSwgbiwgcikKICAgICAgICAgICAgfQogICAgICAgICAgICBzd2l0Y2ggKG8gJiYgby4kJHR5cGVvZikgewogICAgICAgICAgICBjYXNlIE0uJCR0eXBlb2Y6CiAgICAgICAgICAgICAgICByZXR1cm4gWihpLmNoaWxkcmVuLCBpLnZhbHVlLCByKTsKICAgICAgICAgICAgY2FzZSBJLiQkdHlwZW9mOgogICAgICAgICAgICAgICAgcmV0dXJuIEIoaS5jaGlsZHJlbihuIHx8IG8uX2N1cnJlbnRWYWx1ZSksIG4sIHIpOwogICAgICAgICAgICBjYXNlIEwuJCR0eXBlb2Y6CiAgICAgICAgICAgICAgICByZXR1cm4gQihvLnJlbmRlcihpKSwgbiwgcikKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gWShlLCB0LCBuLCByPXt9KSB7CiAgICAgICAgICAgIGxldCBvID0gIiI7CiAgICAgICAgICAgIGlmICgidGV4dGFyZWEiID09PSBlICYmIHQuaGFzT3duUHJvcGVydHkoInZhbHVlIikpIHsKICAgICAgICAgICAgICAgIG8gPSBaKHQudmFsdWUsIG4sIHIpOwogICAgICAgICAgICAgICAgY29uc3Qge3ZhbHVlOiBlLCAuLi5pfSA9IHQ7CiAgICAgICAgICAgICAgICB0ID0gaQogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgInN0cmluZyIgPT0gdHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sID8gbyA9IHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sIDogdm9pZCAwICE9PSB0LmNoaWxkcmVuICYmIChvID0gWih0LmNoaWxkcmVuLCBuLCByKSk7CiAgICAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgICAgIHJldHVybiBvOwogICAgICAgICAgICBjb25zdCBpID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgbGV0IHQgPSAiIjsKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbiBpbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9ICQobik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoMCwKICAgICAgICAgICAgICAgICAgICBULmlzVmFsaWRBdHRyaWJ1dGVOYW1lKShyKSkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgbGV0IG8gPSBfKG4sIGVbbl0pOwogICAgICAgICAgICAgICAgICAgIGlmICghUC5oYXModHlwZW9mIG8pKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICBpZiAoVyhuKSkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IEguaGFzKHIpOwogICAgICAgICAgICAgICAgICAgIGlmIChpICYmICExID09PSBvKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gaSB8fCBWKG4sIFsiZGF0YS0iLCAiYXJpYS0iXSkgfHwgei5oYXMocik7CiAgICAgICAgICAgICAgICAgICAgKCJib29sZWFuIiAhPSB0eXBlb2YgbyB8fCBhKSAmJiAodCArPSAiICIgKyByLAogICAgICAgICAgICAgICAgICAgIGkgfHwgKCJzdHJpbmciID09IHR5cGVvZiBvICYmIChvID0gKDAsCiAgICAgICAgICAgICAgICAgICAgVC5lc2NhcGVBdHRyaWJ1dGUpKG8pKSwKICAgICAgICAgICAgICAgICAgICB0ICs9ICc9IicgKyBvICsgJyInKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgIH0odCk7CiAgICAgICAgICAgIHJldHVybiBqLmhhcyhlKSA/ICI8IiArIGUgKyBpICsgIi8+IiA6ICI8IiArIGUgKyBpICsgIj4iICsgbyArICI8LyIgKyBlICsgIj4iCiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIFooZSwgdCwgbj17fSkgewogICAgICAgICAgICBsZXQgciA9ICIiOwogICAgICAgICAgICBlID0gQXJyYXkuaXNBcnJheShlKSA/IGUgOiBbZV07CiAgICAgICAgICAgIGZvciAobGV0IG8gPSAwOyBvIDwgZS5sZW5ndGg7IG8rKykgewogICAgICAgICAgICAgICAgciArPSBCKGVbb10sIHQsIG4pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9CiAgICAgICAgdmFyIEcgPSBCCiAgICB9KCksCiAgICAod2luZG93LndwID0gd2luZG93LndwIHx8IHt9KS5lbGVtZW50ID0gcgp9KCk7Cg=="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/css2/theme/proton/assets/images/planimg-bg.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.309Z","timestamp":1785130090309,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/css2/theme/proton/assets/images/planimg-bg.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/assets/css2/custom.css\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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 404 \r\ndate: Mon, 27 Jul 2026 05:28:11 GMT\r\ncontent-type: text/html\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Ru%2FAiGRxXRjhR6LWUZs8l3HRfRusmIK3N8ahv%2FghNXH%2BkJdbEEDk7zHv03pJMbi9ypRTrNUWACuuMRV4sbjxQJV3VkxuySXSnqMOSaA8NnNcLdSLnAwjiPh9FNMQpOytwRckoUI7AQ%3D%3D\"}]}\r\ncache-control: private, no-cache, no-store, must-revalidate, max-age=0\r\npragma: no-cache\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\ncf-cache-status: BYPASS\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncontent-encoding: zstd\r\npriority: u=4,i\r\ncf-ray: a2193d387e85120a-OSL\r\nserver-timing: cfExtPri\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"]},{"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":1251,"size_decoded":1454,"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-02T16:38:12.607757Z","times_seen":145332,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIHN0eWxlPSJoZWlnaHQ6MTAwJSI+CjxoZWFkPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iIC8+Cjx0aXRsZT4gNDA0IE5vdCBGb3VuZA0KPC90aXRsZT48c3R5bGU+QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2JhY2tncm91bmQtY29sb3I6IzAwMCFpbXBvcnRhbnR9fTwvc3R5bGU+PC9oZWFkPgo8Ym9keSBzdHlsZT0iY29sb3I6ICM0NDQ7IG1hcmdpbjowO2ZvbnQ6IG5vcm1hbCAxNHB4LzIwcHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KPGRpdiBzdHlsZT0iaGVpZ2h0OmF1dG87IG1pbi1oZWlnaHQ6MTAwJTsgIj4gICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6ODAwcHg7IG1hcmdpbi1sZWZ0OiAtNDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDMwJTsgbGVmdDo1MCU7Ij4KICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbjowOyBmb250LXNpemU6MTUwcHg7IGxpbmUtaGVpZ2h0OjE1MHB4OyBmb250LXdlaWdodDpib2xkOyI+NDA0PC9oMT4KPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7Zm9udC1zaXplOiAzMHB4OyI+Tm90IEZvdW5kDQo8L2gyPgo8cD5UaGUgcmVzb3VyY2UgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZCBvbiB0aGlzIHNlcnZlciE8L3A+CjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiNmMGYwZjA7IGZvbnQtc2l6ZToxMnB4O21hcmdpbjphdXRvO3BhZGRpbmc6MHB4IDMwcHggMHB4IDMwcHg7cG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDtoZWlnaHQ6MTAwcHg7bWFyZ2luLXRvcDotMTAxcHg7YmFja2dyb3VuZC1jb2xvcjojNDc0NzQ3O2JvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO2JveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIGluc2V0OyI+Cjxicj5Qcm91ZGx5IHBvd2VyZWQgYnkgTGl0ZVNwZWVkIFdlYiBTZXJ2ZXI8cD5QbGVhc2UgYmUgYWR2aXNlZCB0aGF0IExpdGVTcGVlZCBUZWNobm9sb2dpZXMgSW5jLiBpcyBub3QgYSB3ZWIgaG9zdGluZyBjb21wYW55IGFuZCwgYXMgc3VjaCwgaGFzIG5vIGNvbnRyb2wgb3ZlciBjb250ZW50IGZvdW5kIG9uIHRoaXMgc2l0ZS48L3A+PC9kaXY+PC9ib2R5PjwvaHRtbD4K"}},"time_used":1174,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":1174,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.jquery.com/jquery-3.6.4.min.js","fqdn":"code.jquery.com","domain":"jquery.com","tld":"com"},"ip":{"addr":"151.101.193.155","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.384Z","timestamp":1785130090384,"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.6.4.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://dreamspinfluence.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-15ec3\"\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 05:28:10 GMT\r\nage: 3940072\r\nx-served-by: cache-lga21953-LGA, cache-bma-essb1270057-BMA\r\nx-cache: HIT, HIT\r\nx-cache-hits: 25536, 71182\r\nx-timer: S1785130090.388182,VS0,VE0\r\nvary: Accept-Encoding\r\ncontent-length: 31011\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"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"]},{"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"]}],"data":{"size":89795,"size_decoded":31652,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (65447)","md5":"641dd14370106e992d352166f5a07e99","sha1":"eda46747c71d38a880bee44f9a439c3858bb8f99","sha256":"a0fe8723dcf55da64d06b25446d0a8513e52527c45afcb37073465f9c6f352af","sha512":"a6e981b23351186aa43f32879dd64c6801be6e2af7ef8b0e472cccdeeba52d5d7894de4bcb292a364f1e11e525524077534338140a72687ada4fae62849843a5","ssdeep":"1536:IjjxXUHunxDjoXEZxkMV4PYDt0zxxf6gP3f8cApoEGOzZTBqUsuy8WnKdXwhLQvg:IeeIygP3fulzhsz8jlvaDioQ47GKH","tlshash":"d193f8ddb2c6702247a770ba007f510bf236199d684d8450f269d8e9bc78a4e827bf7d","first_seen":"2023-03-26T04:59:07Z","last_seen":"2026-08-02T16:48:15.331127Z","times_seen":27029,"resource_available":true,"data":"LyohIGpRdWVyeSB2My42LjQgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZS5kb2N1bWVudD90KGUsITApOmZ1bmN0aW9uKGUpe2lmKCFlLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiB0KGUpfTp0KGUpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihDLGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1bXSxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmZsYXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmxhdC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25jYXQuYXBwbHkoW10sZSl9LHU9dC5wdXNoLGk9dC5pbmRleE9mLG49e30sbz1uLnRvU3RyaW5nLHk9bi5oYXNPd25Qcm9wZXJ0eSxhPXkudG9TdHJpbmcsbD1hLmNhbGwoT2JqZWN0KSx2PXt9LG09ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuaXRlbX0seD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZT09PWUud2luZG93fSxFPUMuZG9jdW1lbnQsYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjYuNCIsUz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUy5mbi5pbml0KGUsdCl9O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9Uy5mbj1TLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6UyxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFMuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMn0pKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PW4mJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6dSxzb3J0OnQuc29ydCxzcGxpY2U6dC5zcGxpY2V9LFMuZXh0ZW5kPVMuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxvLGE9YXJndW1lbnRzWzBdfHx7fSxzPTEsdT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGEmJihsPWEsYT1hcmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PXR5cGVvZiBhfHxtKGEpfHwoYT17fSkscz09PXUmJihhPXRoaXMscy0tKTtzPHU7cysrKWlmKG51bGwhPShlPWFyZ3VtZW50c1tzXSkpZm9yKHQgaW4gZSlyPWVbdF0sIl9fcHJvdG9fXyIhPT10JiZhIT09ciYmKGwmJnImJihTLmlzUGxhaW5PYmplY3Qocil8fChpPUFycmF5LmlzQXJyYXkocikpKT8obj1hW3RdLG89aSYmIUFycmF5LmlzQXJyYXkobik/W106aXx8Uy5pc1BsYWluT2JqZWN0KG4pP246e30saT0hMSxhW3RdPVMuZXh0ZW5kKGwsbyxyKSk6dm9pZCAwIT09ciYmKGFbdF09cikpO3JldHVybiBhfSxTLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoZitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlKX0sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiEoIWV8fCJbb2JqZWN0IE9iamVjdF0iIT09by5jYWxsKGUpKSYmKCEodD1yKGUpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKG49eS5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3IpJiZhLmNhbGwobik9PT1sKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGUsdCxuKXtiKGUse25vbmNlOnQmJnQubm9uY2V9LG4pfSxlYWNoOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2lmKHAoZSkpe2ZvcihuPWUubGVuZ3RoO3I8bjtyKyspaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrfWVsc2UgZm9yKHIgaW4gZSlpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWs7cmV0dXJuIGV9LG1ha2VBcnJheTpmdW5jdGlvbihlLHQpe3ZhciBuPXR8fFtdO3JldHVybiBudWxsIT1lJiYocChPYmplY3QoZSkpP1MubWVyZ2Uobiwic3RyaW5nIj09dHlwZW9mIGU/W2VdOmUpOnUuY2FsbChuLGUpKSxufSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09dD8tMTppLmNhbGwodCxlLG4pfSxtZXJnZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0rdC5sZW5ndGgscj0wLGk9ZS5sZW5ndGg7cjxuO3IrKyllW2krK109dFtyXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W10saT0wLG89ZS5sZW5ndGgsYT0hbjtpPG87aSsrKSF0KGVbaV0saSkhPT1hJiZyLnB1c2goZVtpXSk7cmV0dXJuIHJ9LG1hcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPTAsYT1bXTtpZihwKGUpKWZvcihyPWUubGVuZ3RoO288cjtvKyspbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7ZWxzZSBmb3IobyBpbiBlKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO3JldHVybiBnKGEpfSxndWlkOjEsc3VwcG9ydDp2fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFMuZm5bU3ltYm9sLml0ZXJhdG9yXT10W1N5bWJvbC5pdGVyYXRvcl0pLFMuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtuWyJbb2JqZWN0ICIrdCsiXSJdPXQudG9Mb3dlckNhc2UoKX0pO3ZhciBkPWZ1bmN0aW9uKG4pe3ZhciBlLGQsYixvLGksaCxmLGcsdyx1LGwsVCxDLGEsRSx5LHMsYyx2LFM9InNpenpsZSIrMSpuZXcgRGF0ZSxwPW4uZG9jdW1lbnQsaz0wLHI9MCxtPXVlKCkseD11ZSgpLEE9dWUoKSxOPXVlKCksaj1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKGw9ITApLDB9LEQ9e30uaGFzT3duUHJvcGVydHksdD1bXSxxPXQucG9wLEw9dC5wdXNoLEg9dC5wdXNoLE89dC5zbGljZSxQPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxSPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsST0iKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15cMC1cXHg3Zl0pKyIsVz0iXFxbIitNKyIqKCIrSSsiKSg/OiIrTSsiKihbKl4kfCF+XT89KSIrTSsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK0krIikpfCkiK00rIipcXF0iLEY9IjooIitJKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitXKyIpKil8LiopXFwpfCkiLCQ9bmV3IFJlZ0V4cChNKyIrIiwiZyIpLEI9bmV3IFJlZ0V4cCgiXiIrTSsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitNKyIrJCIsImciKSxfPW5ldyBSZWdFeHAoIl4iK00rIiosIitNKyIqIiksej1uZXcgUmVnRXhwKCJeIitNKyIqKFs+K35dfCIrTSsiKSIrTSsiKiIpLFU9bmV3IFJlZ0V4cChNKyJ8PiIpLFg9bmV3IFJlZ0V4cChGKSxWPW5ldyBSZWdFeHAoIl4iK0krIiQiKSxHPXtJRDpuZXcgUmVnRXhwKCJeIygiK0krIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrSSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrSSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK1cpLFBTRVVETzpuZXcgUmVnRXhwKCJeIitGKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK00rIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK00rIiooPzooWystXXwpIitNKyIqKFxcZCspfCkpIitNKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitSKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTSsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitNKyIqKCg/Oi1cXGQpP1xcZCopIitNKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxZPS9IVE1MJC9pLFE9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxKPS9eaFxkJC9pLEs9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxlZT0vWyt+XS8sdGU9bmV3IFJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXChbXlxcclxcblxcZl0pIiwiZyIpLG5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49IjB4IitlLnNsaWNlKDEpLTY1NTM2O3JldHVybiB0fHwobjwwP1N0cmluZy5mcm9tQ2hhckNvZGUobis2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShuPj4xMHw1NTI5NiwxMDIzJm58NTYzMjApKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe1QoKX0sYWU9YmUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYiZmllbGRzZXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0guYXBwbHkodD1PLmNhbGwocC5jaGlsZE5vZGVzKSxwLmNoaWxkTm9kZXMpLHRbcC5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7SD17YXBwbHk6dC5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtMLmFwcGx5KGUsTy5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoVChlKSxlPWV8fEMsRSkpe2lmKDExIT09cCYmKHU9Wi5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJnYoZSxhKSYmYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2V7aWYodVsyXSlyZXR1cm4gSC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLG47aWYoKGk9dVszXSkmJmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKGQucXNhJiYhTlt0KyIgIl0mJigheXx8IXkudGVzdCh0KSkmJigxIT09cHx8Im9iamVjdCIhPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXtpZihjPXQsZj1lLDE9PT1wJiYoVS50ZXN0KHQpfHx6LnRlc3QodCkpKXsoZj1lZS50ZXN0KHQpJiZ2ZShlLnBhcmVudE5vZGUpfHxlKT09PWUmJmQuc2NvcGV8fCgocz1lLmdldEF0dHJpYnV0ZSgiaWQiKSk/cz1zLnJlcGxhY2UocmUsaWUpOmUuc2V0QXR0cmlidXRlKCJpZCIscz1TKSksbz0obD1oKHQpKS5sZW5ndGg7d2hpbGUoby0tKWxbb109KHM/IiMiK3M6IjpzY29wZSIpKyIgIit4ZShsW29dKTtjPWwuam9pbigiLCIpfXRyeXtyZXR1cm4gSC5hcHBseShuLGYucXVlcnlTZWxlY3RvckFsbChjKSksbn1jYXRjaChlKXtOKHQsITApfWZpbmFsbHl7cz09PVMmJmUucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGcodC5yZXBsYWNlKEIsIiQxIiksZSxuLHIpfWZ1bmN0aW9uIHVlKCl7dmFyIHI9W107cmV0dXJuIGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gci5wdXNoKHQrIiAiKT5iLmNhY2hlTGVuZ3RoJiZkZWxldGUgZVtyLnNoaWZ0KCldLGVbdCsiICJdPW59fWZ1bmN0aW9uIGxlKGUpe3JldHVybiBlW1NdPSEwLGV9ZnVuY3Rpb24gY2UoZSl7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpO3RyeXtyZXR1cm4hIWUodCl9Y2F0Y2goZSl7cmV0dXJuITF9ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0PW51bGx9fWZ1bmN0aW9uIGZlKGUsdCl7dmFyIG49ZS5zcGxpdCgifCIpLHI9bi5sZW5ndGg7d2hpbGUoci0tKWIuYXR0ckhhbmRsZVtuW3JdXT10fWZ1bmN0aW9uIHBlKGUsdCl7dmFyIG49dCYmZSxyPW4mJjE9PT1lLm5vZGVUeXBlJiYxPT09dC5ub2RlVHlwZSYmZS5zb3VyY2VJbmRleC10LnNvdXJjZUluZGV4O2lmKHIpcmV0dXJuIHI7aWYobil3aGlsZShuPW4ubmV4dFNpYmxpbmcpaWYobj09PXQpcmV0dXJuLTE7cmV0dXJuIGU/MTotMX1mdW5jdGlvbiBkZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZS50eXBlPT09dH19ZnVuY3Rpb24gaGUobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PXR8fCJidXR0b24iPT09dCkmJmUudHlwZT09PW59fWZ1bmN0aW9uIGdlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iZm9ybSJpbiBlP2UucGFyZW50Tm9kZSYmITE9PT1lLmRpc2FibGVkPyJsYWJlbCJpbiBlPyJsYWJlbCJpbiBlLnBhcmVudE5vZGU/ZS5wYXJlbnROb2RlLmRpc2FibGVkPT09dDplLmRpc2FibGVkPT09dDplLmlzRGlzYWJsZWQ9PT10fHxlLmlzRGlzYWJsZWQhPT0hdCYmYWUoZSk9PT10OmUuZGlzYWJsZWQ9PT10OiJsYWJlbCJpbiBlJiZlLmRpc2FibGVkPT09dH19ZnVuY3Rpb24geWUoYSl7cmV0dXJuIGxlKGZ1bmN0aW9uKG8pe3JldHVybiBvPStvLGxlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKFtdLGUubGVuZ3RoLG8pLGk9ci5sZW5ndGg7d2hpbGUoaS0tKWVbbj1yW2ldXSYmKGVbbl09ISh0W25dPWVbbl0pKX0pfSl9ZnVuY3Rpb24gdmUoZSl7cmV0dXJuIGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmZX1mb3IoZSBpbiBkPXNlLnN1cHBvcnQ9e30saT1zZS5pc1hNTD1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLm5hbWVzcGFjZVVSSSxuPWUmJihlLm93bmVyRG9jdW1lbnR8fGUpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hWS50ZXN0KHR8fG4mJm4ubm9kZU5hbWV8fCJIVE1MIil9LFQ9c2Uuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWU/ZS5vd25lckRvY3VtZW50fHxlOnA7cmV0dXJuIHIhPUMmJjk9PT1yLm5vZGVUeXBlJiZyLmRvY3VtZW50RWxlbWVudCYmKGE9KEM9cikuZG9jdW1lbnRFbGVtZW50LEU9IWkoQykscCE9QyYmKG49Qy5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOm4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLGQuc2NvcGU9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksInVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwmJiFlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSBmaWVsZHNldCBkaXYiKS5sZW5ndGh9KSxkLmNzc0hhcz1jZShmdW5jdGlvbigpe3RyeXtyZXR1cm4gQy5xdWVyeVNlbGVjdG9yKCI6aGFzKCosOmpxZmFrZSkiKSwhMX1jYXRjaChlKXtyZXR1cm4hMH19KSxkLmF0dHJpYnV0ZXM9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NOYW1lPSJpIiwhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksZC5nZXRFbGVtZW50c0J5VGFnTmFtZT1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChDLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1LLnRlc3QoQy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxkLmdldEJ5SWQ9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuaWQ9UywhQy5nZXRFbGVtZW50c0J5TmFtZXx8IUMuZ2V0RWxlbWVudHNCeU5hbWUoUykubGVuZ3RofSksZC5nZXRCeUlkPyhiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImlkIik9PT10fX0sYi5maW5kLklEPWZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRCeUlkJiZFKXt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBuP1tuXTpbXX19KTooYi5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKHRlLG5lKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUmJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gdCYmdC52YWx1ZT09PW59fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuLHIsaSxvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dO2k9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxyPTA7d2hpbGUobz1pW3IrK10paWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLGIuZmluZC5UQUc9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOmQucXNhP3QucXVlcnlTZWxlY3RvckFsbChlKTp2b2lkIDB9OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpO2lmKCIqIj09PWUpe3doaWxlKG49b1tpKytdKTE9PT1uLm5vZGVUeXBlJiZyLnB1c2gobik7cmV0dXJuIHJ9cmV0dXJuIG99LGIuZmluZC5DTEFTUz1kLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJkUpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0scz1bXSx5PVtdLChkLnFzYT1LLnRlc3QoQy5xdWVyeVNlbGVjdG9yQWxsKSkmJihjZShmdW5jdGlvbihlKXt2YXIgdDthLmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrUysiJz48L2E+PHNlbGVjdCBpZD0nIitTKyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnkucHVzaCgiWypeJF09IitNKyIqKD86Jyd8XCJcIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHkucHVzaCgiXFxbIitNKyIqKD86dmFsdWV8IitSKyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrUysiLV0iKS5sZW5ndGh8fHkucHVzaCgifj0iKSwodD1DLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsIiIpLGUuYXBwZW5kQ2hpbGQodCksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGh8fHkucHVzaCgiXFxbIitNKyIqbmFtZSIrTSsiKj0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHkucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitTKyIrKiIpLmxlbmd0aHx8eS5wdXNoKCIuIy4rWyt+XSIpLGUucXVlcnlTZWxlY3RvckFsbCgiXFxcZiIpLHkucHVzaCgiW1xcclxcblxcZl0iKX0pLGNlKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciB0PUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGUucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnkucHVzaCgibmFtZSIrTSsiKlsqXiR8IX5dPz0iKSwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmeS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEuYXBwZW5kQ2hpbGQoZSkuZGlzYWJsZWQ9ITAsMiE9PWUucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZ5LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IikseS5wdXNoKCIsLio6Iil9KSksKGQubWF0Y2hlc1NlbGVjdG9yPUsudGVzdChjPWEubWF0Y2hlc3x8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLm9NYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3IpKSYmY2UoZnVuY3Rpb24oZSl7ZC5kaXNjb25uZWN0ZWRNYXRjaD1jLmNhbGwoZSwiKiIpLGMuY2FsbChlLCJbcyE9JyddOngiKSxzLnB1c2goIiE9IixGKX0pLGQuY3NzSGFzfHx5LnB1c2goIjpoYXMiKSx5PXkubGVuZ3RoJiZuZXcgUmVnRXhwKHkuam9pbigifCIpKSxzPXMubGVuZ3RoJiZuZXcgUmVnRXhwKHMuam9pbigifCIpKSx0PUsudGVzdChhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSx2PXR8fEsudGVzdChhLmNvbnRhaW5zKT9mdW5jdGlvbihlLHQpe3ZhciBuPTk9PT1lLm5vZGVUeXBlJiZlLmRvY3VtZW50RWxlbWVudHx8ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhyKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodCl3aGlsZSh0PXQucGFyZW50Tm9kZSlpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0saj10P2Z1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gbnx8KDEmKG49KGUub3duZXJEb2N1bWVudHx8ZSk9PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFkLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09Q3x8ZS5vd25lckRvY3VtZW50PT1wJiZ2KHAsZSk/LTE6dD09Q3x8dC5vd25lckRvY3VtZW50PT1wJiZ2KHAsdCk/MTp1P1AodSxlKS1QKHUsdCk6MDo0Jm4/LTE6MSl9OmZ1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbixyPTAsaT1lLnBhcmVudE5vZGUsbz10LnBhcmVudE5vZGUsYT1bZV0scz1bdF07aWYoIWl8fCFvKXJldHVybiBlPT1DPy0xOnQ9PUM/MTppPy0xOm8/MTp1P1AodSxlKS1QKHUsdCk6MDtpZihpPT09bylyZXR1cm4gcGUoZSx0KTtuPWU7d2hpbGUobj1uLnBhcmVudE5vZGUpYS51bnNoaWZ0KG4pO249dDt3aGlsZShuPW4ucGFyZW50Tm9kZSlzLnVuc2hpZnQobik7d2hpbGUoYVtyXT09PXNbcl0pcisrO3JldHVybiByP3BlKGFbcl0sc1tyXSk6YVtyXT09cD8tMTpzW3JdPT1wPzE6MH0pLEN9LHNlLm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc2UoZSxudWxsLG51bGwsdCl9LHNlLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHQpe2lmKFQoZSksZC5tYXRjaGVzU2VsZWN0b3ImJkUmJiFOW3QrIiAiXSYmKCFzfHwhcy50ZXN0KHQpKSYmKCF5fHwheS50ZXN0KHQpKSl0cnl7dmFyIG49Yy5jYWxsKGUsdCk7aWYobnx8ZC5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGUpe04odCwhMCl9cmV0dXJuIDA8c2UodCxDLG51bGwsW2VdKS5sZW5ndGh9LHNlLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSksdihlLHQpfSxzZS5hdHRyPWZ1bmN0aW9uKGUsdCl7KGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZELmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUUpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmQuYXR0cmlidXRlc3x8IUU/ZS5nZXRBdHRyaWJ1dGUodCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSxzZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UocmUsaWUpfSxzZS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGw9IWQuZGV0ZWN0RHVwbGljYXRlcyx1PSFkLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KGopLGwpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSllLnNwbGljZShuW3JdLDEpfXJldHVybiB1PW51bGwsZX0sbz1zZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1vKGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPW8odCk7cmV0dXJuIG59LChiPXNlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmxlLG1hdGNoOkcsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZSh0ZSxuZSksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UodGUsbmUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWgobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1tW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitNKyIpIitlKyIoIitNKyJ8JCkiKSkmJm0oZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1zZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UoJCwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oaCxlLHQsZyx5KXt2YXIgdj0ibnRoIiE9PWguc2xpY2UoMCwzKSxtPSJsYXN0IiE9PWguc2xpY2UoLTQpLHg9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWcmJjA9PT15P2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9diE9PW0/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixjPWUucGFyZW50Tm9kZSxmPXgmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxwPSFuJiYheCxkPSExO2lmKGMpe2lmKHYpe3doaWxlKGwpe2E9ZTt3aGlsZShhPWFbbF0paWYoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKXJldHVybiExO3U9bD0ib25seSI9PT1oJiYhdSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih1PVttP2MuZmlyc3RDaGlsZDpjLmxhc3RDaGlsZF0sbSYmcCl7ZD0ocz0ocj0oaT0obz0oYT1jKVtTXXx8KGFbU109e30pKVthLnVuaXF1ZUlEXXx8KG9bYS51bmlxdWVJRF09e30pKVtoXXx8W10pWzBdPT09ayYmclsxXSkmJnJbMl0sYT1zJiZjLmNoaWxkTm9kZXNbc107d2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoMT09PWEubm9kZVR5cGUmJisrZCYmYT09PWUpe2lbaF09W2sscyxkXTticmVha319ZWxzZSBpZihwJiYoZD1zPShyPShpPShvPShhPWUpW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1rJiZyWzFdKSwhMT09PWQpd2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoKHg/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09YS5ub2RlVHlwZSkmJisrZCYmKHAmJigoaT0obz1hW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdPVtrLGRdKSxhPT09ZSkpYnJlYWs7cmV0dXJuKGQtPXkpPT09Z3x8ZCVnPT0wJiYwPD1kL2d9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiBhW1NdP2Eobyk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2xlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPVAoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpsZShmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9ZihlLnJlcGxhY2UoQiwiJDEiKSk7cmV0dXJuIHNbU10/bGUoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpsZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8c2UodCxlKS5sZW5ndGh9fSksY29udGFpbnM6bGUoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8byhlKSkuaW5kZXhPZih0KX19KSxsYW5nOmxlKGZ1bmN0aW9uKG4pe3JldHVybiBWLnRlc3Qobnx8IiIpfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZSh0ZSxuZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUU/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PUMuYWN0aXZlRWxlbWVudCYmKCFDLmhhc0ZvY3VzfHxDLmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOmdlKCExKSxkaXNhYmxlZDpnZSghMCksY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OnllKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp5ZShmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6eWUoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjp5ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDp5ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0xO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLGx0OnllKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6eWUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47KytyPHQ7KWUucHVzaChyKTtyZXR1cm4gZX0pfX0pLnBzZXVkb3MubnRoPWIucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pYi5wc2V1ZG9zW2VdPWRlKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWhlKGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHhlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUocyxlLHQpe3ZhciB1PWUuZGlyLGw9ZS5uZXh0LGM9bHx8dSxmPXQmJiJwYXJlbnROb2RlIj09PWMscD1yKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSx0LG4pe3doaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilyZXR1cm4gcyhlLHQsbik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT1bayxwXTtpZihuKXt3aGlsZShlPWVbdV0paWYoKDE9PT1lLm5vZGVUeXBlfHxmKSYmcyhlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbdV0paWYoMT09PWUubm9kZVR5cGV8fGYpaWYoaT0obz1lW1NdfHwoZVtTXT17fSkpW2UudW5pcXVlSURdfHwob1tlLnVuaXF1ZUlEXT17fSksbCYmbD09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbdV18fGU7ZWxzZXtpZigocj1pW2NdKSYmclswXT09PWsmJnJbMV09PT1wKXJldHVybiBhWzJdPXJbMl07aWYoKGlbY109YSlbMl09cyhlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGkpe3JldHVybiAxPGkubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLmxlbmd0aDt3aGlsZShyLS0paWYoIWlbcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTppWzBdfWZ1bmN0aW9uIFRlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQ2UoZCxoLGcseSx2LGUpe3JldHVybiB5JiYheVtTXSYmKHk9Q2UoeSkpLHYmJiF2W1NdJiYodj1DZSh2LGUpKSxsZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1bXSx1PVtdLGw9dC5sZW5ndGgsYz1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLGY9IWR8fCFlJiZoP2M6VGUoYyxzLGQsbixyKSxwPWc/dnx8KGU/ZDpsfHx5KT9bXTp0OmY7aWYoZyYmZyhmLHAsbixyKSx5KXtpPVRlKHAsdSkseShpLFtdLG4sciksbz1pLmxlbmd0aDt3aGlsZShvLS0pKGE9aVtvXSkmJihwW3Vbb11dPSEoZlt1W29dXT1hKSl9aWYoZSl7aWYodnx8ZCl7aWYodil7aT1bXSxvPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmaS5wdXNoKGZbb109YSk7dihudWxsLHA9W10saSxyKX1vPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmLTE8KGk9dj9QKGUsYSk6c1tvXSkmJihlW2ldPSEodFtpXT1hKSl9fWVsc2UgcD1UZShwPT09dD9wLnNwbGljZShsLHAubGVuZ3RoKTpwKSx2P3YobnVsbCx0LHAscik6SC5hcHBseSh0LHApfSl9ZnVuY3Rpb24gRWUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1iZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9YmUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8UChpLGUpfSxhLCEwKSxjPVtmdW5jdGlvbihlLHQsbil7dmFyIHI9IW8mJihufHx0IT09dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtiZSh3ZShjKSx0KV07ZWxzZXtpZigodD1iLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSlbU10pe2ZvcihuPSsrcztuPHI7bisrKWlmKGIucmVsYXRpdmVbZVtuXS50eXBlXSlicmVhaztyZXR1cm4gQ2UoMTxzJiZ3ZShjKSwxPHMmJnhlKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoQiwiJDEiKSx0LHM8biYmRWUoZS5zbGljZShzLG4pKSxuPHImJkVlKGU9ZS5zbGljZShuKSksbjxyJiZ4ZShlKSl9Yy5wdXNoKHQpfXJldHVybiB3ZShjKX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxoPXNlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD14W2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj1fLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj16LmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKEIsIiAiKX0pLGE9YS5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEocj1HW29dLmV4ZWMoYSkpfHx1W29dJiYhKHI9dVtvXShyKSl8fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6cn0pLGE9YS5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P2EubGVuZ3RoOmE/c2UuZXJyb3IoZSk6eChlLHMpLnNsaWNlKDApfSxmPXNlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix5LHYsbSx4LHIsaT1bXSxvPVtdLGE9QVtlKyIgIl07aWYoIWEpe3R8fCh0PWgoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPUVlKHRbbl0pKVtTXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPUEoZSwoeT1vLG09MDwodj1pKS5sZW5ndGgseD0wPHkubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPWsrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT1DfHx0fHxpKTtsIT09ZyYmbnVsbCE9KG89ZFtsXSk7bCsrKXtpZih4JiZvKXthPTAsdHx8by5vd25lckRvY3VtZW50PT1DfHwoVChvKSxuPSFFKTt3aGlsZShzPXlbYSsrXSlpZihzKG8sdHx8QyxuKSl7ci5wdXNoKG8pO2JyZWFrfWkmJihrPWgpfW0mJigobz0hcyYmbykmJnUtLSxlJiZjLnB1c2gobykpfWlmKHUrPWwsbSYmbCE9PXUpe2E9MDt3aGlsZShzPXZbYSsrXSlzKGMsZix0LG4pO2lmKGUpe2lmKDA8dSl3aGlsZShsLS0pY1tsXXx8ZltsXXx8KGZbbF09cS5jYWxsKHIpKTtmPVRlKGYpfUguYXBwbHkocixmKSxpJiYhZSYmMDxmLmxlbmd0aCYmMTx1K3YubGVuZ3RoJiZzZS51bmlxdWVTb3J0KHIpfXJldHVybiBpJiYoaz1oLHc9cCksY30sbT9sZShyKTpyKSkpLnNlbGVjdG9yPWV9cmV0dXJuIGF9LGc9c2Uuc2VsZWN0PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZSxjPSFyJiZoKGU9bC5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09Yy5sZW5ndGgpe2lmKDI8KG89Y1swXT1jWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oYT1vWzBdKS50eXBlJiY5PT09dC5ub2RlVHlwZSYmRSYmYi5yZWxhdGl2ZVtvWzFdLnR5cGVdKXtpZighKHQ9KGIuZmluZC5JRChhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksdCl8fFtdKVswXSkpcmV0dXJuIG47bCYmKHQ9dC5wYXJlbnROb2RlKSxlPWUuc2xpY2Uoby5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1HLm5lZWRzQ29udGV4dC50ZXN0KGUpPzA6by5sZW5ndGg7d2hpbGUoaS0tKXtpZihhPW9baV0sYi5yZWxhdGl2ZVtzPWEudHlwZV0pYnJlYWs7aWYoKHU9Yi5maW5kW3NdKSYmKHI9dShhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksZWUudGVzdChvWzBdLnR5cGUpJiZ2ZSh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKG8uc3BsaWNlKGksMSksIShlPXIubGVuZ3RoJiZ4ZShvKSkpcmV0dXJuIEguYXBwbHkobixyKSxuO2JyZWFrfX19cmV0dXJuKGx8fGYoZSxjKSkocix0LCFFLG4sIXR8fGVlLnRlc3QoZSkmJnZlKHQucGFyZW50Tm9kZSl8fHQpLG59LGQuc29ydFN0YWJsZT1TLnNwbGl0KCIiKS5zb3J0KGopLmpvaW4oIiIpPT09UyxkLmRldGVjdER1cGxpY2F0ZXM9ISFsLFQoKSxkLnNvcnREZXRhY2hlZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gMSZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKEMuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxmZSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuKXJldHVybiBlLmdldEF0dHJpYnV0ZSh0LCJ0eXBlIj09PXQudG9Mb3dlckNhc2UoKT8xOjIpfSksZC5hdHRyaWJ1dGVzJiZjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxpbnB1dC8+IixlLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxmZSgidmFsdWUiLGZ1bmN0aW9uKGUsdCxuKXtpZighbiYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gZS5kZWZhdWx0VmFsdWV9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8ZmUoUixmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoIW4pcmV0dXJuITA9PT1lW3RdP3QudG9Mb3dlckNhc2UoKToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNpZmllZD9yLnZhbHVlOm51bGx9KSxzZX0oQyk7Uy5maW5kPWQsUy5leHByPWQuc2VsZWN0b3JzLFMuZXhwclsiOiJdPVMuZXhwci5wc2V1ZG9zLFMudW5pcXVlU29ydD1TLnVuaXF1ZT1kLnVuaXF1ZVNvcnQsUy50ZXh0PWQuZ2V0VGV4dCxTLmlzWE1MRG9jPWQuaXNYTUwsUy5jb250YWlucz1kLmNvbnRhaW5zLFMuZXNjYXBlU2VsZWN0b3I9ZC5lc2NhcGU7dmFyIGg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVtdLGk9dm9pZCAwIT09bjt3aGlsZSgoZT1lW3RdKSYmOSE9PWUubm9kZVR5cGUpaWYoMT09PWUubm9kZVR5cGUpe2lmKGkmJlMoZSkuaXMobikpYnJlYWs7ci5wdXNoKGUpfXJldHVybiByfSxUPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBlJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufSxrPVMuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7ZnVuY3Rpb24gQShlLHQpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCl9dmFyIE49L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7ZnVuY3Rpb24gaihlLG4scil7cmV0dXJuIG0obik/Uy5ncmVwKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4hIW4uY2FsbChlLHQsZSkhPT1yfSk6bi5ub2RlVHlwZT9TLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PW4hPT1yfSk6InN0cmluZyIhPXR5cGVvZiBuP1MuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybi0xPGkuY2FsbChuLGUpIT09cn0pOlMuZmlsdGVyKG4sZSxyKX1TLmZpbHRlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dFswXTtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoJiYxPT09ci5ub2RlVHlwZT9TLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsZSk/W3JdOltdOlMuZmluZC5tYXRjaGVzKGUsUy5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSkpfSxTLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcy5sZW5ndGgsaT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3Q8cjt0KyspaWYoUy5jb250YWlucyhpW3RdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxyO3QrKylTLmZpbmQoZSxpW3RdLG4pO3JldHVybiAxPHI/Uy51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhaih0aGlzLCJzdHJpbmciPT10eXBlb2YgZSYmay50ZXN0KGUpP1MoZSk6ZXx8W10sITEpLmxlbmd0aH19KTt2YXIgRCxxPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KFMuZm4uaW5pdD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZighZSlyZXR1cm4gdGhpcztpZihuPW58fEQsInN0cmluZyI9PXR5cGVvZiBlKXtpZighKHI9IjwiPT09ZVswXSYmIj4iPT09ZVtlLmxlbmd0aC0xXSYmMzw9ZS5sZW5ndGg/W251bGwsZSxudWxsXTpxLmV4ZWMoZSkpfHwhclsxXSYmdClyZXR1cm4hdHx8dC5qcXVlcnk/KHR8fG4pLmZpbmQoZSk6dGhpcy5jb25zdHJ1Y3Rvcih0KS5maW5kKGUpO2lmKHJbMV0pe2lmKHQ9dCBpbnN0YW5jZW9mIFM/dFswXTp0LFMubWVyZ2UodGhpcyxTLnBhcnNlSFRNTChyWzFdLHQmJnQubm9kZVR5cGU/dC5vd25lckRvY3VtZW50fHx0OkUsITApKSxOLnRlc3QoclsxXSkmJlMuaXNQbGFpbk9iamVjdCh0KSlmb3IociBpbiB0KW0odGhpc1tyXSk/dGhpc1tyXSh0W3JdKTp0aGlzLmF0dHIocix0W3JdKTtyZXR1cm4gdGhpc31yZXR1cm4oaT1FLmdldEVsZW1lbnRCeUlkKHJbMl0pKSYmKHRoaXNbMF09aSx0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBlLm5vZGVUeXBlPyh0aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzKTptKGUpP3ZvaWQgMCE9PW4ucmVhZHk/bi5yZWFkeShlKTplKFMpOlMubWFrZUFycmF5KGUsdGhpcyl9KS5wcm90b3R5cGU9Uy5mbixEPVMoRSk7dmFyIEw9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sSD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmdW5jdGlvbiBPKGUsdCl7d2hpbGUoKGU9ZVt0XSkmJjEhPT1lLm5vZGVUeXBlKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGUpe3ZhciB0PVMoZSx0aGlzKSxuPXQubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bjtlKyspaWYoUy5jb250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0aCxvPVtdLGE9InN0cmluZyIhPXR5cGVvZiBlJiZTKGUpO2lmKCFrLnRlc3QoZSkpZm9yKDtyPGk7cisrKWZvcihuPXRoaXNbcl07biYmbiE9PXQ7bj1uLnBhcmVudE5vZGUpaWYobi5ub2RlVHlwZTwxMSYmKGE/LTE8YS5pbmRleChuKToxPT09bi5ub2RlVHlwZSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUpKSl7by5wdXNoKG4pO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjaygxPG8ubGVuZ3RoP1MudW5pcXVlU29ydChvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP2kuY2FsbChTKGUpLHRoaXNbMF0pOmkuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy51bmlxdWVTb3J0KFMubWVyZ2UodGhpcy5nZXQoKSxTKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLFMuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgoZSwicGFyZW50Tm9kZSIsbil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLCJwcmV2aW91c1NpYmxpbmciLG4pfSxzaWJsaW5nczpmdW5jdGlvbihlKXtyZXR1cm4gVCgoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIFQoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUuY29udGVudERvY3VtZW50JiZyKGUuY29udGVudERvY3VtZW50KT9lLmNvbnRlbnREb2N1bWVudDooQShlLCJ0ZW1wbGF0ZSIpJiYoZT1lLmNvbnRlbnR8fGUpLFMubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihyLGkpe1MuZm5bcl09ZnVuY3Rpb24oZSx0KXt2YXIgbj1TLm1hcCh0aGlzLGksZSk7cmV0dXJuIlVudGlsIiE9PXIuc2xpY2UoLTUpJiYodD1lKSx0JiYic3RyaW5nIj09dHlwZW9mIHQmJihuPVMuZmlsdGVyKHQsbikpLDE8dGhpcy5sZW5ndGgmJihIW3JdfHxTLnVuaXF1ZVNvcnQobiksTC50ZXN0KHIpJiZuLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2sobil9fSk7dmFyIFA9L1teXHgyMFx0XHJcblxmXSsvZztmdW5jdGlvbiBSKGUpe3JldHVybiBlfWZ1bmN0aW9uIE0oZSl7dGhyb3cgZX1mdW5jdGlvbiBJKGUsdCxuLHIpe3ZhciBpO3RyeXtlJiZtKGk9ZS5wcm9taXNlKT9pLmNhbGwoZSkuZG9uZSh0KS5mYWlsKG4pOmUmJm0oaT1lLnRoZW4pP2kuY2FsbChlLHQsbik6dC5hcHBseSh2b2lkIDAsW2VdLnNsaWNlKHIpKX1jYXRjaChlKXtuLmFwcGx5KHZvaWQgMCxbZV0pfX1TLkNhbGxiYWNrcz1mdW5jdGlvbihyKXt2YXIgZSxuO3I9InN0cmluZyI9PXR5cGVvZiByPyhlPXIsbj17fSxTLmVhY2goZS5tYXRjaChQKXx8W10sZnVuY3Rpb24oZSx0KXtuW3RdPSEwfSksbik6Uy5leHRlbmQoe30scik7dmFyIGksdCxvLGEscz1bXSx1PVtdLGw9LTEsYz1mdW5jdGlvbigpe2ZvcihhPWF8fHIub25jZSxvPWk9ITA7dS5sZW5ndGg7bD0tMSl7dD11LnNoaWZ0KCk7d2hpbGUoKytsPHMubGVuZ3RoKSExPT09c1tsXS5hcHBseSh0WzBdLHRbMV0pJiZyLnN0b3BPbkZhbHNlJiYobD1zLmxlbmd0aCx0PSExKX1yLm1lbW9yeXx8KHQ9ITEpLGk9ITEsYSYmKHM9dD9bXToiIil9LGY9e2FkZDpmdW5jdGlvbigpe3JldHVybiBzJiYodCYmIWkmJihsPXMubGVuZ3RoLTEsdS5wdXNoKHQpKSxmdW5jdGlvbiBuKGUpe1MuZWFjaChlLGZ1bmN0aW9uKGUsdCl7bSh0KT9yLnVuaXF1ZSYmZi5oYXModCl8fHMucHVzaCh0KTp0JiZ0Lmxlbmd0aCYmInN0cmluZyIhPT13KHQpJiZuKHQpfSl9KGFyZ3VtZW50cyksdCYmIWkmJmMoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIFMuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgbjt3aGlsZSgtMTwobj1TLmluQXJyYXkodCxzLG4pKSlzLnNwbGljZShuLDEpLG48PWwmJmwtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gZT8tMTxTLmluQXJyYXkoZSxzKTowPHMubGVuZ3RofSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBzJiYocz1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBhPXU9W10scz10PSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXN9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gYT11PVtdLHR8fGl8fChzPXQ9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhYX0sZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXx8KHQ9W2UsKHQ9dHx8W10pLnNsaWNlP3Quc2xpY2UoKTp0XSx1LnB1c2godCksaXx8YygpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFvfX07cmV0dXJuIGZ9LFMuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihlKXt2YXIgbz1bWyJub3RpZnkiLCJwcm9ncmVzcyIsUy5DYWxsYmFja3MoIm1lbW9yeSIpLFMuQ2FsbGJhY2tzKCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMSwicmVqZWN0ZWQiXV0saT0icGVuZGluZyIsYT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHMuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGUpe3JldHVybiBhLnRoZW4obnVsbCxlKX0scGlwZTpmdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cztyZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihyKXtTLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPW0oaVt0WzRdXSkmJmlbdFs0XV07c1t0WzFdXShmdW5jdGlvbigpe3ZhciBlPW4mJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJm0oZS5wcm9taXNlKT9lLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpOnJbdFswXSsiV2l0aCJdKHRoaXMsbj9bZV06YXJndW1lbnRzKX0pfSksaT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKHQsbixyKXt2YXIgdT0wO2Z1bmN0aW9uIGwoaSxvLGEscyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPWFyZ3VtZW50cyxlPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZighKGk8dSkpe2lmKChlPWEuYXBwbHkobixyKSk9PT1vLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTt0PWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmZS50aGVuLG0odCk/cz90LmNhbGwoZSxsKHUsbyxSLHMpLGwodSxvLE0scykpOih1KyssdC5jYWxsKGUsbCh1LG8sUixzKSxsKHUsbyxNLHMpLGwodSxvLFIsby5ub3RpZnlXaXRoKSkpOihhIT09UiYmKG49dm9pZCAwLHI9W2VdKSwoc3x8by5yZXNvbHZlV2l0aCkobixyKSl9fSx0PXM/ZTpmdW5jdGlvbigpe3RyeXtlKCl9Y2F0Y2goZSl7Uy5EZWZlcnJlZC5leGNlcHRpb25Ib29rJiZTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soZSx0LnN0YWNrVHJhY2UpLHU8PWkrMSYmKGEhPT1NJiYobj12b2lkIDAscj1bZV0pLG8ucmVqZWN0V2l0aChuLHIpKX19O2k/dCgpOihTLkRlZmVycmVkLmdldFN0YWNrSG9vayYmKHQuc3RhY2tUcmFjZT1TLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSxDLnNldFRpbWVvdXQodCkpfX1yZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihlKXtvWzBdWzNdLmFkZChsKDAsZSxtKHIpP3I6UixlLm5vdGlmeVdpdGgpKSxvWzFdWzNdLmFkZChsKDAsZSxtKHQpP3Q6UikpLG9bMl1bM10uYWRkKGwoMCxlLG0obik/bjpNKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/Uy5leHRlbmQoZSxhKTphfX0scz17fTtyZXR1cm4gUy5lYWNoKG8sZnVuY3Rpb24oZSx0KXt2YXIgbj10WzJdLHI9dFs1XTthW3RbMV1dPW4uYWRkLHImJm4uYWRkKGZ1bmN0aW9uKCl7aT1yfSxvWzMtZV1bMl0uZGlzYWJsZSxvWzMtZV1bM10uZGlzYWJsZSxvWzBdWzJdLmxvY2ssb1swXVszXS5sb2NrKSxuLmFkZCh0WzNdLmZpcmUpLHNbdFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gc1t0WzBdKyJXaXRoIl0odGhpcz09PXM/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxzW3RbMF0rIldpdGgiXT1uLmZpcmVXaXRofSksYS5wcm9taXNlKHMpLGUmJmUuY2FsbChzLHMpLHN9LHdoZW46ZnVuY3Rpb24oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCx0PW4scj1BcnJheSh0KSxpPXMuY2FsbChhcmd1bWVudHMpLG89Uy5EZWZlcnJlZCgpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JbdF09dGhpcyxpW3RdPTE8YXJndW1lbnRzLmxlbmd0aD9zLmNhbGwoYXJndW1lbnRzKTplLC0tbnx8by5yZXNvbHZlV2l0aChyLGkpfX07aWYobjw9MSYmKEkoZSxvLmRvbmUoYSh0KSkucmVzb2x2ZSxvLnJlamVjdCwhbiksInBlbmRpbmciPT09by5zdGF0ZSgpfHxtKGlbdF0mJmlbdF0udGhlbikpKXJldHVybiBvLnRoZW4oKTt3aGlsZSh0LS0pSShpW3RdLGEodCksby5yZWplY3QpO3JldHVybiBvLnByb21pc2UoKX19KTt2YXIgVz0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oZSx0KXtDLmNvbnNvbGUmJkMuY29uc29sZS53YXJuJiZlJiZXLnRlc3QoZS5uYW1lKSYmQy5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrZS5tZXNzYWdlLGUuc3RhY2ssdCl9LFMucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oZSl7Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfTt2YXIgRj1TLkRlZmVycmVkKCk7ZnVuY3Rpb24gJCgpe0UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsJCksQy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIiwkKSxTLnJlYWR5KCl9Uy5mbi5yZWFkeT1mdW5jdGlvbihlKXtyZXR1cm4gRi50aGVuKGUpWyJjYXRjaCJdKGZ1bmN0aW9uKGUpe1MucmVhZHlFeGNlcHRpb24oZSl9KSx0aGlzfSxTLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihlKXsoITA9PT1lPy0tUy5yZWFkeVdhaXQ6Uy5pc1JlYWR5KXx8KFMuaXNSZWFkeT0hMCkhPT1lJiYwPC0tUy5yZWFkeVdhaXR8fEYucmVzb2x2ZVdpdGgoRSxbU10pfX0pLFMucmVhZHkudGhlbj1GLnRoZW4sImNvbXBsZXRlIj09PUUucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09RS5yZWFkeVN0YXRlJiYhRS5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/Qy5zZXRUaW1lb3V0KFMucmVhZHkpOihFLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCQpLEMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsJCkpO3ZhciBCPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEpe3ZhciBzPTAsdT1lLmxlbmd0aCxsPW51bGw9PW47aWYoIm9iamVjdCI9PT13KG4pKWZvcihzIGluIGk9ITAsbilCKGUsdCxzLG5bc10sITAsbyxhKTtlbHNlIGlmKHZvaWQgMCE9PXImJihpPSEwLG0ocil8fChhPSEwKSxsJiYoYT8odC5jYWxsKGUsciksdD1udWxsKToobD10LHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsLmNhbGwoUyhlKSxuKX0pKSx0KSlmb3IoO3M8dTtzKyspdChlW3NdLG4sYT9yOnIuY2FsbChlW3NdLHMsdChlW3NdLG4pKSk7cmV0dXJuIGk/ZTpsP3QuY2FsbChlKTp1P3QoZVswXSxuKTpvfSxfPS9eLW1zLS8sej0vLShbYS16XSkvZztmdW5jdGlvbiBVKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBYKGUpe3JldHVybiBlLnJlcGxhY2UoXywibXMtIikucmVwbGFjZSh6LFUpfXZhciBWPWZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZXx8OT09PWUubm9kZVR5cGV8fCErZS5ub2RlVHlwZX07ZnVuY3Rpb24gRygpe3RoaXMuZXhwYW5kbz1TLmV4cGFuZG8rRy51aWQrK31HLnVpZD0xLEcucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHR8fCh0PXt9LFYoZSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT10Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHRoaXMuZXhwYW5kbyx7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KSkpLHR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT10aGlzLmNhY2hlKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClpW1godCldPW47ZWxzZSBmb3IociBpbiB0KWlbWChyKV09dFtyXTtyZXR1cm4gaX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRvXVtYKHQpXX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dHx8dCYmInN0cmluZyI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KGUsdCk6KHRoaXMuc2V0KGUsdCxuKSx2b2lkIDAhPT1uP246dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PXIpe2lmKHZvaWQgMCE9PXQpe249KHQ9QXJyYXkuaXNBcnJheSh0KT90Lm1hcChYKToodD1YKHQpKWluIHI/W3RdOnQubWF0Y2goUCl8fFtdKS5sZW5ndGg7d2hpbGUobi0tKWRlbGV0ZSByW3Rbbl1dfSh2b2lkIDA9PT10fHxTLmlzRW1wdHlPYmplY3QocikpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PXQmJiFTLmlzRW1wdHlPYmplY3QodCl9fTt2YXIgWT1uZXcgRyxRPW5ldyBHLEo9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxLPS9bQS1aXS9nO2Z1bmN0aW9uIFooZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShLLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShyKSkpe3RyeXtuPSJ0cnVlIj09PShpPW4pfHwiZmFsc2UiIT09aSYmKCJudWxsIj09PWk/bnVsbDppPT09K2krIiI/K2k6Si50ZXN0KGkpP0pTT04ucGFyc2UoaSk6aSl9Y2F0Y2goZSl7fVEuc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufVMuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBRLmhhc0RhdGEoZSl8fFkuaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFEuYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1EucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gWS5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1kucmVtb3ZlKGUsdCl9fSksUy5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT1RLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVkuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9WChyLnNsaWNlKDUpKSxaKG8scixpW3JdKSk7WS5zZXQobywiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGl9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbil9KTpCKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ7aWYobyYmdm9pZCAwPT09ZSlyZXR1cm4gdm9pZCAwIT09KHQ9US5nZXQobyxuKSk/dDp2b2lkIDAhPT0odD1aKG8sbikpP3Q6dm9pZCAwO3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbixlKX0pfSxudWxsLGUsMTxhcmd1bWVudHMubGVuZ3RoLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtRLnJlbW92ZSh0aGlzLGUpfSl9fSksUy5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZihlKXJldHVybiB0PSh0fHwiZngiKSsicXVldWUiLHI9WS5nZXQoZSx0KSxuJiYoIXJ8fEFycmF5LmlzQXJyYXkobik/cj1ZLmFjY2VzcyhlLHQsUy5tYWtlQXJyYXkobikpOnIucHVzaChuKSkscnx8W119LGRlcXVldWU6ZnVuY3Rpb24oZSx0KXt0PXR8fCJmeCI7dmFyIG49Uy5xdWV1ZShlLHQpLHI9bi5sZW5ndGgsaT1uLnNoaWZ0KCksbz1TLl9xdWV1ZUhvb2tzKGUsdCk7ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHItLSksaSYmKCJmeCI9PT10JiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgby5zdG9wLGkuY2FsbChlLGZ1bmN0aW9uKCl7Uy5kZXF1ZXVlKGUsdCl9LG8pKSwhciYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCsicXVldWVIb29rcyI7cmV0dXJuIFkuZ2V0KGUsbil8fFkuYWNjZXNzKGUsbix7ZW1wdHk6Uy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7WS5yZW1vdmUoZSxbdCsicXVldWUiLG5dKX0pfSl9fSksUy5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKHQsbil7dmFyIGU9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQmJihuPXQsdD0iZngiLGUtLSksYXJndW1lbnRzLmxlbmd0aDxlP1MucXVldWUodGhpc1swXSx0KTp2b2lkIDA9PT1uP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Uy5xdWV1ZSh0aGlzLHQsbik7Uy5fcXVldWVIb29rcyh0aGlzLHQpLCJmeCI9PT10JiYiaW5wcm9ncmVzcyIhPT1lWzBdJiZTLmRlcXVldWUodGhpcyx0KX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLmRlcXVldWUodGhpcyxlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0xLGk9Uy5EZWZlcnJlZCgpLG89dGhpcyxhPXRoaXMubGVuZ3RoLHM9ZnVuY3Rpb24oKXstLXJ8fGkucmVzb2x2ZVdpdGgobyxbb10pfTsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLGU9ZXx8ImZ4Ijt3aGlsZShhLS0pKG49WS5nZXQob1thXSxlKyJxdWV1ZUhvb2tzIikpJiZuLmVtcHR5JiYocisrLG4uZW1wdHkuYWRkKHMpKTtyZXR1cm4gcygpLGkucHJvbWlzZSh0KX19KTt2YXIgZWU9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsdGU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK2VlKyIpKFthLXolXSopJCIsImkiKSxuZT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLHJlPUUuZG9jdW1lbnRFbGVtZW50LGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKX0sb2U9e2NvbXBvc2VkOiEwfTtyZS5nZXRSb290Tm9kZSYmKGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8ZS5nZXRSb290Tm9kZShvZSk9PT1lLm93bmVyRG9jdW1lbnR9KTt2YXIgYWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ibm9uZSI9PT0oZT10fHxlKS5zdHlsZS5kaXNwbGF5fHwiIj09PWUuc3R5bGUuZGlzcGxheSYmaWUoZSkmJiJub25lIj09PVMuY3NzKGUsImRpc3BsYXkiKX07ZnVuY3Rpb24gc2UoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBTLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChTLmNzc051bWJlclt0XT8iIjoicHgiKSxjPWUubm9kZVR5cGUmJihTLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmdGUuZXhlYyhTLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pUy5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLFMuc3R5bGUoZSx0LGMrbCksbj1ufHxbXX1yZXR1cm4gbiYmKGM9K2N8fCt1fHwwLGk9blsxXT9jKyhuWzFdKzEpKm5bMl06K25bMl0sciYmKHIudW5pdD1sLHIuc3RhcnQ9YyxyLmVuZD1pKSksaX12YXIgdWU9e307ZnVuY3Rpb24gbGUoZSx0KXtmb3IodmFyIG4scixpLG8sYSxzLHUsbD1bXSxjPTAsZj1lLmxlbmd0aDtjPGY7YysrKShyPWVbY10pLnN0eWxlJiYobj1yLnN0eWxlLmRpc3BsYXksdD8oIm5vbmUiPT09biYmKGxbY109WS5nZXQociwiZGlzcGxheSIpfHxudWxsLGxbY118fChyLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmYWUocikmJihsW2NdPSh1PWE9bz12b2lkIDAsYT0oaT1yKS5vd25lckRvY3VtZW50LHM9aS5ub2RlTmFtZSwodT11ZVtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLHU9Uy5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSx1ZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsWS5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXthZSh0aGlzKT9TKHRoaXMpLnNob3coKTpTKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBjZSxmZSxwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2k7Y2U9RS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJkaXYiKSksKGZlPUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxmZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksZmUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGNlLmFwcGVuZENoaWxkKGZlKSx2LmNoZWNrQ2xvbmU9Y2UuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGNlLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsdi5ub0Nsb25lQ2hlY2tlZD0hIWNlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSxjZS5pbm5lckhUTUw9IjxvcHRpb24+PC9vcHRpb24+Iix2Lm9wdGlvbj0hIWNlLmxhc3RDaGlsZDt2YXIgZ2U9e3RoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiB5ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmQShlLHQpP1MubWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24gdmUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspWS5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fFkuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9Z2UudGJvZHk9Z2UudGZvb3Q9Z2UuY29sZ3JvdXA9Z2UuY2FwdGlvbj1nZS50aGVhZCxnZS50aD1nZS50ZCx2Lm9wdGlvbnx8KGdlLm9wdGdyb3VwPWdlLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgbWU9Lzx8JiM/XHcrOy87ZnVuY3Rpb24geGUoZSx0LG4scixpKXtmb3IodmFyIG8sYSxzLHUsbCxjLGY9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscD1bXSxkPTAsaD1lLmxlbmd0aDtkPGg7ZCsrKWlmKChvPWVbZF0pfHwwPT09bylpZigib2JqZWN0Ij09PXcobykpUy5tZXJnZShwLG8ubm9kZVR5cGU/W29dOm8pO2Vsc2UgaWYobWUudGVzdChvKSl7YT1hfHxmLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHM9KGRlLmV4ZWMobyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksdT1nZVtzXXx8Z2UuX2RlZmF1bHQsYS5pbm5lckhUTUw9dVsxXStTLmh0bWxQcmVmaWx0ZXIobykrdVsyXSxjPXVbMF07d2hpbGUoYy0tKWE9YS5sYXN0Q2hpbGQ7Uy5tZXJnZShwLGEuY2hpbGROb2RlcyksKGE9Zi5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIHAucHVzaCh0LmNyZWF0ZVRleHROb2RlKG8pKTtmLnRleHRDb250ZW50PSIiLGQ9MDt3aGlsZShvPXBbZCsrXSlpZihyJiYtMTxTLmluQXJyYXkobyxyKSlpJiZpLnB1c2gobyk7ZWxzZSBpZihsPWllKG8pLGE9eWUoZi5hcHBlbmRDaGlsZChvKSwic2NyaXB0IiksbCYmdmUoYSksbil7Yz0wO3doaWxlKG89YVtjKytdKWhlLnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gZn12YXIgYmU9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIHdlKCl7cmV0dXJuITB9ZnVuY3Rpb24gVGUoKXtyZXR1cm4hMX1mdW5jdGlvbiBDZShlLHQpe3JldHVybiBlPT09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEUuYWN0aXZlRWxlbWVudH1jYXRjaChlKXt9fSgpPT0oImZvY3VzIj09PXQpfWZ1bmN0aW9uIEVlKGUsdCxuLHIsaSxvKXt2YXIgYSxzO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7Zm9yKHMgaW4ic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj12b2lkIDApLHQpRWUoZSxzLG4scix0W3NdLG8pO3JldHVybiBlfWlmKG51bGw9PXImJm51bGw9PWk/KGk9bixyPW49dm9pZCAwKTpudWxsPT1pJiYoInN0cmluZyI9PXR5cGVvZiBuPyhpPXIscj12b2lkIDApOihpPXIscj1uLG49dm9pZCAwKSksITE9PT1pKWk9VGU7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksKGk9ZnVuY3Rpb24oZSl7cmV0dXJuIFMoKS5vZmYoZSksYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KS5ndWlkPWEuZ3VpZHx8KGEuZ3VpZD1TLmd1aWQrKykpLGUuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQuYWRkKHRoaXMsdCxpLHIsbil9KX1mdW5jdGlvbiBTZShlLGksbyl7bz8oWS5zZXQoZSxpLCExKSxTLmV2ZW50LmFkZChlLGkse25hbWVzcGFjZTohMSxoYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj1ZLmdldCh0aGlzLGkpO2lmKDEmZS5pc1RyaWdnZXImJnRoaXNbaV0pe2lmKHIubGVuZ3RoKShTLmV2ZW50LnNwZWNpYWxbaV18fHt9KS5kZWxlZ2F0ZVR5cGUmJmUuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihyPXMuY2FsbChhcmd1bWVudHMpLFkuc2V0KHRoaXMsaSxyKSx0PW8odGhpcyxpKSx0aGlzW2ldKCksciE9PShuPVkuZ2V0KHRoaXMsaSkpfHx0P1kuc2V0KHRoaXMsaSwhMSk6bj17fSxyIT09bilyZXR1cm4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksbiYmbi52YWx1ZX1lbHNlIHIubGVuZ3RoJiYoWS5zZXQodGhpcyxpLHt2YWx1ZTpTLmV2ZW50LnRyaWdnZXIoUy5leHRlbmQoclswXSxTLkV2ZW50LnByb3RvdHlwZSksci5zbGljZSgxKSx0aGlzKX0pLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX0pKTp2b2lkIDA9PT1ZLmdldChlLGkpJiZTLmV2ZW50LmFkZChlLGksd2UpfVMuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24odCxlLG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHk9WS5nZXQodCk7aWYoVih0KSl7bi5oYW5kbGVyJiYobj0obz1uKS5oYW5kbGVyLGk9by5zZWxlY3RvciksaSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihyZSxpKSxuLmd1aWR8fChuLmd1aWQ9Uy5ndWlkKyspLCh1PXkuZXZlbnRzKXx8KHU9eS5ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSksKGE9eS5oYW5kbGUpfHwoYT15LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFMmJlMuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP1MuZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9YmUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGQ9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGQsZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9Uy5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmUy5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKHA9dVtkXSl8fCgocD11W2RdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmITEhPT1mLnNldHVwLmNhbGwodCxyLGgsYSl8fHQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKGQsYSkpLGYuYWRkJiYoZi5hZGQuY2FsbCh0LGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1aWQ9bi5ndWlkKSksaT9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLGMpOnAucHVzaChjKSxTLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHk9WS5oYXNEYXRhKGUpJiZZLmdldChlKTtpZih5JiYodT15LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9YmUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx5LmhhbmRsZSl8fFMucmVtb3ZlRXZlbnQoZSxkLHkuaGFuZGxlKSxkZWxldGUgdVtkXSl9ZWxzZSBmb3IoZCBpbiB1KVMuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Uy5pc0VtcHR5T2JqZWN0KHUpJiZZLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksdT1TLmV2ZW50LmZpeChlKSxsPShZLmdldCh0aGlzLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbdS50eXBlXXx8W10sYz1TLmV2ZW50LnNwZWNpYWxbdS50eXBlXXx8e307Zm9yKHNbMF09dSx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylzW3RdPWFyZ3VtZW50c1t0XTtpZih1LmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWMucHJlRGlzcGF0Y2h8fCExIT09Yy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsdSkpe2E9Uy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsdSxsKSx0PTA7d2hpbGUoKGk9YVt0KytdKSYmIXUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7dS5jdXJyZW50VGFyZ2V0PWkuZWxlbSxuPTA7d2hpbGUoKG89aS5oYW5kbGVyc1tuKytdKSYmIXUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl1LnJuYW1lc3BhY2UmJiExIT09by5uYW1lc3BhY2UmJiF1LnJuYW1lc3BhY2UudGVzdChvLm5hbWVzcGFjZSl8fCh1LmhhbmRsZU9iaj1vLHUuZGF0YT1vLmRhdGEsdm9pZCAwIT09KHI9KChTLmV2ZW50LnNwZWNpYWxbby5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fG8uaGFuZGxlcikuYXBwbHkoaS5lbGVtLHMpKSYmITE9PT0odS5yZXN1bHQ9cikmJih1LnByZXZlbnREZWZhdWx0KCksdS5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBjLnBvc3REaXNwYXRjaCYmYy5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLHUpLHUucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhLHM9W10sdT10LmRlbGVnYXRlQ291bnQsbD1lLnRhcmdldDtpZih1JiZsLm5vZGVUeXBlJiYhKCJjbGljayI9PT1lLnR5cGUmJjE8PWUuYnV0dG9uKSlmb3IoO2whPT10aGlzO2w9bC5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1sLm5vZGVUeXBlJiYoImNsaWNrIiE9PWUudHlwZXx8ITAhPT1sLmRpc2FibGVkKSl7Zm9yKG89W10sYT17fSxuPTA7bjx1O24rKyl2b2lkIDA9PT1hW2k9KHI9dFtuXSkuc2VsZWN0b3IrIiAiXSYmKGFbaV09ci5uZWVkc0NvbnRleHQ/LTE8UyhpLHRoaXMpLmluZGV4KGwpOlMuZmluZChpLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCksYVtpXSYmby5wdXNoKHIpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczpvfSl9cmV0dXJuIGw9dGhpcyx1PHQubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczp0LnNsaWNlKHUpfSksc30sYWRkUHJvcDpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLkV2ZW50LnByb3RvdHlwZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6bShlKT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gZSh0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W3RdfSxzZXQ6ZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pfX0pfSxmaXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbUy5leHBhbmRvXT9lOm5ldyBTLkV2ZW50KGUpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIsd2UpLCExfSx0cmlnZ2VyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIpLCEwfSxfZGVmYXVsdDpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtyZXR1cm4gcGUudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZBKHQsImlucHV0IikmJlkuZ2V0KHQsImNsaWNrIil8fEEodCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5yZXN1bHQmJmUub3JpZ2luYWxFdmVudCYmKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX19LFMucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9LFMuRXZlbnQ9ZnVuY3Rpb24oZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBTLkV2ZW50KSlyZXR1cm4gbmV3IFMuRXZlbnQoZSx0KTtlJiZlLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1lLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09ZS5yZXR1cm5WYWx1ZT93ZTpUZSx0aGlzLnRhcmdldD1lLnRhcmdldCYmMz09PWUudGFyZ2V0Lm5vZGVUeXBlP2UudGFyZ2V0LnBhcmVudE5vZGU6ZS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWUuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9ZS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9ZSx0JiZTLmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0YW1wfHxEYXRlLm5vdygpLHRoaXNbUy5leHBhbmRvXT0hMH0sUy5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOlRlLGlzUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD13ZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sUy5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjb2RlOiEwLGNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOiEwfSxTLmV2ZW50LmFkZFByb3ApLFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24odCxlKXtTLmV2ZW50LnNwZWNpYWxbdF09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIFNlKHRoaXMsdCxDZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gU2UodGhpcyx0KSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFkuZ2V0KGUudGFyZ2V0LHQpfSxkZWxlZ2F0ZVR5cGU6ZX19KSxTLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGUsaSl7Uy5ldmVudC5zcGVjaWFsW2VdPXtkZWxlZ2F0ZVR5cGU6aSxiaW5kVHlwZTppLGhhbmRsZTpmdW5jdGlvbihlKXt2YXIgdCxuPWUucmVsYXRlZFRhcmdldCxyPWUuaGFuZGxlT2JqO3JldHVybiBuJiYobj09PXRoaXN8fFMuY29udGFpbnModGhpcyxuKSl8fChlLnR5cGU9ci5vcmlnVHlwZSx0PXIuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS50eXBlPWkpLHR9fX0pLFMuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gRWUodGhpcyxlLHQsbixyKX0sb25lOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBFZSh0aGlzLGUsdCxuLHIsMSl9LG9mZjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZihlJiZlLnByZXZlbnREZWZhdWx0JiZlLmhhbmRsZU9iailyZXR1cm4gcj1lLmhhbmRsZU9iaixTKGUuZGVsZWdhdGVUYXJnZXQpLm9mZihyLm5hbWVzcGFjZT9yLm9yaWdUeXBlKyIuIityLm5hbWVzcGFjZTpyLm9yaWdUeXBlLHIuc2VsZWN0b3Isci5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Zm9yKGkgaW4gZSl0aGlzLm9mZihpLHQsZVtpXSk7cmV0dXJuIHRoaXN9cmV0dXJuITEhPT10JiYiZnVuY3Rpb24iIT10eXBlb2YgdHx8KG49dCx0PXZvaWQgMCksITE9PT1uJiYobj1UZSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Uy5ldmVudC5yZW1vdmUodGhpcyxlLG4sdCl9KX19KTt2YXIga2U9LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksQWU9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksTmU9L15ccyo8IVxbQ0RBVEFcW3xcXVxdPlxzKiQvZztmdW5jdGlvbiBqZShlLHQpe3JldHVybiBBKGUsInRhYmxlIikmJkEoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpJiZTKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIERlKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rpb24gcWUoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1lLnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIExlKGUsdCl7dmFyIG4scixpLG8sYSxzO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihZLmhhc0RhdGEoZSkmJihzPVkuZ2V0KGUpLmV2ZW50cykpZm9yKGkgaW4gWS5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpLHMpZm9yKG49MCxyPXNbaV0ubGVuZ3RoO248cjtuKyspUy5ldmVudC5hZGQodCxpLHNbaV1bbl0pO1EuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1TLmV4dGVuZCh7fSxvKSxRLnNldCh0LGEpKX19ZnVuY3Rpb24gSGUobixyLGksbyl7cj1nKHIpO3ZhciBlLHQsYSxzLHUsbCxjPTAsZj1uLmxlbmd0aCxwPWYtMSxkPXJbMF0saD1tKGQpO2lmKGh8fDE8ZiYmInN0cmluZyI9PXR5cGVvZiBkJiYhdi5jaGVja0Nsb25lJiZBZS50ZXN0KGQpKXJldHVybiBuLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5lcShlKTtoJiYoclswXT1kLmNhbGwodGhpcyxlLHQuaHRtbCgpKSksSGUodCxyLGksbyl9KTtpZihmJiYodD0oZT14ZShyLG5bMF0ub3duZXJEb2N1bWVudCwhMSxuLG8pKS5maXJzdENoaWxkLDE9PT1lLmNoaWxkTm9kZXMubGVuZ3RoJiYoZT10KSx0fHxvKSl7Zm9yKHM9KGE9Uy5tYXAoeWUoZSwic2NyaXB0IiksRGUpKS5sZW5ndGg7YzxmO2MrKyl1PWUsYyE9PXAmJih1PVMuY2xvbmUodSwhMCwhMCkscyYmUy5tZXJnZShhLHllKHUsInNjcmlwdCIpKSksaS5jYWxsKG5bY10sdSxjKTtpZihzKWZvcihsPWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxTLm1hcChhLHFlKSxjPTA7YzxzO2MrKyl1PWFbY10saGUudGVzdCh1LnR5cGV8fCIiKSYmIVkuYWNjZXNzKHUsImdsb2JhbEV2YWwiKSYmUy5jb250YWlucyhsLHUpJiYodS5zcmMmJiJtb2R1bGUiIT09KHUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/Uy5fZXZhbFVybCYmIXUubm9Nb2R1bGUmJlMuX2V2YWxVcmwodS5zcmMse25vbmNlOnUubm9uY2V8fHUuZ2V0QXR0cmlidXRlKCJub25jZSIpfSxsKTpiKHUudGV4dENvbnRlbnQucmVwbGFjZShOZSwiIiksdSxsKSl9cmV0dXJuIG59ZnVuY3Rpb24gT2UoZSx0LG4pe2Zvcih2YXIgcixpPXQ/Uy5maWx0ZXIodCxlKTplLG89MDtudWxsIT0ocj1pW29dKTtvKyspbnx8MSE9PXIubm9kZVR5cGV8fFMuY2xlYW5EYXRhKHllKHIpKSxyLnBhcmVudE5vZGUmJihuJiZpZShyKSYmdmUoeWUociwic2NyaXB0IikpLHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSk7cmV0dXJuIGV9Uy5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjPWUuY2xvbmVOb2RlKCEwKSxmPWllKGUpO2lmKCEodi5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Uy5pc1hNTERvYyhlKSkpZm9yKGE9eWUoYykscj0wLGk9KG89eWUoZSkpLmxlbmd0aDtyPGk7cisrKXM9b1tyXSx1PWFbcl0sdm9pZCAwLCJpbnB1dCI9PT0obD11Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZwZS50ZXN0KHMudHlwZSk/dS5jaGVja2VkPXMuY2hlY2tlZDoiaW5wdXQiIT09bCYmInRleHRhcmVhIiE9PWx8fCh1LmRlZmF1bHRWYWx1ZT1zLmRlZmF1bHRWYWx1ZSk7aWYodClpZihuKWZvcihvPW98fHllKGUpLGE9YXx8eWUoYykscj0wLGk9by5sZW5ndGg7cjxpO3IrKylMZShvW3JdLGFbcl0pO2Vsc2UgTGUoZSxjKTtyZXR1cm4gMDwoYT15ZShjLCJzY3JpcHQiKSkubGVuZ3RoJiZ2ZShhLCFmJiZ5ZShlLCJzY3JpcHQiKSksY30sY2xlYW5EYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsaT1TLmV2ZW50LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZihWKG4pKXtpZih0PW5bWS5leHBhbmRvXSl7aWYodC5ldmVudHMpZm9yKHIgaW4gdC5ldmVudHMpaVtyXT9TLmV2ZW50LnJlbW92ZShuLHIpOlMucmVtb3ZlRXZlbnQobixyLHQuaGFuZGxlKTtuW1kuZXhwYW5kb109dm9pZCAwfW5bUS5leHBhbmRvXSYmKG5bUS5leHBhbmRvXT12b2lkIDApfX19KSxTLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiBPZSh0aGlzLGUsITApfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIE9lKHRoaXMsZSl9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEIodGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT9TLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fGplKHRoaXMsZSkuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9amUodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoUy5jbGVhbkRhdGEoeWUoZSwhMSkpLGUudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWUmJmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBTLmNsb25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiBCKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXXx8e30sbj0wLHI9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09PXQubm9kZVR5cGUpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIWtlLnRlc3QoZSkmJiFnZVsoZGUuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9Uy5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO248cjtuKyspMT09PSh0PXRoaXNbbl18fHt9KS5ub2RlVHlwZSYmKFMuY2xlYW5EYXRhKHllKHQsITEpKSx0LmlubmVySFRNTD1lKTt0PTB9Y2F0Y2goZSl7fX10JiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIEhlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtTLmluQXJyYXkodGhpcyxuKTwwJiYoUy5jbGVhbkRhdGEoeWUodGhpcykpLHQmJnQucmVwbGFjZUNoaWxkKGUsdGhpcykpfSxuKX19KSxTLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihlLGEpe1MuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10scj1TKGUpLGk9ci5sZW5ndGgtMSxvPTA7bzw9aTtvKyspdD1vPT09aT90aGlzOnRoaXMuY2xvbmUoITApLFMocltvXSlbYV0odCksdS5hcHBseShuLHQuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUGU9bmV3IFJlZ0V4cCgiXigiK2VlKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksUmU9L14tLS8sTWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiB0JiZ0Lm9wZW5lcnx8KHQ9QyksdC5nZXRDb21wdXRlZFN0eWxlKGUpfSxJZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9O2ZvcihpIGluIHQpb1tpXT1lLnN0eWxlW2ldLGUuc3R5bGVbaV09dFtpXTtmb3IoaSBpbiByPW4uY2FsbChlKSx0KWUuc3R5bGVbaV09b1tpXTtyZXR1cm4gcn0sV2U9bmV3IFJlZ0V4cChuZS5qb2luKCJ8IiksImkiKSxGZT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsJGU9bmV3IFJlZ0V4cCgiXiIrRmUrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrRmUrIiskIiwiZyIpO2Z1bmN0aW9uIEJlKGUsdCxuKXt2YXIgcixpLG8sYSxzPVJlLnRlc3QodCksdT1lLnN0eWxlO3JldHVybihuPW58fE1lKGUpKSYmKGE9bi5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxuW3RdLHMmJmEmJihhPWEucmVwbGFjZSgkZSwiJDEiKXx8dm9pZCAwKSwiIiE9PWF8fGllKGUpfHwoYT1TLnN0eWxlKGUsdCkpLCF2LnBpeGVsQm94U3R5bGVzKCkmJlBlLnRlc3QoYSkmJldlLnRlc3QodCkmJihyPXUud2lkdGgsaT11Lm1pbldpZHRoLG89dS5tYXhXaWR0aCx1Lm1pbldpZHRoPXUubWF4V2lkdGg9dS53aWR0aD1hLGE9bi53aWR0aCx1LndpZHRoPXIsdS5taW5XaWR0aD1pLHUubWF4V2lkdGg9bykpLHZvaWQgMCE9PWE/YSsiIjphfWZ1bmN0aW9uIF9lKGUsdCl7cmV0dXJue2dldDpmdW5jdGlvbigpe2lmKCFlKCkpcmV0dXJuKHRoaXMuZ2V0PXQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkZWxldGUgdGhpcy5nZXR9fX0hZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYobCl7dS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIixsLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiLHJlLmFwcGVuZENoaWxkKHUpLmFwcGVuZENoaWxkKGwpO3ZhciBlPUMuZ2V0Q29tcHV0ZWRTdHlsZShsKTtuPSIxJSIhPT1lLnRvcCxzPTEyPT09dChlLm1hcmdpbkxlZnQpLGwuc3R5bGUucmlnaHQ9IjYwJSIsbz0zNj09PXQoZS5yaWdodCkscj0zNj09PXQoZS53aWR0aCksbC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGk9MTI9PT10KGwub2Zmc2V0V2lkdGgvMykscmUucmVtb3ZlQ2hpbGQodSksbD1udWxsfX1mdW5jdGlvbiB0KGUpe3JldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZSkpfXZhciBuLHIsaSxvLGEscyx1PUUuY3JlYXRlRWxlbWVudCgiZGl2IiksbD1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2wuc3R5bGUmJihsLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsbC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLHYuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1sLnN0eWxlLmJhY2tncm91bmRDbGlwLFMuZXh0ZW5kKHYse2JveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxyfSxwaXhlbEJveFN0eWxlczpmdW5jdGlvbigpe3JldHVybiBlKCksb30scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBlKCksbn0scmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxzfSxzY3JvbGxib3hTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxpfSxyZWxpYWJsZVRyRGltZW5zaW9uczpmdW5jdGlvbigpe3ZhciBlLHQsbixyO3JldHVybiBudWxsPT1hJiYoZT1FLmNyZWF0ZUVsZW1lbnQoInRhYmxlIiksdD1FLmNyZWF0ZUVsZW1lbnQoInRyIiksbj1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGUiLHQuc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjFweCBzb2xpZCIsdC5zdHlsZS5oZWlnaHQ9IjFweCIsbi5zdHlsZS5oZWlnaHQ9IjlweCIsbi5zdHlsZS5kaXNwbGF5PSJibG9jayIscmUuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQodCkuYXBwZW5kQ2hpbGQobikscj1DLmdldENvbXB1dGVkU3R5bGUodCksYT1wYXJzZUludChyLmhlaWdodCwxMCkrcGFyc2VJbnQoci5ib3JkZXJUb3BXaWR0aCwxMCkrcGFyc2VJbnQoci5ib3JkZXJCb3R0b21XaWR0aCwxMCk9PT10Lm9mZnNldEhlaWdodCxyZS5yZW1vdmVDaGlsZChlKSksYX19KSl9KCk7dmFyIHplPVsiV2Via2l0IiwiTW96IiwibXMiXSxVZT1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLFhlPXt9O2Z1bmN0aW9uIFZlKGUpe3ZhciB0PVMuY3NzUHJvcHNbZV18fFhlW2VdO3JldHVybiB0fHwoZSBpbiBVZT9lOlhlW2VdPWZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49emUubGVuZ3RoO3doaWxlKG4tLSlpZigoZT16ZVtuXSt0KWluIFVlKXJldHVybiBlfShlKXx8ZSl9dmFyIEdlPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxZZT17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sUWU9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9O2Z1bmN0aW9uIEplKGUsdCxuKXt2YXIgcj10ZS5leGVjKHQpO3JldHVybiByP01hdGgubWF4KDAsclsyXS0obnx8MCkpKyhyWzNdfHwicHgiKTp0fWZ1bmN0aW9uIEtlKGUsdCxuLHIsaSxvKXt2YXIgYT0id2lkdGgiPT09dD8xOjAscz0wLHU9MDtpZihuPT09KHI/ImJvcmRlciI6ImNvbnRlbnQiKSlyZXR1cm4gMDtmb3IoO2E8NDthKz0yKSJtYXJnaW4iPT09biYmKHUrPVMuY3NzKGUsbituZVthXSwhMCxpKSkscj8oImNvbnRlbnQiPT09biYmKHUtPVMuY3NzKGUsInBhZGRpbmciK25lW2FdLCEwLGkpKSwibWFyZ2luIiE9PW4mJih1LT1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSkpKToodSs9Uy5jc3MoZSwicGFkZGluZyIrbmVbYV0sITAsaSksInBhZGRpbmciIT09bj91Kz1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSk6cys9Uy5jc3MoZSwiYm9yZGVyIituZVthXSsiV2lkdGgiLCEwLGkpKTtyZXR1cm4hciYmMDw9byYmKHUrPU1hdGgubWF4KDAsTWF0aC5jZWlsKGVbIm9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSldLW8tdS1zLS41KSl8fDApLHV9ZnVuY3Rpb24gWmUoZSx0LG4pe3ZhciByPU1lKGUpLGk9KCF2LmJveFNpemluZ1JlbGlhYmxlKCl8fG4pJiYiYm9yZGVyLWJveCI9PT1TLmNzcyhlLCJib3hTaXppbmciLCExLHIpLG89aSxhPUJlKGUsdCxyKSxzPSJvZmZzZXQiK3RbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpO2lmKFBlLnRlc3QoYSkpe2lmKCFuKXJldHVybiBhO2E9ImF1dG8ifXJldHVybighdi5ib3hTaXppbmdSZWxpYWJsZSgpJiZpfHwhdi5yZWxpYWJsZVRyRGltZW5zaW9ucygpJiZBKGUsInRyIil8fCJhdXRvIj09PWF8fCFwYXJzZUZsb2F0KGEpJiYiaW5saW5lIj09PVMuY3NzKGUsImRpc3BsYXkiLCExLHIpKSYmZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmKGk9ImJvcmRlci1ib3giPT09Uy5jc3MoZSwiYm94U2l6aW5nIiwhMSxyKSwobz1zIGluIGUpJiYoYT1lW3NdKSksKGE9cGFyc2VGbG9hdChhKXx8MCkrS2UoZSx0LG58fChpPyJib3JkZXIiOiJjb250ZW50IiksbyxyLGEpKyJweCJ9ZnVuY3Rpb24gZXQoZSx0LG4scixpKXtyZXR1cm4gbmV3IGV0LnByb3RvdHlwZS5pbml0KGUsdCxuLHIsaSl9Uy5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oZSx0KXtpZih0KXt2YXIgbj1CZShlLCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1uPyIxIjpufX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxncmlkQXJlYTohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3RhcnQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7fSxzdHlsZTpmdW5jdGlvbihlLHQsbixyKXtpZihlJiYzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJmUuc3R5bGUpe3ZhciBpLG8sYSxzPVgodCksdT1SZS50ZXN0KHQpLGw9ZS5zdHlsZTtpZih1fHwodD1WZShzKSksYT1TLmNzc0hvb2tzW3RdfHxTLmNzc0hvb2tzW3NdLHZvaWQgMD09PW4pcmV0dXJuIGEmJiJnZXQiaW4gYSYmdm9pZCAwIT09KGk9YS5nZXQoZSwhMSxyKSk/aTpsW3RdOyJzdHJpbmciPT09KG89dHlwZW9mIG4pJiYoaT10ZS5leGVjKG4pKSYmaVsxXSYmKG49c2UoZSx0LGkpLG89Im51bWJlciIpLG51bGwhPW4mJm49PW4mJigibnVtYmVyIiE9PW98fHV8fChuKz1pJiZpWzNdfHwoUy5jc3NOdW1iZXJbc10/IiI6InB4IikpLHYuY2xlYXJDbG9uZVN0eWxlfHwiIiE9PW58fDAhPT10LmluZGV4T2YoImJhY2tncm91bmQiKXx8KGxbdF09ImluaGVyaXQiKSxhJiYic2V0ImluIGEmJnZvaWQgMD09PShuPWEuc2V0KGUsbixyKSl8fCh1P2wuc2V0UHJvcGVydHkodCxuKTpsW3RdPW4pKX19LGNzczpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1YKHQpO3JldHVybiBSZS50ZXN0KHQpfHwodD1WZShzKSksKGE9Uy5jc3NIb29rc1t0XXx8Uy5jc3NIb29rc1tzXSkmJiJnZXQiaW4gYSYmKGk9YS5nZXQoZSwhMCxuKSksdm9pZCAwPT09aSYmKGk9QmUoZSx0LHIpKSwibm9ybWFsIj09PWkmJnQgaW4gUWUmJihpPVFlW3RdKSwiIj09PW58fG4/KG89cGFyc2VGbG9hdChpKSwhMD09PW58fGlzRmluaXRlKG8pP298fDA6aSk6aX19KSxTLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGUsdSl7Uy5jc3NIb29rc1t1XT17Z2V0OmZ1bmN0aW9uKGUsdCxuKXtpZih0KXJldHVybiFHZS50ZXN0KFMuY3NzKGUsImRpc3BsYXkiKSl8fGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg/WmUoZSx1LG4pOkllKGUsWWUsZnVuY3Rpb24oKXtyZXR1cm4gWmUoZSx1LG4pfSl9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT1NZShlKSxvPSF2LnNjcm9sbGJveFNpemUoKSYmImFic29sdXRlIj09PWkucG9zaXRpb24sYT0ob3x8bikmJiJib3JkZXItYm94Ij09PVMuY3NzKGUsImJveFNpemluZyIsITEsaSkscz1uP0tlKGUsdSxuLGEsaSk6MDtyZXR1cm4gYSYmbyYmKHMtPU1hdGguY2VpbChlWyJvZmZzZXQiK3VbMF0udG9VcHBlckNhc2UoKSt1LnNsaWNlKDEpXS1wYXJzZUZsb2F0KGlbdV0pLUtlKGUsdSwiYm9yZGVyIiwhMSxpKS0uNSkpLHMmJihyPXRlLmV4ZWModCkpJiYicHgiIT09KHJbM118fCJweCIpJiYoZS5zdHlsZVt1XT10LHQ9Uy5jc3MoZSx1KSksSmUoMCx0LHMpfX19KSxTLmNzc0hvb2tzLm1hcmdpbkxlZnQ9X2Uodi5yZWxpYWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybihwYXJzZUZsb2F0KEJlKGUsIm1hcmdpbkxlZnQiKSl8fGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC1JZShlLHttYXJnaW5MZWZ0OjB9LGZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0pKSsicHgifSksUy5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oaSxvKXtTLmNzc0hvb2tzW2krb109e2V4cGFuZDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPXt9LHI9InN0cmluZyI9PXR5cGVvZiBlP2Uuc3BsaXQoIiAiKTpbZV07dDw0O3QrKyluW2krbmVbdF0rb109clt0XXx8clt0LTJdfHxyWzBdO3JldHVybiBufX0sIm1hcmdpbiIhPT1pJiYoUy5jc3NIb29rc1tpK29dLnNldD1KZSl9KSxTLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEIodGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9LGE9MDtpZihBcnJheS5pc0FycmF5KHQpKXtmb3Iocj1NZShlKSxpPXQubGVuZ3RoO2E8aTthKyspb1t0W2FdXT1TLmNzcyhlLHRbYV0sITEscik7cmV0dXJuIG99cmV0dXJuIHZvaWQgMCE9PW4/Uy5zdHlsZShlLHQsbik6Uy5jc3MoZSx0KX0sZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9fSksKChTLlR3ZWVuPWV0KS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmV0LGluaXQ6ZnVuY3Rpb24oZSx0LG4scixpLG8pe3RoaXMuZWxlbT1lLHRoaXMucHJvcD1uLHRoaXMuZWFzaW5nPWl8fFMuZWFzaW5nLl9kZWZhdWx0LHRoaXMub3B0aW9ucz10LHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1yLHRoaXMudW5pdD1vfHwoUy5jc3NOdW1iZXJbbl0/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBlPWV0LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBlJiZlLmdldD9lLmdldCh0aGlzKTpldC5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oZSl7dmFyIHQsbj1ldC5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPXQ9Uy5lYXNpbmdbdGhpcy5lYXNpbmddKGUsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmUsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9dD1lLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0K3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLG4mJm4uc2V0P24uc2V0KHRoaXMpOmV0LnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319KS5pbml0LnByb3RvdHlwZT1ldC5wcm90b3R5cGUsKGV0LnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gMSE9PWUuZWxlbS5ub2RlVHlwZXx8bnVsbCE9ZS5lbGVtW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVtlLnByb3BdP2UuZWxlbVtlLnByb3BdOih0PVMuY3NzKGUuZWxlbSxlLnByb3AsIiIpKSYmImF1dG8iIT09dD90OjB9LHNldDpmdW5jdGlvbihlKXtTLmZ4LnN0ZXBbZS5wcm9wXT9TLmZ4LnN0ZXBbZS5wcm9wXShlKToxIT09ZS5lbGVtLm5vZGVUeXBlfHwhUy5jc3NIb29rc1tlLnByb3BdJiZudWxsPT1lLmVsZW0uc3R5bGVbVmUoZS5wcm9wKV0/ZS5lbGVtW2UucHJvcF09ZS5ub3c6Uy5zdHlsZShlLmVsZW0sZS5wcm9wLGUubm93K2UudW5pdCl9fX0pLnNjcm9sbFRvcD1ldC5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGUpe2UuZWxlbS5ub2RlVHlwZSYmZS5lbGVtLnBhcmVudE5vZGUmJihlLmVsZW1bZS5wcm9wXT1lLm5vdyl9fSxTLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxzd2luZzpmdW5jdGlvbihlKXtyZXR1cm4uNS1NYXRoLmNvcyhlKk1hdGguUEkpLzJ9LF9kZWZhdWx0OiJzd2luZyJ9LFMuZng9ZXQucHJvdG90eXBlLmluaXQsUy5meC5zdGVwPXt9O3ZhciB0dCxudCxydCxpdCxvdD0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sYXQ9L3F1ZXVlSG9va3MkLztmdW5jdGlvbiBzdCgpe250JiYoITE9PT1FLmhpZGRlbiYmQy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/Qy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3QpOkMuc2V0VGltZW91dChzdCxTLmZ4LmludGVydmFsKSxTLmZ4LnRpY2soKSl9ZnVuY3Rpb24gdXQoKXtyZXR1cm4gQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dHQ9dm9pZCAwfSksdHQ9RGF0ZS5ub3coKX1mdW5jdGlvbiBsdChlLHQpe3ZhciBuLHI9MCxpPXtoZWlnaHQ6ZX07Zm9yKHQ9dD8xOjA7cjw0O3IrPTItdClpWyJtYXJnaW4iKyhuPW5lW3JdKV09aVsicGFkZGluZyIrbl09ZTtyZXR1cm4gdCYmKGkub3BhY2l0eT1pLndpZHRoPWUpLGl9ZnVuY3Rpb24gY3QoZSx0LG4pe2Zvcih2YXIgcixpPShmdC50d2VlbmVyc1t0XXx8W10pLmNvbmNhdChmdC50d2VlbmVyc1siKiJdKSxvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlmKHI9aVtvXS5jYWxsKG4sdCxlKSlyZXR1cm4gcn1mdW5jdGlvbiBmdChvLGUsdCl7dmFyIG4sYSxyPTAsaT1mdC5wcmVmaWx0ZXJzLmxlbmd0aCxzPVMuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgdS5lbGVtfSksdT1mdW5jdGlvbigpe2lmKGEpcmV0dXJuITE7Zm9yKHZhciBlPXR0fHx1dCgpLHQ9TWF0aC5tYXgoMCxsLnN0YXJ0VGltZStsLmR1cmF0aW9uLWUpLG49MS0odC9sLmR1cmF0aW9ufHwwKSxyPTAsaT1sLnR3ZWVucy5sZW5ndGg7cjxpO3IrKylsLnR3ZWVuc1tyXS5ydW4obik7cmV0dXJuIHMubm90aWZ5V2l0aChvLFtsLG4sdF0pLG48MSYmaT90OihpfHxzLm5vdGlmeVdpdGgobyxbbCwxLDBdKSxzLnJlc29sdmVXaXRoKG8sW2xdKSwhMSl9LGw9cy5wcm9taXNlKHtlbGVtOm8scHJvcHM6Uy5leHRlbmQoe30sZSksb3B0czpTLmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fSxlYXNpbmc6Uy5lYXNpbmcuX2RlZmF1bHR9LHQpLG9yaWdpbmFsUHJvcGVydGllczplLG9yaWdpbmFsT3B0aW9uczp0LHN0YXJ0VGltZTp0dHx8dXQoKSxkdXJhdGlvbjp0LmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihlLHQpe3ZhciBuPVMuVHdlZW4obyxsLm9wdHMsZSx0LGwub3B0cy5zcGVjaWFsRWFzaW5nW2VdfHxsLm9wdHMuZWFzaW5nKTtyZXR1cm4gbC50d2VlbnMucHVzaChuKSxufSxzdG9wOmZ1bmN0aW9uKGUpe3ZhciB0PTAsbj1lP2wudHdlZW5zLmxlbmd0aDowO2lmKGEpcmV0dXJuIHRoaXM7Zm9yKGE9ITA7dDxuO3QrKylsLnR3ZWVuc1t0XS5ydW4oMSk7cmV0dXJuIGU/KHMubm90aWZ5V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbCxlXSkpOnMucmVqZWN0V2l0aChvLFtsLGVdKSx0aGlzfX0pLGM9bC5wcm9wcztmb3IoIWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYTtmb3IobiBpbiBlKWlmKGk9dFtyPVgobildLG89ZVtuXSxBcnJheS5pc0FycmF5KG8pJiYoaT1vWzFdLG89ZVtuXT1vWzBdKSxuIT09ciYmKGVbcl09byxkZWxldGUgZVtuXSksKGE9Uy5jc3NIb29rc1tyXSkmJiJleHBhbmQiaW4gYSlmb3IobiBpbiBvPWEuZXhwYW5kKG8pLGRlbGV0ZSBlW3JdLG8pbiBpbiBlfHwoZVtuXT1vW25dLHRbbl09aSk7ZWxzZSB0W3JdPWl9KGMsbC5vcHRzLnNwZWNpYWxFYXNpbmcpO3I8aTtyKyspaWYobj1mdC5wcmVmaWx0ZXJzW3JdLmNhbGwobCxvLGMsbC5vcHRzKSlyZXR1cm4gbShuLnN0b3ApJiYoUy5fcXVldWVIb29rcyhsLmVsZW0sbC5vcHRzLnF1ZXVlKS5zdG9wPW4uc3RvcC5iaW5kKG4pKSxuO3JldHVybiBTLm1hcChjLGN0LGwpLG0obC5vcHRzLnN0YXJ0KSYmbC5vcHRzLnN0YXJ0LmNhbGwobyxsKSxsLnByb2dyZXNzKGwub3B0cy5wcm9ncmVzcykuZG9uZShsLm9wdHMuZG9uZSxsLm9wdHMuY29tcGxldGUpLmZhaWwobC5vcHRzLmZhaWwpLmFsd2F5cyhsLm9wdHMuYWx3YXlzKSxTLmZ4LnRpbWVyKFMuZXh0ZW5kKHUse2VsZW06byxhbmltOmwscXVldWU6bC5vcHRzLnF1ZXVlfSkpLGx9Uy5BbmltYXRpb249Uy5leHRlbmQoZnQse3R3ZWVuZXJzOnsiKiI6W2Z1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jcmVhdGVUd2VlbihlLHQpO3JldHVybiBzZShuLmVsZW0sZSx0ZS5leGVjKHQpLG4pLG59XX0sdHdlZW5lcjpmdW5jdGlvbihlLHQpe20oZSk/KHQ9ZSxlPVsiKiJdKTplPWUubWF0Y2goUCk7Zm9yKHZhciBuLHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspbj1lW3JdLGZ0LnR3ZWVuZXJzW25dPWZ0LnR3ZWVuZXJzW25dfHxbXSxmdC50d2VlbmVyc1tuXS51bnNoaWZ0KHQpfSxwcmVmaWx0ZXJzOltmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGwsYyxmPSJ3aWR0aCJpbiB0fHwiaGVpZ2h0ImluIHQscD10aGlzLGQ9e30saD1lLnN0eWxlLGc9ZS5ub2RlVHlwZSYmYWUoZSkseT1ZLmdldChlLCJmeHNob3ciKTtmb3IociBpbiBuLnF1ZXVlfHwobnVsbD09KGE9Uy5fcXVldWVIb29rcyhlLCJmeCIpKS51bnF1ZXVlZCYmKGEudW5xdWV1ZWQ9MCxzPWEuZW1wdHkuZmlyZSxhLmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXthLnVucXVldWVkfHxzKCl9KSxhLnVucXVldWVkKysscC5hbHdheXMoZnVuY3Rpb24oKXtwLmFsd2F5cyhmdW5jdGlvbigpe2EudW5xdWV1ZWQtLSxTLnF1ZXVlKGUsImZ4IikubGVuZ3RofHxhLmVtcHR5LmZpcmUoKX0pfSkpLHQpaWYoaT10W3JdLG90LnRlc3QoaSkpe2lmKGRlbGV0ZSB0W3JdLG89b3x8InRvZ2dsZSI9PT1pLGk9PT0oZz8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09aXx8IXl8fHZvaWQgMD09PXlbcl0pY29udGludWU7Zz0hMH1kW3JdPXkmJnlbcl18fFMuc3R5bGUoZSxyKX1pZigodT0hUy5pc0VtcHR5T2JqZWN0KHQpKXx8IVMuaXNFbXB0eU9iamVjdChkKSlmb3IociBpbiBmJiYxPT09ZS5ub2RlVHlwZSYmKG4ub3ZlcmZsb3c9W2gub3ZlcmZsb3csaC5vdmVyZmxvd1gsaC5vdmVyZmxvd1ldLG51bGw9PShsPXkmJnkuZGlzcGxheSkmJihsPVkuZ2V0KGUsImRpc3BsYXkiKSksIm5vbmUiPT09KGM9Uy5jc3MoZSwiZGlzcGxheSIpKSYmKGw/Yz1sOihsZShbZV0sITApLGw9ZS5zdHlsZS5kaXNwbGF5fHxsLGM9Uy5jc3MoZSwiZGlzcGxheSIpLGxlKFtlXSkpKSwoImlubGluZSI9PT1jfHwiaW5saW5lLWJsb2NrIj09PWMmJm51bGwhPWwpJiYibm9uZSI9PT1TLmNzcyhlLCJmbG9hdCIpJiYodXx8KHAuZG9uZShmdW5jdGlvbigpe2guZGlzcGxheT1sfSksbnVsbD09bCYmKGM9aC5kaXNwbGF5LGw9Im5vbmUiPT09Yz8iIjpjKSksaC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksbi5vdmVyZmxvdyYmKGgub3ZlcmZsb3c9ImhpZGRlbiIscC5hbHdheXMoZnVuY3Rpb24oKXtoLm92ZXJmbG93PW4ub3ZlcmZsb3dbMF0saC5vdmVyZmxvd1g9bi5vdmVyZmxvd1sxXSxoLm92ZXJmbG93WT1uLm92ZXJmbG93WzJdfSkpLHU9ITEsZCl1fHwoeT8iaGlkZGVuImluIHkmJihnPXkuaGlkZGVuKTp5PVkuYWNjZXNzKGUsImZ4c2hvdyIse2Rpc3BsYXk6bH0pLG8mJih5LmhpZGRlbj0hZyksZyYmbGUoW2VdLCEwKSxwLmRvbmUoZnVuY3Rpb24oKXtmb3IociBpbiBnfHxsZShbZV0pLFkucmVtb3ZlKGUsImZ4c2hvdyIpLGQpUy5zdHlsZShlLHIsZFtyXSl9KSksdT1jdChnP3lbcl06MCxyLHApLHIgaW4geXx8KHlbcl09dS5zdGFydCxnJiYodS5lbmQ9dS5zdGFydCx1LnN0YXJ0PTApKX1dLHByZWZpbHRlcjpmdW5jdGlvbihlLHQpe3Q/ZnQucHJlZmlsdGVycy51bnNoaWZ0KGUpOmZ0LnByZWZpbHRlcnMucHVzaChlKX19KSxTLnNwZWVkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lJiYib2JqZWN0Ij09dHlwZW9mIGU/Uy5leHRlbmQoe30sZSk6e2NvbXBsZXRlOm58fCFuJiZ0fHxtKGUpJiZlLGR1cmF0aW9uOmUsZWFzaW5nOm4mJnR8fHQmJiFtKHQpJiZ0fTtyZXR1cm4gUy5meC5vZmY/ci5kdXJhdGlvbj0wOiJudW1iZXIiIT10eXBlb2Ygci5kdXJhdGlvbiYmKHIuZHVyYXRpb24gaW4gUy5meC5zcGVlZHM/ci5kdXJhdGlvbj1TLmZ4LnNwZWVkc1tyLmR1cmF0aW9uXTpyLmR1cmF0aW9uPVMuZnguc3BlZWRzLl9kZWZhdWx0KSxudWxsIT1yLnF1ZXVlJiYhMCE9PXIucXVldWV8fChyLnF1ZXVlPSJmeCIpLHIub2xkPXIuY29tcGxldGUsci5jb21wbGV0ZT1mdW5jdGlvbigpe20oci5vbGQpJiZyLm9sZC5jYWxsKHRoaXMpLHIucXVldWUmJlMuZGVxdWV1ZSh0aGlzLHIucXVldWUpfSxyfSxTLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLmZpbHRlcihhZSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTp0fSxlLG4scil9LGFuaW1hdGU6ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9Uy5pc0VtcHR5T2JqZWN0KHQpLG89Uy5zcGVlZChlLG4sciksYT1mdW5jdGlvbigpe3ZhciBlPWZ0KHRoaXMsUy5leHRlbmQoe30sdCksbyk7KGl8fFkuZ2V0KHRoaXMsImZpbmlzaCIpKSYmZS5zdG9wKCEwKX07cmV0dXJuIGEuZmluaXNoPWEsaXx8ITE9PT1vLnF1ZXVlP3RoaXMuZWFjaChhKTp0aGlzLnF1ZXVlKG8ucXVldWUsYSl9LHN0b3A6ZnVuY3Rpb24oaSxlLG8pe3ZhciBhPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RvcDtkZWxldGUgZS5zdG9wLHQobyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgaSYmKG89ZSxlPWksaT12b2lkIDApLGUmJnRoaXMucXVldWUoaXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ITAsdD1udWxsIT1pJiZpKyJxdWV1ZUhvb2tzIixuPVMudGltZXJzLHI9WS5nZXQodGhpcyk7aWYodClyW3RdJiZyW3RdLnN0b3AmJmEoclt0XSk7ZWxzZSBmb3IodCBpbiByKXJbdF0mJnJbdF0uc3RvcCYmYXQudGVzdCh0KSYmYShyW3RdKTtmb3IodD1uLmxlbmd0aDt0LS07KW5bdF0uZWxlbSE9PXRoaXN8fG51bGwhPWkmJm5bdF0ucXVldWUhPT1pfHwoblt0XS5hbmltLnN0b3AobyksZT0hMSxuLnNwbGljZSh0LDEpKTshZSYmb3x8Uy5kZXF1ZXVlKHRoaXMsaSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiExIT09YSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD1ZLmdldCh0aGlzKSxuPXRbYSsicXVldWUiXSxyPXRbYSsicXVldWVIb29rcyJdLGk9Uy50aW1lcnMsbz1uP24ubGVuZ3RoOjA7Zm9yKHQuZmluaXNoPSEwLFMucXVldWUodGhpcyxhLFtdKSxyJiZyLnN0b3AmJnIuc3RvcC5jYWxsKHRoaXMsITApLGU9aS5sZW5ndGg7ZS0tOylpW2VdLmVsZW09PT10aGlzJiZpW2VdLnF1ZXVlPT09YSYmKGlbZV0uYW5pbS5zdG9wKCEwKSxpLnNwbGljZShlLDEpKTtmb3IoZT0wO2U8bztlKyspbltlXSYmbltlXS5maW5pc2gmJm5bZV0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIHQuZmluaXNofSl9fSksUy5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihlLHIpe3ZhciBpPVMuZm5bcl07Uy5mbltyXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09dHlwZW9mIGU/aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGx0KHIsITApLGUsdCxuKX19KSxTLmVhY2goe3NsaWRlRG93bjpsdCgic2hvdyIpLHNsaWRlVXA6bHQoImhpZGUiKSxzbGlkZVRvZ2dsZTpsdCgidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihlLHIpe1MuZm5bZV09ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLmFuaW1hdGUocixlLHQsbil9fSksUy50aW1lcnM9W10sUy5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGUsdD0wLG49Uy50aW1lcnM7Zm9yKHR0PURhdGUubm93KCk7dDxuLmxlbmd0aDt0KyspKGU9blt0XSkoKXx8blt0XSE9PWV8fG4uc3BsaWNlKHQtLSwxKTtuLmxlbmd0aHx8Uy5meC5zdG9wKCksdHQ9dm9pZCAwfSxTLmZ4LnRpbWVyPWZ1bmN0aW9uKGUpe1MudGltZXJzLnB1c2goZSksUy5meC5zdGFydCgpfSxTLmZ4LmludGVydmFsPTEzLFMuZnguc3RhcnQ9ZnVuY3Rpb24oKXtudHx8KG50PSEwLHN0KCkpfSxTLmZ4LnN0b3A9ZnVuY3Rpb24oKXtudD1udWxsfSxTLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxTLmZuLmRlbGF5PWZ1bmN0aW9uKHIsZSl7cmV0dXJuIHI9Uy5meCYmUy5meC5zcGVlZHNbcl18fHIsZT1lfHwiZngiLHRoaXMucXVldWUoZSxmdW5jdGlvbihlLHQpe3ZhciBuPUMuc2V0VGltZW91dChlLHIpO3Quc3RvcD1mdW5jdGlvbigpe0MuY2xlYXJUaW1lb3V0KG4pfX0pfSxydD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksaXQ9RS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChFLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSxydC50eXBlPSJjaGVja2JveCIsdi5jaGVja09uPSIiIT09cnQudmFsdWUsdi5vcHRTZWxlY3RlZD1pdC5zZWxlY3RlZCwocnQ9RS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZT0idCIscnQudHlwZT0icmFkaW8iLHYucmFkaW9WYWx1ZT0idCI9PT1ydC52YWx1ZTt2YXIgcHQsZHQ9Uy5leHByLmF0dHJIYW5kbGU7Uy5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQih0aGlzLFMuYXR0cixlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Uy5yZW1vdmVBdHRyKHRoaXMsZSl9KX19KSxTLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGUuZ2V0QXR0cmlidXRlP1MucHJvcChlLHQsbik6KDE9PT1vJiZTLmlzWE1MRG9jKGUpfHwoaT1TLmF0dHJIb29rc1t0LnRvTG93ZXJDYXNlKCldfHwoUy5leHByLm1hdGNoLmJvb2wudGVzdCh0KT9wdDp2b2lkIDApKSx2b2lkIDAhPT1uP251bGw9PT1uP3ZvaWQgUy5yZW1vdmVBdHRyKGUsdCk6aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6KGUuc2V0QXR0cmlidXRlKHQsbisiIiksbik6aSYmImdldCJpbiBpJiZudWxsIT09KHI9aS5nZXQoZSx0KSk/cjpudWxsPT0ocj1TLmZpbmQuYXR0cihlLHQpKT92b2lkIDA6cil9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGUsdCl7aWYoIXYucmFkaW9WYWx1ZSYmInJhZGlvIj09PXQmJkEoZSwiaW5wdXQiKSl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLHQpLG4mJihlLnZhbHVlPW4pLHR9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10JiZ0Lm1hdGNoKFApO2lmKGkmJjE9PT1lLm5vZGVUeXBlKXdoaWxlKG49aVtyKytdKWUucmVtb3ZlQXR0cmlidXRlKG4pfX0pLHB0PXtzZXQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExPT09dD9TLnJlbW92ZUF0dHIoZSxuKTplLnNldEF0dHJpYnV0ZShuLG4pLG59fSxTLmVhY2goUy5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oZSx0KXt2YXIgYT1kdFt0XXx8Uy5maW5kLmF0dHI7ZHRbdF09ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz10LnRvTG93ZXJDYXNlKCk7cmV0dXJuIG58fChpPWR0W29dLGR0W29dPXIscj1udWxsIT1hKGUsdCxuKT9vOm51bGwsZHRbb109aSkscn19KTt2YXIgaHQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxndD0vXig/OmF8YXJlYSkkL2k7ZnVuY3Rpb24geXQoZSl7cmV0dXJuKGUubWF0Y2goUCl8fFtdKS5qb2luKCIgIil9ZnVuY3Rpb24gdnQoZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ZnVuY3Rpb24gbXQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZToic3RyaW5nIj09dHlwZW9mIGUmJmUubWF0Y2goUCl8fFtdfVMuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEIodGhpcyxTLnByb3AsZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW1MucHJvcEZpeFtlXXx8ZV19KX19KSxTLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4gMT09PW8mJlMuaXNYTUxEb2MoZSl8fCh0PVMucHJvcEZpeFt0XXx8dCxpPVMucHJvcEhvb2tzW3RdKSx2b2lkIDAhPT1uP2kmJiJzZXQiaW4gaSYmdm9pZCAwIT09KHI9aS5zZXQoZSxuLHQpKT9yOmVbdF09bjppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOmVbdF19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihlKXt2YXIgdD1TLmZpbmQuYXR0cihlLCJ0YWJpbmRleCIpO3JldHVybiB0P3BhcnNlSW50KHQsMTApOmh0LnRlc3QoZS5ub2RlTmFtZSl8fGd0LnRlc3QoZS5ub2RlTmFtZSkmJmUuaHJlZj8wOi0xfX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pLHYub3B0U2VsZWN0ZWR8fChTLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3QmJih0LnNlbGVjdGVkSW5kZXgsdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksUy5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sZnVuY3Rpb24oKXtTLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSksUy5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLG8sYTtyZXR1cm4gbSh0KT90aGlzLmVhY2goZnVuY3Rpb24oZSl7Uyh0aGlzKS5hZGRDbGFzcyh0LmNhbGwodGhpcyxlLHZ0KHRoaXMpKSl9KTooZT1tdCh0KSkubGVuZ3RoP3RoaXMuZWFjaChmdW5jdGlvbigpe2lmKHI9dnQodGhpcyksbj0xPT09dGhpcy5ub2RlVHlwZSYmIiAiK3l0KHIpKyIgIil7Zm9yKG89MDtvPGUubGVuZ3RoO28rKylpPWVbb10sbi5pbmRleE9mKCIgIitpKyIgIik8MCYmKG4rPWkrIiAiKTthPXl0KG4pLHIhPT1hJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGEpfX0pOnRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLG8sYTtyZXR1cm4gbSh0KT90aGlzLmVhY2goZnVuY3Rpb24oZSl7Uyh0aGlzKS5yZW1vdmVDbGFzcyh0LmNhbGwodGhpcyxlLHZ0KHRoaXMpKSl9KTphcmd1bWVudHMubGVuZ3RoPyhlPW10KHQpKS5sZW5ndGg/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYocj12dCh0aGlzKSxuPTE9PT10aGlzLm5vZGVUeXBlJiYiICIreXQocikrIiAiKXtmb3Iobz0wO288ZS5sZW5ndGg7bysrKXtpPWVbb107d2hpbGUoLTE8bi5pbmRleE9mKCIgIitpKyIgIikpbj1uLnJlcGxhY2UoIiAiK2krIiAiLCIgIil9YT15dChuKSxyIT09YSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixhKX19KTp0aGlzOnRoaXMuYXR0cigiY2xhc3MiLCIiKX0sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24odCxuKXt2YXIgZSxyLGksbyxhPXR5cGVvZiB0LHM9InN0cmluZyI9PT1hfHxBcnJheS5pc0FycmF5KHQpO3JldHVybiBtKHQpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLnRvZ2dsZUNsYXNzKHQuY2FsbCh0aGlzLGUsdnQodGhpcyksbiksbil9KToiYm9vbGVhbiI9PXR5cGVvZiBuJiZzP24/dGhpcy5hZGRDbGFzcyh0KTp0aGlzLnJlbW92ZUNsYXNzKHQpOihlPW10KHQpLHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHMpZm9yKG89Uyh0aGlzKSxpPTA7aTxlLmxlbmd0aDtpKyspcj1lW2ldLG8uaGFzQ2xhc3Mocik/by5yZW1vdmVDbGFzcyhyKTpvLmFkZENsYXNzKHIpO2Vsc2Ugdm9pZCAwIT09dCYmImJvb2xlYW4iIT09YXx8KChyPXZ0KHRoaXMpKSYmWS5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsciksdGhpcy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIscnx8ITE9PT10PyIiOlkuZ2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpKX0pKX0saGFzQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPTA7dD0iICIrZSsiICI7d2hpbGUobj10aGlzW3IrK10paWYoMT09PW4ubm9kZVR5cGUmJi0xPCgiICIreXQodnQobikpKyIgIikuaW5kZXhPZih0KSlyZXR1cm4hMDtyZXR1cm4hMX19KTt2YXIgeHQ9L1xyL2c7Uy5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihuKXt2YXIgcixlLGksdD10aGlzWzBdO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW0obiksdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0OzE9PT10aGlzLm5vZGVUeXBlJiYobnVsbD09KHQ9aT9uLmNhbGwodGhpcyxlLFModGhpcykudmFsKCkpOm4pP3Q9IiI6Im51bWJlciI9PXR5cGVvZiB0P3QrPSIiOkFycmF5LmlzQXJyYXkodCkmJih0PVMubWFwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6ZSsiIn0pKSwocj1TLnZhbEhvb2tzW3RoaXMudHlwZV18fFMudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJzZXQiaW4gciYmdm9pZCAwIT09ci5zZXQodGhpcyx0LCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT10KSl9KSk6dD8ocj1TLnZhbEhvb2tzW3QudHlwZV18fFMudmFsSG9va3NbdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJnZXQiaW4gciYmdm9pZCAwIT09KGU9ci5nZXQodCwidmFsdWUiKSk/ZToic3RyaW5nIj09dHlwZW9mKGU9dC52YWx1ZSk/ZS5yZXBsYWNlKHh0LCIiKTpudWxsPT1lPyIiOmU6dm9pZCAwfX0pLFMuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5maW5kLmF0dHIoZSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9dD90Onl0KFMudGV4dChlKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaT1lLm9wdGlvbnMsbz1lLnNlbGVjdGVkSW5kZXgsYT0ic2VsZWN0LW9uZSI9PT1lLnR5cGUscz1hP251bGw6W10sdT1hP28rMTppLmxlbmd0aDtmb3Iocj1vPDA/dTphP286MDtyPHU7cisrKWlmKCgobj1pW3JdKS5zZWxlY3RlZHx8cj09PW8pJiYhbi5kaXNhYmxlZCYmKCFuLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFBKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9UyhuKS52YWwoKSxhKXJldHVybiB0O3MucHVzaCh0KX1yZXR1cm4gc30sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpPWUub3B0aW9ucyxvPVMubWFrZUFycmF5KHQpLGE9aS5sZW5ndGg7d2hpbGUoYS0tKSgocj1pW2FdKS5zZWxlY3RlZD0tMTxTLmluQXJyYXkoUy52YWxIb29rcy5vcHRpb24uZ2V0KHIpLG8pKSYmKG49ITApO3JldHVybiBufHwoZS5zZWxlY3RlZEluZGV4PS0xKSxvfX19fSksUy5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Uy52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGUsdCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gZS5jaGVja2VkPS0xPFMuaW5BcnJheShTKGUpLnZhbCgpLHQpfX0sdi5jaGVja09ufHwoUy52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmUudmFsdWV9KX0pLHYuZm9jdXNpbj0ib25mb2N1c2luImluIEM7dmFyIGJ0PS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyx3dD1mdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpfTtTLmV4dGVuZChTLmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbCxjLGYscD1bbnx8RV0sZD15LmNhbGwoZSwidHlwZSIpP2UudHlwZTplLGg9eS5jYWxsKGUsIm5hbWVzcGFjZSIpP2UubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYobz1mPWE9bj1ufHxFLDMhPT1uLm5vZGVUeXBlJiY4IT09bi5ub2RlVHlwZSYmIWJ0LnRlc3QoZCtTLmV2ZW50LnRyaWdnZXJlZCkmJigtMTxkLmluZGV4T2YoIi4iKSYmKGQ9KGg9ZC5zcGxpdCgiLiIpKS5zaGlmdCgpLGguc29ydCgpKSx1PWQuaW5kZXhPZigiOiIpPDAmJiJvbiIrZCwoZT1lW1MuZXhwYW5kb10/ZTpuZXcgUy5FdmVudChkLCJvYmplY3QiPT10eXBlb2YgZSYmZSkpLmlzVHJpZ2dlcj1yPzI6MyxlLm5hbWVzcGFjZT1oLmpvaW4oIi4iKSxlLnJuYW1lc3BhY2U9ZS5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIraC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGUucmVzdWx0PXZvaWQgMCxlLnRhcmdldHx8KGUudGFyZ2V0PW4pLHQ9bnVsbD09dD9bZV06Uy5tYWtlQXJyYXkodCxbZV0pLGM9Uy5ldmVudC5zcGVjaWFsW2RdfHx7fSxyfHwhYy50cmlnZ2VyfHwhMSE9PWMudHJpZ2dlci5hcHBseShuLHQpKSl7aWYoIXImJiFjLm5vQnViYmxlJiYheChuKSl7Zm9yKHM9Yy5kZWxlZ2F0ZVR5cGV8fGQsYnQudGVzdChzK2QpfHwobz1vLnBhcmVudE5vZGUpO287bz1vLnBhcmVudE5vZGUpcC5wdXNoKG8pLGE9bzthPT09KG4ub3duZXJEb2N1bWVudHx8RSkmJnAucHVzaChhLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvd3x8Qyl9aT0wO3doaWxlKChvPXBbaSsrXSkmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpZj1vLGUudHlwZT0xPGk/czpjLmJpbmRUeXBlfHxkLChsPShZLmdldChvLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbZS50eXBlXSYmWS5nZXQobywiaGFuZGxlIikpJiZsLmFwcGx5KG8sdCksKGw9dSYmb1t1XSkmJmwuYXBwbHkmJlYobykmJihlLnJlc3VsdD1sLmFwcGx5KG8sdCksITE9PT1lLnJlc3VsdCYmZS5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gZS50eXBlPWQscnx8ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8Yy5fZGVmYXVsdCYmITEhPT1jLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksdCl8fCFWKG4pfHx1JiZtKG5bZF0pJiYheChuKSYmKChhPW5bdV0pJiYoblt1XT1udWxsKSxTLmV2ZW50LnRyaWdnZXJlZD1kLGUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmZi5hZGRFdmVudExpc3RlbmVyKGQsd3QpLG5bZF0oKSxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLHd0KSxTLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsYSYmKG5bdV09YSkpLGUucmVzdWx0fX0sc2ltdWxhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVMuZXh0ZW5kKG5ldyBTLkV2ZW50LG4se3R5cGU6ZSxpc1NpbXVsYXRlZDohMH0pO1MuZXZlbnQudHJpZ2dlcihyLG51bGwsdCl9fSksUy5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Uy5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXNbMF07aWYobilyZXR1cm4gUy5ldmVudC50cmlnZ2VyKGUsdCxuLCEwKX19KSx2LmZvY3VzaW58fFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24obixyKXt2YXIgaT1mdW5jdGlvbihlKXtTLmV2ZW50LnNpbXVsYXRlKHIsZS50YXJnZXQsUy5ldmVudC5maXgoZSkpfTtTLmV2ZW50LnNwZWNpYWxbcl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLmRvY3VtZW50fHx0aGlzLHQ9WS5hY2Nlc3MoZSxyKTt0fHxlLmFkZEV2ZW50TGlzdGVuZXIobixpLCEwKSxZLmFjY2VzcyhlLHIsKHR8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyx0PVkuYWNjZXNzKGUsciktMTt0P1kuYWNjZXNzKGUscix0KTooZS5yZW1vdmVFdmVudExpc3RlbmVyKG4saSwhMCksWS5yZW1vdmUoZSxyKSl9fX0pO3ZhciBUdD1DLmxvY2F0aW9uLEN0PXtndWlkOkRhdGUubm93KCl9LEV0PS9cPy87Uy5wYXJzZVhNTD1mdW5jdGlvbihlKXt2YXIgdCxuO2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e3Q9KG5ldyBDLkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsInRleHQveG1sIil9Y2F0Y2goZSl7fXJldHVybiBuPXQmJnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIilbMF0sdCYmIW58fFMuZXJyb3IoIkludmFsaWQgWE1MOiAiKyhuP1MubWFwKG4uY2hpbGROb2RlcyxmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pLmpvaW4oIlxuIik6ZSkpLHR9O3ZhciBTdD0vXFtcXSQvLGt0PS9ccj9cbi9nLEF0PS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxOdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24ganQobixlLHIsaSl7dmFyIHQ7aWYoQXJyYXkuaXNBcnJheShlKSlTLmVhY2goZSxmdW5jdGlvbihlLHQpe3J8fFN0LnRlc3Qobik/aShuLHQpOmp0KG4rIlsiKygib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQ/ZToiIikrIl0iLHQscixpKX0pO2Vsc2UgaWYocnx8Im9iamVjdCIhPT13KGUpKWkobixlKTtlbHNlIGZvcih0IGluIGUpanQobisiWyIrdCsiXSIsZVt0XSxyLGkpfVMucGFyYW09ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1tKHQpP3QoKTp0O3Jbci5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChlKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG51bGw9PW4/IiI6bil9O2lmKG51bGw9PWUpcmV0dXJuIiI7aWYoQXJyYXkuaXNBcnJheShlKXx8ZS5qcXVlcnkmJiFTLmlzUGxhaW5PYmplY3QoZSkpUy5lYWNoKGUsZnVuY3Rpb24oKXtpKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKG4gaW4gZSlqdChuLGVbbl0sdCxpKTtyZXR1cm4gci5qb2luKCImIil9LFMuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gUy5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPVMucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBlP1MubWFrZUFycmF5KGUpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgZT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIVModGhpcykuaXMoIjpkaXNhYmxlZCIpJiZOdC50ZXN0KHRoaXMubm9kZU5hbWUpJiYhQXQudGVzdChlKSYmKHRoaXMuY2hlY2tlZHx8IXBlLnRlc3QoZSkpfSkubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIG49Uyh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09bj9udWxsOkFycmF5LmlzQXJyYXkobik/Uy5tYXAobixmdW5jdGlvbihlKXtyZXR1cm57bmFtZTp0Lm5hbWUsdmFsdWU6ZS5yZXBsYWNlKGt0LCJcclxuIil9fSk6e25hbWU6dC5uYW1lLHZhbHVlOm4ucmVwbGFjZShrdCwiXHJcbiIpfX0pLmdldCgpfX0pO3ZhciBEdD0vJTIwL2cscXQ9LyMuKiQvLEx0PS8oWz8mXSlfPVteJl0qLyxIdD0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dtLE90PS9eKD86R0VUfEhFQUQpJC8sUHQ9L15cL1wvLyxSdD17fSxNdD17fSxJdD0iKi8iLmNvbmNhdCgiKiIpLFd0PUUuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIEZ0KG8pe3JldHVybiBmdW5jdGlvbihlLHQpeyJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxlPSIqIik7dmFyIG4scj0wLGk9ZS50b0xvd2VyQ2FzZSgpLm1hdGNoKFApfHxbXTtpZihtKHQpKXdoaWxlKG49aVtyKytdKSIrIj09PW5bMF0/KG49bi5zbGljZSgxKXx8IioiLChvW25dPW9bbl18fFtdKS51bnNoaWZ0KHQpKToob1tuXT1vW25dfHxbXSkucHVzaCh0KX19ZnVuY3Rpb24gJHQodCxpLG8sYSl7dmFyIHM9e30sdT10PT09TXQ7ZnVuY3Rpb24gbChlKXt2YXIgcjtyZXR1cm4gc1tlXT0hMCxTLmVhY2godFtlXXx8W10sZnVuY3Rpb24oZSx0KXt2YXIgbj10KGksbyxhKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIG58fHV8fHNbbl0/dT8hKHI9bik6dm9pZCAwOihpLmRhdGFUeXBlcy51bnNoaWZ0KG4pLGwobiksITEpfSkscn1yZXR1cm4gbChpLmRhdGFUeXBlc1swXSl8fCFzWyIqIl0mJmwoIioiKX1mdW5jdGlvbiBCdChlLHQpe3ZhciBuLHIsaT1TLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKG4gaW4gdCl2b2lkIDAhPT10W25dJiYoKGlbbl0/ZTpyfHwocj17fSkpW25dPXRbbl0pO3JldHVybiByJiZTLmV4dGVuZCghMCxlLHIpLGV9V3QuaHJlZj1UdC5ocmVmLFMuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDpUdC5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDovXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLy50ZXN0KFR0LnByb3RvY29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7IioiOkl0LHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi9cYnhtbFxiLyxodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOkpTT04ucGFyc2UsInRleHQgeG1sIjpTLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9CdChCdChlLFMuYWpheFNldHRpbmdzKSx0KTpCdChTLmFqYXhTZXR0aW5ncyxlKX0sYWpheFByZWZpbHRlcjpGdChSdCksYWpheFRyYW5zcG9ydDpGdChNdCksYWpheDpmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksdD10fHx7fTt2YXIgYyxmLHAsbixkLHIsaCxnLGksbyx5PVMuYWpheFNldHVwKHt9LHQpLHY9eS5jb250ZXh0fHx5LG09eS5jb250ZXh0JiYodi5ub2RlVHlwZXx8di5qcXVlcnkpP1Modik6Uy5ldmVudCx4PVMuRGVmZXJyZWQoKSxiPVMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHc9eS5zdGF0dXNDb2RlfHx7fSxhPXt9LHM9e30sdT0iY2FuY2VsZWQiLFQ9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihlKXt2YXIgdDtpZihoKXtpZighbil7bj17fTt3aGlsZSh0PUh0LmV4ZWMocCkpblt0WzFdLnRvTG93ZXJDYXNlKCkrIiAiXT0oblt0WzFdLnRvTG93ZXJDYXNlKCkrIiAiXXx8W10pLmNvbmNhdCh0WzJdKX10PW5bZS50b0xvd2VyQ2FzZSgpKyIgIl19cmV0dXJuIG51bGw9PXQ/bnVsbDp0LmpvaW4oIiwgIil9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBoP3A6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1oJiYoZT1zW2UudG9Mb3dlckNhc2UoKV09c1tlLnRvTG93ZXJDYXNlKCldfHxlLGFbZV09dCksdGhpc30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09aCYmKHkubWltZVR5cGU9ZSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihlKXt2YXIgdDtpZihlKWlmKGgpVC5hbHdheXMoZVtULnN0YXR1c10pO2Vsc2UgZm9yKHQgaW4gZSl3W3RdPVt3W3RdLGVbdF1dO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihlKXt2YXIgdD1lfHx1O3JldHVybiBjJiZjLmFib3J0KHQpLGwoMCx0KSx0aGlzfX07aWYoeC5wcm9taXNlKFQpLHkudXJsPSgoZXx8eS51cmx8fFR0LmhyZWYpKyIiKS5yZXBsYWNlKFB0LFR0LnByb3RvY29sKyIvLyIpLHkudHlwZT10Lm1ldGhvZHx8dC50eXBlfHx5Lm1ldGhvZHx8eS50eXBlLHkuZGF0YVR5cGVzPSh5LmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goUCl8fFsiIl0sbnVsbD09eS5jcm9zc0RvbWFpbil7cj1FLmNyZWF0ZUVsZW1lbnQoImEiKTt0cnl7ci5ocmVmPXkudXJsLHIuaHJlZj1yLmhyZWYseS5jcm9zc0RvbWFpbj1XdC5wcm90b2NvbCsiLy8iK1d0Lmhvc3QhPXIucHJvdG9jb2wrIi8vIityLmhvc3R9Y2F0Y2goZSl7eS5jcm9zc0RvbWFpbj0hMH19aWYoeS5kYXRhJiZ5LnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIHkuZGF0YSYmKHkuZGF0YT1TLnBhcmFtKHkuZGF0YSx5LnRyYWRpdGlvbmFsKSksJHQoUnQseSx0LFQpLGgpcmV0dXJuIFQ7Zm9yKGkgaW4oZz1TLmV2ZW50JiZ5Lmdsb2JhbCkmJjA9PVMuYWN0aXZlKysmJlMuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IikseS50eXBlPXkudHlwZS50b1VwcGVyQ2FzZSgpLHkuaGFzQ29udGVudD0hT3QudGVzdCh5LnR5cGUpLGY9eS51cmwucmVwbGFjZShxdCwiIikseS5oYXNDb250ZW50P3kuZGF0YSYmeS5wcm9jZXNzRGF0YSYmMD09PSh5LmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJih5LmRhdGE9eS5kYXRhLnJlcGxhY2UoRHQsIisiKSk6KG89eS51cmwuc2xpY2UoZi5sZW5ndGgpLHkuZGF0YSYmKHkucHJvY2Vzc0RhdGF8fCJzdHJpbmciPT10eXBlb2YgeS5kYXRhKSYmKGYrPShFdC50ZXN0KGYpPyImIjoiPyIpK3kuZGF0YSxkZWxldGUgeS5kYXRhKSwhMT09PXkuY2FjaGUmJihmPWYucmVwbGFjZShMdCwiJDEiKSxvPShFdC50ZXN0KGYpPyImIjoiPyIpKyJfPSIrQ3QuZ3VpZCsrK28pLHkudXJsPWYrbykseS5pZk1vZGlmaWVkJiYoUy5sYXN0TW9kaWZpZWRbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLFMubGFzdE1vZGlmaWVkW2ZdKSxTLmV0YWdbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsUy5ldGFnW2ZdKSksKHkuZGF0YSYmeS5oYXNDb250ZW50JiYhMSE9PXkuY29udGVudFR5cGV8fHQuY29udGVudFR5cGUpJiZULnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIseS5jb250ZW50VHlwZSksVC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHkuZGF0YVR5cGVzWzBdJiZ5LmFjY2VwdHNbeS5kYXRhVHlwZXNbMF1dP3kuYWNjZXB0c1t5LmRhdGFUeXBlc1swXV0rKCIqIiE9PXkuZGF0YVR5cGVzWzBdPyIsICIrSXQrIjsgcT0wLjAxIjoiIik6eS5hY2NlcHRzWyIqIl0pLHkuaGVhZGVycylULnNldFJlcXVlc3RIZWFkZXIoaSx5LmhlYWRlcnNbaV0pO2lmKHkuYmVmb3JlU2VuZCYmKCExPT09eS5iZWZvcmVTZW5kLmNhbGwodixULHkpfHxoKSlyZXR1cm4gVC5hYm9ydCgpO2lmKHU9ImFib3J0IixiLmFkZCh5LmNvbXBsZXRlKSxULmRvbmUoeS5zdWNjZXNzKSxULmZhaWwoeS5lcnJvciksYz0kdChNdCx5LHQsVCkpe2lmKFQucmVhZHlTdGF0ZT0xLGcmJm0udHJpZ2dlcigiYWpheFNlbmQiLFtULHldKSxoKXJldHVybiBUO3kuYXN5bmMmJjA8eS50aW1lb3V0JiYoZD1DLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtULmFib3J0KCJ0aW1lb3V0Iil9LHkudGltZW91dCkpO3RyeXtoPSExLGMuc2VuZChhLGwpfWNhdGNoKGUpe2lmKGgpdGhyb3cgZTtsKC0xLGUpfX1lbHNlIGwoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIGwoZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPXQ7aHx8KGg9ITAsZCYmQy5jbGVhclRpbWVvdXQoZCksYz12b2lkIDAscD1yfHwiIixULnJlYWR5U3RhdGU9MDxlPzQ6MCxpPTIwMDw9ZSYmZTwzMDB8fDMwND09PWUsbiYmKHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5jb250ZW50cyx1PWUuZGF0YVR5cGVzO3doaWxlKCIqIj09PXVbMF0pdS5zaGlmdCgpLHZvaWQgMD09PXImJihyPWUubWltZVR5cGV8fHQuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihyKWZvcihpIGluIHMpaWYoc1tpXSYmc1tpXS50ZXN0KHIpKXt1LnVuc2hpZnQoaSk7YnJlYWt9aWYodVswXWluIG4pbz11WzBdO2Vsc2V7Zm9yKGkgaW4gbil7aWYoIXVbMF18fGUuY29udmVydGVyc1tpKyIgIit1WzBdXSl7bz1pO2JyZWFrfWF8fChhPWkpfW89b3x8YX1pZihvKXJldHVybiBvIT09dVswXSYmdS51bnNoaWZ0KG8pLG5bb119KHksVCxuKSksIWkmJi0xPFMuaW5BcnJheSgic2NyaXB0Iix5LmRhdGFUeXBlcykmJlMuaW5BcnJheSgianNvbiIseS5kYXRhVHlwZXMpPDAmJih5LmNvbnZlcnRlcnNbInRleHQgc2NyaXB0Il09ZnVuY3Rpb24oKXt9KSxzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD17fSxjPWUuZGF0YVR5cGVzLnNsaWNlKCk7aWYoY1sxXSlmb3IoYSBpbiBlLmNvbnZlcnRlcnMpbFthLnRvTG93ZXJDYXNlKCldPWUuY29udmVydGVyc1thXTtvPWMuc2hpZnQoKTt3aGlsZShvKWlmKGUucmVzcG9uc2VGaWVsZHNbb10mJihuW2UucmVzcG9uc2VGaWVsZHNbb11dPXQpLCF1JiZyJiZlLmRhdGFGaWx0ZXImJih0PWUuZGF0YUZpbHRlcih0LGUuZGF0YVR5cGUpKSx1PW8sbz1jLnNoaWZ0KCkpaWYoIioiPT09bylvPXU7ZWxzZSBpZigiKiIhPT11JiZ1IT09byl7aWYoIShhPWxbdSsiICIrb118fGxbIiogIitvXSkpZm9yKGkgaW4gbClpZigocz1pLnNwbGl0KCIgIikpWzFdPT09byYmKGE9bFt1KyIgIitzWzBdXXx8bFsiKiAiK3NbMF1dKSl7ITA9PT1hP2E9bFtpXTohMCE9PWxbaV0mJihvPXNbMF0sYy51bnNoaWZ0KHNbMV0pKTticmVha31pZighMCE9PWEpaWYoYSYmZVsidGhyb3dzIl0pdD1hKHQpO2Vsc2UgdHJ5e3Q9YSh0KX1jYXRjaChlKXtyZXR1cm57c3RhdGU6InBhcnNlcmVycm9yIixlcnJvcjphP2U6Ik5vIGNvbnZlcnNpb24gZnJvbSAiK3UrIiB0byAiK299fX1yZXR1cm57c3RhdGU6InN1Y2Nlc3MiLGRhdGE6dH19KHkscyxULGkpLGk/KHkuaWZNb2RpZmllZCYmKCh1PVQuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSkmJihTLmxhc3RNb2RpZmllZFtmXT11KSwodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIikpJiYoUy5ldGFnW2ZdPXUpKSwyMDQ9PT1lfHwiSEVBRCI9PT15LnR5cGU/bD0ibm9jb250ZW50IjozMDQ9PT1lP2w9Im5vdG1vZGlmaWVkIjoobD1zLnN0YXRlLG89cy5kYXRhLGk9IShhPXMuZXJyb3IpKSk6KGE9bCwhZSYmbHx8KGw9ImVycm9yIixlPDAmJihlPTApKSksVC5zdGF0dXM9ZSxULnN0YXR1c1RleHQ9KHR8fGwpKyIiLGk/eC5yZXNvbHZlV2l0aCh2LFtvLGwsVF0pOngucmVqZWN0V2l0aCh2LFtULGwsYV0pLFQuc3RhdHVzQ29kZSh3KSx3PXZvaWQgMCxnJiZtLnRyaWdnZXIoaT8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFtULHksaT9vOmFdKSxiLmZpcmVXaXRoKHYsW1QsbF0pLGcmJihtLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW1QseV0pLC0tUy5hY3RpdmV8fFMuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiBUfSxnZXRKU09OOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUy5nZXQoZSx0LG4sImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFMuZ2V0KGUsdm9pZCAwLHQsInNjcmlwdCIpfX0pLFMuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihlLGkpe1NbaV09ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG0odCkmJihyPXJ8fG4sbj10LHQ9dm9pZCAwKSxTLmFqYXgoUy5leHRlbmQoe3VybDplLHR5cGU6aSxkYXRhVHlwZTpyLGRhdGE6dCxzdWNjZXNzOm59LFMuaXNQbGFpbk9iamVjdChlKSYmZSkpfX0pLFMuYWpheFByZWZpbHRlcihmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlLmhlYWRlcnMpImNvbnRlbnQtdHlwZSI9PT10LnRvTG93ZXJDYXNlKCkmJihlLmNvbnRlbnRUeXBlPWUuaGVhZGVyc1t0XXx8IiIpfSksUy5fZXZhbFVybD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIFMuYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbigpe319LGRhdGFGaWx0ZXI6ZnVuY3Rpb24oZSl7Uy5nbG9iYWxFdmFsKGUsdCxuKX19KX0sUy5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHRoaXNbMF0mJihtKGUpJiYoZT1lLmNhbGwodGhpc1swXSkpLHQ9UyhlLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmdC5pbnNlcnRCZWZvcmUodGhpc1swXSksdC5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3doaWxlKGUuZmlyc3RFbGVtZW50Q2hpbGQpZT1lLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBlfSkuYXBwZW5kKHRoaXMpKSx0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24obil7cmV0dXJuIG0obik/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykud3JhcElubmVyKG4uY2FsbCh0aGlzLGUpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPVModGhpcyksdD1lLmNvbnRlbnRzKCk7dC5sZW5ndGg/dC53cmFwQWxsKG4pOmUuYXBwZW5kKG4pfSl9LHdyYXA6ZnVuY3Rpb24odCl7dmFyIG49bSh0KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykud3JhcEFsbChuP3QuY2FsbCh0aGlzLGUpOnQpfSl9LHVud3JhcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wYXJlbnQoZSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbigpe1ModGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLHRoaXN9fSksUy5leHByLnBzZXVkb3MuaGlkZGVuPWZ1bmN0aW9uKGUpe3JldHVybiFTLmV4cHIucHNldWRvcy52aXNpYmxlKGUpfSxTLmV4cHIucHNldWRvcy52aXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiEhKGUub2Zmc2V0V2lkdGh8fGUub2Zmc2V0SGVpZ2h0fHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX0sUy5hamF4U2V0dGluZ3MueGhyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQy5YTUxIdHRwUmVxdWVzdH1jYXRjaChlKXt9fTt2YXIgX3Q9ezA6MjAwLDEyMjM6MjA0fSx6dD1TLmFqYXhTZXR0aW5ncy54aHIoKTt2LmNvcnM9ISF6dCYmIndpdGhDcmVkZW50aWFscyJpbiB6dCx2LmFqYXg9enQ9ISF6dCxTLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oaSl7dmFyIG8sYTtpZih2LmNvcnN8fHp0JiYhaS5jcm9zc0RvbWFpbilyZXR1cm57c2VuZDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9aS54aHIoKTtpZihyLm9wZW4oaS50eXBlLGkudXJsLGkuYXN5bmMsaS51c2VybmFtZSxpLnBhc3N3b3JkKSxpLnhockZpZWxkcylmb3IobiBpbiBpLnhockZpZWxkcylyW25dPWkueGhyRmllbGRzW25dO2ZvcihuIGluIGkubWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZSYmci5vdmVycmlkZU1pbWVUeXBlKGkubWltZVR5cGUpLGkuY3Jvc3NEb21haW58fGVbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKSxlKXIuc2V0UmVxdWVzdEhlYWRlcihuLGVbbl0pO289ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7byYmKG89YT1yLm9ubG9hZD1yLm9uZXJyb3I9ci5vbmFib3J0PXIub250aW1lb3V0PXIub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsImFib3J0Ij09PWU/ci5hYm9ydCgpOiJlcnJvciI9PT1lPyJudW1iZXIiIT10eXBlb2Ygci5zdGF0dXM/dCgwLCJlcnJvciIpOnQoci5zdGF0dXMsci5zdGF0dXNUZXh0KTp0KF90W3Iuc3RhdHVzXXx8ci5zdGF0dXMsci5zdGF0dXNUZXh0LCJ0ZXh0IiE9PShyLnJlc3BvbnNlVHlwZXx8InRleHQiKXx8InN0cmluZyIhPXR5cGVvZiByLnJlc3BvbnNlVGV4dD97YmluYXJ5OnIucmVzcG9uc2V9Ont0ZXh0OnIucmVzcG9uc2VUZXh0fSxyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSl9fSxyLm9ubG9hZD1vKCksYT1yLm9uZXJyb3I9ci5vbnRpbWVvdXQ9bygiZXJyb3IiKSx2b2lkIDAhPT1yLm9uYWJvcnQ/ci5vbmFib3J0PWE6ci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09ci5yZWFkeVN0YXRlJiZDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtvJiZhKCl9KX0sbz1vKCJhYm9ydCIpO3RyeXtyLnNlbmQoaS5oYXNDb250ZW50JiZpLmRhdGF8fG51bGwpfWNhdGNoKGUpe2lmKG8pdGhyb3cgZX19LGFib3J0OmZ1bmN0aW9uKCl7byYmbygpfX19KSxTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7ZS5jcm9zc0RvbWFpbiYmKGUuY29udGVudHMuc2NyaXB0PSExKX0pLFMuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGUpe3JldHVybiBTLmdsb2JhbEV2YWwoZSksZX19fSksUy5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUuY2FjaGUmJihlLmNhY2hlPSExKSxlLmNyb3NzRG9tYWluJiYoZS50eXBlPSJHRVQiKX0pLFMuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihuKXt2YXIgcixpO2lmKG4uY3Jvc3NEb21haW58fG4uc2NyaXB0QXR0cnMpcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXtyPVMoIjxzY3JpcHQ+IikuYXR0cihuLnNjcmlwdEF0dHJzfHx7fSkucHJvcCh7Y2hhcnNldDpuLnNjcmlwdENoYXJzZXQsc3JjOm4udXJsfSkub24oImxvYWQgZXJyb3IiLGk9ZnVuY3Rpb24oZSl7ci5yZW1vdmUoKSxpPW51bGwsZSYmdCgiZXJyb3IiPT09ZS50eXBlPzQwNDoyMDAsZS50eXBlKX0pLEUuaGVhZC5hcHBlbmRDaGlsZChyWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtpJiZpKCl9fX0pO3ZhciBVdCxYdD1bXSxWdD0vKD0pXD8oPz0mfCQpfFw/XD8vO1MuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT1YdC5wb3AoKXx8Uy5leHBhbmRvKyJfIitDdC5ndWlkKys7cmV0dXJuIHRoaXNbZV09ITAsZX19KSxTLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT0hMSE9PWUuanNvbnAmJihWdC50ZXN0KGUudXJsKT8idXJsIjoic3RyaW5nIj09dHlwZW9mIGUuZGF0YSYmMD09PShlLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJlZ0LnRlc3QoZS5kYXRhKSYmImRhdGEiKTtpZihhfHwianNvbnAiPT09ZS5kYXRhVHlwZXNbMF0pcmV0dXJuIHI9ZS5qc29ucENhbGxiYWNrPW0oZS5qc29ucENhbGxiYWNrKT9lLmpzb25wQ2FsbGJhY2soKTplLmpzb25wQ2FsbGJhY2ssYT9lW2FdPWVbYV0ucmVwbGFjZShWdCwiJDEiK3IpOiExIT09ZS5qc29ucCYmKGUudXJsKz0oRXQudGVzdChlLnVybCk/IiYiOiI/IikrZS5qc29ucCsiPSIrciksZS5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIG98fFMuZXJyb3IocisiIHdhcyBub3QgY2FsbGVkIiksb1swXX0sZS5kYXRhVHlwZXNbMF09Impzb24iLGk9Q1tyXSxDW3JdPWZ1bmN0aW9uKCl7bz1hcmd1bWVudHN9LG4uYWx3YXlzKGZ1bmN0aW9uKCl7dm9pZCAwPT09aT9TKEMpLnJlbW92ZVByb3Aocik6Q1tyXT1pLGVbcl0mJihlLmpzb25wQ2FsbGJhY2s9dC5qc29ucENhbGxiYWNrLFh0LnB1c2gocikpLG8mJm0oaSkmJmkob1swXSksbz1pPXZvaWQgMH0pLCJzY3JpcHQifSksdi5jcmVhdGVIVE1MRG9jdW1lbnQ9KChVdD1FLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keSkuaW5uZXJIVE1MPSI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsMj09PVV0LmNoaWxkTm9kZXMubGVuZ3RoKSxTLnBhcnNlSFRNTD1mdW5jdGlvbihlLHQsbil7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP1tdOigiYm9vbGVhbiI9PXR5cGVvZiB0JiYobj10LHQ9ITEpLHR8fCh2LmNyZWF0ZUhUTUxEb2N1bWVudD8oKHI9KHQ9RS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpKS5jcmVhdGVFbGVtZW50KCJiYXNlIikpLmhyZWY9RS5sb2NhdGlvbi5ocmVmLHQuaGVhZC5hcHBlbmRDaGlsZChyKSk6dD1FKSxvPSFuJiZbXSwoaT1OLmV4ZWMoZSkpP1t0LmNyZWF0ZUVsZW1lbnQoaVsxXSldOihpPXhlKFtlXSx0LG8pLG8mJm8ubGVuZ3RoJiZTKG8pLnJlbW92ZSgpLFMubWVyZ2UoW10saS5jaGlsZE5vZGVzKSkpO3ZhciByLGksb30sUy5mbi5sb2FkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT10aGlzLHM9ZS5pbmRleE9mKCIgIik7cmV0dXJuLTE8cyYmKHI9eXQoZS5zbGljZShzKSksZT1lLnNsaWNlKDAscykpLG0odCk/KG49dCx0PXZvaWQgMCk6dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYoaT0iUE9TVCIpLDA8YS5sZW5ndGgmJlMuYWpheCh7dXJsOmUsdHlwZTppfHwiR0VUIixkYXRhVHlwZToiaHRtbCIsZGF0YTp0fSkuZG9uZShmdW5jdGlvbihlKXtvPWFyZ3VtZW50cyxhLmh0bWwocj9TKCI8ZGl2PiIpLmFwcGVuZChTLnBhcnNlSFRNTChlKSkuZmluZChyKTplKX0pLmFsd2F5cyhuJiZmdW5jdGlvbihlLHQpe2EuZWFjaChmdW5jdGlvbigpe24uYXBwbHkodGhpcyxvfHxbZS5yZXNwb25zZVRleHQsdCxlXSl9KX0pLHRoaXN9LFMuZXhwci5wc2V1ZG9zLmFuaW1hdGVkPWZ1bmN0aW9uKHQpe3JldHVybiBTLmdyZXAoUy50aW1lcnMsZnVuY3Rpb24oZSl7cmV0dXJuIHQ9PT1lLmVsZW19KS5sZW5ndGh9LFMub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsPVMuY3NzKGUsInBvc2l0aW9uIiksYz1TKGUpLGY9e307InN0YXRpYyI9PT1sJiYoZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxzPWMub2Zmc2V0KCksbz1TLmNzcyhlLCJ0b3AiKSx1PVMuY3NzKGUsImxlZnQiKSwoImFic29sdXRlIj09PWx8fCJmaXhlZCI9PT1sKSYmLTE8KG8rdSkuaW5kZXhPZigiYXV0byIpPyhhPShyPWMucG9zaXRpb24oKSkudG9wLGk9ci5sZWZ0KTooYT1wYXJzZUZsb2F0KG8pfHwwLGk9cGFyc2VGbG9hdCh1KXx8MCksbSh0KSYmKHQ9dC5jYWxsKGUsbixTLmV4dGVuZCh7fSxzKSkpLG51bGwhPXQudG9wJiYoZi50b3A9dC50b3Atcy50b3ArYSksbnVsbCE9dC5sZWZ0JiYoZi5sZWZ0PXQubGVmdC1zLmxlZnQraSksInVzaW5nImluIHQ/dC51c2luZy5jYWxsKGUsZik6Yy5jc3MoZil9fSxTLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKHQpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PXQ/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oZSl7Uy5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsdCxlKX0pO3ZhciBlLG4scj10aGlzWzBdO3JldHVybiByP3IuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg/KGU9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyx7dG9wOmUudG9wK24ucGFnZVlPZmZzZXQsbGVmdDplLmxlZnQrbi5wYWdlWE9mZnNldH0pOnt0b3A6MCxsZWZ0OjB9OnZvaWQgMH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgZSx0LG4scj10aGlzWzBdLGk9e3RvcDowLGxlZnQ6MH07aWYoImZpeGVkIj09PVMuY3NzKHIsInBvc2l0aW9uIikpdD1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Vsc2V7dD10aGlzLm9mZnNldCgpLG49ci5vd25lckRvY3VtZW50LGU9ci5vZmZzZXRQYXJlbnR8fG4uZG9jdW1lbnRFbGVtZW50O3doaWxlKGUmJihlPT09bi5ib2R5fHxlPT09bi5kb2N1bWVudEVsZW1lbnQpJiYic3RhdGljIj09PVMuY3NzKGUsInBvc2l0aW9uIikpZT1lLnBhcmVudE5vZGU7ZSYmZSE9PXImJjE9PT1lLm5vZGVUeXBlJiYoKGk9UyhlKS5vZmZzZXQoKSkudG9wKz1TLmNzcyhlLCJib3JkZXJUb3BXaWR0aCIsITApLGkubGVmdCs9Uy5jc3MoZSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpfXJldHVybnt0b3A6dC50b3AtaS50b3AtUy5jc3MociwibWFyZ2luVG9wIiwhMCksbGVmdDp0LmxlZnQtaS5sZWZ0LVMuY3NzKHIsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShlJiYic3RhdGljIj09PVMuY3NzKGUsInBvc2l0aW9uIikpZT1lLm9mZnNldFBhcmVudDtyZXR1cm4gZXx8cmV9KX19KSxTLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24odCxpKXt2YXIgbz0icGFnZVlPZmZzZXQiPT09aTtTLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiBCKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKHgoZSk/cj1lOjk9PT1lLm5vZGVUeXBlJiYocj1lLmRlZmF1bHRWaWV3KSx2b2lkIDA9PT1uKXJldHVybiByP3JbaV06ZVt0XTtyP3Iuc2Nyb2xsVG8obz9yLnBhZ2VYT2Zmc2V0Om4sbz9uOnIucGFnZVlPZmZzZXQpOmVbdF09bn0sdCxlLGFyZ3VtZW50cy5sZW5ndGgpfX0pLFMuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLG4pe1MuY3NzSG9va3Nbbl09X2Uodi5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4gdD1CZShlLG4pLFBlLnRlc3QodCk/UyhlKS5wb3NpdGlvbigpW25dKyJweCI6dH0pfSksUy5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxzKXtTLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6cywiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKHIsbyl7Uy5mbltvXT1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGgmJihyfHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxpPXJ8fCghMD09PWV8fCEwPT09dD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIEIodGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHgoZSk/MD09PW8uaW5kZXhPZigib3V0ZXIiKT9lWyJpbm5lciIrYV06ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWUubm9kZVR5cGU/KHI9ZS5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoZS5ib2R5WyJzY3JvbGwiK2FdLHJbInNjcm9sbCIrYV0sZS5ib2R5WyJvZmZzZXQiK2FdLHJbIm9mZnNldCIrYV0sclsiY2xpZW50IithXSkpOnZvaWQgMD09PW4/Uy5jc3MoZSx0LGkpOlMuc3R5bGUoZSx0LG4saSl9LHMsbj9lOnZvaWQgMCxuKX19KX0pLFMuZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGUsdCl7Uy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbih0LGUpfX0pLFMuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX0saG92ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodHx8ZSl9fSksUy5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsbil7Uy5mbltuXT1mdW5jdGlvbihlLHQpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihuLG51bGwsZSx0KTp0aGlzLnRyaWdnZXIobil9fSk7dmFyIEd0PS9eW1xzXHVGRUZGXHhBMF0rfChbXlxzXHVGRUZGXHhBMF0pW1xzXHVGRUZGXHhBMF0rJC9nO1MucHJveHk9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYobj1lW3RdLHQ9ZSxlPW4pLG0oZSkpcmV0dXJuIHI9cy5jYWxsKGFyZ3VtZW50cywyKSwoaT1mdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHR8fHRoaXMsci5jb25jYXQocy5jYWxsKGFyZ3VtZW50cykpKX0pLmd1aWQ9ZS5ndWlkPWUuZ3VpZHx8Uy5ndWlkKyssaX0sUy5ob2xkUmVhZHk9ZnVuY3Rpb24oZSl7ZT9TLnJlYWR5V2FpdCsrOlMucmVhZHkoITApfSxTLmlzQXJyYXk9QXJyYXkuaXNBcnJheSxTLnBhcnNlSlNPTj1KU09OLnBhcnNlLFMubm9kZU5hbWU9QSxTLmlzRnVuY3Rpb249bSxTLmlzV2luZG93PXgsUy5jYW1lbENhc2U9WCxTLnR5cGU9dyxTLm5vdz1EYXRlLm5vdyxTLmlzTnVtZXJpYz1mdW5jdGlvbihlKXt2YXIgdD1TLnR5cGUoZSk7cmV0dXJuKCJudW1iZXIiPT09dHx8InN0cmluZyI9PT10KSYmIWlzTmFOKGUtcGFyc2VGbG9hdChlKSl9LFMudHJpbT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjooZSsiIikucmVwbGFjZShHdCwiJDEiKX0sImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIFN9KTt2YXIgWXQ9Qy5qUXVlcnksUXQ9Qy4kO3JldHVybiBTLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuJD09PVMmJihDLiQ9UXQpLGUmJkMualF1ZXJ5PT09UyYmKEMualF1ZXJ5PVl0KSxTfSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihDLmpRdWVyeT1DLiQ9UyksU30pOwo="}},"time_used":10,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/translate_static/img/loading.gif","fqdn":"translate.googleapis.com","domain":"translate.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":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:12.006Z","timestamp":1785130092006,"http_version":"HTTP/3","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 /translate_static/img/loading.gif HTTP/1.1\r\nHost: translate.googleapis.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://dreamspinfluence.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, 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\naccept-ranges: bytes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 702\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 21:36:56 GMT\r\nexpires: Sat, 24 Jul 2027 21:36:56 GMT\r\ncache-control: public, max-age=31536000\r\nage: 201076\r\nlast-modified: Thu, 03 Oct 2019 10:15:00 GMT\r\ncontent-type: image/gif\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":702,"size_decoded":1361,"mime_type":"image/gif","magic":"GIF image data, version 89a, 16 x 16","md5":"eefaa072b284a305c12c06608333abc2","sha1":"58272721ccc1efda26eaa22354022c7c793edbb6","sha256":"fb6b7bcc1ab09f27db17bcbdf5239ce1d52af34f1fc5125b3fc8528a07848d21","sha512":"c5ccfdcd9ce76de85f043a1733c9f0b620e15babbaf2a5639684c7b2bb8e5a66473c9a83f14cb48d9cb6c6a1c6b36f2c5a28e25abaf131fb85ec5eedecbae4ac","ssdeep":"","tlshash":"5d01dd13f3d50473f66d0075a20cc57f010635daaadad7089a48117cfe1983c5239b82","first_seen":"2023-04-05T11:18:23Z","last_seen":"2026-08-02T16:04:43.807945Z","times_seen":18899,"resource_available":false,"data":"R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/h1CdWlsdCB3aXRoIEdJRiBNb3ZpZSBHZWFyIDQuMAAh/hVNYWRlIGJ5IEFqYXhMb2FkLmluZm8AIfkECQoAAAAsAAAAABAAEAAAAzMIutz+MMpJaxNjCDoIGZwHTphmCUWxMcK6FJnBti5gxMJx0C1bGDndpgc5GAwHSmvnSAAAIfkECQoAAAAsAAAAABAAEAAAAzQIutz+TowhIBuEDLuw5opEcUJRVGAxGSBgTEVbGqh8HLV13+1hGAeAINcY4oZDGbIlJCoSACH5BAkKAAAALAAAAAAQABAAAAM2CLoyIyvKQciQzJRWLwaFYxwO9BlO8UlCYZircBzwCsyzvRzGqCsCWe0X/AGDww8yqWQan78EACH5BAkKAAAALAAAAAAQABAAAAMzCLpiJSvKMoaR7JxWX4WLpgmFIQwEMUSHYRwRqkaCsNEfA2JSXfM9HzA4LBqPyKRyOUwAACH5BAkKAAAALAAAAAAQABAAAAMyCLpyJytK52QU8BjzTIEMJnbDYFxiVJSFhLkeaFlCKc/KQBADHuk8H8MmLBqPyKRSkgAAIfkECQoAAAAsAAAAABAAEAAAAzMIuiDCkDkX43TnvNqeMBnHHOAhLkK2ncpXrKIxDAYLFHNhu7A195UBgTCwCYm7n20pSgAAIfkECQoAAAAsAAAAABAAEAAAAzIIutz+8AkR2ZxVXZoB7tpxcJVgiN1hnN00loVBRsUwFJBgm7YBDQTCQBCbMYDC1s6RAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P4wykmrZULUnCnXHggIwyCOx3EOBDEwqcqwrlAYwmEYB1bapQIgdWIYgp5bEZAAADsAAAAAAAAAAAAK"}},"time_used":16,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/lib/swiper/v8/css/swiper.min.css?ver=8.4.5","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.980Z","timestamp":1785130089980,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/elementor/assets/lib/swiper/v8/css/swiper.min.css?ver=8.4.5 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=byzs7dtuJSM7U5HaFdf%2FI4r%2FrDhhvehXZ0e0xf1FZLILjeY0O7ASPl6dqBc39lUC5ArRCGtD6%2BKZzjzb%2FQBXr3GjNr33r4a1%2FQJ7X5nYx4LfsBbEnNNHoV%2BcrS1FYqiFAUKwgp7mAA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d366e29120a-OSL\r\ncontent-length: 4438\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":18924,"size_decoded":5256,"mime_type":"text/css","magic":"ASCII text, with very long lines (2242)","md5":"1bc43474d6bb2e70ed716c5673c30868","sha1":"3fba6d1fec06213721d13d317676226676717cc5","sha256":"9e70b866b325754f8887a33db953e10824a2e802810ee3418485535cfeb4636d","sha512":"18b69e9a02d945eb2de069aef8352a32be89106779a34bcd15fe89ba0396b5d5806c489dffb44164466caaf1237ef248a02549f6d2af59014a9a249596af485d","ssdeep":"192:IbKmUJbiKnej2wq573kqicKY7JaJAXmxb/oJniIwf0/+Loq/4okl1HKHTpG+6YAL:IjUbeYxicKYA9hiC/QF8FisDSyD/O","tlshash":"6682039413721c53561a4e6a0b764774eaa444c30b47cc39b2c1ae88ffba4fc335faa5","first_seen":"2025-03-23T07:25:25.070595Z","last_seen":"2026-07-27T05:30:59.805741Z","times_seen":53,"resource_available":false,"data":"LyoqCiAqIFN3aXBlciA4LjQuNQogKiBNb3N0IG1vZGVybiBtb2JpbGUgdG91Y2ggc2xpZGVyIGFuZCBmcmFtZXdvcmsgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRlZCB0cmFuc2l0aW9ucwogKiBodHRwczovL3N3aXBlcmpzLmNvbQogKgogKiBDb3B5cmlnaHQgMjAxNC0yMDIyIFZsYWRpbWlyIEtoYXJsYW1waWRpCiAqCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZQogKgogKiBSZWxlYXNlZCBvbjogTm92ZW1iZXIgMjEsIDIwMjIKICovCgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiBzd2lwZXItaWNvbnM7CiAgICBzcmM6IHVybCgnZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsIGQwOUdSZ0FCQUFBQUFBWmdBQkFBQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFHUkFBQUFCb0FBQUFjaTZxSGtVZEVSVVlBQUFXZ0FBQUFJd0FBQUNRQVlBQlhSMUJQVXdBQUJoUUFBQUF1QUFBQU51QVk3K3hIVTFWQ0FBQUZ4QUFBQUZBQUFBQm0yZlBjelU5VEx6SUFBQUhjQUFBQVNnQUFBR0JQOVY1UlkyMWhjQUFBQWtRQUFBQ0lBQUFCWXQ2RjBjQmpkblFnQUFBQ3pBQUFBQVFBQUFBRUFCRUJSR2RoYzNBQUFBV1lBQUFBQ0FBQUFBai8vd0FEWjJ4NVpnQUFBeXdBQUFETUFBQUQyTUh0cnlWb1pXRmtBQUFCYkFBQUFEQUFBQUEyRTIrZW9XaG9aV0VBQUFHY0FBQUFId0FBQUNRQzlnRHphRzEwZUFBQUFpZ0FBQUFaQUFBQXJnSmtBQkZzYjJOaEFBQUMwQUFBQUZvQUFBQmFGUUFVR0cxaGVIQUFBQUc4QUFBQUh3QUFBQ0FBY0FCQWJtRnRaUUFBQS9nQUFBRTVBQUFDWHZGZEJ3bHdiM04wQUFBRk5BQUFBR0lBQUFDRTVzNzRoWGphWTJCa1lHQUFZcGY1SHUvaitXMitNbkF6TVlEQXphWDZRakQ2LzQvL0J4ajVHQThBdVJ3TVlHa0FQeXdMMTNqYVkyQmtZR0E4OFA4QWd4NGorLzhmUURZZkExQUVCV2dEQUlCMkJPb0FlTnBqWUdSZ1lOQmg0R2RnWWdBQkVNbklBQkp6WU5BRENRQUFDV2dBc1FCNDJtTmdZZnpDT0lHQmxZR0IwWWN4allHQndSMUtmMldRWkdoaFlHQmlZR1ZtZ0FGR0JpUVFrT2Fhd3REQW9NQlF4WGpnL3dFR1BjWUREQTR3TlVBMkNDZ3dzQUFBTzRFTDZnQUFlTnBqMk0wZ3lBQUNxeGdHTldCa1oyRDQvd01BK3hrRGRnQUFBSGphWTJCZ1lHYUFZQmtHUmdZUWlBSHlHTUY4RmdZSElNM0R3TUhBQkdRck1PZ3lXRExFTTFUOS93OFVCZkVNZ0x6RS8vLy9QLzUvL2YvVi94dityNGVhQUFlTWJBeHdJVVltSU1IRWdLWUFZalVjc0RBd3NMS3hjM0J5Y2ZQdzhqRVFBL2daQkFTRmhFVkV4Y1FsSktXa1pXVGw1QlVVbFpSVlZOWFVOVFFaQmdNQUFNUitFK2dBRVFGRUFBQUFLZ0FxQUNvQU5BQStBRWdBVWdCY0FHWUFjQUI2QUlRQWpnQ1lBS0lBckFDMkFNQUF5Z0RVQU40QTZBRHlBUHdCQmdFUUFSb0JKQUV1QVRnQlFnRk1BVllCWUFGcUFYUUJmZ0dJQVpJQm5BR21BYklCemdIc0FBQjQydTJOTVE2Q1VBeUdXNTY4eDlBbmVZWWdtNE1KYmhLRmFFeElPQVZYOEFwZXdTdDRCaWM0QWZlQWlkM1ZPQml4RHhmUFlFemE1TytYZmkwNFlBRGdnaVVJVUxDdUVKSzhWaE80YlN2cGRua3RISTVRQ1l0ZGkyc2w4Wm5YYUhscVVyTkt6ZEtjVDhjamxxK3J3WlN2SVZjek5pZXpzZm5QL3V6bm1mUEZCTk9ETTJLN01UUTQ1WUVBWnFHUDgxQW1HR2NGM2lQcU9vcDByMVNQVGFUYlZrZlVlNEhYajk3d1lFK3lOd1dZeHdXdTR2MXVnV0hnbzNTMVhkWkVWcVdNN0VUMGNmbkxHeFdma2dSNDJvMlB2V3JETUJTRmovSUhMYUYwektqUmdkaVZNd1NjTlJBb1dVb0g3OFkyaWNCL3lJWTA5QW42QUgyQmR1L1VCK3l4b3BZc2hRaUV2bnZ1MGRVUmdEdDhRZUM4UER3N0ZwamkzZkVBNHovUEVKNllPQjVoS2g0ZGozRXZYaHhQcUgvU0tVWTNySjdzclo0RlpuaDFQTUF0UGh3UDZmbDJQTUpNUERnZVE0clk4WVQ2R3phbzBlQUVBNDA5RHVnZ21UbkZuT2NTQ2lFaUxNZ3hDaVRJNkNxNURaVWQzUW1wMTB2TzBMYUxUZDJjak40Zk91bWxjN2xVWWJTUWNaRmt1dFJHN2c2SktaS3kwUm1kTFk2ODBDRG5FSitVTWtwRkZlMVJON254ZFZwWHJDNGFUdG5hdXJPblllcmNaZzJZVm1MTi9kL2djemZFaW1yRS9mcy9iT3VxMjlabW44dGxvT1JhWGdaZ0dhNzh5TzkvY25YbTJCcGFHdnEyNUR2OVM0RTkrNVNJYzlQcXVwSktoWUZTU2w0NytRY3IxbVlOQUFBQWVOcHR3MGNLd2tBQUFNRFpKQThRN09VSnZrTHNQZlo2ekZWRVJQeThxSGgyWUVSKzNpL0JQODN2SUJMTHlTc29LaW1ycUtxcGEyaHA2K2pxNlJzWUdobWJtSnFaU3kwc3JheHRiTzNzSFJ5ZG5FTVU0dVI2eXg3SkpYdmVQN1dyRHljQUFBQUFBQUgvL3dBQ2VOcGpZR1JnWU9BQlloa2daZ0pDWmdaTkJrWUdMUVp0SUpzRkxNWUFBQXczQUxnQWVOb2xpekVLZ0RBUUJDY2hSYkMyc0ZFUjBZRDZxVlFpQkN2L0g5ZXpHSTZaNVhCQXc4Q0JLL201aVFRVmF1VmJYTG5Pck1adjJvTGRLRmE4UGp1cnUyaEp6R2FibU9TTHpOTXp2dXRwQjNONDJtTmdaR0JnNEdLUVl6QmhZTXhKTE1sajRHQmdBWW93L1AvUEFKSmhMTTZzU29XS2ZXQ0FBd0RBamdiUkFBQjQybU5nWUdCa0FJSWJDWm81SVBybVVuMGhHQTBBTzhFRlRRQUEnKTsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXN0eWxlOiBub3JtYWwKfQoKOnJvb3QgewogICAgLS1zd2lwZXItdGhlbWUtY29sb3I6ICMwMDdhZmYKfQoKLnN3aXBlciB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIHotaW5kZXg6IDEKfQoKLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXIgewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbgp9Cgouc3dpcGVyLXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB6LWluZGV4OiAxOwogICAgZGlzcGxheTogZmxleDsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Cn0KCi5zd2lwZXItYW5kcm9pZCAuc3dpcGVyLXNsaWRlLAouc3dpcGVyLXdyYXBwZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIDAsIDApCn0KCi5zd2lwZXItcG9pbnRlci1ldmVudHMgewogICAgdG91Y2gtYWN0aW9uOiBwYW4teQp9Cgouc3dpcGVyLXBvaW50ZXItZXZlbnRzLnN3aXBlci12ZXJ0aWNhbCB7CiAgICB0b3VjaC1hY3Rpb246IHBhbi14Cn0KCi5zd2lwZXItc2xpZGUgewogICAgZmxleC1zaHJpbms6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybQp9Cgouc3dpcGVyLXNsaWRlLWludmlzaWJsZS1ibGFuayB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4KfQoKLnN3aXBlci1hdXRvaGVpZ2h0LAouc3dpcGVyLWF1dG9oZWlnaHQgLnN3aXBlci1zbGlkZSB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLnN3aXBlci1hdXRvaGVpZ2h0IC5zd2lwZXItd3JhcHBlciB7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgaGVpZ2h0Cn0KCi5zd2lwZXItYmFja2ZhY2UtaGlkZGVuIC5zd2lwZXItc2xpZGUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW4KfQoKLnN3aXBlci0zZCwKLnN3aXBlci0zZC5zd2lwZXItY3NzLW1vZGUgLnN3aXBlci13cmFwcGVyIHsKICAgIHBlcnNwZWN0aXZlOiAxMjAwcHgKfQoKLnN3aXBlci0zZCAuc3dpcGVyLWN1YmUtc2hhZG93LAouc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUsCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3csCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLAouc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLAouc3dpcGVyLTNkIC5zd2lwZXItd3JhcHBlciB7CiAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkCn0KCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3csCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLAouc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgei1pbmRleDogMTAKfQoKLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdyB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4xNSkKfQoKLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0IHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDAsIDAsIDAsIC41KSwgcmdiYSgwLCAwLCAwLCAwKSkKfQoKLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgLjUpLCByZ2JhKDAsIDAsIDAsIDApKQp9Cgouc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDAsIDAsIC41KSwgcmdiYSgwLCAwLCAwLCAwKSkKfQoKLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20gewogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAuNSksIHJnYmEoMCwgMCwgMCwgMCkpCn0KCi5zd2lwZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyIHsKICAgIG92ZXJmbG93OiBhdXRvOwogICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lCn0KCi5zd2lwZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5zd2lwZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyPi5zd2lwZXItc2xpZGUgewogICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0IHN0YXJ0Cn0KCi5zd2lwZXItaG9yaXpvbnRhbC5zd2lwZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyIHsKICAgIHNjcm9sbC1zbmFwLXR5cGU6IHggbWFuZGF0b3J5Cn0KCi5zd2lwZXItdmVydGljYWwuc3dpcGVyLWNzcy1tb2RlPi5zd2lwZXItd3JhcHBlciB7CiAgICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeQp9Cgouc3dpcGVyLWNlbnRlcmVkPi5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZmxleC1zaHJpbms6IDA7CiAgICBvcmRlcjogOTk5OQp9Cgouc3dpcGVyLWNlbnRlcmVkLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItd3JhcHBlcj4uc3dpcGVyLXNsaWRlOmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKQp9Cgouc3dpcGVyLWNlbnRlcmVkLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHsKICAgIGhlaWdodDogMTAwJTsKICAgIG1pbi1oZWlnaHQ6IDFweDsKICAgIHdpZHRoOiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyKQp9Cgouc3dpcGVyLWNlbnRlcmVkLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXI+LnN3aXBlci1zbGlkZTpmaXJzdC1jaGlsZCB7CiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKQp9Cgouc3dpcGVyLWNlbnRlcmVkLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXI6OmJlZm9yZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1pbi13aWR0aDogMXB4OwogICAgaGVpZ2h0OiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyKQp9Cgouc3dpcGVyLWNlbnRlcmVkPi5zd2lwZXItd3JhcHBlcj4uc3dpcGVyLXNsaWRlIHsKICAgIHNjcm9sbC1zbmFwLWFsaWduOiBjZW50ZXIgY2VudGVyCn0KCi5zd2lwZXItdmlydHVhbCAuc3dpcGVyLXNsaWRlIHsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApCn0KCi5zd2lwZXItdmlydHVhbC5zd2lwZXItY3NzLW1vZGUgLnN3aXBlci13cmFwcGVyOjphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLXZpcnR1YWwuc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1ob3Jpem9udGFsIC5zd2lwZXItd3JhcHBlcjo6YWZ0ZXIgewogICAgaGVpZ2h0OiAxcHg7CiAgICB3aWR0aDogdmFyKC0tc3dpcGVyLXZpcnR1YWwtc2l6ZSkKfQoKLnN3aXBlci12aXJ0dWFsLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItdmVydGljYWwgLnN3aXBlci13cmFwcGVyOjphZnRlciB7CiAgICB3aWR0aDogMXB4OwogICAgaGVpZ2h0OiB2YXIoLS1zd2lwZXItdmlydHVhbC1zaXplKQp9Cgo6cm9vdCB7CiAgICAtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemU6IDQ0cHgKfQoKLnN3aXBlci1idXR0b24tbmV4dCwKLnN3aXBlci1idXR0b24tcHJldiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIHdpZHRoOiBjYWxjKHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpLyA0NCAqIDI3KTsKICAgIGhlaWdodDogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSk7CiAgICBtYXJnaW4tdG9wOiBjYWxjKDBweCAtICh2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplKS8gMikpOwogICAgei1pbmRleDogMTA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgY29sb3I6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKQp9Cgouc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24tZGlzYWJsZWQsCi5zd2lwZXItYnV0dG9uLXByZXYuc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCB7CiAgICBvcGFjaXR5OiAuMzU7CiAgICBjdXJzb3I6IGF1dG87CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24taGlkZGVuLAouc3dpcGVyLWJ1dHRvbi1wcmV2LnN3aXBlci1idXR0b24taGlkZGVuIHsKICAgIG9wYWNpdHk6IDA7CiAgICBjdXJzb3I6IGF1dG87CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLW5hdmlnYXRpb24tZGlzYWJsZWQgLnN3aXBlci1idXR0b24tbmV4dCwKLnN3aXBlci1uYXZpZ2F0aW9uLWRpc2FibGVkIC5zd2lwZXItYnV0dG9uLXByZXYgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5zd2lwZXItYnV0dG9uLW5leHQ6YWZ0ZXIsCi5zd2lwZXItYnV0dG9uLXByZXY6YWZ0ZXIgewogICAgZm9udC1mYW1pbHk6IHN3aXBlci1pY29uczsKICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSk7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgbGV0dGVyLXNwYWNpbmc6IDA7CiAgICBmb250LXZhcmlhbnQ6IGluaXRpYWw7CiAgICBsaW5lLWhlaWdodDogMQp9Cgouc3dpcGVyLWJ1dHRvbi1wcmV2LAouc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0IHsKICAgIGxlZnQ6IDEwcHg7CiAgICByaWdodDogYXV0bwp9Cgouc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyLAouc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICdwcmV2Jwp9Cgouc3dpcGVyLWJ1dHRvbi1uZXh0LAouc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICAgIHJpZ2h0OiAxMHB4OwogICAgbGVmdDogYXV0bwp9Cgouc3dpcGVyLWJ1dHRvbi1uZXh0OmFmdGVyLAouc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICduZXh0Jwp9Cgouc3dpcGVyLWJ1dHRvbi1sb2NrIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLnN3aXBlci1wYWdpbmF0aW9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHRyYW5zaXRpb246IC4zcyBvcGFjaXR5OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIHotaW5kZXg6IDEwCn0KCi5zd2lwZXItcGFnaW5hdGlvbi5zd2lwZXItcGFnaW5hdGlvbi1oaWRkZW4gewogICAgb3BhY2l0eTogMAp9Cgouc3dpcGVyLXBhZ2luYXRpb24tZGlzYWJsZWQ+LnN3aXBlci1wYWdpbmF0aW9uLAouc3dpcGVyLXBhZ2luYXRpb24uc3dpcGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cywKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCwKLnN3aXBlci1wYWdpbmF0aW9uLWN1c3RvbSwKLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uIHsKICAgIGJvdHRvbTogMTBweDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBmb250LXNpemU6IDAKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjMzKTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1tYWluIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1wcmV2IHsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjY2KQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLXByZXYtcHJldiB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC4zMykKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1uZXh0IHsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjY2KQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLW5leHQtbmV4dCB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC4zMykKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7CiAgICB3aWR0aDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXdpZHRoLCB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtc2l6ZSwgOHB4KSk7CiAgICBoZWlnaHQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1oZWlnaHQsIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1zaXplLCA4cHgpKTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1pbmFjdGl2ZS1jb2xvciwgIzAwMCk7CiAgICBvcGFjaXR5OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaW5hY3RpdmUtb3BhY2l0eSwgLjIpCn0KCmJ1dHRvbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgYm9yZGVyOiBub25lOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICBhcHBlYXJhbmNlOiBub25lCn0KCi5zd2lwZXItcGFnaW5hdGlvbi1jbGlja2FibGUgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldDpvbmx5LWNoaWxkIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZSB7CiAgICBvcGFjaXR5OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtb3BhY2l0eSwgMSk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSkKfQoKLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMsCi5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgewogICAgcmlnaHQ6IDEwcHg7CiAgICB0b3A6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAtNTAlLCAwKQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LAouc3dpcGVyLXZlcnRpY2FsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgbWFyZ2luOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtdmVydGljYWwtZ2FwLCA2cHgpIDA7CiAgICBkaXNwbGF5OiBibG9jawp9Cgouc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMsCi5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIHsKICAgIHRvcDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgd2lkdGg6IDhweAp9Cgouc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCwKLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB0cmFuc2l0aW9uOiAuMnMgdHJhbnNmb3JtLCAuMnMgdG9wCn0KCi5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LAouc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgbWFyZ2luOiAwIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1ob3Jpem9udGFsLWdhcCwgNHB4KQp9Cgouc3dpcGVyLWhvcml6b250YWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljLAouc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyB7CiAgICBsZWZ0OiA1MCU7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwCn0KCi5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCwKLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7CiAgICB0cmFuc2l0aW9uOiAuMnMgdHJhbnNmb3JtLCAuMnMgbGVmdAp9Cgouc3dpcGVyLWhvcml6b250YWwuc3dpcGVyLXJ0bD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgdHJhbnNpdGlvbjogLjJzIHRyYW5zZm9ybSwgLjJzIHJpZ2h0Cn0KCi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4yNSk7CiAgICBwb3NpdGlvbjogYWJzb2x1dGUKfQoKLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxsIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcAp9Cgouc3dpcGVyLXJ0bCAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLWZpbGwgewogICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wCn0KCi5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIsCi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLAouc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItb3Bwb3NpdGUsCi5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA0cHg7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwCn0KCi5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItb3Bwb3NpdGUsCi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlLAouc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwsCi5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIHsKICAgIHdpZHRoOiA0cHg7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwCn0KCi5zd2lwZXItcGFnaW5hdGlvbi1sb2NrIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLnN3aXBlci1zY3JvbGxiYXIgewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIC1tcy10b3VjaC1hY3Rpb246IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4xKQp9Cgouc3dpcGVyLXNjcm9sbGJhci1kaXNhYmxlZD4uc3dpcGVyLXNjcm9sbGJhciwKLnN3aXBlci1zY3JvbGxiYXIuc3dpcGVyLXNjcm9sbGJhci1kaXNhYmxlZCB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItc2Nyb2xsYmFyLAouc3dpcGVyLXNjcm9sbGJhci5zd2lwZXItc2Nyb2xsYmFyLWhvcml6b250YWwgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMSU7CiAgICBib3R0b206IDNweDsKICAgIHotaW5kZXg6IDUwOwogICAgaGVpZ2h0OiA1cHg7CiAgICB3aWR0aDogOTglCn0KCi5zd2lwZXItc2Nyb2xsYmFyLnN3aXBlci1zY3JvbGxiYXItdmVydGljYWwsCi5zd2lwZXItdmVydGljYWw+LnN3aXBlci1zY3JvbGxiYXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDNweDsKICAgIHRvcDogMSU7CiAgICB6LWluZGV4OiA1MDsKICAgIHdpZHRoOiA1cHg7CiAgICBoZWlnaHQ6IDk4JQp9Cgouc3dpcGVyLXNjcm9sbGJhci1kcmFnIHsKICAgIGhlaWdodDogMTAwJTsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuNSk7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgbGVmdDogMDsKICAgIHRvcDogMAp9Cgouc3dpcGVyLXNjcm9sbGJhci1jdXJzb3ItZHJhZyB7CiAgICBjdXJzb3I6IG1vdmUKfQoKLnN3aXBlci1zY3JvbGxiYXItbG9jayB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5zd2lwZXItem9vbS1jb250YWluZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5zd2lwZXItem9vbS1jb250YWluZXI+Y2FudmFzLAouc3dpcGVyLXpvb20tY29udGFpbmVyPmltZywKLnN3aXBlci16b29tLWNvbnRhaW5lcj5zdmcgewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWF4LWhlaWdodDogMTAwJTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW4KfQoKLnN3aXBlci1zbGlkZS16b29tZWQgewogICAgY3Vyc29yOiBtb3ZlCn0KCi5zd2lwZXItbGF6eS1wcmVsb2FkZXIgewogICAgd2lkdGg6IDQycHg7CiAgICBoZWlnaHQ6IDQycHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiA1MCU7CiAgICB0b3A6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMjFweDsKICAgIG1hcmdpbi10b3A6IC0yMXB4OwogICAgei1pbmRleDogMTA7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm9yZGVyOiA0cHggc29saWQgdmFyKC0tc3dpcGVyLXByZWxvYWRlci1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudAp9Cgouc3dpcGVyLXdhdGNoLXByb2dyZXNzIC5zd2lwZXItc2xpZGUtdmlzaWJsZSAuc3dpcGVyLWxhenktcHJlbG9hZGVyLAouc3dpcGVyOm5vdCguc3dpcGVyLXdhdGNoLXByb2dyZXNzKSAuc3dpcGVyLWxhenktcHJlbG9hZGVyIHsKICAgIGFuaW1hdGlvbjogc3dpcGVyLXByZWxvYWRlci1zcGluIDFzIGluZmluaXRlIGxpbmVhcgp9Cgouc3dpcGVyLWxhenktcHJlbG9hZGVyLXdoaXRlIHsKICAgIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogI2ZmZgp9Cgouc3dpcGVyLWxhenktcHJlbG9hZGVyLWJsYWNrIHsKICAgIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogIzAwMAp9CgpAa2V5ZnJhbWVzIHN3aXBlci1wcmVsb2FkZXItc3BpbiB7CiAgICAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykKICAgIH0KfQoKLnN3aXBlciAuc3dpcGVyLW5vdGlmaWNhdGlvbiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBvcGFjaXR5OiAwOwogICAgei1pbmRleDogLTEwMDAKfQoKLnN3aXBlci1mcmVlLW1vZGU+LnN3aXBlci13cmFwcGVyIHsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAgIG1hcmdpbjogMCBhdXRvCn0KCi5zd2lwZXItZ3JpZD4uc3dpcGVyLXdyYXBwZXIgewogICAgZmxleC13cmFwOiB3cmFwCn0KCi5zd2lwZXItZ3JpZC1jb2x1bW4+LnN3aXBlci13cmFwcGVyIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4KfQoKLnN3aXBlci1mYWRlLnN3aXBlci1mcmVlLW1vZGUgLnN3aXBlci1zbGlkZSB7CiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQKfQoKLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Cn0KCi5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGUgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlLAouc3dpcGVyLWZhZGUgLnN3aXBlci1zbGlkZS1hY3RpdmUgLnN3aXBlci1zbGlkZS1hY3RpdmUgewogICAgcG9pbnRlci1ldmVudHM6IGF1dG8KfQoKLnN3aXBlci1jdWJlIHsKICAgIG92ZXJmbG93OiB2aXNpYmxlCn0KCi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlIHsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICB6LWluZGV4OiAxOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCUKfQoKLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLWN1YmUuc3dpcGVyLXJ0bCAuc3dpcGVyLXNsaWRlIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMAp9Cgouc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUsCi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7CiAgICBwb2ludGVyLWV2ZW50czogYXV0bwp9Cgouc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUsCi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLW5leHQsCi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLW5leHQrLnN3aXBlci1zbGlkZSwKLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtcHJldiB7CiAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgIHZpc2liaWxpdHk6IHZpc2libGUKfQoKLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwKLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsCi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwKLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCB7CiAgICB6LWluZGV4OiAwOwogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW4KfQoKLnN3aXBlci1jdWJlIC5zd2lwZXItY3ViZS1zaGFkb3cgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIGJvdHRvbTogMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvcGFjaXR5OiAuNjsKICAgIHotaW5kZXg6IDAKfQoKLnN3aXBlci1jdWJlIC5zd2lwZXItY3ViZS1zaGFkb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgYmFja2dyb3VuZDogIzAwMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICByaWdodDogMDsKICAgIGZpbHRlcjogYmx1cig1MHB4KQp9Cgouc3dpcGVyLWZsaXAgewogICAgb3ZlcmZsb3c6IHZpc2libGUKfQoKLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgIHotaW5kZXg6IDEKfQoKLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1hY3RpdmUsCi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7CiAgICBwb2ludGVyLWV2ZW50czogYXV0bwp9Cgouc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLAouc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCwKLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LAouc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIHsKICAgIHotaW5kZXg6IDA7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbgp9Cgouc3dpcGVyLWNyZWF0aXZlIC5zd2lwZXItc2xpZGUgewogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBvcGFjaXR5LCBoZWlnaHQKfQoKLnN3aXBlci1jYXJkcyB7CiAgICBvdmVyZmxvdzogdmlzaWJsZQp9Cgouc3dpcGVyLWNhcmRzIC5zd2lwZXItc2xpZGUgewogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3ZlcmZsb3c6IGhpZGRlbgp9"}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/metform/public/assets/css/text-editor.css?ver=3.8.2","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.994Z","timestamp":1785130089994,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/metform/public/assets/css/text-editor.css?ver=3.8.2 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=zlm8v0lFN0%2BK1oymmi%2BcOASSikqC%2FXxz2QTq%2BvTXiyzHy03klgsf6HmqMWYYM71OXKKVouOJQex7KLLNQqIhQ3sf0YrbIzOVrXDMmybBl2Kgme5ImMNGyfKMkgSZtOQWz3PaqAgrag%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d367e33120a-OSL\r\ncontent-length: 3473\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":25831,"size_decoded":4287,"mime_type":"text/css","magic":"ASCII text","md5":"b1e6d46a32871a6fd7a668ac77062561","sha1":"7ee72223dc0ba2d177b182092b0445c2484b61a9","sha256":"ed6977cd0b1944c3f162e301511f08b46033bfdcc7ab4d229233b879bb3c10b6","sha512":"6cb9483fbce7e26b9ddf92629955351243a84d716753e59e8a2a92d627f78b1239ea8758e6534f59c21ff989b6ddc6f1e2be9f2c0177f86e1223ddceeeff085d","ssdeep":"768:mrtuPgK/BPR+EQ6CoJnYy3J3JWsIiKsPjnkpFTFjFTF0uF2Tk/DbMYofXYyObKwx:NPgK/BPR+EQ6CoJnYy3J3JWsIiKsPr+t","tlshash":"b1c2fe0feca71cbf412a507d950d12d06fca729390dbaa99f4d1ae8a1fdc0548369e5c","first_seen":"2025-09-13T14:09:05.175265Z","last_seen":"2026-07-27T05:30:59.831603Z","times_seen":7,"resource_available":false,"data":"LyohCiAqIFF1aWxsIEVkaXRvciB2MS4zLjcKICogaHR0cHM6Ly9xdWlsbGpzLmNvbS8KICogQ29weXJpZ2h0IChjKSAyMDE0LCBKYXNvbiBDaGVuCiAqIENvcHlyaWdodCAoYykgMjAxMywgc2FsZXNmb3JjZS5jb20KICovCgoucWwtY29udGFpbmVyIHsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIG1pbi1oZWlnaHQ6IDIwMHB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgaGVpZ2h0OiAxMDAlOwogICAgbWFyZ2luOiAwOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5xbC1jb250YWluZXIucWwtZGlzYWJsZWQgLnFsLXRvb2x0aXAgewogICAgdmlzaWJpbGl0eTogaGlkZGVuCn0KCi5xbC1jb250YWluZXIucWwtZGlzYWJsZWQgLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWRdPmxpOjpiZWZvcmUgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLnFsLWNsaXBib2FyZCB7CiAgICBsZWZ0OiAtMTAwMDAwcHg7CiAgICBoZWlnaHQ6IDFweDsKICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlCn0KCi5xbC1jbGlwYm9hcmQgcCB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwCn0KCi5xbC1lZGl0b3IgewogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGxpbmUtaGVpZ2h0OiAxLjQyOwogICAgaGVpZ2h0OiAxMDAlOwogICAgb3V0bGluZTogMDsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBwYWRkaW5nOiAwOwogICAgLW8tdGFiLXNpemU6IDQ7CiAgICB0YWItc2l6ZTogNDsKICAgIC1tb3otdGFiLXNpemU6IDQ7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgd29yZC13cmFwOiBicmVhay13b3JkCn0KCi5xbC1lZGl0b3I+KiB7CiAgICBjdXJzb3I6IHRleHQKfQoKLnFsLWVkaXRvciBibG9ja3F1b3RlLAoucWwtZWRpdG9yIGgxLAoucWwtZWRpdG9yIGgyLAoucWwtZWRpdG9yIGgzLAoucWwtZWRpdG9yIGg0LAoucWwtZWRpdG9yIGg1LAoucWwtZWRpdG9yIGg2LAoucWwtZWRpdG9yIG9sLAoucWwtZWRpdG9yIHAsCi5xbC1lZGl0b3IgcHJlLAoucWwtZWRpdG9yIHVsIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBjb3VudGVyLXJlc2V0OiBsaXN0LTEgbGlzdC0yIGxpc3QtMyBsaXN0LTQgbGlzdC01IGxpc3QtNiBsaXN0LTcgbGlzdC04IGxpc3QtOQp9CgoucWwtZWRpdG9yIG9sLAoucWwtZWRpdG9yIHVsIHsKICAgIHBhZGRpbmctbGVmdDogMS41ZW0KfQoKLnFsLWVkaXRvciBvbD5saSwKLnFsLWVkaXRvciB1bD5saSB7CiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmUKfQoKLnFsLWVkaXRvciB1bD5saTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcMjAyMicKfQoKLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWQ9ZmFsc2VdLAoucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD10cnVlXSB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgoucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD1mYWxzZV0+bGkgKiwKLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWQ9dHJ1ZV0+bGkgKiB7CiAgICBwb2ludGVyLWV2ZW50czogYWxsCn0KCi5xbC1lZGl0b3IgdWxbZGF0YS1jaGVja2VkPWZhbHNlXT5saTo6YmVmb3JlLAoucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD10cnVlXT5saTo6YmVmb3JlIHsKICAgIGNvbG9yOiAjNzc3OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcG9pbnRlci1ldmVudHM6IGFsbAp9CgoucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD10cnVlXT5saTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcMjYxMScKfQoKLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWQ9ZmFsc2VdPmxpOjpiZWZvcmUgewogICAgY29udGVudDogJ1wyNjEwJwp9CgoucWwtZWRpdG9yIGxpOjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHdpZHRoOiAxLjJlbQp9CgoucWwtZWRpdG9yIGxpOm5vdCgucWwtZGlyZWN0aW9uLXJ0bCk6OmJlZm9yZSB7CiAgICBtYXJnaW4tbGVmdDogLTEuNWVtOwogICAgbWFyZ2luLXJpZ2h0OiAuM2VtOwogICAgdGV4dC1hbGlnbjogcmlnaHQKfQoKLnFsLWVkaXRvciBsaS5xbC1kaXJlY3Rpb24tcnRsOjpiZWZvcmUgewogICAgbWFyZ2luLWxlZnQ6IC4zZW07CiAgICBtYXJnaW4tcmlnaHQ6IC0xLjVlbQp9CgoucWwtZWRpdG9yIG9sIGxpOm5vdCgucWwtZGlyZWN0aW9uLXJ0bCksCi5xbC1lZGl0b3IgdWwgbGk6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDEuNWVtCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtZGlyZWN0aW9uLXJ0bCwKLnFsLWVkaXRvciB1bCBsaS5xbC1kaXJlY3Rpb24tcnRsIHsKICAgIHBhZGRpbmctcmlnaHQ6IDEuNWVtCn0KCi5xbC1lZGl0b3Igb2wgbGkgewogICAgY291bnRlci1yZXNldDogbGlzdC0xIGxpc3QtMiBsaXN0LTMgbGlzdC00IGxpc3QtNSBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTk7CiAgICBjb3VudGVyLWluY3JlbWVudDogbGlzdC0wCn0KCi5xbC1lZGl0b3Igb2wgbGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC0wLCBkZWNpbWFsKSAnLiAnCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTEgewogICAgY291bnRlci1pbmNyZW1lbnQ6IGxpc3QtMQp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC0xOmJlZm9yZSB7CiAgICBjb250ZW50OiBjb3VudGVyKGxpc3QtMSwgbG93ZXItYWxwaGEpICcuICcKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMSB7CiAgICBjb3VudGVyLXJlc2V0OiBsaXN0LTIgbGlzdC0zIGxpc3QtNCBsaXN0LTUgbGlzdC02IGxpc3QtNyBsaXN0LTggbGlzdC05Cn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTIgewogICAgY291bnRlci1pbmNyZW1lbnQ6IGxpc3QtMgp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC0yOmJlZm9yZSB7CiAgICBjb250ZW50OiBjb3VudGVyKGxpc3QtMiwgbG93ZXItcm9tYW4pICcuICcKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMiB7CiAgICBjb3VudGVyLXJlc2V0OiBsaXN0LTMgbGlzdC00IGxpc3QtNSBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTkKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMyB7CiAgICBjb3VudGVyLWluY3JlbWVudDogbGlzdC0zCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC0zLCBkZWNpbWFsKSAnLiAnCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTMgewogICAgY291bnRlci1yZXNldDogbGlzdC00IGxpc3QtNSBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTkKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNCB7CiAgICBjb3VudGVyLWluY3JlbWVudDogbGlzdC00Cn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC00LCBsb3dlci1hbHBoYSkgJy4gJwp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC00IHsKICAgIGNvdW50ZXItcmVzZXQ6IGxpc3QtNSBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTkKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNSB7CiAgICBjb3VudGVyLWluY3JlbWVudDogbGlzdC01Cn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC01LCBsb3dlci1yb21hbikgJy4gJwp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC01IHsKICAgIGNvdW50ZXItcmVzZXQ6IGxpc3QtNiBsaXN0LTcgbGlzdC04IGxpc3QtOQp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC02IHsKICAgIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LTYKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNjpiZWZvcmUgewogICAgY29udGVudDogY291bnRlcihsaXN0LTYsIGRlY2ltYWwpICcuICcKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNiB7CiAgICBjb3VudGVyLXJlc2V0OiBsaXN0LTcgbGlzdC04IGxpc3QtOQp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC03IHsKICAgIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LTcKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNzpiZWZvcmUgewogICAgY29udGVudDogY291bnRlcihsaXN0LTcsIGxvd2VyLWFscGhhKSAnLiAnCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTcgewogICAgY291bnRlci1yZXNldDogbGlzdC04IGxpc3QtOQp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC04IHsKICAgIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LTgKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtODpiZWZvcmUgewogICAgY29udGVudDogY291bnRlcihsaXN0LTgsIGxvd2VyLXJvbWFuKSAnLiAnCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTggewogICAgY291bnRlci1yZXNldDogbGlzdC05Cn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTkgewogICAgY291bnRlci1pbmNyZW1lbnQ6IGxpc3QtOQp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC05OmJlZm9yZSB7CiAgICBjb250ZW50OiBjb3VudGVyKGxpc3QtOSwgZGVjaW1hbCkgJy4gJwp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtMTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogM2VtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTE6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDQuNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC0xLnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogM2VtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTEucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA0LjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtMjpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogNmVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTI6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDcuNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC0yLnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogNmVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTIucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA3LjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtMzpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogOWVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTM6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDEwLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtMy5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDllbQp9CgoucWwtZWRpdG9yIGxpLnFsLWluZGVudC0zLnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMTAuNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC00Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkgewogICAgcGFkZGluZy1sZWZ0OiAxMmVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTQ6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDEzLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtNC5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEyZW0KfQoKLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNC5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEzLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtNTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogMTVlbQp9CgoucWwtZWRpdG9yIGxpLnFsLWluZGVudC01Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkgewogICAgcGFkZGluZy1sZWZ0OiAxNi41ZW0KfQoKLnFsLWVkaXRvciAucWwtaW5kZW50LTUucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNWVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTUucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNi41ZW0KfQoKLnFsLWVkaXRvciAucWwtaW5kZW50LTY6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDE4ZW0KfQoKLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNjpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogMTkuNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC02LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMThlbQp9CgoucWwtZWRpdG9yIGxpLnFsLWluZGVudC02LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMTkuNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC03Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkgewogICAgcGFkZGluZy1sZWZ0OiAyMWVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTc6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDIyLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtNy5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDIxZW0KfQoKLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNy5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDIyLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtODpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogMjRlbQp9CgoucWwtZWRpdG9yIGxpLnFsLWluZGVudC04Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkgewogICAgcGFkZGluZy1sZWZ0OiAyNS41ZW0KfQoKLnFsLWVkaXRvciAucWwtaW5kZW50LTgucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNGVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTgucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNS41ZW0KfQoKLnFsLWVkaXRvciAucWwtaW5kZW50LTk6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDI3ZW0KfQoKLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtOTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogMjguNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC05LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMjdlbQp9CgoucWwtZWRpdG9yIGxpLnFsLWluZGVudC05LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMjguNWVtCn0KCi5xbC1lZGl0b3IgLnFsLXZpZGVvIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWF4LXdpZHRoOiAxMDAlCn0KCi5xbC1lZGl0b3IgLnFsLXZpZGVvLnFsLWFsaWduLWNlbnRlciB7CiAgICBtYXJnaW46IDAgYXV0bwp9CgoucWwtZWRpdG9yIC5xbC12aWRlby5xbC1hbGlnbi1yaWdodCB7CiAgICBtYXJnaW46IDAgMCAwIGF1dG8KfQoKLnFsLWVkaXRvciAucWwtYmctYmxhY2sgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMAp9CgoucWwtZWRpdG9yIC5xbC1iZy1yZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2U2MDAwMAp9CgoucWwtZWRpdG9yIC5xbC1iZy1vcmFuZ2UgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5MAp9CgoucWwtZWRpdG9yIC5xbC1iZy15ZWxsb3cgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMAp9CgoucWwtZWRpdG9yIC5xbC1iZy1ncmVlbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4YTAwCn0KCi5xbC1lZGl0b3IgLnFsLWJnLWJsdWUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzA2Ywp9CgoucWwtZWRpdG9yIC5xbC1iZy1wdXJwbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzkzZgp9CgoucWwtZWRpdG9yIC5xbC1jb2xvci13aGl0ZSB7CiAgICBjb2xvcjogI2ZmZgp9CgoucWwtZWRpdG9yIC5xbC1jb2xvci1yZWQgewogICAgY29sb3I6ICNlNjAwMDAKfQoKLnFsLWVkaXRvciAucWwtY29sb3Itb3JhbmdlIHsKICAgIGNvbG9yOiAjZjkwCn0KCi5xbC1lZGl0b3IgLnFsLWNvbG9yLXllbGxvdyB7CiAgICBjb2xvcjogI2ZmMAp9CgoucWwtZWRpdG9yIC5xbC1jb2xvci1ncmVlbiB7CiAgICBjb2xvcjogIzAwOGEwMAp9CgoucWwtZWRpdG9yIC5xbC1jb2xvci1ibHVlIHsKICAgIGNvbG9yOiAjMDZjCn0KCi5xbC1lZGl0b3IgLnFsLWNvbG9yLXB1cnBsZSB7CiAgICBjb2xvcjogIzkzZgp9CgoucWwtZWRpdG9yIC5xbC1mb250LXNlcmlmIHsKICAgIGZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcyBOZXcgUm9tYW4sIHNlcmlmCn0KCi5xbC1lZGl0b3IgLnFsLWZvbnQtbW9ub3NwYWNlIHsKICAgIGZvbnQtZmFtaWx5OiBNb25hY28sIENvdXJpZXIgTmV3LCBtb25vc3BhY2UKfQoKLnFsLWVkaXRvciAucWwtc2l6ZS1zbWFsbCB7CiAgICBmb250LXNpemU6IC43NWVtCn0KCi5xbC1lZGl0b3IgLnFsLXNpemUtbGFyZ2UgewogICAgZm9udC1zaXplOiAxLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1zaXplLWh1Z2UgewogICAgZm9udC1zaXplOiAyLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1kaXJlY3Rpb24tcnRsIHsKICAgIGRpcmVjdGlvbjogcnRsOwogICAgdGV4dC1hbGlnbjogaW5oZXJpdAp9CgoucWwtZWRpdG9yIC5xbC1hbGlnbi1jZW50ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5xbC1lZGl0b3IgLnFsLWFsaWduLWp1c3RpZnkgewogICAgdGV4dC1hbGlnbjoganVzdGlmeQp9CgoucWwtZWRpdG9yIC5xbC1hbGlnbi1yaWdodCB7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9CgoucWwtZWRpdG9yLnFsLWJsYW5rOjpiZWZvcmUgewogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjYpOwogICAgY29udGVudDogYXR0cihkYXRhLXBsYWNlaG9sZGVyKTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGxlZnQ6IDE1cHg7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAxNXB4Cn0KCi5xbC1zbm93IC5xbC10b29sYmFyOmFmdGVyLAoucWwtc25vdy5xbC10b29sYmFyOmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwogICAgY29udGVudDogJyc7CiAgICBkaXNwbGF5OiB0YWJsZQp9CgoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b24sCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uIHsKICAgIGJhY2tncm91bmQ6IDAgMDsKICAgIGJvcmRlcjogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgaGVpZ2h0OiAyNHB4OwogICAgcGFkZGluZzogM3B4IDVweDsKICAgIHdpZHRoOiAyOHB4Cn0KCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbiBzdmcsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uIHN2ZyB7CiAgICBmbG9hdDogbGVmdDsKICAgIGhlaWdodDogMTAwJQp9CgoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246YWN0aXZlOmhvdmVyLAoucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjphY3RpdmU6aG92ZXIgewogICAgb3V0bGluZTogMAp9CgoucWwtc25vdyAucWwtdG9vbGJhciBpbnB1dC5xbC1pbWFnZVt0eXBlPWZpbGVdLAoucWwtc25vdy5xbC10b29sYmFyIGlucHV0LnFsLWltYWdlW3R5cGU9ZmlsZV0gewogICAgZGlzcGxheTogbm9uZQp9CgoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW0ucWwtc2VsZWN0ZWQsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciwKLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIsCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUsCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpmb2N1cywKLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCwKLnFsLXNub3cucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW06aG92ZXIsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbDpob3ZlciwKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlLAoucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpmb2N1cywKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b246aG92ZXIgewogICAgY29sb3I6ICMwNmMKfQoKLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtLnFsLXNlbGVjdGVkIC5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW0ucWwtc2VsZWN0ZWQgLnFsLXN0cm9rZS5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW06aG92ZXIgLnFsLWZpbGwsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWwucWwtYWN0aXZlIC5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsLnFsLWFjdGl2ZSAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIgLnFsLWZpbGwsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIgLnFsLXN0cm9rZS5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1zdHJva2UucWwtZmlsbCwKLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uOmZvY3VzIC5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246Zm9jdXMgLnFsLXN0cm9rZS5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246aG92ZXIgLnFsLWZpbGwsCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpob3ZlciAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtLnFsLXNlbGVjdGVkIC5xbC1maWxsLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtOmhvdmVyIC5xbC1maWxsLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLXN0cm9rZS5xbC1maWxsLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIgLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbDpob3ZlciAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uLnFsLWFjdGl2ZSAucWwtZmlsbCwKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1zdHJva2UucWwtZmlsbCwKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b246Zm9jdXMgLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmZvY3VzIC5xbC1zdHJva2UucWwtZmlsbCwKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b246aG92ZXIgLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyIC5xbC1zdHJva2UucWwtZmlsbCB7CiAgICBmaWxsOiAjMDZjCn0KCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtc3Ryb2tlLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW0ucWwtc2VsZWN0ZWQgLnFsLXN0cm9rZS1taXRlciwKLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtOmhvdmVyIC5xbC1zdHJva2UsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsLnFsLWFjdGl2ZSAucWwtc3Ryb2tlLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsLnFsLWFjdGl2ZSAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsOmhvdmVyIC5xbC1zdHJva2UsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIgLnFsLXN0cm9rZS1taXRlciwKLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uLnFsLWFjdGl2ZSAucWwtc3Ryb2tlLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1zdHJva2UtbWl0ZXIsCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpmb2N1cyAucWwtc3Ryb2tlLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246Zm9jdXMgLnFsLXN0cm9rZS1taXRlciwKLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyIC5xbC1zdHJva2UsCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpob3ZlciAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtc3Ryb2tlLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciAucWwtc3Ryb2tlLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWwucWwtYWN0aXZlIC5xbC1zdHJva2UsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLXN0cm9rZS1taXRlciwKLnFsLXNub3cucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsOmhvdmVyIC5xbC1zdHJva2UsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbDpob3ZlciAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUgLnFsLXN0cm9rZSwKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1zdHJva2UtbWl0ZXIsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmZvY3VzIC5xbC1zdHJva2UsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmZvY3VzIC5xbC1zdHJva2UtbWl0ZXIsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyIC5xbC1zdHJva2UsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyIC5xbC1zdHJva2UtbWl0ZXIgewogICAgc3Ryb2tlOiAjMDZjCn0KCkBtZWRpYSAocG9pbnRlcjpjb2Fyc2UpIHsKICAgIC5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSksCiAgICAucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkgewogICAgICAgIGNvbG9yOiAjNDQ0CiAgICB9CiAgICAucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246aG92ZXI6bm90KC5xbC1hY3RpdmUpIC5xbC1maWxsLAogICAgLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyOm5vdCgucWwtYWN0aXZlKSAucWwtc3Ryb2tlLnFsLWZpbGwsCiAgICAucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkgLnFsLWZpbGwsCiAgICAucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkgLnFsLXN0cm9rZS5xbC1maWxsIHsKICAgICAgICBmaWxsOiAjNDQ0CiAgICB9CiAgICAucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246aG92ZXI6bm90KC5xbC1hY3RpdmUpIC5xbC1zdHJva2UsCiAgICAucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246aG92ZXI6bm90KC5xbC1hY3RpdmUpIC5xbC1zdHJva2UtbWl0ZXIsCiAgICAucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkgLnFsLXN0cm9rZSwKICAgIC5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyOm5vdCgucWwtYWN0aXZlKSAucWwtc3Ryb2tlLW1pdGVyIHsKICAgICAgICBzdHJva2U6ICM0NDQKICAgIH0KfQoKLnFsLXNub3cgewogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveAp9CgoucWwtc25vdyAqIHsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3gKfQoKLnFsLXNub3cgLnFsLWhpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5xbC1zbm93IC5xbC1vdXQtYm90dG9tLAoucWwtc25vdyAucWwtb3V0LXRvcCB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4KfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCkKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAgYSB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAucWwtZmxpcCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpCn0KCi5xbC1zbm93IC5xbC1mb3JtYXRzIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKLnFsLXNub3cgLnFsLWZvcm1hdHM6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7CiAgICBjb250ZW50OiAnJzsKICAgIGRpc3BsYXk6IHRhYmxlCn0KCi5xbC1zbm93IC5xbC1zdHJva2UgewogICAgZmlsbDogbm9uZTsKICAgIHN0cm9rZTogIzQ0NDsKICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgIHN0cm9rZS1saW5lam9pbjogcm91bmQ7CiAgICBzdHJva2Utd2lkdGg6IDIKfQoKLnFsLXNub3cgLnFsLXN0cm9rZS1taXRlciB7CiAgICBmaWxsOiBub25lOwogICAgc3Ryb2tlOiAjNDQ0OwogICAgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOwogICAgc3Ryb2tlLXdpZHRoOiAyCn0KCi5xbC1zbm93IC5xbC1maWxsLAoucWwtc25vdyAucWwtc3Ryb2tlLnFsLWZpbGwgewogICAgZmlsbDogIzQ0NAp9CgoucWwtc25vdyAucWwtZW1wdHkgewogICAgZmlsbDogbm9uZQp9CgoucWwtc25vdyAucWwtZXZlbiB7CiAgICBmaWxsLXJ1bGU6IGV2ZW5vZGQKfQoKLnFsLXNub3cgLnFsLXN0cm9rZS5xbC10aGluLAoucWwtc25vdyAucWwtdGhpbiB7CiAgICBzdHJva2Utd2lkdGg6IDEKfQoKLnFsLXNub3cgLnFsLXRyYW5zcGFyZW50IHsKICAgIG9wYWNpdHk6IC40Cn0KCi5xbC1zbm93IC5xbC1kaXJlY3Rpb24gc3ZnOmxhc3QtY2hpbGQgewogICAgZGlzcGxheTogbm9uZQp9CgoucWwtc25vdyAucWwtZGlyZWN0aW9uLnFsLWFjdGl2ZSBzdmc6bGFzdC1jaGlsZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUKfQoKLnFsLXNub3cgLnFsLWRpcmVjdGlvbi5xbC1hY3RpdmUgc3ZnOmZpcnN0LWNoaWxkIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLnFsLXNub3cgLnFsLWVkaXRvciBoMSB7CiAgICBmb250LXNpemU6IDJlbQp9CgoucWwtc25vdyAucWwtZWRpdG9yIGgyIHsKICAgIGZvbnQtc2l6ZTogMS41ZW0KfQoKLnFsLXNub3cgLnFsLWVkaXRvciBoMyB7CiAgICBmb250LXNpemU6IDEuMTdlbQp9CgoucWwtc25vdyAucWwtZWRpdG9yIGg0IHsKICAgIGZvbnQtc2l6ZTogMWVtCn0KCi5xbC1zbm93IC5xbC1lZGl0b3IgaDUgewogICAgZm9udC1zaXplOiAuODNlbQp9CgoucWwtc25vdyAucWwtZWRpdG9yIGg2IHsKICAgIGZvbnQtc2l6ZTogLjY3ZW0KfQoKLnFsLXNub3cgLnFsLWVkaXRvciBhIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lCn0KCi5xbC1zbm93IC5xbC1lZGl0b3IgYmxvY2txdW90ZSB7CiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkICNjY2M7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDE2cHgKfQoKLnFsLXNub3cgLnFsLWVkaXRvciBjb2RlLAoucWwtc25vdyAucWwtZWRpdG9yIHByZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwOwogICAgYm9yZGVyLXJhZGl1czogM3B4Cn0KCi5xbC1zbm93IC5xbC1lZGl0b3IgcHJlIHsKICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIG1hcmdpbi10b3A6IDVweDsKICAgIHBhZGRpbmc6IDVweCAxMHB4Cn0KCi5xbC1zbm93IC5xbC1lZGl0b3IgY29kZSB7CiAgICBmb250LXNpemU6IDg1JTsKICAgIHBhZGRpbmc6IDJweCA0cHgKfQoKLnFsLXNub3cgLnFsLWVkaXRvciBwcmUucWwtc3ludGF4IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyMzI0MWY7CiAgICBjb2xvcjogI2Y4ZjhmMjsKICAgIG92ZXJmbG93OiB2aXNpYmxlCn0KCi5xbC1zbm93IC5xbC1lZGl0b3IgaW1nIHsKICAgIG1heC13aWR0aDogMTAwJQp9CgoucWwtc25vdyAucWwtcGlja2VyIHsKICAgIGNvbG9yOiAjNDQ0OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgaGVpZ2h0OiAyNHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgoucWwtc25vdyAucWwtcGlja2VyLWxhYmVsIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGhlaWdodDogMTAwJTsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgcGFkZGluZy1yaWdodDogMnB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCUKfQoKLnFsLXNub3cgLnFsLXBpY2tlci1sYWJlbDo6YmVmb3JlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAyMnB4Cn0KCi5xbC1zbm93IC5xbC1waWNrZXItb3B0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgZGlzcGxheTogbm9uZTsKICAgIG1pbi13aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwCn0KCi5xbC1zbm93IC5xbC1waWNrZXItb3B0aW9ucyAucWwtcGlja2VyLWl0ZW0gewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgcGFkZGluZy10b3A6IDVweAp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWV4cGFuZGVkIC5xbC1waWNrZXItbGFiZWwgewogICAgY29sb3I6ICNjY2M7CiAgICB6LWluZGV4OiAyCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZXhwYW5kZWQgLnFsLXBpY2tlci1sYWJlbCAucWwtZmlsbCB7CiAgICBmaWxsOiAjY2NjCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZXhwYW5kZWQgLnFsLXBpY2tlci1sYWJlbCAucWwtc3Ryb2tlIHsKICAgIHN0cm9rZTogI2NjYwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWV4cGFuZGVkIC5xbC1waWNrZXItb3B0aW9ucyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICB0b3A6IDEwMCU7CiAgICB6LWluZGV4OiAxCn0KCi5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIsCi5xbC1zbm93IC5xbC1pY29uLXBpY2tlciB7CiAgICB3aWR0aDogMjhweAp9CgoucWwtc25vdyAucWwtY29sb3ItcGlja2VyIC5xbC1waWNrZXItbGFiZWwsCi5xbC1zbm93IC5xbC1pY29uLXBpY2tlciAucWwtcGlja2VyLWxhYmVsIHsKICAgIHBhZGRpbmc6IDJweCA0cHgKfQoKLnFsLXNub3cgLnFsLWNvbG9yLXBpY2tlciAucWwtcGlja2VyLWxhYmVsIHN2ZywKLnFsLXNub3cgLnFsLWljb24tcGlja2VyIC5xbC1waWNrZXItbGFiZWwgc3ZnIHsKICAgIHJpZ2h0OiA0cHgKfQoKLnFsLXNub3cgLnFsLWljb24tcGlja2VyIC5xbC1waWNrZXItb3B0aW9ucyB7CiAgICBwYWRkaW5nOiA0cHggMAp9CgoucWwtc25vdyAucWwtaWNvbi1waWNrZXIgLnFsLXBpY2tlci1pdGVtIHsKICAgIGhlaWdodDogMjRweDsKICAgIHdpZHRoOiAyNHB4OwogICAgcGFkZGluZzogMnB4IDRweAp9CgoucWwtc25vdyAucWwtY29sb3ItcGlja2VyIC5xbC1waWNrZXItb3B0aW9ucyB7CiAgICBwYWRkaW5nOiAzcHggNXB4OwogICAgd2lkdGg6IDE1MnB4Cn0KCi5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIgLnFsLXBpY2tlci1pdGVtIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgZmxvYXQ6IGxlZnQ7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBtYXJnaW46IDJweDsKICAgIHBhZGRpbmc6IDA7CiAgICB3aWR0aDogMTZweAp9CgoucWwtc25vdyAucWwtcGlja2VyOm5vdCgucWwtY29sb3ItcGlja2VyKTpub3QoLnFsLWljb24tcGlja2VyKSBzdmcgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbWFyZ2luLXRvcDogLTlweDsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiA1MCU7CiAgICB3aWR0aDogMThweAp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtW2RhdGEtbGFiZWxdOm5vdChbZGF0YS1sYWJlbD0nJ10pOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsW2RhdGEtbGFiZWxdOm5vdChbZGF0YS1sYWJlbD0nJ10pOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLWxhYmVsXTpub3QoW2RhdGEtbGFiZWw9JyddKTo6YmVmb3JlLAoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWxhYmVsW2RhdGEtbGFiZWxdOm5vdChbZGF0YS1sYWJlbD0nJ10pOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWl0ZW1bZGF0YS1sYWJlbF06bm90KFtkYXRhLWxhYmVsPScnXSk6OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItbGFiZWxbZGF0YS1sYWJlbF06bm90KFtkYXRhLWxhYmVsPScnXSk6OmJlZm9yZSB7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtbGFiZWwpCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIHsKICAgIHdpZHRoOiA5OHB4Cn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbTo6YmVmb3JlLAoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWxhYmVsOjpiZWZvcmUgewogICAgY29udGVudDogJ05vcm1hbCcKfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9IjEiXTo6YmVmb3JlLAoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9IjEiXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdIZWFkaW5nIDEnCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPSIyIl06OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPSIyIl06OmJlZm9yZSB7CiAgICBjb250ZW50OiAnSGVhZGluZyAyJwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT0iMyJdOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT0iMyJdOjpiZWZvcmUgewogICAgY29udGVudDogJ0hlYWRpbmcgMycKfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9IjQiXTo6YmVmb3JlLAoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9IjQiXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdIZWFkaW5nIDQnCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPSI1Il06OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPSI1Il06OmJlZm9yZSB7CiAgICBjb250ZW50OiAnSGVhZGluZyA1Jwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT0iNiJdOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT0iNiJdOjpiZWZvcmUgewogICAgY29udGVudDogJ0hlYWRpbmcgNicKfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9IjEiXTo6YmVmb3JlIHsKICAgIGZvbnQtc2l6ZTogMmVtCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPSIyIl06OmJlZm9yZSB7CiAgICBmb250LXNpemU6IDEuNWVtCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPSIzIl06OmJlZm9yZSB7CiAgICBmb250LXNpemU6IDEuMTdlbQp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT0iNCJdOjpiZWZvcmUgewogICAgZm9udC1zaXplOiAxZW0KfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9IjUiXTo6YmVmb3JlIHsKICAgIGZvbnQtc2l6ZTogLjgzZW0KfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9IjYiXTo6YmVmb3JlIHsKICAgIGZvbnQtc2l6ZTogLjY3ZW0KfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IHsKICAgIHdpZHRoOiAxMDhweAp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsOjpiZWZvcmUgewogICAgY29udGVudDogJ1NhbnMgU2VyaWYnCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1zZXJpZl06OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1zZXJpZl06OmJlZm9yZSB7CiAgICBjb250ZW50OiAnU2VyaWYnCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1tb25vc3BhY2VdOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9bW9ub3NwYWNlXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdNb25vc3BhY2UnCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1zZXJpZl06OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogR2VvcmdpYSwgVGltZXMgTmV3IFJvbWFuLCBzZXJpZgp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9bW9ub3NwYWNlXTo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiBNb25hY28sIENvdXJpZXIgTmV3LCBtb25vc3BhY2UKfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIHsKICAgIHdpZHRoOiA5OHB4Cn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWl0ZW06OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItbGFiZWw6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnTm9ybWFsJwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9c21hbGxdOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9c21hbGxdOjpiZWZvcmUgewogICAgY29udGVudDogJ1NtYWxsJwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9bGFyZ2VdOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9bGFyZ2VdOjpiZWZvcmUgewogICAgY29udGVudDogJ0xhcmdlJwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9aHVnZV06OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1odWdlXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdIdWdlJwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9c21hbGxdOjpiZWZvcmUgewogICAgZm9udC1zaXplOiAxMHB4Cn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1sYXJnZV06OmJlZm9yZSB7CiAgICBmb250LXNpemU6IDE4cHgKfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPWh1Z2VdOjpiZWZvcmUgewogICAgZm9udC1zaXplOiAzMnB4Cn0KCi5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIucWwtYmFja2dyb3VuZCAucWwtcGlja2VyLWl0ZW0gewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZgp9CgoucWwtc25vdyAucWwtY29sb3ItcGlja2VyLnFsLWNvbG9yIC5xbC1waWNrZXItaXRlbSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwCn0KCi5xbC10b29sYmFyLnFsLXNub3cgewogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIHBhZGRpbmc6IDhweCAwCn0KCi5xbC10b29sYmFyLnFsLXNub3cgLnFsLWZvcm1hdHMgewogICAgbWFyZ2luLXJpZ2h0OiAxNXB4Cn0KCi5xbC10b29sYmFyLnFsLXNub3cgLnFsLXBpY2tlci1sYWJlbCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudAp9CgoucWwtdG9vbGJhci5xbC1zbm93IC5xbC1waWNrZXItb3B0aW9ucyB7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAuMikgMCAycHggOHB4OwogICAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAuMikgMCAycHggOHB4Cn0KCi5xbC10b29sYmFyLnFsLXNub3cgLnFsLXBpY2tlci5xbC1leHBhbmRlZCAucWwtcGlja2VyLWxhYmVsIHsKICAgIGJvcmRlci1jb2xvcjogI2NjYwp9CgoucWwtdG9vbGJhci5xbC1zbm93IC5xbC1waWNrZXIucWwtZXhwYW5kZWQgLnFsLXBpY2tlci1vcHRpb25zIHsKICAgIGJvcmRlci1jb2xvcjogI2NjYwp9CgoucWwtdG9vbGJhci5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIgLnFsLXBpY2tlci1pdGVtLnFsLXNlbGVjdGVkLAoucWwtdG9vbGJhci5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIgLnFsLXBpY2tlci1pdGVtOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogIzAwMAp9CgoucWwtdG9vbGJhci5xbC1zbm93Ky5xbC1jb250YWluZXIucWwtc25vdyB7CiAgICBib3JkZXItdG9wOiAwCn0KCi5xbC1zbm93IC5xbC10b29sdGlwIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNXB4ICNkZGQ7CiAgICBib3gtc2hhZG93OiAwIDAgNXB4ICNkZGQ7CiAgICBjb2xvcjogIzQ0NDsKICAgIHBhZGRpbmc6IDVweCAxMnB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcAp9CgoucWwtc25vdyAucWwtdG9vbHRpcDo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJWaXNpdCBVUkw6IjsKICAgIGxpbmUtaGVpZ2h0OiAyNnB4OwogICAgbWFyZ2luLXJpZ2h0OiA4cHgKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAgaW5wdXRbdHlwZT10ZXh0XSB7CiAgICBkaXNwbGF5OiBub25lOwogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGhlaWdodDogMjZweDsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDNweCA1cHg7CiAgICB3aWR0aDogMTcwcHgKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAgYS5xbC1wcmV2aWV3IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1heC13aWR0aDogMjAwcHg7CiAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3AKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAgYS5xbC1hY3Rpb246OmFmdGVyIHsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNjY2M7CiAgICBjb250ZW50OiAnRWRpdCc7CiAgICBtYXJnaW4tbGVmdDogMTZweDsKICAgIHBhZGRpbmctcmlnaHQ6IDhweAp9CgoucWwtc25vdyAucWwtdG9vbHRpcCBhLnFsLXJlbW92ZTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdSZW1vdmUnOwogICAgbWFyZ2luLWxlZnQ6IDhweAp9CgoucWwtc25vdyAucWwtdG9vbHRpcCBhIHsKICAgIGxpbmUtaGVpZ2h0OiAyNnB4Cn0KCi5xbC1zbm93IC5xbC10b29sdGlwLnFsLWVkaXRpbmcgYS5xbC1wcmV2aWV3LAoucWwtc25vdyAucWwtdG9vbHRpcC5xbC1lZGl0aW5nIGEucWwtcmVtb3ZlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAucWwtZWRpdGluZyBpbnB1dFt0eXBlPXRleHRdIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgoucWwtc25vdyAucWwtdG9vbHRpcC5xbC1lZGl0aW5nIGEucWwtYWN0aW9uOjphZnRlciB7CiAgICBib3JkZXItcmlnaHQ6IDA7CiAgICBjb250ZW50OiAnU2F2ZSc7CiAgICBwYWRkaW5nLXJpZ2h0OiAwCn0KCi5xbC1zbm93IC5xbC10b29sdGlwW2RhdGEtbW9kZT1saW5rXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJFbnRlciBsaW5rOiIKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXBbZGF0YS1tb2RlPWZvcm11bGFdOjpiZWZvcmUgewogICAgY29udGVudDogIkVudGVyIGZvcm11bGE6Igp9CgoucWwtc25vdyAucWwtdG9vbHRpcFtkYXRhLW1vZGU9dmlkZW9dOjpiZWZvcmUgewogICAgY29udGVudDogIkVudGVyIHZpZGVvOiIKfQoKLnFsLXNub3cgYSB7CiAgICBjb2xvcjogIzA2Ywp9CgoucWwtY29udGFpbmVyLnFsLXNub3cgewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2MKfQ=="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/metform/public/assets/js/htm.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.024Z","timestamp":1785130090024,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/metform/public/assets/js/htm.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=glSPK78fta1FOvEEU9RXfnbHdm1SMAomAhA2oVl3du4ONsdVChdGhsY8R7UGAwOwm67%2F40r1JNFZ0srn3Z8XAfEt1jYT6RcgQI1Kus9UAHh%2FQhCvFlZkyh6WVIE%2Fm1bVvbYXwQxQpQ%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ae46120a-OSL\r\ncontent-length: 774\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":2050,"size_decoded":1599,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (568)","md5":"fdfac163c1e50619e8e32536bd185cdc","sha1":"e951d6d40b6fece1ecbd306dc0011e66f7fdc8eb","sha256":"cc7b1bdc9f993592735bf965c9a0fa2c513e101535e1f601f0164120bfe3df11","sha512":"b49aca17ab4f8185c5ccc980a91d769c47b3a7aa261f2a460de04332db71369b4c7df12433f83fa051d11c2cf0a4e2fb567611ff81d716195bb2e27a36c67c87","ssdeep":"","tlshash":"9341f1e193e62138915fe072563a8c01b1bc1c59628cf80d7e2c12d5cf168654ffced5","first_seen":"2026-07-27T03:56:42.509207Z","last_seen":"2026-07-27T05:30:59.832109Z","times_seen":6,"resource_available":true,"data":"ISBmdW5jdGlvbigpIHsKICAgIHZhciBuID0gZnVuY3Rpb24odCwgZSwgcywgdSkgewogICAgICAgICAgICB2YXIgcjsKICAgICAgICAgICAgZVswXSA9IDA7CiAgICAgICAgICAgIGZvciAodmFyIGggPSAxOyBoIDwgZS5sZW5ndGg7IGgrKykgewogICAgICAgICAgICAgICAgdmFyIHAgPSBlW2grK10sCiAgICAgICAgICAgICAgICAgICAgYSA9IGVbaF0gPyAoZVswXSB8PSBwID8gMSA6IDIsIHNbZVtoKytdXSkgOiBlWysraF07CiAgICAgICAgICAgICAgICAzID09PSBwID8gdVswXSA9IGEgOiA0ID09PSBwID8gdVsxXSA9IE9iamVjdC5hc3NpZ24odVsxXSB8fCB7fSwgYSkgOiA1ID09PSBwID8gKHVbMV0gPSB1WzFdIHx8IHt9KVtlWysraF1dID0gYSA6IDYgPT09IHAgPyB1WzFdW2VbKytoXV0gKz0gYSArICIiIDogcCA/IChyID0gdC5hcHBseShhLCBuKHQsIGEsIHMsIFsiIiwgbnVsbF0pKSwgdS5wdXNoKHIpLCBhWzBdID8gZVswXSB8PSAyIDogKGVbaCAtIDJdID0gMCwgZVtoXSA9IHIpKSA6IHUucHVzaChhKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB1CiAgICAgICAgfSwKICAgICAgICB0ID0gbmV3IE1hcCwKICAgICAgICBlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgcyA9IHQuZ2V0KHRoaXMpOwogICAgICAgICAgICByZXR1cm4gcyB8fCAocyA9IG5ldyBNYXAsIHQuc2V0KHRoaXMsIHMpKSwgKHMgPSBuKHRoaXMsIHMuZ2V0KGUpIHx8IChzLnNldChlLCBzID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCwgZSwgcyA9IDEsIHUgPSAiIiwgciA9ICIiLCBoID0gWzBdLCBwID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAxID09PSBzICYmIChuIHx8ICh1ID0gdS5yZXBsYWNlKC9eXHMqXG5ccyp8XHMqXG5ccyokL2csICIiKSkpID8gaC5wdXNoKDAsIG4sIHUpIDogMyA9PT0gcyAmJiAobiB8fCB1KSA/IChoLnB1c2goMywgbiwgdSksIHMgPSAyKSA6IDIgPT09IHMgJiYgIi4uLiIgPT09IHUgJiYgbiA/IGgucHVzaCg0LCBuLCAwKSA6IDIgPT09IHMgJiYgdSAmJiAhbiA/IGgucHVzaCg1LCAwLCAhMCwgdSkgOiBzID49IDUgJiYgKCh1IHx8ICFuICYmIDUgPT09IHMpICYmIChoLnB1c2gocywgMCwgdSwgZSksIHMgPSA2KSwgbiAmJiAoaC5wdXNoKHMsIG4sIDAsIGUpLCBzID0gNikpLCB1ID0gIiIKICAgICAgICAgICAgICAgICAgICB9LCBhID0gMDsgYSA8IG4ubGVuZ3RoOyBhKyspIHsKICAgICAgICAgICAgICAgICAgICBhICYmICgxID09PSBzICYmIHAoKSwgcChhKSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBuW2FdLmxlbmd0aDsgbysrKSB0ID0gblthXVtvXSwgMSA9PT0gcyA/ICI8IiA9PT0gdCA/IChwKCksIGggPSBbaF0sIHMgPSAzKSA6IHUgKz0gdCA6IDQgPT09IHMgPyAiLS0iID09PSB1ICYmICI+IiA9PT0gdCA/IChzID0gMSwgdSA9ICIiKSA6IHUgPSB0ICsgdVswXSA6IHIgPyB0ID09PSByID8gciA9ICIiIDogdSArPSB0IDogJyInID09PSB0IHx8ICInIiA9PT0gdCA/IHIgPSB0IDogIj4iID09PSB0ID8gKHAoKSwgcyA9IDEpIDogcyAmJiAoIj0iID09PSB0ID8gKHMgPSA1LCBlID0gdSwgdSA9ICIiKSA6ICIvIiA9PT0gdCAmJiAocyA8IDUgfHwgIj4iID09PSBuW2FdW28gKyAxXSkgPyAocCgpLCAzID09PSBzICYmIChoID0gaFswXSksIHMgPSBoLCAoaCA9IGhbMF0pLnB1c2goMiwgMCwgcyksIHMgPSAwKSA6ICIgIiA9PT0gdCB8fCAiXHQiID09PSB0IHx8ICJcbiIgPT09IHQgfHwgIlxyIiA9PT0gdCA/IChwKCksIHMgPSAyKSA6IHUgKz0gdCksIDMgPT09IHMgJiYgIiEtLSIgPT09IHUgJiYgKHMgPSA0LCBoID0gaFswXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBwKCksIGgKICAgICAgICAgICAgfShlKSksIHMpLCBhcmd1bWVudHMsIFtdKSkubGVuZ3RoID4gMSA/IHMgOiBzWzBdCiAgICAgICAgfTsKICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA9IGUgOiBzZWxmLmh0bSA9IGUKfSgpOw=="}},"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":"dreamspinfluence.com/assets/wp-includes/js/jquery/ui/core.min.js?ver=1.13.2","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.040Z","timestamp":1785130090040,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-includes/js/jquery/ui/core.min.js?ver=1.13.2 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=v6V1H00%2F6MJYDrIfHpnfJsBHWZII3xYonSIZlc9FSgvoqur0gxiNiqN1mcjRUsysS0GFDb50FQzinwduKYTtp0x4dpQCCi%2BWxLrgKr2ArHtQDi%2B7yXD5tdf7hElebpG7%2BnnGpo1quA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ce56120a-OSL\r\ncontent-length: 7823\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":33783,"size_decoded":8651,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (1005)","md5":"e4e8257fe9cfc06e18f707b383fd50c0","sha1":"9238d42f5923a8aad6c139a3c03a0f8c878a63e9","sha256":"7ad8695538b51ac6ae56a87b8261f2d2e3f89d1b654626db93b54c5f57d3798a","sha512":"402f763a9e76e6a2c4f1197f69bdfc50c1a0b8f16b0f91cb637c684c1b0a160c880ec959d7b857f8886601bf90862cb669cc02ee1d7b65cf0f1bdb055211bfc1","ssdeep":"384:CrkpFRdCeNLzKjluPjhC0tc0+hq3fWWsx+aWJ43bv7K39AUb4s3iVpmnoC/jMbtx:BGjyd2Px+Xr9Tb4sMMoC/jw","tlshash":"a1e2650d67e12525d697f03a5c2f8949f232a09f2749ac4cbd5c82e44f1a83882f7fb5","first_seen":"2023-11-16T04:44:13Z","last_seen":"2026-07-27T05:30:59.785775Z","times_seen":11,"resource_available":true,"data":"LyohIGpRdWVyeSBVSSAtIHYxLjEzLjIgLSAyMDIyLTA3LTE0CiAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICogSW5jbHVkZXM6IHdpZGdldC5qcywgcG9zaXRpb24uanMsIGRhdGEuanMsIGRpc2FibGUtc2VsZWN0aW9uLmpzLCBlZmZlY3QuanMsIGVmZmVjdHMvZWZmZWN0LWJsaW5kLmpzLCBlZmZlY3RzL2VmZmVjdC1ib3VuY2UuanMsIGVmZmVjdHMvZWZmZWN0LWNsaXAuanMsIGVmZmVjdHMvZWZmZWN0LWRyb3AuanMsIGVmZmVjdHMvZWZmZWN0LWV4cGxvZGUuanMsIGVmZmVjdHMvZWZmZWN0LWZhZGUuanMsIGVmZmVjdHMvZWZmZWN0LWZvbGQuanMsIGVmZmVjdHMvZWZmZWN0LWhpZ2hsaWdodC5qcywgZWZmZWN0cy9lZmZlY3QtcHVmZi5qcywgZWZmZWN0cy9lZmZlY3QtcHVsc2F0ZS5qcywgZWZmZWN0cy9lZmZlY3Qtc2NhbGUuanMsIGVmZmVjdHMvZWZmZWN0LXNoYWtlLmpzLCBlZmZlY3RzL2VmZmVjdC1zaXplLmpzLCBlZmZlY3RzL2VmZmVjdC1zbGlkZS5qcywgZWZmZWN0cy9lZmZlY3QtdHJhbnNmZXIuanMsIGZvY3VzYWJsZS5qcywgZm9ybS1yZXNldC1taXhpbi5qcywganF1ZXJ5LXBhdGNoLmpzLCBrZXljb2RlLmpzLCBsYWJlbHMuanMsIHNjcm9sbC1wYXJlbnQuanMsIHRhYmJhYmxlLmpzLCB1bmlxdWUtaWQuanMsIHdpZGdldHMvYWNjb3JkaW9uLmpzLCB3aWRnZXRzL2F1dG9jb21wbGV0ZS5qcywgd2lkZ2V0cy9idXR0b24uanMsIHdpZGdldHMvY2hlY2tib3hyYWRpby5qcywgd2lkZ2V0cy9jb250cm9sZ3JvdXAuanMsIHdpZGdldHMvZGF0ZXBpY2tlci5qcywgd2lkZ2V0cy9kaWFsb2cuanMsIHdpZGdldHMvZHJhZ2dhYmxlLmpzLCB3aWRnZXRzL2Ryb3BwYWJsZS5qcywgd2lkZ2V0cy9tZW51LmpzLCB3aWRnZXRzL21vdXNlLmpzLCB3aWRnZXRzL3Byb2dyZXNzYmFyLmpzLCB3aWRnZXRzL3Jlc2l6YWJsZS5qcywgd2lkZ2V0cy9zZWxlY3RhYmxlLmpzLCB3aWRnZXRzL3NlbGVjdG1lbnUuanMsIHdpZGdldHMvc2xpZGVyLmpzLCB3aWRnZXRzL3NvcnRhYmxlLmpzLCB3aWRnZXRzL3NwaW5uZXIuanMsIHdpZGdldHMvdGFicy5qcywgd2lkZ2V0cy90b29sdGlwLmpzCiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQgKi8KISBmdW5jdGlvbih0KSB7CiAgICAidXNlIHN0cmljdCI7CiAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImpxdWVyeSJdLCB0KSA6IHQoalF1ZXJ5KQp9KGZ1bmN0aW9uKHgpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciB0LCBlLCBpLCBuLCBXLCBDLCBvLCBzLCByLCBsLCBhLCBoLCB1OwoKICAgIGZ1bmN0aW9uIEUodCwgZSwgaSkgewogICAgICAgIHJldHVybiBbcGFyc2VGbG9hdCh0WzBdKSAqIChhLnRlc3QodFswXSkgPyBlIC8gMTAwIDogMSksIHBhcnNlRmxvYXQodFsxXSkgKiAoYS50ZXN0KHRbMV0pID8gaSAvIDEwMCA6IDEpXQogICAgfQoKICAgIGZ1bmN0aW9uIEwodCwgZSkgewogICAgICAgIHJldHVybiBwYXJzZUludCh4LmNzcyh0LCBlKSwgMTApIHx8IDAKICAgIH0KCiAgICBmdW5jdGlvbiBOKHQpIHsKICAgICAgICByZXR1cm4gbnVsbCAhPSB0ICYmIHQgPT09IHQud2luZG93CiAgICB9CiAgICB4LnVpID0geC51aSB8fCB7fSwgeC51aS52ZXJzaW9uID0gIjEuMTMuMiIsCiAgICAgICAgLyohCiAgICAgICAgICogalF1ZXJ5IFVJIDpkYXRhIDEuMTMuMgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICAgICAgICAgKgogICAgICAgICAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAgICAgICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICAgICAgICAgKi8KICAgICAgICB4LmV4dGVuZCh4LmV4cHIucHNldWRvcywgewogICAgICAgICAgICBkYXRhOiB4LmV4cHIuY3JlYXRlUHNldWRvID8geC5leHByLmNyZWF0ZVBzZXVkbyhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIXguZGF0YSh0LCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSA6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhIXguZGF0YSh0LCBpWzNdKQogICAgICAgICAgICB9CiAgICAgICAgfSksCiAgICAgICAgLyohCiAgICAgICAgICogalF1ZXJ5IFVJIERpc2FibGUgU2VsZWN0aW9uIDEuMTMuMgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICAgICAgICAgKgogICAgICAgICAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAgICAgICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICAgICAgICAgKi8KICAgICAgICB4LmZuLmV4dGVuZCh7CiAgICAgICAgICAgIGRpc2FibGVTZWxlY3Rpb246ICh0ID0gIm9uc2VsZWN0c3RhcnQiIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpID8gInNlbGVjdHN0YXJ0IiA6ICJtb3VzZWRvd24iLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKHQgKyAiLnVpLWRpc2FibGVTZWxlY3Rpb24iLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSwKICAgICAgICAgICAgZW5hYmxlU2VsZWN0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9mZigiLnVpLWRpc2FibGVTZWxlY3Rpb24iKQogICAgICAgICAgICB9CiAgICAgICAgfSksCiAgICAgICAgLyohCiAgICAgICAgICogalF1ZXJ5IFVJIEZvY3VzYWJsZSAxLjEzLjIKICAgICAgICAgKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAgICAgICAgICoKICAgICAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICAgICAgICAgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgICAgICAgICovCiAgICAgICAgeC51aS5mb2N1c2FibGUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBpLCBuLCBvLCBzID0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICByZXR1cm4gImFyZWEiID09PSBzID8gKG8gPSAoaSA9IHQucGFyZW50Tm9kZSkubmFtZSwgISghdC5ocmVmIHx8ICFvIHx8ICJtYXAiICE9PSBpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpICYmIDAgPCAoaSA9IHgoImltZ1t1c2VtYXA9JyMiICsgbyArICInXSIpKS5sZW5ndGggJiYgaS5pcygiOnZpc2libGUiKSkgOiAoL14oaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QpJC8udGVzdChzKSA/IChuID0gIXQuZGlzYWJsZWQpICYmIChvID0geCh0KS5jbG9zZXN0KCJmaWVsZHNldCIpWzBdKSAmJiAobiA9ICFvLmRpc2FibGVkKSA6IG4gPSAiYSIgPT09IHMgJiYgdC5ocmVmIHx8IGUsIG4gJiYgeCh0KS5pcygiOnZpc2libGUiKSAmJiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHQuY3NzKCJ2aXNpYmlsaXR5Iik7CiAgICAgICAgICAgICAgICBmb3IgKDsKICAgICAgICAgICAgICAgICAgICAiaW5oZXJpdCIgPT09IGU7KSB0ID0gdC5wYXJlbnQoKSwgZSA9IHQuY3NzKCJ2aXNpYmlsaXR5Iik7CiAgICAgICAgICAgICAgICByZXR1cm4gInZpc2libGUiID09PSBlCiAgICAgICAgICAgIH0oeCh0KSkpCiAgICAgICAgfSwgeC5leHRlbmQoeC5leHByLnBzZXVkb3MsIHsKICAgICAgICAgICAgZm9jdXNhYmxlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4geC51aS5mb2N1c2FibGUodCwgbnVsbCAhPSB4LmF0dHIodCwgInRhYmluZGV4IikpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgeC5mbi5fZm9ybSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHRoaXNbMF0uZm9ybSA/IHRoaXMuY2xvc2VzdCgiZm9ybSIpIDogeCh0aGlzWzBdLmZvcm0pCiAgICAgICAgfSwKICAgICAgICAvKiEKICAgICAgICAgKiBqUXVlcnkgVUkgRm9ybSBSZXNldCBNaXhpbiAxLjEzLjIKICAgICAgICAgKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAgICAgICAgICoKICAgICAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICAgICAgICAgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgICAgICAgICovCiAgICAgICAgeC51aS5mb3JtUmVzZXRNaXhpbiA9IHsKICAgICAgICAgICAgX2Zvcm1SZXNldEhhbmRsZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB4KHRoaXMpOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZGF0YSgidWktZm9ybS1yZXNldC1pbnN0YW5jZXMiKTsKICAgICAgICAgICAgICAgICAgICB4LmVhY2godCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9iaW5kRm9ybVJlc2V0SGFuZGxlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZWxlbWVudC5fZm9ybSgpLCB0aGlzLmZvcm0ubGVuZ3RoICYmICgodCA9IHRoaXMuZm9ybS5kYXRhKCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIpIHx8IFtdKS5sZW5ndGggfHwgdGhpcy5mb3JtLm9uKCJyZXNldC51aS1mb3JtLXJlc2V0IiwgdGhpcy5fZm9ybVJlc2V0SGFuZGxlciksIHQucHVzaCh0aGlzKSwgdGhpcy5mb3JtLmRhdGEoInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzIiwgdCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91bmJpbmRGb3JtUmVzZXRIYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgdGhpcy5mb3JtLmxlbmd0aCAmJiAoKHQgPSB0aGlzLmZvcm0uZGF0YSgidWktZm9ybS1yZXNldC1pbnN0YW5jZXMiKSkuc3BsaWNlKHguaW5BcnJheSh0aGlzLCB0KSwgMSksIHQubGVuZ3RoID8gdGhpcy5mb3JtLmRhdGEoInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzIiwgdCkgOiB0aGlzLmZvcm0ucmVtb3ZlRGF0YSgidWktZm9ybS1yZXNldC1pbnN0YW5jZXMiKS5vZmYoInJlc2V0LnVpLWZvcm0tcmVzZXQiKSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHgudWkuaWUgPSAhIS9tc2llIFtcdy5dKy8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpLAogICAgICAgIC8qIQogICAgICAgICAqIGpRdWVyeSBVSSBTdXBwb3J0IGZvciBqUXVlcnkgY29yZSAxLjgueCBhbmQgbmV3ZXIgMS4xMy4yCiAgICAgICAgICogaHR0cDovL2pxdWVyeXVpLmNvbQogICAgICAgICAqCiAgICAgICAgICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICAgICAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAgICAgICAgICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogICAgICAgICAqCiAgICAgICAgICovCiAgICAgICAgeC5leHByLnBzZXVkb3MgfHwgKHguZXhwci5wc2V1ZG9zID0geC5leHByWyI6Il0pLCB4LnVuaXF1ZVNvcnQgfHwgKHgudW5pcXVlU29ydCA9IHgudW5pcXVlKSwgeC5lc2NhcGVTZWxlY3RvciB8fCAoZSA9IC8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXHg4MC1cdUZGRkZcdy1dL2csIGkgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHJldHVybiBlID8gIlwwIiA9PT0gdCA/ICLvv70iIDogdC5zbGljZSgwLCAtMSkgKyAiXFwiICsgdC5jaGFyQ29kZUF0KHQubGVuZ3RoIC0gMSkudG9TdHJpbmcoMTYpICsgIiAiIDogIlxcIiArIHQKICAgICAgICB9LCB4LmVzY2FwZVNlbGVjdG9yID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gKHQgKyAiIikucmVwbGFjZShlLCBpKQogICAgICAgIH0pLCB4LmZuLmV2ZW4gJiYgeC5mbi5vZGQgfHwgeC5mbi5leHRlbmQoewogICAgICAgICAgICBldmVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJSAyID09IDAKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9kZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICUgMiA9PSAxCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSksCiAgICAgICAgLyohCiAgICAgICAgICogalF1ZXJ5IFVJIEtleWNvZGUgMS4xMy4yCiAgICAgICAgICogaHR0cDovL2pxdWVyeXVpLmNvbQogICAgICAgICAqCiAgICAgICAgICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICAgICAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAgICAgICAgICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogICAgICAgICAqLwogICAgICAgIHgudWkua2V5Q29kZSA9IHsKICAgICAgICAgICAgQkFDS1NQQUNFOiA4LAogICAgICAgICAgICBDT01NQTogMTg4LAogICAgICAgICAgICBERUxFVEU6IDQ2LAogICAgICAgICAgICBET1dOOiA0MCwKICAgICAgICAgICAgRU5EOiAzNSwKICAgICAgICAgICAgRU5URVI6IDEzLAogICAgICAgICAgICBFU0NBUEU6IDI3LAogICAgICAgICAgICBIT01FOiAzNiwKICAgICAgICAgICAgTEVGVDogMzcsCiAgICAgICAgICAgIFBBR0VfRE9XTjogMzQsCiAgICAgICAgICAgIFBBR0VfVVA6IDMzLAogICAgICAgICAgICBQRVJJT0Q6IDE5MCwKICAgICAgICAgICAgUklHSFQ6IDM5LAogICAgICAgICAgICBTUEFDRTogMzIsCiAgICAgICAgICAgIFRBQjogOSwKICAgICAgICAgICAgVVA6IDM4CiAgICAgICAgfSwKICAgICAgICAvKiEKICAgICAgICAgKiBqUXVlcnkgVUkgTGFiZWxzIDEuMTMuMgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICAgICAgICAgKgogICAgICAgICAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAgICAgICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICAgICAgICAgKi8KICAgICAgICB4LmZuLmxhYmVscyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCwgZSwgaTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoID8gdGhpc1swXS5sYWJlbHMgJiYgdGhpc1swXS5sYWJlbHMubGVuZ3RoID8gdGhpcy5wdXNoU3RhY2sodGhpc1swXS5sYWJlbHMpIDogKGUgPSB0aGlzLmVxKDApLnBhcmVudHMoImxhYmVsIiksICh0ID0gdGhpcy5hdHRyKCJpZCIpKSAmJiAoaSA9IChpID0gdGhpcy5lcSgwKS5wYXJlbnRzKCkubGFzdCgpKS5hZGQoKGkubGVuZ3RoID8gaSA6IHRoaXMpLnNpYmxpbmdzKCkpLCB0ID0gImxhYmVsW2Zvcj0nIiArIHguZXNjYXBlU2VsZWN0b3IodCkgKyAiJ10iLCBlID0gZS5hZGQoaS5maW5kKHQpLmFkZEJhY2sodCkpKSwgdGhpcy5wdXNoU3RhY2soZSkpIDogdGhpcy5wdXNoU3RhY2soW10pCiAgICAgICAgfSwgeC51aS5wbHVnaW4gPSB7CiAgICAgICAgICAgIGFkZDogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgdmFyIG4sIG8gPSB4LnVpW3RdLnByb3RvdHlwZTsKICAgICAgICAgICAgICAgIGZvciAobiBpbiBpKSBvLnBsdWdpbnNbbl0gPSBvLnBsdWdpbnNbbl0gfHwgW10sIG8ucGx1Z2luc1tuXS5wdXNoKFtlLCBpW25dXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2FsbDogZnVuY3Rpb24odCwgZSwgaSwgbikgewogICAgICAgICAgICAgICAgdmFyIG8sIHMgPSB0LnBsdWdpbnNbZV07CiAgICAgICAgICAgICAgICBpZiAocyAmJiAobiB8fCB0LmVsZW1lbnRbMF0ucGFyZW50Tm9kZSAmJiAxMSAhPT0gdC5lbGVtZW50WzBdLnBhcmVudE5vZGUubm9kZVR5cGUpKQogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDA7IG8gPCBzLmxlbmd0aDsgbysrKSB0Lm9wdGlvbnNbc1tvXVswXV0gJiYgc1tvXVsxXS5hcHBseSh0LmVsZW1lbnQsIGkpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIC8qIQogICAgICAgICAqIGpRdWVyeSBVSSBQb3NpdGlvbiAxLjEzLjIKICAgICAgICAgKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAgICAgICAgICoKICAgICAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICAgICAgICAgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgICAgICAgICoKICAgICAgICAgKiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9wb3NpdGlvbi8KICAgICAgICAgKi8KICAgICAgICBXID0gTWF0aC5tYXgsIEMgPSBNYXRoLmFicywgbyA9IC9sZWZ0fGNlbnRlcnxyaWdodC8sIHMgPSAvdG9wfGNlbnRlcnxib3R0b20vLCByID0gL1tcK1wtXVxkKyhcLltcZF0rKT8lPy8sIGwgPSAvXlx3Ky8sIGEgPSAvJSQvLCBoID0geC5mbi5wb3NpdGlvbiwgeC5wb3NpdGlvbiA9IHsKICAgICAgICAgICAgc2Nyb2xsYmFyV2lkdGg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQsIGUsIGk7CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBuID8gbiA6IChpID0gKGUgPSB4KCI8ZGl2IHN0eWxlPSdkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjIwMHB4O2hlaWdodDoyMDBweDtvdmVyZmxvdzpoaWRkZW47Jz48ZGl2IHN0eWxlPSdoZWlnaHQ6MzAwcHg7d2lkdGg6YXV0bzsnPjwvZGl2PjwvZGl2PiIpKS5jaGlsZHJlbigpWzBdLCB4KCJib2R5IikuYXBwZW5kKGUpLCB0ID0gaS5vZmZzZXRXaWR0aCwgZS5jc3MoIm92ZXJmbG93IiwgInNjcm9sbCIpLCB0ID09PSAoaSA9IGkub2Zmc2V0V2lkdGgpICYmIChpID0gZVswXS5jbGllbnRXaWR0aCksIGUucmVtb3ZlKCksIG4gPSB0IC0gaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0U2Nyb2xsSW5mbzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LmlzV2luZG93IHx8IHQuaXNEb2N1bWVudCA/ICIiIDogdC5lbGVtZW50LmNzcygib3ZlcmZsb3cteCIpLAogICAgICAgICAgICAgICAgICAgIGkgPSB0LmlzV2luZG93IHx8IHQuaXNEb2N1bWVudCA/ICIiIDogdC5lbGVtZW50LmNzcygib3ZlcmZsb3cteSIpLAogICAgICAgICAgICAgICAgICAgIGUgPSAic2Nyb2xsIiA9PT0gZSB8fCAiYXV0byIgPT09IGUgJiYgdC53aWR0aCA8IHQuZWxlbWVudFswXS5zY3JvbGxXaWR0aDsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICJzY3JvbGwiID09PSBpIHx8ICJhdXRvIiA9PT0gaSAmJiB0LmhlaWdodCA8IHQuZWxlbWVudFswXS5zY3JvbGxIZWlnaHQgPyB4LnBvc2l0aW9uLnNjcm9sbGJhcldpZHRoKCkgOiAwLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogZSA/IHgucG9zaXRpb24uc2Nyb2xsYmFyV2lkdGgoKSA6IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0V2l0aGluSW5mbzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB4KHQgfHwgd2luZG93KSwKICAgICAgICAgICAgICAgICAgICBpID0gTihlWzBdKSwKICAgICAgICAgICAgICAgICAgICBuID0gISFlWzBdICYmIDkgPT09IGVbMF0ubm9kZVR5cGU7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgaXNXaW5kb3c6IGksCiAgICAgICAgICAgICAgICAgICAgaXNEb2N1bWVudDogbiwKICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6ICFpICYmICFuID8geCh0KS5vZmZzZXQoKSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzY3JvbGxMZWZ0OiBlLnNjcm9sbExlZnQoKSwKICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IGUuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUub3V0ZXJXaWR0aCgpLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogZS5vdXRlckhlaWdodCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB4LmZuLnBvc2l0aW9uID0gZnVuY3Rpb24oZikgewogICAgICAgICAgICB2YXIgYywgZCwgcCwgZywgbSwgdiwgeSwgdywgYiwgXywgdCwgZTsKICAgICAgICAgICAgcmV0dXJuIGYgJiYgZi5vZiA/ICh2ID0gInN0cmluZyIgPT0gdHlwZW9mKGYgPSB4LmV4dGVuZCh7fSwgZikpLm9mID8geChkb2N1bWVudCkuZmluZChmLm9mKSA6IHgoZi5vZiksIHkgPSB4LnBvc2l0aW9uLmdldFdpdGhpbkluZm8oZi53aXRoaW4pLCB3ID0geC5wb3NpdGlvbi5nZXRTY3JvbGxJbmZvKHkpLCBiID0gKGYuY29sbGlzaW9uIHx8ICJmbGlwIikuc3BsaXQoIiAiKSwgXyA9IHt9LCBlID0gOSA9PT0gKGUgPSAodCA9IHYpWzBdKS5ub2RlVHlwZSA/IHsKICAgICAgICAgICAgICAgIHdpZHRoOiB0LndpZHRoKCksCiAgICAgICAgICAgICAgICBoZWlnaHQ6IHQuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICBvZmZzZXQ6IHsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgbGVmdDogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IDogTihlKSA/IHsKICAgICAgICAgICAgICAgIHdpZHRoOiB0LndpZHRoKCksCiAgICAgICAgICAgICAgICBoZWlnaHQ6IHQuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICBvZmZzZXQ6IHsKICAgICAgICAgICAgICAgICAgICB0b3A6IHQuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICAgICAgbGVmdDogdC5zY3JvbGxMZWZ0KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSA6IGUucHJldmVudERlZmF1bHQgPyB7CiAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgIGhlaWdodDogMCwKICAgICAgICAgICAgICAgIG9mZnNldDogewogICAgICAgICAgICAgICAgICAgIHRvcDogZS5wYWdlWSwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiBlLnBhZ2VYCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICB3aWR0aDogdC5vdXRlcldpZHRoKCksCiAgICAgICAgICAgICAgICBoZWlnaHQ6IHQub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgICAgICAgIG9mZnNldDogdC5vZmZzZXQoKQogICAgICAgICAgICB9LCB2WzBdLnByZXZlbnREZWZhdWx0ICYmIChmLmF0ID0gImxlZnQgdG9wIiksIGQgPSBlLndpZHRoLCBwID0gZS5oZWlnaHQsIG0gPSB4LmV4dGVuZCh7fSwgZyA9IGUub2Zmc2V0KSwgeC5lYWNoKFsibXkiLCAiYXQiXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgZSwgaSA9IChmW3RoaXNdIHx8ICIiKS5zcGxpdCgiICIpOwogICAgICAgICAgICAgICAgKGkgPSAxID09PSBpLmxlbmd0aCA/IG8udGVzdChpWzBdKSA/IGkuY29uY2F0KFsiY2VudGVyIl0pIDogcy50ZXN0KGlbMF0pID8gWyJjZW50ZXIiXS5jb25jYXQoaSkgOiBbImNlbnRlciIsICJjZW50ZXIiXSA6IGkpWzBdID0gby50ZXN0KGlbMF0pID8gaVswXSA6ICJjZW50ZXIiLCBpWzFdID0gcy50ZXN0KGlbMV0pID8gaVsxXSA6ICJjZW50ZXIiLCB0ID0gci5leGVjKGlbMF0pLCBlID0gci5leGVjKGlbMV0pLCBfW3RoaXNdID0gW3QgPyB0WzBdIDogMCwgZSA/IGVbMF0gOiAwXSwgZlt0aGlzXSA9IFtsLmV4ZWMoaVswXSlbMF0sIGwuZXhlYyhpWzFdKVswXV0KICAgICAgICAgICAgfSksIDEgPT09IGIubGVuZ3RoICYmIChiWzFdID0gYlswXSksICJyaWdodCIgPT09IGYuYXRbMF0gPyBtLmxlZnQgKz0gZCA6ICJjZW50ZXIiID09PSBmLmF0WzBdICYmIChtLmxlZnQgKz0gZCAvIDIpLCAiYm90dG9tIiA9PT0gZi5hdFsxXSA/IG0udG9wICs9IHAgOiAiY2VudGVyIiA9PT0gZi5hdFsxXSAmJiAobS50b3AgKz0gcCAvIDIpLCBjID0gRShfLmF0LCBkLCBwKSwgbS5sZWZ0ICs9IGNbMF0sIG0udG9wICs9IGNbMV0sIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBpLCB0LCByID0geCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBsID0gci5vdXRlcldpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgYSA9IHIub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICBlID0gTCh0aGlzLCAibWFyZ2luTGVmdCIpLAogICAgICAgICAgICAgICAgICAgIG4gPSBMKHRoaXMsICJtYXJnaW5Ub3AiKSwKICAgICAgICAgICAgICAgICAgICBvID0gbCArIGUgKyBMKHRoaXMsICJtYXJnaW5SaWdodCIpICsgdy53aWR0aCwKICAgICAgICAgICAgICAgICAgICBzID0gYSArIG4gKyBMKHRoaXMsICJtYXJnaW5Cb3R0b20iKSArIHcuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgIGggPSB4LmV4dGVuZCh7fSwgbSksCiAgICAgICAgICAgICAgICAgICAgdSA9IEUoXy5teSwgci5vdXRlcldpZHRoKCksIHIub3V0ZXJIZWlnaHQoKSk7CiAgICAgICAgICAgICAgICAicmlnaHQiID09PSBmLm15WzBdID8gaC5sZWZ0IC09IGwgOiAiY2VudGVyIiA9PT0gZi5teVswXSAmJiAoaC5sZWZ0IC09IGwgLyAyKSwgImJvdHRvbSIgPT09IGYubXlbMV0gPyBoLnRvcCAtPSBhIDogImNlbnRlciIgPT09IGYubXlbMV0gJiYgKGgudG9wIC09IGEgLyAyKSwgaC5sZWZ0ICs9IHVbMF0sIGgudG9wICs9IHVbMV0sIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogZSwKICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IG4KICAgICAgICAgICAgICAgIH0sIHguZWFjaChbImxlZnQiLCAidG9wIl0sIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB4LnVpLnBvc2l0aW9uW2JbdF1dICYmIHgudWkucG9zaXRpb25bYlt0XV1bZV0oaCwgewogICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRXaWR0aDogZCwKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0SGVpZ2h0OiBwLAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtV2lkdGg6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1IZWlnaHQ6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxpc2lvblBvc2l0aW9uOiBpLAogICAgICAgICAgICAgICAgICAgICAgICBjb2xsaXNpb25XaWR0aDogbywKICAgICAgICAgICAgICAgICAgICAgICAgY29sbGlzaW9uSGVpZ2h0OiBzLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IFtjWzBdICsgdVswXSwgY1sxXSArIHVbMV1dLAogICAgICAgICAgICAgICAgICAgICAgICBteTogZi5teSwKICAgICAgICAgICAgICAgICAgICAgICAgYXQ6IGYuYXQsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbjogeSwKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbTogcgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSwgZi51c2luZyAmJiAodCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGcubGVmdCAtIGgubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUgKyBkIC0gbCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGcudG9wIC0gaC50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuICsgcCAtIGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGcubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGcudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGgubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGgudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWw6IGkgPCAwID8gImxlZnQiIDogMCA8IGUgPyAicmlnaHQiIDogImNlbnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogbyA8IDAgPyAidG9wIiA6IDAgPCBuID8gImJvdHRvbSIgOiAibWlkZGxlIgogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGQgPCBsICYmIEMoZSArIGkpIDwgZCAmJiAocy5ob3Jpem9udGFsID0gImNlbnRlciIpLCBwIDwgYSAmJiBDKG4gKyBvKSA8IHAgJiYgKHMudmVydGljYWwgPSAibWlkZGxlIiksIFcoQyhlKSwgQyhpKSkgPiBXKEMobiksIEMobykpID8gcy5pbXBvcnRhbnQgPSAiaG9yaXpvbnRhbCIgOiBzLmltcG9ydGFudCA9ICJ2ZXJ0aWNhbCIsIGYudXNpbmcuY2FsbCh0aGlzLCB0LCBzKQogICAgICAgICAgICAgICAgfSksIHIub2Zmc2V0KHguZXh0ZW5kKGgsIHsKICAgICAgICAgICAgICAgICAgICB1c2luZzogdAogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKSA6IGguYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgIH0sIHgudWkucG9zaXRpb24gPSB7CiAgICAgICAgICAgIGZpdDogewogICAgICAgICAgICAgICAgbGVmdDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpLCBuID0gZS53aXRoaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLmlzV2luZG93ID8gbi5zY3JvbGxMZWZ0IDogbi5vZmZzZXQubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4ud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmxlZnQgLSBlLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpbkxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvIC0gcywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHMgKyBlLmNvbGxpc2lvbldpZHRoIC0gbiAtIG87CiAgICAgICAgICAgICAgICAgICAgZS5jb2xsaXNpb25XaWR0aCA+IG4gPyAwIDwgciAmJiBsIDw9IDAgPyAoaSA9IHQubGVmdCArIHIgKyBlLmNvbGxpc2lvbldpZHRoIC0gbiAtIG8sIHQubGVmdCArPSByIC0gaSkgOiB0LmxlZnQgPSAhKDAgPCBsICYmIHIgPD0gMCkgJiYgbCA8IHIgPyBvICsgbiAtIGUuY29sbGlzaW9uV2lkdGggOiBvIDogMCA8IHIgPyB0LmxlZnQgKz0gciA6IDAgPCBsID8gdC5sZWZ0IC09IGwgOiB0LmxlZnQgPSBXKHQubGVmdCAtIHMsIHQubGVmdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b3A6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgbiA9IGUud2l0aGluLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gbi5pc1dpbmRvdyA/IG4uc2Nyb2xsVG9wIDogbi5vZmZzZXQudG9wLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZS53aXRoaW4uaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC50b3AgLSBlLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4gLSBzLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gcyArIGUuY29sbGlzaW9uSGVpZ2h0IC0gbyAtIG47CiAgICAgICAgICAgICAgICAgICAgZS5jb2xsaXNpb25IZWlnaHQgPiBvID8gMCA8IHIgJiYgbCA8PSAwID8gKGkgPSB0LnRvcCArIHIgKyBlLmNvbGxpc2lvbkhlaWdodCAtIG8gLSBuLCB0LnRvcCArPSByIC0gaSkgOiB0LnRvcCA9ICEoMCA8IGwgJiYgciA8PSAwKSAmJiBsIDwgciA/IG4gKyBvIC0gZS5jb2xsaXNpb25IZWlnaHQgOiBuIDogMCA8IHIgPyB0LnRvcCArPSByIDogMCA8IGwgPyB0LnRvcCAtPSBsIDogdC50b3AgPSBXKHQudG9wIC0gcywgdC50b3ApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZsaXA6IHsKICAgICAgICAgICAgICAgIGxlZnQ6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUud2l0aGluLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gaS5vZmZzZXQubGVmdCArIGkuc2Nyb2xsTGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpLmlzV2luZG93ID8gaS5zY3JvbGxMZWZ0IDogaS5vZmZzZXQubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQubGVmdCAtIGUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHMgLSBpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gcyArIGUuY29sbGlzaW9uV2lkdGggLSBvIC0gaSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9ICJsZWZ0IiA9PT0gZS5teVswXSA/IC1lLmVsZW1XaWR0aCA6ICJyaWdodCIgPT09IGUubXlbMF0gPyBlLmVsZW1XaWR0aCA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAibGVmdCIgPT09IGUuYXRbMF0gPyBlLnRhcmdldFdpZHRoIDogInJpZ2h0IiA9PT0gZS5hdFswXSA/IC1lLnRhcmdldFdpZHRoIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IC0yICogZS5vZmZzZXRbMF07CiAgICAgICAgICAgICAgICAgICAgciA8IDAgPyAoKG8gPSB0LmxlZnQgKyBsICsgYSArIGggKyBlLmNvbGxpc2lvbldpZHRoIC0gbyAtIG4pIDwgMCB8fCBvIDwgQyhyKSkgJiYgKHQubGVmdCArPSBsICsgYSArIGgpIDogMCA8IHMgJiYgKDAgPCAobiA9IHQubGVmdCAtIGUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCArIGwgKyBhICsgaCAtIGkpIHx8IEMobikgPCBzKSAmJiAodC5sZWZ0ICs9IGwgKyBhICsgaCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b3A6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUud2l0aGluLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gaS5vZmZzZXQudG9wICsgaS5zY3JvbGxUb3AsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkuaXNXaW5kb3cgPyBpLnNjcm9sbFRvcCA6IGkub2Zmc2V0LnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQudG9wIC0gZS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3AsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBzIC0gaSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMgKyBlLmNvbGxpc2lvbkhlaWdodCAtIG8gLSBpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gInRvcCIgPT09IGUubXlbMV0gPyAtZS5lbGVtSGVpZ2h0IDogImJvdHRvbSIgPT09IGUubXlbMV0gPyBlLmVsZW1IZWlnaHQgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gInRvcCIgPT09IGUuYXRbMV0gPyBlLnRhcmdldEhlaWdodCA6ICJib3R0b20iID09PSBlLmF0WzFdID8gLWUudGFyZ2V0SGVpZ2h0IDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IC0yICogZS5vZmZzZXRbMV07CiAgICAgICAgICAgICAgICAgICAgciA8IDAgPyAoKG8gPSB0LnRvcCArIGwgKyBhICsgaCArIGUuY29sbGlzaW9uSGVpZ2h0IC0gbyAtIG4pIDwgMCB8fCBvIDwgQyhyKSkgJiYgKHQudG9wICs9IGwgKyBhICsgaCkgOiAwIDwgcyAmJiAoMCA8IChuID0gdC50b3AgLSBlLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCArIGwgKyBhICsgaCAtIGkpIHx8IEMobikgPCBzKSAmJiAodC50b3AgKz0gbCArIGEgKyBoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBmbGlwZml0OiB7CiAgICAgICAgICAgICAgICBsZWZ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB4LnVpLnBvc2l0aW9uLmZsaXAubGVmdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCB4LnVpLnBvc2l0aW9uLmZpdC5sZWZ0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHgudWkucG9zaXRpb24uZmxpcC50b3AuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgeC51aS5wb3NpdGlvbi5maXQudG9wLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHgudWkuc2FmZUFjdGl2ZUVsZW1lbnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaSA9IGUuYWN0aXZlRWxlbWVudAogICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICBpID0gZS5ib2R5CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGkgPSAoaSA9IGkgfHwgZS5ib2R5KS5ub2RlTmFtZSA/IGkgOiBlLmJvZHkKICAgICAgICB9LCB4LnVpLnNhZmVCbHVyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB0ICYmICJib2R5IiAhPT0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICYmIHgodCkudHJpZ2dlcigiYmx1ciIpCiAgICAgICAgfSwKICAgICAgICAvKiEKICAgICAgICAgKiBqUXVlcnkgVUkgU2Nyb2xsIFBhcmVudCAxLjEzLjIKICAgICAgICAgKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAgICAgICAgICoKICAgICAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICAgICAgICAgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgICAgICAgICovCiAgICAgICAgeC5mbi5zY3JvbGxQYXJlbnQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5jc3MoInBvc2l0aW9uIiksCiAgICAgICAgICAgICAgICBpID0gImFic29sdXRlIiA9PT0gZSwKICAgICAgICAgICAgICAgIG4gPSB0ID8gLyhhdXRvfHNjcm9sbHxoaWRkZW4pLyA6IC8oYXV0b3xzY3JvbGwpLywKICAgICAgICAgICAgICAgIHQgPSB0aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB4KHRoaXMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAoIWkgfHwgInN0YXRpYyIgIT09IHQuY3NzKCJwb3NpdGlvbiIpKSAmJiBuLnRlc3QodC5jc3MoIm92ZXJmbG93IikgKyB0LmNzcygib3ZlcmZsb3cteSIpICsgdC5jc3MoIm92ZXJmbG93LXgiKSkKICAgICAgICAgICAgICAgIH0pLmVxKDApOwogICAgICAgICAgICByZXR1cm4gImZpeGVkIiAhPT0gZSAmJiB0Lmxlbmd0aCA/IHQgOiB4KHRoaXNbMF0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCkKICAgICAgICB9LAogICAgICAgIC8qIQogICAgICAgICAqIGpRdWVyeSBVSSBUYWJiYWJsZSAxLjEzLjIKICAgICAgICAgKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAgICAgICAgICoKICAgICAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICAgICAgICAgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgICAgICAgICovCiAgICAgICAgeC5leHRlbmQoeC5leHByLnBzZXVkb3MsIHsKICAgICAgICAgICAgdGFiYmFibGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0geC5hdHRyKHQsICJ0YWJpbmRleCIpLAogICAgICAgICAgICAgICAgICAgIGkgPSBudWxsICE9IGU7CiAgICAgICAgICAgICAgICByZXR1cm4gKCFpIHx8IDAgPD0gZSkgJiYgeC51aS5mb2N1c2FibGUodCwgaSkKICAgICAgICAgICAgfQogICAgICAgIH0pLAogICAgICAgIC8qIQogICAgICAgICAqIGpRdWVyeSBVSSBVbmlxdWUgSUQgMS4xMy4yCiAgICAgICAgICogaHR0cDovL2pxdWVyeXVpLmNvbQogICAgICAgICAqCiAgICAgICAgICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICAgICAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAgICAgICAgICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogICAgICAgICAqLwogICAgICAgIHguZm4uZXh0ZW5kKHsKICAgICAgICAgICAgdW5pcXVlSWQ6ICh1ID0gMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaWQgfHwgKHRoaXMuaWQgPSAidWktaWQtIiArICsrdSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pLAogICAgICAgICAgICByZW1vdmVVbmlxdWVJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIC9edWktaWQtXGQrJC8udGVzdCh0aGlzLmlkKSAmJiB4KHRoaXMpLnJlbW92ZUF0dHIoImlkIikKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIC8qIQogICAgICogalF1ZXJ5IFVJIFdpZGdldCAxLjEzLjIKICAgICAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICAgICAqCiAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogICAgICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogICAgICovCiAgICB2YXIgZiwgYyA9IDAsCiAgICAgICAgZCA9IEFycmF5LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICBwID0gQXJyYXkucHJvdG90eXBlLnNsaWNlOwogICAgeC5jbGVhbkRhdGEgPSAoZiA9IHguY2xlYW5EYXRhLCBmdW5jdGlvbih0KSB7CiAgICAgICAgZm9yICh2YXIgZSwgaSwgbiA9IDA7IG51bGwgIT0gKGkgPSB0W25dKTsgbisrKShlID0geC5fZGF0YShpLCAiZXZlbnRzIikpICYmIGUucmVtb3ZlICYmIHgoaSkudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpOwogICAgICAgIGYodCkKICAgIH0pLCB4LndpZGdldCA9IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICB2YXIgbiwgbywgcywgciA9IHt9LAogICAgICAgICAgICBsID0gdC5zcGxpdCgiLiIpWzBdLAogICAgICAgICAgICBhID0gbCArICItIiArICh0ID0gdC5zcGxpdCgiLiIpWzFdKTsKICAgICAgICByZXR1cm4gZSB8fCAoZSA9IGksIGkgPSB4LldpZGdldCksIEFycmF5LmlzQXJyYXkoZSkgJiYgKGUgPSB4LmV4dGVuZC5hcHBseShudWxsLCBbe31dLmNvbmNhdChlKSkpLCB4LmV4cHIucHNldWRvc1thLnRvTG93ZXJDYXNlKCldID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gISF4LmRhdGEodCwgYSkKICAgICAgICB9LCB4W2xdID0geFtsXSB8fCB7fSwgbiA9IHhbbF1bdF0sIG8gPSB4W2xdW3RdID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICBpZiAoIXRoaXMgfHwgIXRoaXMuX2NyZWF0ZVdpZGdldCkgcmV0dXJuIG5ldyBvKHQsIGUpOwogICAgICAgICAgICBhcmd1bWVudHMubGVuZ3RoICYmIHRoaXMuX2NyZWF0ZVdpZGdldCh0LCBlKQogICAgICAgIH0sIHguZXh0ZW5kKG8sIG4sIHsKICAgICAgICAgICAgdmVyc2lvbjogZS52ZXJzaW9uLAogICAgICAgICAgICBfcHJvdG86IHguZXh0ZW5kKHt9LCBlKSwKICAgICAgICAgICAgX2NoaWxkQ29uc3RydWN0b3JzOiBbXQogICAgICAgIH0pLCAocyA9IG5ldyBpKS5vcHRpb25zID0geC53aWRnZXQuZXh0ZW5kKHt9LCBzLm9wdGlvbnMpLCB4LmVhY2goZSwgZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICBmdW5jdGlvbiBvKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkucHJvdG90eXBlW2VdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gcyh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaS5wcm90b3R5cGVbZV0uYXBwbHkodGhpcywgdCkKICAgICAgICAgICAgfQogICAgICAgICAgICByW2VdID0gImZ1bmN0aW9uIiAhPSB0eXBlb2YgbiA/IG4gOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBlID0gdGhpcy5fc3VwZXIsCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuX3N1cGVyQXBwbHk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VwZXIgPSBvLCB0aGlzLl9zdXBlckFwcGx5ID0gcywgdCA9IG4uYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdGhpcy5fc3VwZXIgPSBlLCB0aGlzLl9zdXBlckFwcGx5ID0gaSwgdAogICAgICAgICAgICB9CiAgICAgICAgfSksIG8ucHJvdG90eXBlID0geC53aWRnZXQuZXh0ZW5kKHMsIHsKICAgICAgICAgICAgd2lkZ2V0RXZlbnRQcmVmaXg6IG4gJiYgcy53aWRnZXRFdmVudFByZWZpeCB8fCB0CiAgICAgICAgfSwgciwgewogICAgICAgICAgICBjb25zdHJ1Y3RvcjogbywKICAgICAgICAgICAgbmFtZXNwYWNlOiBsLAogICAgICAgICAgICB3aWRnZXROYW1lOiB0LAogICAgICAgICAgICB3aWRnZXRGdWxsTmFtZTogYQogICAgICAgIH0pLCBuID8gKHguZWFjaChuLl9jaGlsZENvbnN0cnVjdG9ycywgZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgaSA9IGUucHJvdG90eXBlOwogICAgICAgICAgICB4LndpZGdldChpLm5hbWVzcGFjZSArICIuIiArIGkud2lkZ2V0TmFtZSwgbywgZS5fcHJvdG8pCiAgICAgICAgfSksIGRlbGV0ZSBuLl9jaGlsZENvbnN0cnVjdG9ycykgOiBpLl9jaGlsZENvbnN0cnVjdG9ycy5wdXNoKG8pLCB4LndpZGdldC5icmlkZ2UodCwgbyksIG8KICAgIH0sIHgud2lkZ2V0LmV4dGVuZCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICBmb3IgKHZhciBlLCBpLCBuID0gcC5jYWxsKGFyZ3VtZW50cywgMSksIG8gPSAwLCBzID0gbi5sZW5ndGg7IG8gPCBzOyBvKyspCiAgICAgICAgICAgIGZvciAoZSBpbiBuW29dKSBpID0gbltvXVtlXSwgZC5jYWxsKG5bb10sIGUpICYmIHZvaWQgMCAhPT0gaSAmJiAoeC5pc1BsYWluT2JqZWN0KGkpID8gdFtlXSA9IHguaXNQbGFpbk9iamVjdCh0W2VdKSA/IHgud2lkZ2V0LmV4dGVuZCh7fSwgdFtlXSwgaSkgOiB4LndpZGdldC5leHRlbmQoe30sIGkpIDogdFtlXSA9IGkpOwogICAgICAgIHJldHVybiB0CiAgICB9LCB4LndpZGdldC5icmlkZ2UgPSBmdW5jdGlvbihzLCBlKSB7CiAgICAgICAgdmFyIHIgPSBlLnByb3RvdHlwZS53aWRnZXRGdWxsTmFtZSB8fCBzOwogICAgICAgIHguZm5bc10gPSBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgIHZhciB0ID0gInN0cmluZyIgPT0gdHlwZW9mIGksCiAgICAgICAgICAgICAgICBuID0gcC5jYWxsKGFyZ3VtZW50cywgMSksCiAgICAgICAgICAgICAgICBvID0gdGhpczsKICAgICAgICAgICAgcmV0dXJuIHQgPyB0aGlzLmxlbmd0aCB8fCAiaW5zdGFuY2UiICE9PSBpID8gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQsIGUgPSB4LmRhdGEodGhpcywgcik7CiAgICAgICAgICAgICAgICByZXR1cm4gImluc3RhbmNlIiA9PT0gaSA/IChvID0gZSwgITEpIDogZSA/ICJmdW5jdGlvbiIgIT0gdHlwZW9mIGVbaV0gfHwgIl8iID09PSBpLmNoYXJBdCgwKSA/IHguZXJyb3IoIm5vIHN1Y2ggbWV0aG9kICciICsgaSArICInIGZvciAiICsgcyArICIgd2lkZ2V0IGluc3RhbmNlIikgOiAodCA9IGVbaV0uYXBwbHkoZSwgbikpICE9PSBlICYmIHZvaWQgMCAhPT0gdCA/IChvID0gdCAmJiB0LmpxdWVyeSA/IG8ucHVzaFN0YWNrKHQuZ2V0KCkpIDogdCwgITEpIDogdm9pZCAwIDogeC5lcnJvcigiY2Fubm90IGNhbGwgbWV0aG9kcyBvbiAiICsgcyArICIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247IGF0dGVtcHRlZCB0byBjYWxsIG1ldGhvZCAnIiArIGkgKyAiJyIpCiAgICAgICAgICAgIH0pIDogbyA9IHZvaWQgMCA6IChuLmxlbmd0aCAmJiAoaSA9IHgud2lkZ2V0LmV4dGVuZC5hcHBseShudWxsLCBbaV0uY29uY2F0KG4pKSksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0geC5kYXRhKHRoaXMsIHIpOwogICAgICAgICAgICAgICAgdCA/ICh0Lm9wdGlvbihpIHx8IHt9KSwgdC5faW5pdCAmJiB0Ll9pbml0KCkpIDogeC5kYXRhKHRoaXMsIHIsIG5ldyBlKGksIHRoaXMpKQogICAgICAgICAgICB9KSksIG8KICAgICAgICB9CiAgICB9LCB4LldpZGdldCA9IGZ1bmN0aW9uKCkge30sIHguV2lkZ2V0Ll9jaGlsZENvbnN0cnVjdG9ycyA9IFtdLCB4LldpZGdldC5wcm90b3R5cGUgPSB7CiAgICAgICAgd2lkZ2V0TmFtZTogIndpZGdldCIsCiAgICAgICAgd2lkZ2V0RXZlbnRQcmVmaXg6ICIiLAogICAgICAgIGRlZmF1bHRFbGVtZW50OiAiPGRpdj4iLAogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgY2xhc3Nlczoge30sCiAgICAgICAgICAgIGRpc2FibGVkOiAhMSwKICAgICAgICAgICAgY3JlYXRlOiBudWxsCiAgICAgICAgfSwKICAgICAgICBfY3JlYXRlV2lkZ2V0OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGUgPSB4KGUgfHwgdGhpcy5kZWZhdWx0RWxlbWVudCB8fCB0aGlzKVswXSwgdGhpcy5lbGVtZW50ID0geChlKSwgdGhpcy51dWlkID0gYysrLCB0aGlzLmV2ZW50TmFtZXNwYWNlID0gIi4iICsgdGhpcy53aWRnZXROYW1lICsgdGhpcy51dWlkLCB0aGlzLmJpbmRpbmdzID0geCgpLCB0aGlzLmhvdmVyYWJsZSA9IHgoKSwgdGhpcy5mb2N1c2FibGUgPSB4KCksIHRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXAgPSB7fSwgZSAhPT0gdGhpcyAmJiAoeC5kYXRhKGUsIHRoaXMud2lkZ2V0RnVsbE5hbWUsIHRoaXMpLCB0aGlzLl9vbighMCwgdGhpcy5lbGVtZW50LCB7CiAgICAgICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0LnRhcmdldCA9PT0gZSAmJiB0aGlzLmRlc3Ryb3koKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgdGhpcy5kb2N1bWVudCA9IHgoZS5zdHlsZSA/IGUub3duZXJEb2N1bWVudCA6IGUuZG9jdW1lbnQgfHwgZSksIHRoaXMud2luZG93ID0geCh0aGlzLmRvY3VtZW50WzBdLmRlZmF1bHRWaWV3IHx8IHRoaXMuZG9jdW1lbnRbMF0ucGFyZW50V2luZG93KSksIHRoaXMub3B0aW9ucyA9IHgud2lkZ2V0LmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zLCB0aGlzLl9nZXRDcmVhdGVPcHRpb25zKCksIHQpLCB0aGlzLl9jcmVhdGUoKSwgdGhpcy5vcHRpb25zLmRpc2FibGVkICYmIHRoaXMuX3NldE9wdGlvbkRpc2FibGVkKHRoaXMub3B0aW9ucy5kaXNhYmxlZCksIHRoaXMuX3RyaWdnZXIoImNyZWF0ZSIsIG51bGwsIHRoaXMuX2dldENyZWF0ZUV2ZW50RGF0YSgpKSwgdGhpcy5faW5pdCgpCiAgICAgICAgfSwKICAgICAgICBfZ2V0Q3JlYXRlT3B0aW9uczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB7fQogICAgICAgIH0sCiAgICAgICAgX2dldENyZWF0ZUV2ZW50RGF0YTogeC5ub29wLAogICAgICAgIF9jcmVhdGU6IHgubm9vcCwKICAgICAgICBfaW5pdDogeC5ub29wLAogICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3koKSwgeC5lYWNoKHRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXAsIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIGkuX3JlbW92ZUNsYXNzKGUsIHQpCiAgICAgICAgICAgIH0pLCB0aGlzLmVsZW1lbnQub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSksIHRoaXMud2lkZ2V0KCkub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKSwgdGhpcy5iaW5kaW5ncy5vZmYodGhpcy5ldmVudE5hbWVzcGFjZSkKICAgICAgICB9LAogICAgICAgIF9kZXN0cm95OiB4Lm5vb3AsCiAgICAgICAgd2lkZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudAogICAgICAgIH0sCiAgICAgICAgb3B0aW9uOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBpLCBuLCBvLCBzID0gdDsKICAgICAgICAgICAgaWYgKDAgPT09IGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB4LndpZGdldC5leHRlbmQoe30sIHRoaXMub3B0aW9ucyk7CiAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkKICAgICAgICAgICAgICAgIGlmIChzID0ge30sIHQgPSAoaSA9IHQuc3BsaXQoIi4iKSkuc2hpZnQoKSwgaS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSBzW3RdID0geC53aWRnZXQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnNbdF0pLCBvID0gMDsgbyA8IGkubGVuZ3RoIC0gMTsgbysrKSBuW2lbb11dID0gbltpW29dXSB8fCB7fSwgbiA9IG5baVtvXV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBpLnBvcCgpLCAxID09PSBhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdm9pZCAwID09PSBuW3RdID8gbnVsbCA6IG5bdF07CiAgICAgICAgICAgICAgICAgICAgblt0XSA9IGUKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB2b2lkIDAgPT09IHRoaXMub3B0aW9uc1t0XSA/IG51bGwgOiB0aGlzLm9wdGlvbnNbdF07CiAgICAgICAgICAgICAgICAgICAgc1t0XSA9IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NldE9wdGlvbnMocyksIHRoaXMKICAgICAgICB9LAogICAgICAgIF9zZXRPcHRpb25zOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGUgaW4gdCkgdGhpcy5fc2V0T3B0aW9uKGUsIHRbZV0pOwogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgX3NldE9wdGlvbjogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4gImNsYXNzZXMiID09PSB0ICYmIHRoaXMuX3NldE9wdGlvbkNsYXNzZXMoZSksIHRoaXMub3B0aW9uc1t0XSA9IGUsICJkaXNhYmxlZCIgPT09IHQgJiYgdGhpcy5fc2V0T3B0aW9uRGlzYWJsZWQoZSksIHRoaXMKICAgICAgICB9LAogICAgICAgIF9zZXRPcHRpb25DbGFzc2VzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlLCBpLCBuOwogICAgICAgICAgICBmb3IgKGUgaW4gdCkgbiA9IHRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXBbZV0sIHRbZV0gIT09IHRoaXMub3B0aW9ucy5jbGFzc2VzW2VdICYmIG4gJiYgbi5sZW5ndGggJiYgKGkgPSB4KG4uZ2V0KCkpLCB0aGlzLl9yZW1vdmVDbGFzcyhuLCBlKSwgaS5hZGRDbGFzcyh0aGlzLl9jbGFzc2VzKHsKICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGksCiAgICAgICAgICAgICAgICBrZXlzOiBlLAogICAgICAgICAgICAgICAgY2xhc3NlczogdCwKICAgICAgICAgICAgICAgIGFkZDogITAKICAgICAgICAgICAgfSkpKQogICAgICAgIH0sCiAgICAgICAgX3NldE9wdGlvbkRpc2FibGVkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUNsYXNzKHRoaXMud2lkZ2V0KCksIHRoaXMud2lkZ2V0RnVsbE5hbWUgKyAiLWRpc2FibGVkIiwgbnVsbCwgISF0KSwgdCAmJiAodGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5ob3ZlcmFibGUsIG51bGwsICJ1aS1zdGF0ZS1ob3ZlciIpLCB0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmZvY3VzYWJsZSwgbnVsbCwgInVpLXN0YXRlLWZvY3VzIikpCiAgICAgICAgfSwKICAgICAgICBlbmFibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7CiAgICAgICAgICAgICAgICBkaXNhYmxlZDogITEKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGRpc2FibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7CiAgICAgICAgICAgICAgICBkaXNhYmxlZDogITAKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF9jbGFzc2VzOiBmdW5jdGlvbihvKSB7CiAgICAgICAgICAgIHZhciBzID0gW10sCiAgICAgICAgICAgICAgICByID0gdGhpczsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHQodCwgZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSwgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSBpID0gci5jbGFzc2VzRWxlbWVudExvb2t1cFt0W25dXSB8fCB4KCksIGkgPSBvLmFkZCA/IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IFtdOwogICAgICAgICAgICAgICAgICAgIG8uZWxlbWVudC5lYWNoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgeC5tYXAoci5jbGFzc2VzRWxlbWVudExvb2t1cCwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkuc29tZShmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pcyhlKQogICAgICAgICAgICAgICAgICAgICAgICB9KSB8fCBpLnB1c2goZSkKICAgICAgICAgICAgICAgICAgICB9KSwgci5fb24oeChpKSwgewogICAgICAgICAgICAgICAgICAgICAgICByZW1vdmU6ICJfdW50cmFja0NsYXNzZXNFbGVtZW50IgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KCksIHgoeC51bmlxdWVTb3J0KGkuZ2V0KCkuY29uY2F0KG8uZWxlbWVudC5nZXQoKSkpKSkgOiB4KGkubm90KG8uZWxlbWVudCkuZ2V0KCkpLCByLmNsYXNzZXNFbGVtZW50TG9va3VwW3Rbbl1dID0gaSwgcy5wdXNoKHRbbl0pLCBlICYmIG8uY2xhc3Nlc1t0W25dXSAmJiBzLnB1c2goby5jbGFzc2VzW3Rbbl1dKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAobyA9IHguZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudCwKICAgICAgICAgICAgICAgIGNsYXNzZXM6IHRoaXMub3B0aW9ucy5jbGFzc2VzIHx8IHt9CiAgICAgICAgICAgIH0sIG8pKS5rZXlzICYmIHQoby5rZXlzLm1hdGNoKC9cUysvZykgfHwgW10sICEwKSwgby5leHRyYSAmJiB0KG8uZXh0cmEubWF0Y2goL1xTKy9nKSB8fCBbXSksIHMuam9pbigiICIpCiAgICAgICAgfSwKICAgICAgICBfdW50cmFja0NsYXNzZXNFbGVtZW50OiBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgeC5lYWNoKG4uY2xhc3Nlc0VsZW1lbnRMb29rdXAsIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIC0xICE9PSB4LmluQXJyYXkoaS50YXJnZXQsIGUpICYmIChuLmNsYXNzZXNFbGVtZW50TG9va3VwW3RdID0geChlLm5vdChpLnRhcmdldCkuZ2V0KCkpKQogICAgICAgICAgICB9KSwgdGhpcy5fb2ZmKHgoaS50YXJnZXQpKQogICAgICAgIH0sCiAgICAgICAgX3JlbW92ZUNsYXNzOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90b2dnbGVDbGFzcyh0LCBlLCBpLCAhMSkKICAgICAgICB9LAogICAgICAgIF9hZGRDbGFzczogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9nZ2xlQ2xhc3ModCwgZSwgaSwgITApCiAgICAgICAgfSwKICAgICAgICBfdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKHQsIGUsIGksIG4pIHsKICAgICAgICAgICAgdmFyIG8gPSAic3RyaW5nIiA9PSB0eXBlb2YgdCB8fCBudWxsID09PSB0LAogICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICBleHRyYTogbyA/IGUgOiBpLAogICAgICAgICAgICAgICAgICAgIGtleXM6IG8gPyB0IDogZSwKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBvID8gdGhpcy5lbGVtZW50IDogdCwKICAgICAgICAgICAgICAgICAgICBhZGQ6IG4gPSAiYm9vbGVhbiIgPT0gdHlwZW9mIG4gPyBuIDogaQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIGUuZWxlbWVudC50b2dnbGVDbGFzcyh0aGlzLl9jbGFzc2VzKGUpLCBuKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgX29uOiBmdW5jdGlvbihvLCBzLCB0KSB7CiAgICAgICAgICAgIHZhciByLCBsID0gdGhpczsKICAgICAgICAgICAgImJvb2xlYW4iICE9IHR5cGVvZiBvICYmICh0ID0gcywgcyA9IG8sIG8gPSAhMSksIHQgPyAocyA9IHIgPSB4KHMpLCB0aGlzLmJpbmRpbmdzID0gdGhpcy5iaW5kaW5ncy5hZGQocykpIDogKHQgPSBzLCBzID0gdGhpcy5lbGVtZW50LCByID0gdGhpcy53aWRnZXQoKSksIHguZWFjaCh0LCBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChvIHx8ICEwICE9PSBsLm9wdGlvbnMuZGlzYWJsZWQgJiYgIXgodGhpcykuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikpIHJldHVybiAoInN0cmluZyIgPT0gdHlwZW9mIGUgPyBsW2VdIDogZSkuYXBwbHkobCwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgKGkuZ3VpZCA9IGUuZ3VpZCA9IGUuZ3VpZCB8fCBpLmd1aWQgfHwgeC5ndWlkKyspOwogICAgICAgICAgICAgICAgdmFyIHQgPSB0Lm1hdGNoKC9eKFtcdzotXSopXHMqKC4qKSQvKSwKICAgICAgICAgICAgICAgICAgICBuID0gdFsxXSArIGwuZXZlbnROYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgdCA9IHRbMl07CiAgICAgICAgICAgICAgICB0ID8gci5vbihuLCB0LCBpKSA6IHMub24obiwgaSkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF9vZmY6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgZSA9IChlIHx8ICIiKS5zcGxpdCgiICIpLmpvaW4odGhpcy5ldmVudE5hbWVzcGFjZSArICIgIikgKyB0aGlzLmV2ZW50TmFtZXNwYWNlLCB0Lm9mZihlKSwgdGhpcy5iaW5kaW5ncyA9IHgodGhpcy5iaW5kaW5ncy5ub3QodCkuZ2V0KCkpLCB0aGlzLmZvY3VzYWJsZSA9IHgodGhpcy5mb2N1c2FibGUubm90KHQpLmdldCgpKSwgdGhpcy5ob3ZlcmFibGUgPSB4KHRoaXMuaG92ZXJhYmxlLm5vdCh0KS5nZXQoKSkKICAgICAgICB9LAogICAgICAgIF9kZWxheTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICgic3RyaW5nIiA9PSB0eXBlb2YgdCA/IGlbdF0gOiB0KS5hcHBseShpLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0sIGUgfHwgMCkKICAgICAgICB9LAogICAgICAgIF9ob3ZlcmFibGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdGhpcy5ob3ZlcmFibGUgPSB0aGlzLmhvdmVyYWJsZS5hZGQodCksIHRoaXMuX29uKHQsIHsKICAgICAgICAgICAgICAgIG1vdXNlZW50ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRDbGFzcyh4KHQuY3VycmVudFRhcmdldCksIG51bGwsICJ1aS1zdGF0ZS1ob3ZlciIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbW91c2VsZWF2ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUNsYXNzKHgodC5jdXJyZW50VGFyZ2V0KSwgbnVsbCwgInVpLXN0YXRlLWhvdmVyIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF9mb2N1c2FibGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdGhpcy5mb2N1c2FibGUgPSB0aGlzLmZvY3VzYWJsZS5hZGQodCksIHRoaXMuX29uKHQsIHsKICAgICAgICAgICAgICAgIGZvY3VzaW46IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRDbGFzcyh4KHQuY3VycmVudFRhcmdldCksIG51bGwsICJ1aS1zdGF0ZS1mb2N1cyIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZm9jdXNvdXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVDbGFzcyh4KHQuY3VycmVudFRhcmdldCksIG51bGwsICJ1aS1zdGF0ZS1mb2N1cyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBfdHJpZ2dlcjogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICB2YXIgbiwgbywgcyA9IHRoaXMub3B0aW9uc1t0XTsKICAgICAgICAgICAgaWYgKGkgPSBpIHx8IHt9LCAoZSA9IHguRXZlbnQoZSkpLnR5cGUgPSAodCA9PT0gdGhpcy53aWRnZXRFdmVudFByZWZpeCA/IHQgOiB0aGlzLndpZGdldEV2ZW50UHJlZml4ICsgdCkudG9Mb3dlckNhc2UoKSwgZS50YXJnZXQgPSB0aGlzLmVsZW1lbnRbMF0sIG8gPSBlLm9yaWdpbmFsRXZlbnQpCiAgICAgICAgICAgICAgICBmb3IgKG4gaW4gbykgbiBpbiBlIHx8IChlW25dID0gb1tuXSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQudHJpZ2dlcihlLCBpKSwgISgiZnVuY3Rpb24iID09IHR5cGVvZiBzICYmICExID09PSBzLmFwcGx5KHRoaXMuZWxlbWVudFswXSwgW2VdLmNvbmNhdChpKSkgfHwgZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgICB9CiAgICB9LCB4LmVhY2goewogICAgICAgIHNob3c6ICJmYWRlSW4iLAogICAgICAgIGhpZGU6ICJmYWRlT3V0IgogICAgfSwgZnVuY3Rpb24ocywgcikgewogICAgICAgIHguV2lkZ2V0LnByb3RvdHlwZVsiXyIgKyBzXSA9IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgdmFyIG4sIG8gPSAodCA9ICJzdHJpbmciID09IHR5cGVvZiB0ID8gewogICAgICAgICAgICAgICAgZWZmZWN0OiB0CiAgICAgICAgICAgIH0gOiB0KSA/ICEwICE9PSB0ICYmICJudW1iZXIiICE9IHR5cGVvZiB0ICYmIHQuZWZmZWN0IHx8IHIgOiBzOwogICAgICAgICAgICAibnVtYmVyIiA9PSB0eXBlb2YodCA9IHQgfHwge30pID8gdCA9IHsKICAgICAgICAgICAgICAgIGR1cmF0aW9uOiB0CiAgICAgICAgICAgIH06ICEwID09PSB0ICYmICh0ID0ge30pLCBuID0gIXguaXNFbXB0eU9iamVjdCh0KSwgdC5jb21wbGV0ZSA9IGksIHQuZGVsYXkgJiYgZS5kZWxheSh0LmRlbGF5KSwgbiAmJiB4LmVmZmVjdHMgJiYgeC5lZmZlY3RzLmVmZmVjdFtvXSA/IGVbc10odCkgOiBvICE9PSBzICYmIGVbb10gPyBlW29dKHQuZHVyYXRpb24sIHQuZWFzaW5nLCBpKSA6IGUucXVldWUoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgeCh0aGlzKVtzXSgpLCBpICYmIGkuY2FsbChlWzBdKSwgdCgpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSkKfSk7"}},"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":"dreamspinfluence.com/assets/images/payments/payment-usdttrc20.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.094Z","timestamp":1785130090094,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/images/payments/payment-usdttrc20.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=xkL64MiiofV%2BEPmv%2BkcWSItCLUY%2BHI3b7xPaOKrJe9AcwM53ANMox%2FH825Y4QIQvX%2Bapmmhd6CeBu9WFO7ZYOk23xLiE1xaDaCcuPQWeAthgVJE%2BZI2xSJa4slwGbKqf5LKdIGf%2B7w%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d371e6c120a-OSL\r\ncontent-length: 3078\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":3078,"size_decoded":3851,"mime_type":"image/png","magic":"PNG image data, 154 x 51, 8-bit/color RGBA, non-interlaced","md5":"93679beb438270df15980ca94a74ded5","sha1":"aa2e8aa73fa1ea2e4f0e8abc368dc3022bc4a51b","sha256":"1741e486009ffd34f6779d843c3a759c4cc87400495d7205627378ed921eaeb4","sha512":"f12e8dcac92f4066bad41af07f73a936d26b85f4ac2b7112d504171808da9206e48c9b18a5fe82e7700a0e5ae7daf8e3492c92c645cb3a627b5998eaafc2fe38","ssdeep":"","tlshash":"5a513958f5082862af5860d2839461adce85379305e1121f8abf93d2a7cebf0d2bb41c","first_seen":"2026-07-27T04:11:05.68433Z","last_seen":"2026-07-27T05:30:59.80273Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/ic-works-with-website.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"lazy-imageset","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.377Z","timestamp":1785130090377,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/ic-works-with-website.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:19 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=eltQuspyxDowINACGtdRwOjRMmO7evu01jHJ9lU7NUHAP2HKUOm1TlzJy6RkC7n0%2FwPk%2Fcgj4Qg3Q%2BATDgmIVF7zjd9nMthSunjTtmR3M%2FHZv2cqmRWtEwQbO1Roo%2F9ilVPjmBNoyg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d38de92120a-OSL\r\ncontent-length: 28166\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":28166,"size_decoded":28936,"mime_type":"image/png","magic":"PNG image data, 220 x 220, 8-bit/color RGBA, non-interlaced","md5":"1de723d31dd388010f89c1db972a1fc6","sha1":"6810b01a82028af02fe75e06dff7674b0774cc3f","sha256":"46a1ce776f5874995f6aeadc5d4dd082c438dd02c4e2feb9b638ebf072db8376","sha512":"c8ac072fa7a75deb0ab35e4f3942d60645b4d6e62d1c9b7b6a79f976d6c973a8b4eb947b591e94d4de56ecf742f389b53cf458d6cf83b16456982cbc164987cd","ssdeep":"768:EPR+pZ1gjNWovl3MYaGklB6eJXIwN1CFW1:EYIjgZYaGoB6oXIwNZ1","tlshash":"5ac2e1efb896045445d5c330d92ea1822d5250f49e6f8c3b3c51be074fba5b9adbc3a2","first_seen":"2026-07-27T04:11:05.709034Z","last_seen":"2026-07-27T05:30:59.797577Z","times_seen":3,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAANwAAADcCAYAAAAbWs+BAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAG2bSURBVHgB7b0LmGZXVSb87uoOiQqkgzcuSldUBJXHNAjIDEJXGPQZRjGJ/s4MXkgnwOCgThKVf9RBusMM44zzYzrqP+g8hnS8IONl0sHxMiikm5sIQjrqKBqHVLirQDqACknqrNn7nL3Wetc+56uuStVXXW3XSqq/7ztnn7332We9+11r7ctJ2JFtI9/83+XylLDUdYAIFvPfHknY05/s8nfk7/mf/D9SOdT1XySfS/nYcn8COJk/TuYDJ1fK9w7H3/j8dAQ7si1kN3Zk20gGyqWd4JL8NUkacFWQJAOQepDVr1KPZXwidSVtAajm49fkbHrAHsGObAtZwI5sG8lsdE8GWBp+IBm60oAfMUT1jNaz23CiXjOcox/9z5PYkW0jOwy3vWSZCK1IkgFASS1JO18ByawGSlPpMGVz8y7syLaRHcA9ALn0Zun9qqOXpc1lj4Sbs0m5XL5m02M5fz/Z3Tsw1KczUx27Yrq8pRv7+vR1yg90sXzKCvZke3NxQXAMc5CnXieLb78mLWNH1iUJO7Im+ZbflL1ZmQ9k+ljKsYr9mVGe+WvPScdwFsrXXi+X5HY4mv9O3C84cn+Ho7f9YNph0jXIDsOtIoXJPutcHMgAuySbZ0sajOh7qQ6X5n+P4SyUDLRy78W33JeZ+PA5Czj8tT8hJzIjX3/fvTh24od3mG+W7DDchPzL35al3DAHM7iWym+x0GD4PPmrz0kX4CyUpx6WO8uwBTiOU750gz7l4M/R/O3IH74k3YIdCbIDuCqFzT77s3FVZrKrsvL0QCrDYapERWpEcAi7Jxy7/35ctul+3DaXfdfJnvOyrymV8W2oQmrTUNRUBn/08MoKbtlhvUHOesA99/WyPzfCgawkl5aB5nJMqvJYJFCZLZuQ2YS65TP34cjZBrRWStAkfyzlNrk8D8AvwdtI6rDFgMPaSeW/m7LJee3ZDryzFnAFaBk8h3qzsYxndR5m72dxSFWhDsdzmuP33o/DZzvIZslTf0wWu3NzIGkltyf6GTKDSB1DVNYbjh+T+zPwfvTsDDiddYD7zt+V0isf7IMg1BuXAWcLiizg5EqHIwvZFHrtWRqJfKDy5B+XfdkUvypr1qX9dDS1FkDWwgDC49nUvPZPzjLgnTWA+643ivbA+1MdUC4iXRg8Xs4fN3360ztstlHZl1kvWxDFejgoqAGWynRsrmc5lscLrznx79IJnAVy9gDuDXJdBtfV5XsA2zAPsZiN17722TtsNg/J4DuQPy5HNd8L2HqTvc6Hyf/cdPtL0xU4C+SsAdyBW2XP/Sso4ezz6+z6MvP3WDFrdoC2NZKBVyKbV/UBKme5k9l0f8KJQ2dHMOWs8uGy/3aw+m/Hd4B2+mTfIVmUc3CdlAH0bFn80Y+mQ9iRf3hSWO4786A2dmRbyOP/vSwV8GFHdmRHdmRHdmRHdmRHdmRH1io7cym3gVx6syzefy/2pTxQnAfdF3P0dO+K9PuX7KmThG1Pk6l5i/nzZIn29au762ce8jjZ73MC3CUlOgvcc+xfnR1jXdtZdgC3hdIvXF3B0kLKIFrARWUOYg8o8QnARfrNgepvXqEglK5dwQCJc0D1e6rbMdA+JyfyieVcxIkMxGO7PoPbj12zM8i/VbIDuDlKWbS6cC8uyyO7F9WlPovluE7o7eq2CML7l8B24fLVCYgrFVR0lkwFWc92XTNNza6nfJsJ2eXau6QAsMPR+zqceMe/SbdjR+YiO4DbRCkMds6D+rGl/WWBalb+8yvb6KwKBxozVz0eWEvZLgJwSNrZ8hfQp0wct/1PmAl1YjaZpECsxzLKJOMV3HJu/txhwM2THcBtUGxVeIdLBHVVeAVJOS8NEHjCtDEOm4HOehDfKEivGbNTR/NCWwaUCjrdUohMzea7znHE6Fid71iW13xmBbfubKWwMdnWgHv+m+WqHDzYd+QZ22ueXQHZeedhX1bGsip8f3+wZQoMTJIaoJCyT7JMR0zEQJOWFRs2lMiYBvgO8HV9GOfBvp7Ob1TQW9lc5w63ZP/z6Du+P92EbSZf8v/Kdbl+J9/7/6VrsU1l2wLuyjdJmfpzddnpNCvCoSP7T38jfvvrZV/ZqDU7Sv2q8LBQFWh9Ljf/fHdk28CVgTICCym9tItgW7DVNDNZtfP6TwIV4M5gZJ5y2iIloFOeST6/3JW5qPdtj0WlGWyl8zuEwYy+dnmbgm7bAa5Mv9q1GzeXnbFUSWsPfdmRi9NRnAbp9zjZhYO5PvvNFPOFlQjBiFrfnt1AIJsBImIxY7yi7AnEQGlsOqLJtznnIIqLa60TGE7lz46ANpHPVCfSltkNi0qvP/Ejp+f5LP5buWQhB3zUhK6Hb8kR4SuWD28v/3Nb7bycwbaYwXarlHVUtYdNQ6dwEqdhB+Hv+D25/DteL7cuLOBWDNsIeAfVxZ2RSSl1V2RQZ8FgCRu4skyZjQo2S1KBU/Px+qSK32RpAniHq+M1FWwOo5pP/y0ZG1uaNJztOxMDfalibptcyM1P+DG5c99/lMuxxbLrftMRyfVI5S9/v1R24dZH/IDsxTaSbcNwBWwL52TFHl5iodsclEe9nP8uzuy2jC2SbDoe6HftAvayf1WB1bOCKWTnfo4yDlYx/zpNg8moYjAp7YUdMY0zJIHR/C+6frhgHBXVfEJHQNeN2K1lYl4d7/XmtMv53g790Uu3zs9bvFoWsxVya67QYnOPd927gKUPv3J7BHu2BeB6ZiOwWXt1uD0fv/SGp21NYxWg7VroAyGL0igaWKn8M+yFApmhuA0YezNvZfDtGLR92gHM0W8SxN2whnJ9C/TaCdji9cbEDWVTOXw/gV076lykuWcZ1TP4kFbEUKflfO7aP37Z1ry9p4AOBXSYAB1w8UcOn35f87QDLoAN3vPm/8o4UPHb5m5Klu0XsrIcykq233wlVURVpHHgA40ijxir/16BULd1mPTfWjBT+aNQflD6plxQfbup9AQ+Agj1cLEO4qzpYJMIxon7iMMeQ97L+e9ABt5xzFky6PZk0PXb+FE7l3+W70unH3SnFXA92B6UfbZumN5UpD7EI0eW5j8UkIMhi3mg+rr89RKNJoo0QHKgIfTi0gQxWjZBHRbwwES4hrYYGJt5pLQzBrkt+tiYgFKVK+n3NGEm1vzR3gOD0Hy0qc4lhXpN1rW5X6l1vmklRxDfswWrux99jRzBsK2DjkMWWb7vMxl0P3P6QHfagiYGNsl+kj6QwfG/fivA9rxb5aoHnYt35ydRZoakVN82o4EBrU9gAQ7kCNy+KzqWXNmJDZSd7K9Pol9SONSCbQh4kHk5AlvNUv0oaICm5pEaH82qQqYpB0eMyVWGdIlZUWo6y9AZJHGdSBh4BxYEt33ly+Qg5izvuy4dyOVeDwT273Xu4d99+ha9nhaGYzOy/DaFzvb+q/fPd7l9LruMpd2Yv14kbYBDqyJByZPtUylhmMJNOqAFRDsux2n6a0cMR2rKgZLAFPQbVCetOLFSqHOb1n5zXRE7l2qSgus4xaSIoAvpLJ+p4JDgTtyHZ77nP82XbR59tRzKZR1s7mE5jx+eFqbbcoYrYMtm3GkBW2a1g7mo2/LXfVWRWoAlC/dXlqFo6cBukbWqildWHAIFwZ8ixUzsv/UsSQynYX0Z84OXo75TZSXNw9rQyxpAG6OJNn7Ycb1BoKZ8krIbINwh1LoksM9GN8tgazsSPV6PXYjdeO/jXjpftnvf4VQAd635pEMd+ojm6WC6LWW4Mqh9zrm4NSvDRWZXD01w+NXPSNdgTlJAjmE//H3S9Lgtg9DxYMqFdAChydIaeE3pZ+cdAwuIyhkYFvE7mroY48lsVprwEUP9MU43k7Fk6j4IjMLjk/q7Sn7uClZtL63Lco4iLt35ivlFo7/4qmHmUnM/J/7uHFx8cgsHx7eU4TKz3ZgbfR9QB2OHGz8yV7Adl7IL8G0FbFDlBPXMqA+AXusb9DtFNrBrYNeIsHlWFVCVfyAVqH8qDJAmSmiAHbEcFVvzC/cgqKxFPlytl5dfr7NBeon30mDcWycN10OaSjRtwh2Z34wDv4AtYaINh4IXd2ff7rE/LFdjTvL+69M1uZwjtWB9NvvO+wxuxhbKljHcC95qW9TZgyhTgm58eroYc5DCpgu7cLAb9kHsfSdjkWEuYC/cK1uPXU9olJHWmFnQgFjQAGk+nZbTRBwxETEEiHla1kgNY7TXeh3QMt+qaYDgZ7ZMKRPlQTBmPniebLaiyXOCoUv5A8PFssp/19//GVw7rylZj/peKYG6peY+Dv/Vq+bX6bNsCcMVsOWPQ9oDl2PFaZb7cRnmIMWETAvZdB3A5pG2ZMqGWgfvhfUnTY3qwVaZqPhEClpivZpRHPDVMsM5NkeH37A86HplgdojtQGRMOVK6831sOONkgdAduGeha4dkauyY+f1Y7FhEBpnRJPnMNnZC5Ta/kn/1U6r+qRX7zoXt/WD2HOQc3b3OnfCGnlo8Ksf8a/nx64sWwK43MAXiKtnUdjlbgXPnMeg9hVvk/0ZbBYY6c0Z7bsn1o4ZG2kgoOn5RyZAkyYhAImVDZ718DO1x0OjoI1swjHmdUYT7AHfD9UbVMaUEKO5Ly0GghFwLOgCMOulqboRaw5g7agWqf/PWFHb3sA6HFtceBDeuPgS2Y9NlsKcWfcuK+9S71m21mxFcBG2QLYEcDc8PV2d7bKX10Y+2d03n7mRZf0c7u9fA7yHQdB3Yt20+SwNGfTHDDIIDBLxgdJ6gylVx/AUgCDQoTKk5mu+VluB5AoobbkMaLGyDE/MnAzs0Xli2RRGAeGrHzBiUPuSEtDWifJ3/1QjsA7CaIJPDIkktwg06wsz7d+6+IObzzz9cECHi/P93FMb8dq//pmtWXO5ZT5ckee/SS7N4Vj5uadt/qtor3yzFP/wkD5UZh9VBJk1vgVEX4V66X5hJmDTu8wconT9ZRNzKh0R5Lv5dYP6SnixRctwwR+EM4fNnuA62Hkq06ozMd5m31sQcSfQoV2Q6nUG3RsQxycnLIrQPoKxD4tQPud3aPknNn99Wx4WWOoS9vz1q7ZuWdGWAm5ecuWb5MZ8JwdExiCaUgY9N5Wm15VxACSE9mmfkSGo0iH0/KbnY6CNzcCxYrfpg2I3DOhMNwZ8AFonNLPf2yEGa2o+ob24PuJt3qxiCPfa1g2gc7FzEcRAy9BPEhDFTd7DGXRbEtiYp2yr9XAPRJ7/lgFs9SHFhZz1wSXyNfQcXDEsDVrFojB/EKGAiKmU4cgYKShy8rKsDvq9iyZmf7qmr6afdwCgems5nQcgGHQMbAMbVZNZJdSDAyjNvXMnYUVKg0c3mXUygA2d2JCGWI37u6HzVg4Bs/xd9ejvz8/6DJczluFK2H/3OX0kcp/1qHWSsO3FWBVTGnMMU6FzBgcBRn+TkscQv34Hpreha8skQLApqYrNe5rYtCiB+1jNoH2fZTc7JG9puT4K6onVAiGt5lHLDyaiD6uE/IBQlkwAp4erDYLD24SHCkSHZOi7DG1y4lPY2sHqzZQzkuEUbDIMZjs7JdvWYJDOonB2qJ4XCwD4Y2el9fC6pvJBZWDCb+FrWIRAGjIVChSoLjpg2ulUCOX7qZQ4gih0o5gAm3YaBEZQJyO1lMRFaPsIdWAgEtU6s4/o95AC2Gq9ArvzvSZvw7JqW7gdNUl+5g/OwZQ9ZRnOGShnJOB6ZiuTj8sP6p1Zqtlja7c6WCBkuEz38hiYQySOb3EgwudAwqAloLE4w4kDJii65QOMx9CGuqqyMmOG+zLzOIUpXAFMEUFeFUzlCwIy1ZHQFJhVwaNLc0Lb8/2QOZnSqCy9F4UxAPLnBC0Ti7Ibwb/8u+9zun6h6RknZxzgrsw+WwEbqbz5FCOTSNwMSt7TBncOEs0aA5if5wvcp+MgRb3O6uLHSNsw08TTfJKW74CKrDkwiZeFAHQzxUxxuaOI7WXjvhN1ZiIGTebu//p2THQLAozqqJ9UHytKhn1HgMjiQOhkxNobIfDEkdx9j/q+M8+nO6MA94K3yHW5xQ+kFmz9FzIfmwCFp67fSQkTX9uyjyu2KAgM1CmeH12L0PM7kFg0OKGrAGq+Flig4jg/OGBF2yJ0CvGe0+g++F64Tn5fw9cKLm1ngSt+inW39uJ7JvbVUpLVTMKg+XC2azrN+BQNwClZsObAmQa6MwZwdS5mGARlZWGm4FXZPGNfvKc2f4iVztgiufIoWLg8ixzWg6k5D2Ip1jlIE/F0JYygRqPY7idOm6l2W9QWdG/iqmv5NSYzo5pBYyyUYK4c9yQKPGsjKKONwWb+mmHK72UYQkjGvDpvVT+tpURs9lAvOfhy+SNfPP8FrZslZwTgXvg2uQplLmYRiT1nbXzupf2hIe58DPgDU7NIr7EeveZJCLI0aM1GBgcaBe+QyDB1AuJytV4e3Emtv2KdgpaRmk6GIn3wDsPbQYMqdA3XN9QpBQZUjBl++kncKdbJ9iLSRBTsSAjtPhyrdUs1ROINYQGr0KdYR1M+OjpCEdB8+NAjXtzryLaXhG0uL3izLMkC3ojo0I+UxrYVF+uZ2U9IkyBp8rOftIWAnaY9TyATQwIC32DVAyQ8eCxcX1pxwEMMQ3ECXvgZNh/iPPQeLIiidYe1gapnaoEb7tk7klgXoWto5YI1ne821s/AqR1V8FOt7tz2Gv6H1Xn47fWT2jHGuvlwAoA4YN4/na5fxX0M21i2NcOVWf8ZbDf2P5I76Q12qu2BOGNfP53x9BrvjTUT/55oCpSJgM67Gcc+IKD+To3kgX1CidfzeJal11+q8F1N54AIgCU2rc0DjyKKt4EwwzsoLQ+tZ9sxiUCadoqBjgrC5OeShvIVFIGB9VtsWJsqZwzo+fVp654uQmnYD/RzXX9b/2PP87fXxq+tbFvA6epw1M1YeadjfmimeO539WerU63JJQBNCHgwNhAg+DuO72aMKRGQ28nIFGn0OtZj9jtZ3oP41nwxsKIBCR1lrMcatg7h9MTma2ebIyEodM3DvlNb0n2mUNexqcfTtfz6+p3efQdmSq8mYVmojPhsUlhpAMuT6zLcxtDdXXDOLhzdc2D7jtFtW8A96Nx+45fFxIySDCuDVFbpe/eOmAUORHgE0AGEGBK3/TtYWcVBYCzmk37RHBv0qQumYHj/gB6Xeg30+lacZWywPZFyN+A3JrfegpRfxsqJwH7ApPnsVbG2G5psvO9mEjaVGVAS8hnANCyHMUslIbT3cJ1dAK1p/2w6nx6mDCeBjf2lJfvOedCwadB2lG0JuBIk6XT/iXKAgxUepeJdi4emZ2WsokqYxkrgDywhDCSLRCx0lC5RnvDwBkcffd5mnOOY/KsVFdBgxep9Jk/DzjaDjRitIT6MxhilBT7fP+heunHeoUF0zLOj+jb1S00Hpnv+h/uVACI0nWLiMhJtuZTGRWpHp/9d/fkv3J5BlG0XNOl39ToX7xZ9HVSjRWh6cVImHwfyNGL76pO5NrGNnTMigVrTTJhKDs6qwCmyjCrM5GA3XRv3mPQATDJmalil2a7P6jpx/XDZACCTlgFn5k/Xh7bXYxj7X2w+gttiuC419z8M2zSAE39Wnq4yWl3xkKwD7IZBdJ2X2YMzmTVw94rgCSdv2F4vkFw3w73wrbLvhb8vN/Y7Yc1Bit/Wg60+4yaCEcZxwGCQMPYlqhjmb1WWmdqOvF7v7ENAkoi50YY6lIWxJCr3ccQuJCTFS1NdnvbkjXncl8/MFn1WDhTpBSF3AhG4/bp4LFkfJM0qCzfZhX3q/gCtCKhl6Xf2Z7VMG76orOcGpHdUwh1XbSp9DVitKU2CHv7Vey9pLtiF+WwQVHzEh10p1+XPJaxT1m9SLuC63LgHdj8It5XB6M0E3gt+vx/c3os2ygcHgj0Y7QXZr1MF65BSg1V9QUWi9MYymkYmB3LDMQOkeD408B3sHQUtqO5cNtUhsJOVJRHbA+IgDYADW4PxzTdHh+w6ai8092wk4qzj6TrPWs17zVzTM7slZR+3qEasH+pcU6UUfTwRW0GgINNyh2wIzDW/J2RgHMQmSQXawYVdeG8u46pcv3XnvS7AZd+qvOxiqUa+yjYGh3bvxiI2QXrgdnWjoQ4hDK69cS9VJcivGXpB2A+hCbdKS+InESN5LSAiyIc6MPRbZW9enMH5CQdHtB4crfRK2/KeXmk1l0TdS5Z/9likn/rmas4RGI/8y3zuK9BON3NwxvZIoT3RnEdzf95x9e3aBy8swBnM5gAm+tSOSNfFaekjMFVGs6U4BNok8RoL5IxWFQRF6L8d2nOlbNZ+JWV1ysF8H3sq9e9fL8utC3C5JQ71LaI+geDozz19cwYaiymp7MMh/tpzsfMf/aIOPmm3pk3sV6D6V6RshC1h5auKMck6zFZWlaoCqQE8hnxCp83Mp3W3e8BgKj74XOALHzzUtzfz6gyUB5+D9JPPQfrhZ+Yn/qghdy2/XP+Yzwde+vX571lDHsESyPKQc5Eecf640+D7RBp1cMk6N/iM/bRg14bmkIZ1KLgkZjJq6Qlhqp03Y703IVNzMBSVTaXzvIYIrPuRQ9+SyCyt5S3ofpQblJNH0rGc73EtA0N5B9eTx5oBV2Z81LeAmhm3cj82Zcl7MSXhL2JMDCwPkzn4RA9AiaOmqdcJP/oIEs9I4rxCm4TrnUkYdObhCQKhmTBaPLNWPSj0mUL96i08/MFIL34q8BPfCHzqXu8kynX5HG74NgMa3Yg9cJNv/Erg578DIHBpneRn/wXSwWfncw/1NlQgaZ0EoZMIW+Dxm4Bq4dqlhMFy/SRgBNdA29+W7ohHfgF7u6pwXgZARF+VOy2AGBThsafcSex72PM3J2qZ8z2k9auR13Wx3NoZbpcjud7U6zZj561+D8kOVyuIq0aHeYtmnlGQQKsCIC4abUCmedg5da0pIxschu9SDO3ViW2tl2fGZfZzpx8GTCrXWLae/JzMRpc/Aem/XQZ86+OBH/1dyKc+4xXIzITrL8mge0hzP3B2a83AAqj/8pyB6bRNPvlppEO/DXlOLuM3XgS86Gmx7VIb3KGADN8br9IW8ptAJl5THzaftcPhIMlganIa70zY5LR1cbVcoWeF+qw0L2ZUBW3Rn4ObMQvl5I39O+6O8z2uh+XWBLjevyovuIObC/nODmMT5NzzcmVT3daOImQzkttylPqwzZ/xFBTYqCk6zk/LSa6vDFhxVoszKYSUSq+xmFi4djinE5KJkb0oyEWPAH72EqTnPRF48IOA3/kL4COfiKHzy79mDDb4fXuGjRQT8wX/iOqd/33X+zLY/mQ4/6++Dvif34302C9omKz6SqK+FAdkUigfaMw2+m0Tsb25oYPr1sd1bJL6PZg5KBJ+o+lm2fy0joPr1pwvneoFm6WzohPptZCEpT1XrG0PzTUBjkbuVVGPbYbvlk3JpTxWcnnoqUm5OyHgAA6mms6AEv0PIPbU4LmLnSZzQISeXSSoFnh8zcpwc0dFhgi3MzBP37IianmX70P6iWcjFXNR5aZ3+32WxP/0scC3fTVmSlVYmXX+uRnIX/PFDqjy99/emtnuM8P5R54PvPZK4LufPqqzm2w87YvGurqGcdDAsd5r3BgoNb52NfplDF77Ld6dOat6JzCYmL4DJoNNF7mGSGf+cukDCeW3UlhuYQHHuc4LZSOrNcgpAddPIMawK5Y4O9yETZCF8p429ZGA0DtJapRJnEHMjiBlsnPlJ4XOmQFkzJB+LgJbHy7ny3m5f8emrx4Dde/0bzHzXv4soLAaS2G3D3/C/aly7IonYaawGYhVQHfwn2az9EHe23/oJPCaP4xpvjuz3cu/CekhaoIyijtnvVASPadaH30qiZ7N8EmLSslvAwEKxFKaD5uPavG7manpXBfM99N7ZTBQvti1a3Omfa2s4NqUwjO4dC1zOE8JuBw9vKT/4n3Yna9+2sZfkp4H0A90+o64GJEcWpnD7BJ74dFYFJyJVGmSRH9CwWBpiBWDCCKmmfGoE0hi0TMNWwNkWtK+H3bVl1wAfOnDMJIj76Y8MIBt0pSkeoT7mSE5eILnfg0YSPKad4zTPSqne9KjYTfNKy8M3N4hDfftHVLw/ySynvm6dda/rwqIysomYK2CdVotMGsN3F/jDBqmHJWVzxfz73JsUGrEcrnmWWRPZr1T7hJ9apNSciZCDdrh5dgEKY4mdaYiTUCkb2MBd5i2tCU5iyROP1AY+WX0yQpNeYeBcFPgZEwYI3Aa8AApgX7QRGXqIBgYcvuHgW//78D3/xbkf90B/NWngPwpH/nkUGZJXCKWxZxcTcK9yeppn5vB+5DzPFUxKf/wfcPnL2XwPf8XgSt/AXjjHTBjQbg5HTaq5CD/yu/X711agNI1eo4C/sFnAzyoIi2YOW0AvDiYyZQcLiX21XwyMA5iEyQNlh6b06eMhO5e7WTZmjzXcbH+LFW/p7w5EhuU5/++XJ4jXosWDhbaWwRWmjMKL80Bo9R+JAUbBucf3ikOPXawv0o6nS3RbF3ef+/QTrLt01h5ahppPjICvz5gA5t95lQZeOnEB4dEn/MgeEAhf9v3iOzbrcZuKj45IK2WrJiK3/R4pNe8s0/dj+99/68jfeLvazZCLR2HQqwB1bRT5krOLkO7DAdTWEg65BP9XYGTKJmRPB9Sy6VnooEx1g2thxBYk25ORLcf2kjX1uWPCz/3SjnwsVdvzFLLdT6cwVtmnOyp5ezZ8wJZOvlzs+MbqzLcwi5cDrjDn2t69IanbXwy6EKZUdIODAOYMhV5SQwxEZre2CYQgzrEZFaJJ+5/1IBJNQtt1gb5d64kmGA08bppOaZgycfsyvFv+LLMWp9DoCNwlfR5GECYJe74GPBTb4X86h8Bt2VQ3vHRcfuBAxpNexXmyv4gbs0M+svvAl75BuBdd8EarNTtE5+uzSGh7n1bPHkR6bu+1u7Zmg3UiQSGA5T9hdqaTWTlyFG0kUAXj+mgd9OVMMDFGTDNyM+CJkK+nYKuk42zXDYry2a0R7j8XafId2bvWIIlux+EO6lXkpX78MQ89nYCG5Diu+X8boT3gmzqsVK6gntvCUo/NG4diKWXJjISVbWHC1h7uHyuh8w4B4TXAws8bN6zhK/Hs3p+/ZcCL3n6UN7rMwB+J/+d+JCXARC4my0Xah1tXLIwVR4+kPyX7vibGsGtaR9RGbEAqYy5cQcBj+zOenFHn/bJe5H+9TPy5+Jw/IojwB/cOeRvg95DhX2slK4HvDNJQJyaVc1IkchWDJD+r4N51+05Tl/+bccEq3rZ7+RmsOkKXPrf+cAVG2W5EvXMLHcrlVvY+oIKxpHMNCl3nYf9WCHFS7hro2DrJftu5KwNypGMXbyBk5uDQgEUUaAN13vnKBFQgL9iV5y5vP8Q9x+ARtmTgUv4IqfL4QcBOvFWd0W+4MGQ5z3BH/I3PGb4+0j2296ynH23v+jZyxQarBSGQlgENwOpH8DuZNRJyIfuoSBHrXNj9mle6kH15578aKSvyUD7rqf0fl6Q/3BpHox/FdI9f292mV7ng8vKMLX+CbFNYY/Znmnc3oHM7lo3fx7+TMWeHQOPTFgqU8KE53r/ynIpBZ+wfFwObGzaVwmefO4Vcizf/JKWkwF4IJ+aHPObCbhs7F9lCjXc1SFsUJ7/tt4n3Mv5lqxTBMvQiPrWl6Z3op42+nsRjNYTQug3HVdN+JxzkL4pm33P3JtB8tlep+az/R5+/9Xf5lD/r0U2fF4ea/vCB2MkZezt/3l8Hmf78uxb3RjuYWjnAsAUgcL3pfMs6zlrj/IZXiFVm3Ni/8y+UygAO/zPBx9vSh6VvZIXLwE/9tvDvarZ+MaXIOVzM9sCq7Tfn2YT+YbjSL/yB7VzoGcezNT63ECAhftyEu5VT0bTMRxv8mEALhWGKqDBBmQl4Vj2zfYDtsi2RPYnATfpw9Wxt31D7epDS/2LDjckCfUVwNrbOVBMpPm0Xk5/ChEAf+dsXOGMJZu8+1p8/mcDP/FPgH/5FT3YHrD84gnA7ioNcyOL77aa9KZlrUtRoC/7POBXvhN4RR47u/LJSE+/EHjio2oAJZq2dJveBtWh6Z/Uwx8KfPnnI33z45Fe8sw8yP6twG++OA92P9SZ8FN/j/TnH1m9js/7R8BTFq236tvwp96AByxf+ajsU3478PsHkb7oYe7bASMzUlLCyGerHQx4nuYEyIQnFyuzZdYZuU/13EFsVDpcDyaFMr9yxjSySYbbfQ4uZRbJ/xy/4es2Fiyp6+b2U+/lIvYhoUeXCBKqk9nmSRq/RMbZCj0YIZPs3z99Y0ArUkL7r/8/AJutL/m6U1934sORcZ7wiGHsrfw9/Uv6JKGNcjAklXmW5e87fxFhCOWXnld9vHNnM1aRizOr/uI7vH3f+OeQJ+0dKyLL91ycfbn3WmHpf7wL8u++MZd3Hh6wZLDhV74vm9j/Ofudf2vs7XfULCwlN8H8SCCYif3vhs30mPmSbFqSeVkmH+/LLPeA3aXir12QzcrCmFrPBenNymvbtLOilJcTCJBNnCPYoJxT5kyqA9/MBBGgnQ/JRiEMaO4rmdlhU7X0PDwCR4A1R17lmdl/2SjYitz8Z8au/YB8Ybevfvipr/vLv7Fb7au574tWT1+AVCYml3mSqCqn95nZrD+3GtiKfPkXQgvt2+k9H1kdbEWekpn2yReCZ3Hgxrdgw/LFGXQv2B+PSfwSIs4SYBR9snpeOB0/awKZmZOavrLfJdigyAKOUp6lzKWpdCOGq0y0r5o6w1O9P8yOfoA1wpKCS/2Q5Da7+ScMEht/SwaiwUFWBiwheN5EqI6LofqF1V4LwQwtK/ttQdn+9j7gN/Lgb/bHOK2yoz39xJ1FLvuP/grKun1zf9c+rElu+5DVuL+yMNyaxS0PaX3c1SRHIrn/T3/2kbVd+6yv6FnOwu1H3gb54EkPeLT7cDJz6+/zz0O6JpvLD/0sz/cf5yDSK6k+ai6mykwdLwUCQpSSmQ3OZDyHsnVF7F7JXNVneVVmuetnRRbXJCu4KS3gsJZT/cM9bZ4jwJUlN3nA+7Jcp0vz/e5fSFje6DKcfhpXHuiGgio1uxMXkbDHY3R01ayo0UM95NSiTwQ6rjYK5Rcx8zMnvvD8WMdf/t/A6+4Ar4eD7e9DIXtz2IUibLUeZaHoqXy3In/50eFetHPJpuCwnGat4lHU6T1RZkiZsPzg8yA66F2inmV+5SNPMQPwsici/eTv9df1pX3y74Bff6eZdX2Nmh2REz8b/V7M0O9/tuf7VZXVxZ4c+QpieelQi0YjGVghIgm/VocFkOLEZ7suJQNGOV7CQGVV+AMmlgKsEq3M+ZQu90huj8n32E/6cDc8o3/JeP+i8bIhKzYqKVO2NmAKCuwg6rs3ONQUMPQbiMMA1KuG8L6OiSUJ4WW7jKBs8rf3UpmAqoADsNaTXw6CJojxj/diTfLhT5oi9vV/zOdiXcJmUxKsA3JD4KQHXAVCZrlTAu6hGShf8QikzHIWrKjla3h+OMZmnLKH2x7ygY/Huha24+fRObi0ex2eqdV2HCRpwNUfan052qKPr2V/rqQ+lP+9GBuQFcFlJ29cnSVPOZcys9uGXu1aTNRuCJPGcTIy9Wqjh2gUm22tXW69H2CvS4Izz2CDRPM0qIPMqGvjV4LBTEwcAha19+7v5aIvxJqkjMUZQ2b5snUCTuuQEAG/Fnncw6n/yW3yoTU+3W95ojZraL/EL9hQkBnQvP0QngVJGiK7NrgOAjM/MFObGX6beEdgQxI87hYYs17OIFQTEBuQtZikc98Ith9A97A2eDaIivWG9Lv/7Ea9dzsrJMwiSU0GWmZfXleBA58h0ogxW3KfTM0cuxYOcH9y9e+r1+iHfeQT4ICQlDD+ukUwOe50KikrCLxxgA+uEXBf+yVRadXEhj873SlNVV9NQIfeRG3rs+G1dZzOnxPpTBtt5KhjzXPEgpahB03CefEB67nK/HdeXsk3EdlFWNnqL2OP8LtITMu9O+gaBpldADdLfTl+A3bLhoxX4TIB9R9bgNtjLAD90guGQe21SDYpwyrrNU1W5rrCwG91XKuUAe3kHVc/HWxN1+X7e8hn2TMYTDllFKsQYP2eQ8fnNqbpe+E0aqb25xwYDN7hQJrKin4IkWIz+M2BFV6omtLGo5WnkrkCrvh/Usbe/DVHUjXZQEVAAtAAE4jhYP+WOn8YIpobs1MVZdRuDYop7vPpEIMthE3daPCZt2mQ9YCmbBSEmnfJa10BE6sskjSrKNYiZehAVwgUczCblGv2AZ/yJTVtyya8mSsQFp02dR6LUKfh4EJCDHYAo2GAkKMGU5j5pny2UHTNg1hv/7xfBDJXwO3a5WMRAUn6Q7c5SEot1lN6lLGcH8zBFNjL8/MZ+OKnNB8NniSy7WUG+Ihxq0YOSilOcr4qoPxP+5ZMLSydJb1JSR3IQ9YJOFM2mra1VikMx13SPX+/9mu/aA8kAKtpRX02Tci+SAAkS7KlwOQ6120cEmbem4IE5IMFs9Ly1qqKzV6x9FMmedbZubLcfE3KXX10Uv0tBwPMB+h/WiMAaQS2qtz1CQb/i3rGOOjNvp8v77H81qSkTQ+tda7fERgaw0x+rF18ona3ziGBWrZ1COvkuAefB+2k+iw++em1X69zKI3h1ZfriCVgTOPnPZg1KksieL2zY1PU/8L1zapxGy6YAFJqp3u15ROAlzBH2Y15Clde6t4UChF4C2pXGHYcFjomNvjsuxxXE5JwbP4ER0BryLdXTn5xxGRtpTF9hwokOq/V8mrXOvyvv0B687LVTagDgIG85v3heyJgXvF7GHxIBvnQyxiDCbNqHfDXN5++8DXeGc0qs+ZR1sKBtx0vqxCe9+pYDqqpyztBl7w/cPfQzvVZ+CNM/nwq6NoAxsQUYjqvQz5ig94+ruf1YpPSgiZljmQ3AB5pwkusA+ge/qdyW3D218/Zj5sb4LL/tk/KniVi2unmTzveVdmDQvk8NJAkUf+oCkFsYzrqUa6k+fE6Ob1Aph+89geJ62SFIH4Xhlz+vOPjBsjxVgsShjaCL1j+3v0Bz1cH1RXcqpCUbxiiKInKFnghX3ojT03rUdbO/ZsegHkQ+x13DnchHgDhuad6H952ntbvw01GGz8Ds9JEm1sl69dq4YDBa61sqYc8FVz0tlUbf+MopjSmJBDuLaSpdb+gTDye11t35mZSLuzqR9xDb1sVQBgl+kAxVlQVW5umD6IeDWYnPezgoxlLVtDK7EdvHQPVaQA3M1Zyf64/N95/MqWmDsrq1ploJ1I7BU1jnc4M0HK7CKqZnaj/UDMueX8AwKO7K1DAalsNdVFT0Hcu9l2zxMx0K5rNR5Iw7hXaVSAis9s8AJdf2uhmJRqT0PLVczroDQQAGfD5eo5M1k+YNYR+N7nLMCeZG+DSMLtEWYMdfI/yAaDJyD6zBMPvDqE3b8FgE5I5mAG7PCgdCJizQdfM3YT7nxy9jCAA2s5DlQhVUcmSpmu7CDRxQNLtNtfAAdlXV8wqCGC2K/29C0ODL1D+BLak98bHayVUUYvpJuSJ1bYPpiMBAF0HiaifBl0P3ni/yUAITAU3RJfatD4cMDpunUYKT2qUb9tRbNbLP0YyN5My1/2isEdJ80BBwKnpB+rvSJEtKzfzah7D5TVlVepEV0RTRnwhawBKUwhqRJMWN4YFn+KdhYGxMk361q8CnrYIDgtwcCeEC17xhhyOv8cf9o8+a1jDRmJ+El1mKvPCX7YOpy//577D8k+c1joJyqP4bN/zGgfVQ85D+v+/I5aLiTKLvP5PkF79ZmMjexZA3Viodp0FiOY7odnAqRHSDz9Un9mEz9WXpT5ZLThN5Ck0zcvuq7LYoE8A75MZzNB8aAlzkrkAro6/LWIwr0BTrlRRTYHr59DczAauQGN2gI+3Uc9uChZMDmVD8RUKxgQkqSqKPmhiG/bBZGTypaH8stfIvrXO+NcOoeb1hC9CesQ6Z5sQe6R+T8k1ynuGRae2PcFDPxvylAvHSjslb3+vd46A+X1+cbJ8ESwPZ9JxOX4f2uYa56Iz8BKAqWEHy00mOjw7MDn0Pl7mkxl0cWqm/2bIfEzK3dl/E+/VrSOpvlgikwUyovPATuKRN/P9BMOyFDVpkjPgGHz+wP33NMM5gxbg+2A91SZewvfwkU9NduCT8jnncn8+LCxdl3C7Ye3lFikM10tVskedvzawFfnTD1aXgMCeQC+8F+oIKOgi3nmOxPxHZUjVmWSdXGoGsqeAaHusFHOzScvnLT3gdWp8QY2QLmEOMhfALXT1xR/JiGIw+Sj4wONpoICAAqNrQAY4iIanY40VF6EO6UbjddZtztJQVhY9pIrtpgf7XFb38v2Oj65dcW378ZpJ2dZuPcL9gKwLbj3gvOOS9YH1Ax8fylugRZycRzXZ2qDVwIQyu6oJ5jsnuy2JYXvxaGO9xOtv5ZK/1pijE0U66CaGB0rQby/mIPNhuGFtkc30D6+t7U80PkBlEAXYQEkVpDU97NKhBAOjgqsyHymTlVV+l8WMyfOdegS2yxdcYxIIXwnTwZLy7a8+iTVLmQbWZ1o92U+ul+G0UJk5EXumlCUy2kTl9yPXMZHpf38QAg/QqAQLxZgO1jkJMJuNBeBJy6PAShPiD8cnx9G8Lu4GpMngC1qQNRVb41Li9clcAJdvZC+DhPytQdkTBfSYBQWJJg4HQtJoX/KTYYyrUQDzs9SXoDIn0KaVqdfwQIOOa5FvCNJYrUMBjW4MdCpRf63WL62X4cxKANY906RfHeD1T49aI+De/n8ABlKKLKOmJn9nBopDLa04GBIDSyaik8Rkw6UU2h9lS2Zp+adGNw2AbaSSGLu0737MQeYDuLpFgwEiBVZIGs6GUHRNrBs0+zsMhOu1TF7WVDV/CYxpE4/7pfrNPpNTldY6CeVDD38EdBgZD/e6LsCJ+Z1lX8n1i7Zdtz6G++Ddrsjlwq9YY6Dn9X8MdQo0UNRnUQHInabNGAGZgLMq2TeAj/FZxLBeZJ9CzyI181bI1GRWBV0r9OdDFhiVaz/z1wsxB9l0wJUZJomCFKykBEJuIAMVbX9mvWFysxJ2bWWiVCOE8JfXJ8raQQb7J4KfpGTXvLjRB98130S9IRzkKretEXBlSzyprVMqe8ffTHYBM0XvaS0rIFr5QGE4Mr3WuvvW6//EytahG2a6pH6Y9UseIVY0TmKuaximAVkADuL9Bj9MmsBHc20YOOc8muGAROCWzXhjaivzYLg9xmygSB7AY2/KSsOT8PE6AxkDVBxsyfKB5zVhVgVGDVespqI0KE319tMEer0HNQvLZ3kXwFpY7pE6BFBnqfz5X2NdovVoZ7ScSso8yvd8GMrcvaJ95SNPfd3b/xJ4/8chDRPFKjljOGD8t58d3QyG5GnNIJvMqbKc1LrxLstcB2lmpUzWhpjuCdhk2Z0Z6UAupUzYPJk/l++/D7e85hs2tKX5orETheVBgEIMaSfpqHEkptFHpYTYXBtMRWYd/V4HYAdwdCEIEno7UxiHJkiZfeBdDIys7OZPvfm9eTzuFEpcVgeU9wGwKXlHBt1jvgBrF6rHWi8pYONNVAvY1sJwv/ouu7++UH3xENxXM8XWz24MzlGbV1H/HnTeLBg4WFrwAc6KnA+nmZrwHMoBRoxoczJ3Ac1WU+uTst9l9hsvzV/3pvKGHcEtu1Fm9CdcqgXuXkAxOh444Baw115bBGuhgWc6Allt4BaQzI5w26lvJ3vQTaRRZ92nZv+THmxi+YvVRGbUXSy4MlxD06/AvXSCDpKHwE0581t/DrniyadecvPEPNj9wTrbpPzzrvevA3CCycH7U8mfVXbT6ya2LB9JWSHw638w0SEquDyarFBOBI8wiXgq/+a86Oz/GdUZ+W4g8DTmoT23RJOa4fon7UwTNAy9spLJYwOya6GPZbysllHu6+RCVtTzSdmLUt+FjUiHCyvQQhOLcg+DiR8gNeXgEETzsQeQeEhb/cQ+iOKhfDUp+ofdef5m2spssCGk4XQa4aS6hHujcku08lf/aKbCmHz550HBP8z4fz/WLavdzpT83p9Gs+1ZX3Xqaw7/r6Ec9bUEDejYCvB6GdjA1s0aKls7ytTkGZgPiJFKMhuDGar+HJzJNC+u8xQT91JmnGBzpC8n59dP7dpjcx6Hh7+h6SyCHsDBbhdX4tbnMPNQ/KH4VnT0WWcADFlKePAcNMGo51dTkmb9r1b5/nlLZGLVNJCpPNpDs6pWYdnX3g559uNWf23wE744/m4BV4BbTM6yq1b/vX6WLe6sM6st+dJbhvG0UtcS5i9/xVTUT5Wy8avUOhcWKVvfYRUpA92/9s7QwSTrKLmNh/NDDEUQdhMjUxOySmlTgQ40z5LMTNAxW37Tmo91wrUByQJtBGrqsYzlLE9gQ9strAjuXKAgUNmbtZiUe4YWQVpXdzlbtJKslLzVuPtgEo4NoEvgV0VZ/2Q7DA9+mY/DiEUXNV/9GKYd6UNU/20toNNelMqEPzRVJsujrwPl+6lPI/2H34P89GWzyynbk5etFfqXI8ow5era3xk2aS1BlA/dHdup84AA4NHf/v+jt8M6s/BG13zNg89DetzDIcV8LGvftOLlZRqnGhI4/HpXzmoteDtLeKZCZVo7EUjt/Cqi92fsZCcaMNH50U7L7UC5jIMwWpaynrHlhM+4IR8u53KPkkWtx54FRbGNWS3gTmxACsNZD6yHxHo4C4VDFTqREjlbRZpv/S7aCbmjB2Vm5yxWlWHSs23u2tbdmc07BEQ1oXyNmXXltYhbnbd9AOk3/wwzpTCajsel2jm9Lo91HbsDqTCb5u1FhTaOqqsdV+dAq9cWkMk77xxewqHt1NV6lpd0zJJXvymbxu8YQDbRERs7pNohSQzvqwuR0LJhm1Ec9NZjbcSxTcv1GAGKgZVSnF9JjBjA3fpztUO5EBuTk8TIpYw9u1EbrRur9QMTwQX9hwLFuGEolJR/+K0mR+1V+D3dHft4PMwwVDjZhdqrwjcMEpj55OHzZKCquVC1tQ8WB5uWSyi0+aB2TtMSCBUA17+pf+WUzSwpby49nkPsr72NTMOqoIk7Jep0ktAGt14uWXmUjzONaD2MnRB6d3zgY8C3/2zPdPK1FyJd9fXDVnj9uY/3vpt2IvAmRwiMEPATP0tqU6+XrA46ILBMO+gtatUw6JTFUhrfH4iJ9ToCFXR9X41iT60ST5uCB8RAzu78sWgPPNflQbvwQOY9sOwJQEN9QUM9EkxA1RBVMn+C9oDoNb5qXvIA60j5yWS0YIlpb1XahBkNKaHHFDRDDAQmf6gelAkmbbnfsgrg3/5PyAu+Nvt1GWTvfr/1rBEsNcqqdVDQlU1bH/sFvenZfy9SfLWX3qKXDkMqr7h0mEFSfhdf7/35LzNbKktxpLP7DwGHGvaV92fgvf+jkOyrpbLZ61XfAPzAa+t7BGp3UusIBaCBArZjsjehxHK0nYj9T8l2ZB62x0Non4/VNufjBjQughkOGK+ta8zXjW6ZdzLku4Dzd1Mv1MtGtzYX6QHnClUZtD4ICzqId8uJTDQDZNXeaF7GaUxivlMXfUHrmQelcjuPyplR9yEPGScjsNn9DJWAEMMmXi9X/v+Lv0Z6yW9QB1K7mnrfarpYR/LIHHL6b89FeuQq3kMBnHjbpEvH02ytncpQwHf9HNI9f4e4Qp42EipSFO/t/wfp9//rcH0FSLKbJ+XVhaUKIGLQ4D8hsl6a2c2NrxVtK9okKLX31xzj421ghAe8Q6faBGfib9kY4Op743yfzC77cFqhvk3XOS9vUqhRzaxURa6G15Te0zsC/Nohv1EwR69VZu4VOE2k5/uppiZWCZpIE4wRqkZyn9Miuv3vunbOGBR+ju8B8Psrx8s43Tc9Hjj0bIQNZcvGrKfc759ZXmb2H70UwOnbctR3e+lzgG99Un2pot4vqaF1hnrrFNEjs04tBmW/0ZIa+HMSYJraap5S6zA5RYv9K/3UP617SgFIYYcuPVfH94TKTIimaJg8DWwCHhDqgd1QhRVgvTPPp3OFDwoLJNpOcAAKRktdSGnbZTJOgNWvo+Rs5gWzTqrJV5U/+IKYaMxE5pyA2NZZ2EzlALCBSdtB+9CaWuAT83DAc74K6Rlf5i9Q/I0/RvrD9/m1P/sWpCftxUzp7ydw/2z5qTe4YpV/vuVrgAP1Da0v/eZhjuSNb+qX3mhXZO3U1d8UZNKeH9SGtp0CuCnrs1cmZDP6VJLGaj7L5JtMx3VIMbqpoBpuZtxZMehWK2fN0uSVFvj1UZCNF6C9rpouxmpi54X9FT0GCa6WAVFn8PM0MQUuMx0S2H9A+KD7UiBN1hvgeZv+ycCpKqeHdSlPUBIuTyzzvr55LE0K6Hi35Rc9rX6pKp/Bh196J1YXbZ9VeuH/8e66aLSz+8K/eZafL6+heuqXhkt6U7M3N73ft26lG5YpoZrBwfQDiBlcl1SvZOjPp6Ux/UanmTGTDweAWG7EqhOsBy2D89K/9nzaVG7z4he0eDOZNpxl+BpYynp9NfV0GlVnQQMeuxsWsDqj8GRde9AGAN5hWdWkMUeF1Wd2/S0fbZrQLsx26ovKuMMyoCXqSmSYqPyi12ZW+xMv8mseDSw9BmFa2qvevMqyHak+mIQNj4KUIEpht6QmYU5XXjmlkcgiZY3bN74SUhaWGni8DCQKfY18V4RxOBXfbkEBoSdgPt/0LRELIAJocubJlI8WsqN6s5k6cd7OcX7Axsmnkb6cBa/hdM//AMTMOPuNgQki9pwFaas81LC+Kas5N3Al1s6BTAO9wsqH+FBHCzSZ7lhs4D15RFTT8stDRr4hVY2VcahMy8T570OfgFz7W3mg+7f7XZh7+cF/MkQj9XY/maOEP/o6TAr5UTN1+MWvgXzw41YhKQPdJfRfpKwa+A+vgzz3VTka+enRMzcQVZ8vtWCc6FzipOEU2K5loJnS+GVu8Yh3spxWWaxpiwBYCpb0l6UUwMpsByoXwKnru1ZJPgiPwnAnuZc6cPMG3x4iuLsqeHK7y/w2ZRDvYTpTSn6gCqHRpqpQsDmw7PpEYXxVeqEyIac2na1X0EBI52XA1AcMcV+aIu7vdPBAiPl3CuZaxuv+COmFvwzJPlz/OuAXfV1oR7wz+3U//rsTD94DTJP38UO/loMlHyT053Tf96z+dVO4/neBZ/zHPLD95somlI91aKnxvxkwA1+6X8buA6eNLDHTH9Ko4JR5R2mU+VrQhXxkIpjS1L+NhIb1b22x+djd2ICUnb/afBdygfeoYhSmufehG5vOkjO6BxRcAIy9QkPaA0oRaLURR1E+alxnPQeTpVFFAMZgM9acCA4Jdwr1IzW+HykZhLCZxqyunQwvPdJeQIgVe7PxZb8J+cZXDW/RKa8E7tNXUP3C25F+/PWNotF7yFnK9LAf+nVI8d1A7fj1XzX4cvsz0K5/fR+1tEidgNJKYJTEZSSQuVX/o2eiFgB3RKD8Zkp7jgCjdYid7exoqAVWNPHENuhtEEPoGJq0Zdxso9vk7WmipXftrpvrmIJvjk3pChwab4JpqhIP52loQM07iVFMA454B64RbY/cJVLKIdHIBBxVWjsFranfSii7lpsSAc+UMtV6OGhHm9/oyziE0Znz/eBJyMt+o6lj/fz5DLrfew/kyPPy+Nwer48oy6N/PwBe8ZuZ2T6EUTDj9X8M6bdIaB5vqVvXxTuWyEzuIzlzjXyl+gASt4WWbe0S823FnhyzDwOLgZTS9LkZ0UVpPpPWZ2rogP3FrEMbnQRi96ambVktYCZl6dHv+3Q/NesuPEDJeS6vlAV3jWILIQShKuR814eWHGT8kM0Uq5fyjsgAG1o0NcqKNVSaeTKS4YkPW4jTxaJtQ4w7Qmx/iLZ00E6nju0lVVgFbmIQK8PEIYfAzGVs7usPA898HDQgYfV43g39vEjttKzdknY8Q2h/6NsUqclBQWBw0xLQ4Z0wyE11FrtNvxe9+V6X9a02QAUDxqCjQIVN0ZoCjt5Pu16OmGoEwsa0TJTPJOis86iygA0yXMLeUobWOTfkyRI0Ocle4u5zNmZSZmU9SYypDuzQA9VqWE9YH37zmiqPVGpv6WNy9SoEc1GPq6JqPpoGzq7KQjNF2v6wVrwyqONQYh3CCgfxF4gITbSGPnRlBgJGLXMUWrdy63294c/qPbnS4w/upLp7vRMBgfqpCv52kaeArRFjstqwlkdq2I+u03+0bcKMk+ba2ORePxBI2HwM98SBEAY+MR0DK1EH0gIxMCGXWQ7kZ7ghhtstBuyhrH4Baofl8Jw2uMq10LCIu1H6ryLClNRndQQlBAcWUmAsVEWJEcOhzH4IobKKgqwFRw+KsFFRW3c4A/G1YZMiQfDXrMcnUMD9wfhOMu+J+be3i5cBPmRT4Wg1QBq6kcQb+tS8+t8JrowSTbUh+zhbxNMqG7tKaECLg2BDUarsQ92scyMQnHI8y6wrih5qPWsUcjg9jso6i5MJqnlyEEXXxaUmMkl1sO+BVdPGgiayeyAvy78y3KDb7hslbECKSQky/8yMgluV3HsHhaZEwixVQ/uTY05VQfQ73WAYME8g5Z8OmrhiA+wrKrI0HytX89XOQttRDLnu43CgI5FpZnX3eKEzSdNOZCH0Zq9dMetZeLSRJxRbG5GiBYVWDBgYvC6NOWF1d2aBdSDcmQhWkSlmAgPc043AQUBq8ws6pV/ZhG2YVT8taLKwwd0PVsruB1S//M/JMrXreD6wpxtWet+1sGsD+5mgp+FlMvjdzOrvBtarq4jCpA1m0KC3ntPwPzhwwmwp5PBKPeeZKojaYYZYF8AnSWu5w32BZ7v0TNy5H6nTwBTsvY+pJpqMfwO1U6F338H9VeElNRWsQy9O1dWHqYEPAxVgTKftYS1ZfysD6v2wUooztBACU8MkSc9ruepbNSzFHsupOnNdXKz5GDAURCnEkmN+PNG5NRunjk0wWwia5O93YiPS4ViOdL48f9ubn3VZfHp892uenY7kA0ewSbKQaVjXsZECWCCE5yfCGc9tfTYXO1cw3SbBjtfHJ/U3MIrL2LxIVXZmp6m6G5jdPLT6KrCbOZMGStvECN6zJ1CgpDIudxRWVa+/2rL1A+EVvGQmMghAYE4GNG9P9nOCBZASQpSYwOv403xQlZZ349KEzg6m2Pwq4CqnApvVMSX/zb4aBXqmIpUaELPzdJ2BqWVbvRZef5OVlY0x3Mkj/e53gcA2fV/K/OBvR+PjmKkRQaGrE0b+EFT5tOG1IYZxLX7izlZuKsHMY1KEcp58PxlVnPtNcdYJ+6so83XgoYkhCimIkTx4z2918WtSKEejc6AAEtWdwZv8XKplBwSwCUZftSMTZisDi/uIA2g7qyvggQTtEaKf5vlpfb3DaYIQU8KM0qRlcNgxCoRoObYOTvPjfCht4vLqKnCtc1sXle3/uqrXPjst242osqoKccRQXMMorf4wZdJzpLD1EMZ+Fyg93AQUQNhHmvX0ubdOZMaCGE5piCKptS9ADF7UMsnUlTDozepa/9XybQmfxB45xRkeQYuZxYXMSjVV9ToqrzWrKq45SQBUzakquZ7zQIQp+JRPJWxhNM3O6dgEZbZpAh58zO5F65EoignXlZGpWqR5vRW4TSpDbarM5d0C+cEvQ6gRvPcX6SIQVbHg/lY9ZFdb1ExBBJBCV93rFaDzfEDX69f+2g4TIRMvj8fCyl8H2K5fzDpwJnZlNs/HOxVOA6F7V4DFbdqH+43+rJqlGigJqmTsA/hF0aysxjEiMvRagFlJHGkjJRwO19I79+94bK8FMW9lkCaafdT7NWwY2InT6muH27watrJrGwCyPwo+L26mbjrY+npjHiI4xoxUlUwfvfbyBi7TAu+5hXwnZw9tU48EurLygyJmUzBIZ5OZp/DW1n/4t7IXM5XWmXwtnqXBbGvmW/mzgXMJ6a3DMVO4qYf1WgQG+w0y7yQAqS83teYfmaUTJmF4JpxXYx56AxIYvMbBjGMgTja7vtFG74kikcEELKc5H1uVQNJEO/WP6xHStuAO5aU+2r7pMh/AVUdRJLIJ310FTvuAzUWxHtsBWoeeQo9lppk4awiD1+nNQ/arifAANtVpEiig+kdFTKFT8TL7YxY00vxqOIWyte3IhDqjtmw9zkETMEapHayOoOlcno94K8VPNSWJEbTbDApN+fdfldkmzgVhYExFFGsaQWQlnuwMut8wlU7Pk6l6yudv+eBMYrgyFqcxOQJR/6nTrtx0si3M1ZyzoEdnTDZ80MC1sQXoUyXFB53cZFXumhJjLoFvfRfyV9s/mRJC668dAbOrptTOhXw9j+B6B+FmtSu955NqtDdZfXQFglYzIQYcvK9pootk+mlaBa7VqZbb7k9in40Cm/JLY2Iqa61iUo6AVevoz6QJ2RMLcseRpvIExsEXkZCvHQc/0wUcxxxkLoD7zL25suwr0c7I/Ycqoc/KUP+lVyEe4Kbon7ZueOWUPly/nMDoyu8d/awejnzK1Ci//XUxrRY6Yk734YL5LC2PyHR+qA6+YBT9SzwDXssws8nv39JQuW56OgNoB2LmYjc2NT1AAjOlbUCfo4JT7MEBioTp88RWfD8tgKbM1GDOcrCGQdcGV1JTEWZqY83758NwCXOSb3ud3Jmf1F4FUTAfJYDCe/1BOfiYmaW6k5fwWFcFch+dI6U130+DHbxEpjLlsRfF+v7lR4etxCdFpnGqSjdSNAkf/qPtT/WrTBY544eXjTXWc1Te5A/6OaNTkhnHZ6Vtw+6P/rzhj+VhV0a2YdOSfqskPt+kFS4TbqyMQEjM2z4RzXf57hvThZiD7Mb85FgGwQF+tVE5qCAw84r8DqMieO/dH9cBZ0GYndGXIs563M33GQ9g0G33nO1SfBBFvuzzsCOnQchfGx6Z20L8fBQ8KgocBmQiU7OcM1ZkUxQIwRHTP61DfzzNh92KzMuHK7dxgnvv+p2BNcwJBHzwVhBm3NfrPFoIjHbHCvaij4vZDAtRQGpNNmMrwB3ZVOFAB6YA4MCYNCnZ7G4YDuRXhjxUmnJ6yaC4BXOSuQFu1/250gQsgGx8AhjNt0RlPvV5zBRVk1LUKuRgyUJ1Q3RcrJlXaZlpmeT/7cjplxBUaYIboICIxIBKanyu1IAN9RwaM5P9TAYes16ZdHzmMdxrL0vL+eNuZbnG/lfGEep2eOsEMzlttr8yF4z11B8DFIj1ZJUeWDRVintDwY5sG+ExNQUWRymBcaSSjtunBoc0Le3YnNr09jP6caUey/OYYaIyP5MSfTDjlooQHZfi+Xt63IMocPeLX0Glx9m8JFaz6GJdL5bCywNBeN8xJ7etpDitqz8EYDQ4zeahSAAqGpByMEXo+jD8oGm0vJzHMcxR5gq4fBvHhdjHtF8d2shHagK6uSjuw4EinUL+m/ZqapKGyCGN9ZGxspbBzx3ZYmkjiHqsGSoIT65lL9MFOq/+HoO5iWwysxa2nZv/VmS+DAccDZFHkDnoSAw+mQgBtPpbUuE3sr9TmD2voB3yS5ZQN4kNPuSObA9pTcSJqGJMTuBpx9o4StnkpeYiP3lmOS7pGOYocwXc0cv6N/Ecr2FCNSt1DZfahmE5C5l+kmLUUqOPFoVEnNXhA74Ab2wzuc3Bhz+JHTnN8if1NcsMoGZScpjG1QAmXEe+nwKMz/c/+VrtfGlooQwtHStvvMEcZb4mJXq/6pZyc2GqFPyF9woK4fO8vcLElCzz2eANZ2DWdDT9SWK+fYoTH8SOnGb54/cNn2ROclBLGoaywIlI/GtMxtGaRx7obge9OYq5ILgJc5a5Ay6XcKR8jGb/o7eXPZzPPhYAZq7+cLBJfZ1acke4NRWFMhkYz18rlX77PdiR0yz/+ZZJJhoOpXGAqx0KYKC1429ANDun8qPjvS7l4YBjmLOcEnCXbnDr896s7IaJoInYqjcLU2B23yyHAhuTDDhmxjCwTS/28LAxHKAF+LdlhvuV27Ejp0ky2PD+jzkrtdO5OLDFSoJmQFvT0HYOYcpWm25KKuO9LpuTy9iAlK3NT5VmNLWrAqy8U/OSMjVLhmUKF2MjIrg2a/oSm4DVj9ONd9jHi9saeB7+zriEMOOknDbPuPlhZYoNkBugf/LNw/l/cRF2ZAulgK1ht3ZsrZ2SZaxVANS8i858t6k3pTZmaWBDBuIKcDM2KLt24eaHXSmLKNMasyv1sSPpaJtmRLMFcLvKRkC6zr8o+T142NErHrgzWfKU+3Fnzu58ZiX248JWCcxcQ29nU71os5wivjCUTE3y8Xjiso3FVRDq3eHZj8ugy13MYz4fOzJHeUs243/8dcBb/9yVf8rkm2UGyng2Cc8wSTyMwL4fMDMSqkx610YnK2d2W8wBn/fqMETJu0u48OQN6S5ON2K4YgJedrMcy1+X7OBDcHn+93o8QCl5fvOvyuFcmUO1CZLAJhQj8TIaCu1X3yukraLMpmn1aJxZQqao0PACbcXQp/2tP0P6zT8FHv5QyCMePAwpmAmrrCvOptUPFNEf4sEaA7pfq+kSDZGoNoTVEb/w/Gk/YzPkf38AeNmveV3g9QyKzx0YtKo6vskZ1ggzErW3TpsLy46Hc3/8fsgn/m4m44zuu5kBMrgDZFJqndN4Wtdou/MQpW7G+Gr6Y9igZHbbLx6PkOys3d6CrcjkaoHsAx3PlVhSbcn/X4oNAK5IjgDdksFwyJ4EL8eBP2g0DOfJCWSVm2zXL1+CY1szJC6HlEWkuVdxJH/4E/0e/sp8wW/s1CwV6xQQGhhBWXUdme1DItQRSEeMi6oE+ccHsw3xqI29LGymvP/jwNv+IoTRUe9Tze4kvr+lWRGNkgvGCs+RxZCezcLmt6xyvmU7nhPJcyjRAovvtwGbMR2Zkz7YnTIRbFDyIz2QuFOYEfGcDprkyKIg9Ib7l27cYPDkn6cTWflu1Rs1R9iT6LKdNhAiZDKCFGQQYhj9SwTi6uBJBXdQ/oTQ01vPz2X0m+V0sQyyVUSZFNEkHvxToZXgAKSDR031npX1BHOV8oqqemsW0a2gt/A6JQ+g0IPkf6vS272xXyQUrqd8LBvoMKyDYbQ9guY1AVBwujbkDwRQ6m+9pzYAU/ZUOT7FROuRYk5mxO2HR8yLOTnpE04CLpuAy1m7jvUVrMce+mBchY1Kh5cjUdt3HjRRpRNW/KECqYIGBBr7k/HqaQPKUAR0KMJOE7taWVURR0DvzyX6LQ5kA5h+1fM+K8YH5gnM9Z54Vk3CnEVZV1kaiayFRsnrkcRsQ2wWWINZkIMcNCWrnvR0BEoVY57GlATVJbw8MaXZbZamVx6MQFi+r2zQciuya8Hcr6FDmGFOFpk5LCALecAapswlnyVsUP7nc9OxnNfxmiezkZUjDhCbLSKtUlSY0MLUCDpKZ3Mpu+ADchXMv6u0Z4xaxyqUvbynBWLYutZdv/L8TTIz+1M0sdo7DQVnW8HNl0QmGiu9j2Wi8d8aRaWoIhH9JEhM1ETV7+0YGp1ntm3H4oQYzvJtmNlvdBxwAdctDR34cgbGUWxQcj4HuV1yJ394VtrVxuFuMuYZbnbpm35ZlrBB6YptSyH+VhKQ2r1OjCGa7c7R+noNcyUyA009PHgRBsyTMinlpXsvirNYFDYnVUHZX9Nk7KjD8g8m1CzF2TShLkmoA0Ay5ut/E4OpMCja+xqF2NXfYnAQ43BeWp92a/OwtwmzYPOJhhVHprFen5pZKFqXrPzXYoOSzckyhLao5fcHV2ZvQDQTcCWymGt5XBW63zt/AZdgg/Jbz+3fZbCszWL5g5SShgFSEzgR3mpBlaSacJLGPawBksuL0v9W07ZzM8/SJQeWA9IqVFP6q6QGsJavvtg1xO30gTdvA0rnfxbmJl/8uV43kEk2ek+c17H/AAJAEp3XeY/9MVLqhNkiU8pv4G+kAetk3RjMJT1vz8cdh3ZuBmjgzo+9utfFDUku76rQmWTorDaAvupMk1yraxMqGIYo4IGNBk/6SnW5Z5lgJ2MUcVbRcwOeGmXXgXB9HHWWieZI4LJ8wX4YsSgPvBtIYOxulVFWFHq7T3hRI0LegRa5dyVWMXnIeZibKJhluDuLomq/ZnWqv4l9TbGBwGQjP0nTN+aiHWv8L9tajxmNy0DDuClhtZXdQycWB79TE9m0crLivxwblBIsyXldwr7rQlp9PuaqgDv6bdnnGt6Qqo2356Hn4WpsUH7rO9IRGVgurGtrAJUIeACH6dVUFMWd7aps42wBXB2xk4OH3wtigNEORiprCafgsaa2TvW3V39Il0BAqz1506v3ZcxrOEDloZ+NeLdDB6csbYyQ4rQoU6SGZew73Qu/100acy7Bgcj+ozSgxhQ7ofH/4H7miM2mOoKJzuKuzWC3nOv+/O8eKmv5Y6fwCU85lzJr5fUCZ4sc7nweNkFE7WcBD566PUfBCwMeKXRiNqqMYsyiZfhArPbswu49L/8R1CgcPNDSm9GaJjnYkbw9koKGldB7fFMoieeS8/CQ7osuwFylmJQVdFNBJiU7Iz1m4z5BMzYWrm4kTcwa4fyYAdnUa8/ReWlBpHmTD4n2mqZ8A18nGx936/PK48rqP2Jg11NGPE8JuIUH5YiL4J7kwFjcjODJ7wwsd6x8F+1pAY9amtbOMCNRTaK4MNXePCPkt/XggrEejGmoaAM2MWAFoiqpmZigQImBSoGo3+OruJL9ueL1Oen5eZqTKl/0uf69BVTjT1kYfxaz1etS67spOIhxmJlG+YiMV3VPpGf2TRNAS22+9XwAbv26fPLGdBM2KHuukMtznou1vlr2KSOepwRcP9tfckYDDDTqdxCbIDkIc0gVVBxkpujUilNmXO+vJaGgiVB6Yq7+WD3XhWSAsVbNGw3r9X/JFIHrA+oUhry75pACu7OfDr6uWtG1pl/xSMxdHv/FSqhQdUwgBZ8w49rB6WB2TjGPAlWFO0NKN2JN8uUC0IWCMzPMTSub04CAyddldjuATZA89naAO6gsN61ltUHCGqRntIRbWZuybi399ren49igfMPPy805vxL9HIXIzY9CVVZ/82mYNSIEGm2EPoNmD0sg5keMlwJglUHF1/BBmvo1ZdvlQ53xyD1Ir7gUeMqFOCPlrX8OfM8NkPd9FO3gN38HmYMGyHoe7Xlg9rV6TZG2jPY6ktHUrqasNt+bPv7qdAU2KJnd9ufMb6UgTjEnL1wL4Na0ALUfsM7mnyS3uvKFh7AJsrCCa/LHPdIwzgzzjglF7cGUmI1obKzmlzgtgzexmYhxz9kpyPV69d2UVYHIuFTGkSvOXLAVedpjgZ++Mhsh9DqpCROT24xNy9UWhra/2YwN2+NNgM1N88iS7apvM5cV1Pnvnq7b+LhbLfNq+l7KOLbWtXRrXvGdu/pDSVxJMzXv/6e/sAm+3BVpWTDkXX4T8AbQxAHyGBVMCHuXqC0tnA/MhgrBggKYjh42+zCaXzSWrE6DdA5qJcrU+YOed9RxK6S8B6ABmIGkUf5Zvhj7inpMmvRmSlIZI5Yi5uT6cDneDws4aqnprt/oAtMi/bzJYSiALbE1A3nNgPuNbD6KhGUMpckPYhPkdy9P1+e8TwR/bhBfz8ZAq0EMfU9BoD1Y2DC1oLNPZ79wzq4Xf152PSsLYPMrDZyw7qE/+J6P4IyXYk4CAQxogxlVwhCCMlOKU7iM8VIcerB8JfqEwY8DmY/NMVAZClIAIRh0VzYlD2ETJO3CdWwOV3Y7ttbr17WniS6vIQXfFJarcoXmmhCie1pe0nPQg5X9eO4idJaHMyX/68rCrAXLy9am6YyTAFD0GUe/UYKvIBqI+N7XZNB9GGeslMWi33ejsQsruSl/c4m0AQu6Rs8b46U4ntafT3GcTiVNhPlnrXXDRH2L/7OETZDed5N+qZpPP9u1PjM1YZ3yz35J3pjv4uJc8MmslNd/+n4cPnbF5mwt9qwb5WC2sw/2P8h8M9NPX09VGrwbDX7r2rPhcr1W3+nWNRFLDoIQgEScMUesKHH3MfMxV0IPzYzZRyilwjkwuI+HcbAnDLRrXep27pxuyFt7+biODVaHoX5D2V6HYK5pT+0tFwMR2psXKf4c7R3CjBPMODSA5Dzaa9uymnyByFqYKgszOoGax7WbxW51VfeBXMhVuaTz86Hjd9+YLl5PHusGXGG0TKuX/P1ncO1mAY3ln7xabssNd1FVuBhlpA1dKYLoQwoSfTwFKb/iykAUTdXE75jjMlsTVMtUQPYf/qJGp1aZBMjQ67q5ayBNQsGZBrgVLKC6s4LxdcEXrcKADL5WnXcYhM/3F7v5pPcgE9+tLBAgCMyj/Kd+S4xean61CSbTtGYkuN5Ziil5ITZZKvAOllUBJ1+d1rUV1boBN29ZujHfzAoK6HT/ExCgepOy0xd4sJ/mvXrc89LPmbnIYFJFBSl/892vxwRLxY6AB7YdYAqOCMihHBiAtI7KsDroDmbOHgwVQPr6ZfixMXsTCDU4MYNdWsbDBKDYdxFivBA4obSq/JOgmwB3mgHIUHZtPdtQaAJ4pSVPdit44mYESjZT5r8v5Tols+ZyGoYcfAmPK37i1/7ap4wVDcPqcV4HFzvz6n+1/h/INEmNKQNpFGcAG0zx60WVceiIpYcGVkAgpMqJsZldEKWaqCF/A2A1PTlLoVzYrKPrWenD0pgmLM/fR6uza77M6i3YJu5mdG18RBKioadkS84uN8W12w1sRbYd4Iq84QXp+qw118OHBWyIgGbmK0iM+URhpDNGBGFtnaZlgBhTOfvpCWYxtKxITKem6eCvCeK2Cl6WgzlZXcOAO4Mv0fVS2TLBWQ/AaMkPg6WC0hjSkiknwhiFzTQFiQoDcUomFX6VMbFJxuPyWuDZ/cyAK90bfz988oa04ZXc85BtCbgi3Tk9y50QBwakoSpa/2a7agVTCjYRWaynH0L+qQu4GYteqyBTICdlXviFBrBkQNc6BDOO0g8FdEEBPd0wc4G42u9RQadZMfOEGxkSGbi0TdowfA3TD4emzTsQSGUiBN90Fw4SKgt0n2jL4HrB7ysMGUwBEVE0wrm8WQPc85BtC7g+ILOCy7LJdk89ZIABDwfQchkCmImyVHtM040AqWVgMiIpjFC9xsBEORATCtVxCNB0IyBITTf8L1EZa86JmLMdYJZQP3gHRewyOf4FB63QcfalptgKaOpCn71v17CYnQMiw1XAs78bOiryLYXKt7IDq+fxtjIEMO8XcmxEti3gihz7170/dxmDxswkhPeDM+gCbfF5Mt1CsANsNooDqYr7igwSX2Pnyo2oEMkHwlVpADBeY3pCPUcpZYrlk5uoQbETAXPK56nXhK3Bw30iBjMaYLc+WQBQy9QEZJ5NMmImtAfiMMHQ2SSEoAkzIjHnFRvdgWvesq0BVySD7lj+uGZCAYNRYWwD+J6UdYmMAkyop6TrMLViWydKV0DCCQv8mmNXYi9XgyE8zqZpht7bgaL1669LXgkHoHcc/X/06fdQr9fLO9/Wz5inmmVaUOKACIEomG0tSzUmYeyAGnD6DQU2C0xmlzYmJmZIU89gnmZmu2Y9Mz5Ol2x7wBV503f3U78O8TER8pea7x3GoOLvxkaoJmUFmCrpAizSp2VpGQhMq3kMf8MWEY15Z+VRMMVAw8t2KtDqOci02g0M4vXyII3Yu7L9luu/7HMxWzUdgpXR+nJ0fTDtCGDtlC1mO6uu1qWJZq4mLcDRll/THdquQZJWzgjAFXnL96RrM5J+nkwoe1QyxhQoKOIK7MMA6lmZuQkOwDgewQtJbUgilOSRRiUQ+KcObBi76blBSxv/Z0bvXutuLIuoyGaGJmLLLvo6aJglNQAJPtaQIICTj4+ikHDLIPiAmg+VoXUJ98ll8bFa9hTz2feswD+ZB7evxRkiZwzgirz5e9OB3NJHjNEqWBLPNikJO+ppK5hS48P1HxOrDdQ3q9RjY1o9hS0gmnmanfe6Q5kREKlhN7+0ua5h1QEwCuqaF4HKTUlHot2iRxWiSUlRx7Ysu6wBC+9orGkCAPUc+WkBJAom8r/4k4VfGxzAxv6mHs9/N33sxrThPXa2UhLOQHnaT8ltuc330SBwL8oyFRTWQxJDgN6m40Arnx14ESkrsV1vLOMDzBas6aLfNpx3Ey8wGR3rcxACUTfe358jozz7BO31Ilb/Pi0aNkzNjBBVZFVgbmNNo3noYc2XgKWSmuvA5SvgyTwcAaplswlAWl1yD3bi7hvSE3CGyRnFcCrn3I+LszKX99YNTr8PbKcAsOEz0V8vCiQARGZmZtokZcWbXVevNVNQldwBYaykk5aJBdV3A2JHp5OKpXnvmQVfjB0BngZmLFBBpzUw89XK9Dpw/pgK+2tSAhv7awYYNSsl3o805YTxNBGgyYPLGr2fm8xMAYE9/3tCVjb4zsLTJGck4I5dk06e2+UGF5xIPpukiASNovE5xwTQvCsgmZJqYqB9+477MX5lioUNrEqKCQY4VCk13N7VP9i5NBFoaOd8DlXsomkFMj1TVVkK1XNUsiaatGwYmAzYEPZvx8XaAAiBK3QeXMZq0UaQWTnD/7u9y2DbzmNtq8kZaVKyPPU6uVHKm1rbFQFuUg6fPKdSt0yvczPDJkT12spkqODgvGw+o5l5ynZwVjWTEA6QcLx+8iC4yNgEJRZlHzSapZg0aYP/NmEiWrmIph8IOOH6Nt/6HWxe6rX6maY7ppDXRF38dApg3pQ9SU6nnJEMx/L2a9IVXeq38qM4wQCoSDBVdE7mhM82mqVSldiuA5lDcDZqGG0Yk0vmbzmg4CAERSgBhOU0Vn6HMPdRcxMtW6vpDDo5t7FhCy5HuMwUZ3eAjk1tW5coPV/L98BT1KyFUpo5E0W/jx7ePwSwFdlSwD39Z+SSp/9X2Y9Nlndek65BeY+4k4zQejdAYrCBQNRziLEZk5zPlxTzkZzJdIJwO44Ugh9JjwEcuBkA6otKTSHNbBRwPz81WFwvqAEThbVe0AAmxVkjQAM0zrINggAjhrSy27LqcQ6kcNrAdHp9k4+xJtc5H3r5PMC25wq5pPxhC2XLAPeMn5WDuR1vzg15NJuBi9hkeccPpEP50VwjtLkPeKzNsBeUTmfhmwp6dIIOJ/hQwZBG/SbzmYAmEILQSxuzGahgCtf7fnCFZOYbzbywm6A6T7Fjo7AGPDYVpYE2l8+MQ+en1rFpOwqDm9Nz1bm81rek82be5r/v36wV2yx1EemNC1kfH3alHMQWScIWyP6fqX4WjDXuWumw9Lbv3fx5b095pVy0stLvgLvI/lIFVgqrCpTdonnpyqwTjVWxAV55LZ0PhNv2Ba0fFkwjB23iQXSr5/QwAl+v44btgLmZuxN+m+U35Z9NrfrWvPQcA6ctg+rfjpmNgErfuU5TfmT5vDv/fcs8pmtVsN2avy7S4cMZ2NdgzrIlDJcb8HYk8LvRFkvPsnSdbPpmcpnpbl8ZQsZ31qBHXwWIb8mgaSX07zBWSzTEkJq0CjYRhN2oVDHdPgymUiRRYgBxH3DoAlJkuvCHyGyRn6KJBowBIQ0jKgCZRbnena7vSxOleVq+T0ww2sjERRSu21DnEvZfwBPmBLY9BWy5vL1cfpZ7sAWyJYA79qJU3gjZvxQEPqn2ovt2T78HeaNy4ofT8srf4Ym5lOtN0zmKCfPJeIKyBS/4nWkGEhJim8FK7Miqk5gugCkKK5qbj2O24YWm0S+dzrcFkgJhFKxg9lJQTwVHQEw7FbLXY0A0Q6Xx0xj4DRNyt3F9H/af06z/NLx7e2+IjnY4NA+zdbJ8bKE8/VVya77F/VXJUd9oeuSt3zu/6NO+/yhX5zJelgu8gMFlIKvHhGeXiEGUV4dPhvQTKPTvY2wq7UC8MENpmbqwtKNyZWxShhknXTMW15qMBBDrSFqzUL9bZZOVNclUwKSZOpXPZDlT7Eb1vzt/luDIzNf1blSyr1Zcm8upncqzO3r3q9Nl2CLZ0ijlrk/jsnyjtyPOZbz8aT8t12FOcuJH+gf4RCnvo+sLBe/yJaKsBvvu8x4RI439MTLnFGwgoICGJwwkLhZ8IRNUl+vYJ4ONTE4boO/GAQ37nXzWRiiXgCeNiaefZso2gQ9jYWn4l8oQCsqMopsyxdueh5mQcwZb0bEDPHwhZfPhDnPr7KdkSxmuyFNfJYu7VvoXgyxyb59rcuht3zffWd9f/YocjZLhjT1sUqL5Lcw4rmx9bYUCFDansgnOAGPmSghjUj2AuCwGl7YIDbCP2ZUAWpK0AQ7yxTw/GQc0gGCWchmYSKtp9B6wGmtpO00FVzRxbpND2Veb63OvUchDXLfSAecGXNrqBatbDrgiZVhg4ZwedHtBMyhyZQ697ar5Nv6+Q7K4UpzmlMvu4ONzcFMw9OgCni0yKI6aj7TJK9h8pDQ98LpgHgZztGvN15pfYBYvrxftCMgPATMpm5EsTRQRwCiSODJRgXF0ksrA1PUT5xmE2hYncgMcWO++jusVBls9VMpezn8Xn45dvU4L4Ir0oNs1hGarsuuDPfwH18w/PPv4a+VQ/igvRN9j08IUOHG6lU2b0t9sVrZmo8iEj+fm2XiIAu7jYQZbjq6JawJHit1f5FFDMNBnsFy4fhZgOV9MMCN/tiyn1xZfLZuP127FgtFqRl7V1G25Ow3MpnLaAFekgC7peIiYT1ea5qYMuiswZ3lcZrsF6bdWPxBMtkbRZQwGaDoyi+1a8eOTvhDcLASzYxHerYs3fGWTtDHlRuxBtzgCWcNQMsMs9AwaRpQmODIrb2ZEY8aEW/I9XbMVzFICJPnjQP05tEMxI7vTw2wqpxVwRfpZJwPo9law6fKYY/clXHbimvnPCn/8IVnKA/ElgrW3/A6mHMhMrPWz3yDgySidgbFlKgC8yLUdMGfGM/Aqwyno67mZuxQDMXLZHxibiFYGRzjp2ilfL4C6BZl+RzR1j+/ahWs/+nPz33OkjLPlsm6WGg2net11usxIltMOuCI96JIHUkTNpoTl+zos3faDW0P/j/tROZA/DhbgibgvBe7Zo083RA8xzDqxhyvBN5MRGPk4MRmxB7NoALiasRPAmjLfAuD0OAA6MgkurAI4TyLBZOX89YI7MzUX8/EmbIH0M0gy2FDeTRHN3btOpxnJsi0AV6SALrfMrShMp+996yro7sXFZTAbWySP+xE5IAV4GKaHSWsyll8KFmI4jIMfQRnDNDEh0xPEajHfFFgQ0SdsWWUKeCoTTMjpw1o2TARKZpybxYrLuQ0ObcbL69cqNF1rL5vYMkQjL94u2+dtG8AVKaDLRHFztif3lZp1Q3Su2JcnM/iufNe/TUexhfKYH8qMlwbGA62kZiCon6ZWm3jghU1GOzdlLkK3aWiCNcZ8lM8shrIfDTAaaVlqNfCNgDs1BNDU41hW+iMfu2HrgFakvLctl3tzrtwFQu0kw0s+L9tO7xjYVuvh3n5NWr4X/TzIo0VhS29e16hdgNMgd/yndOSOH0sX5h7yW3ItjpF6iXafpXbqY4FYDjA2Y8VVhU0ENgCRCSVcSfkipE2Y3WG2puA471rtCtCwODU1uc5iTfINj2eFv7i8K22rwTZUJOtH/tNtAnuw5ee1HXy2VrYVw7E86ZXDIHV9xIf+8CWnfyu0xR/KUdWur9P+4m+WY127mlvH5xqfbcI0nUw/YVKGqGn/ZRXTz06kcWCDRc3AlMIrn2oNYgR0Is9y/GT+/ZP52qNZqU/gNMuePN62MIy3lUa7frvu5rVtAVfkSf+lH7Tck8E293G59criS7K52eGSrHhlAWPw15ogCQPNgh7AeNyPTFZLT8xo16TpmSSrRRtVImfOiEYSc00NMRTmKJ3fie22r0gdCrh9nlPENirbGnBngixenf3OhP25IQ90NRSNaZ8t7KZVTdLxcABGwwcBcCCw1GvaoAnnZT5fSpOvCwb7a5gBtgqy4j/fdKZu3rNdZAdwmygZfHtWgKUMvEsyay1lKOztB6yZtQCeJjYMJ/DxOoWLWXCVQW2VJKtEJSn95NSsicBJAdXRbD4fz/dzdAdkmyc7gJujPOrFsm8l4aKFhEu7EnkdBtbjROQ2ytlsBFsOsvnYRCrbAeZZM1BA7NeakSXdXSXIkH2g26tPtowdmYvsAG4LZU9mwPM+jX2ZwPZnmOzDMM7XD9Kyf8dDBRPgwIQpaOeKTPh4nk6wnGPTxyA9uJbzkWM7DLZ1sgO4bSB7XiQX7V7BBdmEW8wm3N78VBYzIM7PYCmh7j2ZIfd0w++yJcXIFEQxAaU3A8v7D8qgc4kglmPLOc+7Vsr583KQ42d2mGtHdmRHdmRHdmRHdmRHdmRHzhx53A/J4uNeKkvYkW0hZQ5kWU6Ds0jO+HcLrEt24/L8762P/RG5+cJ/J3uxI6dFCtA+9/ly60LqJztfhbNIzpooZWG3dA7enSN7faSvDkbfkj8P/+WPpePYkblLAdquhX4Tp35GTt346GSOxF54tgxNnDUMt3BOv8xmj85zTENnc2npZR/zw3JrvxRnR+YizGgZXPsRB/TLTsgHcZbIbpwlct8Krs+962J+1Esy3kS1KMH+DLqDXcKh7l4cu/OV22PB4pkqdUvxYi4eyH+LdVVFuyVEkWO7duEWnCVy1g18l6BJftAHK8h8k5+yBd0wg6O0yd3575Z86PCd/3m+27j9Q5MMtKUMtLKKovjLe0YzXQYps2K2bJ+T7SRn7UyTL/shWcrKUEwZneE/2lME/WEsZ7v72txD37rDetOibJbbbCn/3D8BMl6F3S/vmceLOs4EOeundpVgygpwsCs9stiMYJvhb4pSFokmHE+Cmz6TcOuHz3Lw9SDbhctzu1yaipk+PTlaO7DyZpqjudO66WwFmsrOXMoqZTX37qw82Ye7Cl329QDdvg76XRfZ1BXZxz4JXHby8Nk18bcALe3CzYm2oSvH29XmFXT3FLM8t+f1OxOkB9kB3IQs/oBcmk2ky7PSXEqLQ3lNW/l+1/sOpwtxFsoFV8jHy8RqzFg5frabjavJWROlXI8sv7LfHexoWc2dB06WkPpo2z6B7V9S/j+Gs1Qyqn4+f/wbWg5Uvh0va+mwsyp8VdlhuDVKD748bpf9uMJ8++R+XPb+n97abfu2i+x5QY5Edv0LUY5lui9AO7KzaHVtsgO4ByAFfMuHN1/Byrq4hfuxlDosr0gONAxe413Ylf9dwT2zmKOfj7gL5/c/ykya/LcL/Zq6tDJs9rOpu2rp/McdJlu/7ABuG8nnvUAOZbZ4GR0abfbTbGvH4fapPU3KsZdv1et0d+TUcnZNXt7m0om9e7r/o0CEbs7K+0RKPW7pUhptDlRkL3Zk28hO0GQbSUbKnma3LsjE/pM0sKygK6JgDPtWli0asCPbRnYAt73kaIbRyTLJOg9L7OnK1Kjikw3A65kqpdFGQsMuyHlwOQ3cWN7DcLLsbXK2R1O3o/xf34J8Vc1OQc8AAAAASUVORK5CYII="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/jquery/jquery.min.js?ver=3.7.1","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.004Z","timestamp":1785130090004,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-includes/js/jquery/jquery.min.js?ver=3.7.1 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Ba4fnY4IpP2BY279wqXHCDVq0wwi6zA0SnaiY8Uk1%2FB8DxltBd3IcnwlS0bnM%2FGjf0SK58PhWO6DoaGH3WT3ffr2wyLRjOf7X2v%2B27vpgc8IE9WLpbLW%2F8ba8YyVD4A%2FN%2F4DhmCSng%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d368e3a120a-OSL\r\ncontent-length: 35200\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":147109,"size_decoded":36033,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (862)","md5":"2c726692c3463b9200455bb5a63fc060","sha1":"6a8ce9449ad65e13b1b78e9fbac9cd2c99573253","sha256":"e3e9faf8caf4564d4952e8bc09836d41aea7b90a5d46d99f6eaef6c113619aeb","sha512":"763f49f482605cdb5c8f89af146785d90c075f95c24407ff55b5607130f97ed06b8633163ce0c64fff5a626eab4754a385348bbb8d8ab1606fd5fa0a7338248a","ssdeep":"3072:csBiP9TCt/sUp7Pi26wJC1+mvXmQ4apO1ah:hBidCt/sUp7Pl6wJC1+KmeO18","tlshash":"ebe3529a7afa21319207f03a8d6fcc08b276544f1a8ded04790c52a55f1583c97fafe9","first_seen":"2025-06-28T20:39:24.10035Z","last_seen":"2026-07-27T05:30:59.80116Z","times_seen":52,"resource_available":true,"data":"LyohIGpRdWVyeSB2My43LjEgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLyAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIG1vZHVsZS5leHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSBlLmRvY3VtZW50ID8gdChlLCAhMCkgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKCFlLmRvY3VtZW50KSB0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTsKICAgICAgICByZXR1cm4gdChlKQogICAgfSA6IHQoZSkKfSgidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oaWUsIGUpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBvZSA9IFtdLAogICAgICAgIHIgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsCiAgICAgICAgYWUgPSBvZS5zbGljZSwKICAgICAgICBnID0gb2UuZmxhdCA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG9lLmZsYXQuY2FsbChlKQogICAgICAgIH0gOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBvZS5jb25jYXQuYXBwbHkoW10sIGUpCiAgICAgICAgfSwKICAgICAgICBzID0gb2UucHVzaCwKICAgICAgICBzZSA9IG9lLmluZGV4T2YsCiAgICAgICAgbiA9IHt9LAogICAgICAgIGkgPSBuLnRvU3RyaW5nLAogICAgICAgIHVlID0gbi5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICBvID0gdWUudG9TdHJpbmcsCiAgICAgICAgYSA9IG8uY2FsbChPYmplY3QpLAogICAgICAgIGxlID0ge30sCiAgICAgICAgdiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgJiYgIm51bWJlciIgIT0gdHlwZW9mIGUubm9kZVR5cGUgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZS5pdGVtCiAgICAgICAgfSwKICAgICAgICB5ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYmIGUgPT09IGUud2luZG93CiAgICAgICAgfSwKICAgICAgICBDID0gaWUuZG9jdW1lbnQsCiAgICAgICAgdSA9IHsKICAgICAgICAgICAgdHlwZTogITAsCiAgICAgICAgICAgIHNyYzogITAsCiAgICAgICAgICAgIG5vbmNlOiAhMCwKICAgICAgICAgICAgbm9Nb2R1bGU6ICEwCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBtKGUsIHQsIG4pIHsKICAgICAgICB2YXIgciwgaSwgbyA9IChuID0gbiB8fCBDKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgICAgICBpZiAoby50ZXh0ID0gZSwgdCkKICAgICAgICAgICAgZm9yIChyIGluIHUpKGkgPSB0W3JdIHx8IHQuZ2V0QXR0cmlidXRlICYmIHQuZ2V0QXR0cmlidXRlKHIpKSAmJiBvLnNldEF0dHJpYnV0ZShyLCBpKTsKICAgICAgICBuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKQogICAgfQoKICAgIGZ1bmN0aW9uIHgoZSkgewogICAgICAgIHJldHVybiBudWxsID09IGUgPyBlICsgIiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gbltpLmNhbGwoZSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGUKICAgIH0KICAgIHZhciB0ID0gIjMuNy4xIiwKICAgICAgICBsID0gL0hUTUwkL2ksCiAgICAgICAgY2UgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgY2UuZm4uaW5pdChlLCB0KQogICAgICAgIH07CgogICAgZnVuY3Rpb24gYyhlKSB7CiAgICAgICAgdmFyIHQgPSAhIWUgJiYgImxlbmd0aCIgaW4gZSAmJiBlLmxlbmd0aCwKICAgICAgICAgICAgbiA9IHgoZSk7CiAgICAgICAgcmV0dXJuICF2KGUpICYmICF5KGUpICYmICgiYXJyYXkiID09PSBuIHx8IDAgPT09IHQgfHwgIm51bWJlciIgPT0gdHlwZW9mIHQgJiYgMCA8IHQgJiYgdCAtIDEgaW4gZSkKICAgIH0KCiAgICBmdW5jdGlvbiBmZShlLCB0KSB7CiAgICAgICAgcmV0dXJuIGUubm9kZU5hbWUgJiYgZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0LnRvTG93ZXJDYXNlKCkKICAgIH0KICAgIGNlLmZuID0gY2UucHJvdG90eXBlID0gewogICAgICAgIGpxdWVyeTogdCwKICAgICAgICBjb25zdHJ1Y3RvcjogY2UsCiAgICAgICAgbGVuZ3RoOiAwLAogICAgICAgIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gYWUuY2FsbCh0aGlzKQogICAgICAgIH0sCiAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyBhZS5jYWxsKHRoaXMpIDogZSA8IDAgPyB0aGlzW2UgKyB0aGlzLmxlbmd0aF0gOiB0aGlzW2VdCiAgICAgICAgfSwKICAgICAgICBwdXNoU3RhY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBjZS5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksIGUpOwogICAgICAgICAgICByZXR1cm4gdC5wcmV2T2JqZWN0ID0gdGhpcywgdAogICAgICAgIH0sCiAgICAgICAgZWFjaDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gY2UuZWFjaCh0aGlzLCBlKQogICAgICAgIH0sCiAgICAgICAgbWFwOiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhjZS5tYXAodGhpcywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG4uY2FsbChlLCB0LCBlKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIHNsaWNlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGFlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgfSwKICAgICAgICBmaXJzdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVxKDApCiAgICAgICAgfSwKICAgICAgICBsYXN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXEoLTEpCiAgICAgICAgfSwKICAgICAgICBldmVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlLmdyZXAodGhpcywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuICh0ICsgMSkgJSAyCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgb2RkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlLmdyZXAodGhpcywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgJSAyCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgZXE6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmxlbmd0aCwKICAgICAgICAgICAgICAgIG4gPSArZSArIChlIDwgMCA/IHQgOiAwKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKDAgPD0gbiAmJiBuIDwgdCA/IFt0aGlzW25dXSA6IFtdKQogICAgICAgIH0sCiAgICAgICAgZW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVjdG9yKCkKICAgICAgICB9LAogICAgICAgIHB1c2g6IHMsCiAgICAgICAgc29ydDogb2Uuc29ydCwKICAgICAgICBzcGxpY2U6IG9lLnNwbGljZQogICAgfSwgY2UuZXh0ZW5kID0gY2UuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUsIHQsIG4sIHIsIGksIG8sIGEgPSBhcmd1bWVudHNbMF0gfHwge30sCiAgICAgICAgICAgIHMgPSAxLAogICAgICAgICAgICB1ID0gYXJndW1lbnRzLmxlbmd0aCwKICAgICAgICAgICAgbCA9ICExOwogICAgICAgIGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBhICYmIChsID0gYSwgYSA9IGFyZ3VtZW50c1tzXSB8fCB7fSwgcysrKSwgIm9iamVjdCIgPT0gdHlwZW9mIGEgfHwgdihhKSB8fCAoYSA9IHt9KSwgcyA9PT0gdSAmJiAoYSA9IHRoaXMsIHMtLSk7IHMgPCB1OyBzKyspCiAgICAgICAgICAgIGlmIChudWxsICE9IChlID0gYXJndW1lbnRzW3NdKSkKICAgICAgICAgICAgICAgIGZvciAodCBpbiBlKSByID0gZVt0XSwgIl9fcHJvdG9fXyIgIT09IHQgJiYgYSAhPT0gciAmJiAobCAmJiByICYmIChjZS5pc1BsYWluT2JqZWN0KHIpIHx8IChpID0gQXJyYXkuaXNBcnJheShyKSkpID8gKG4gPSBhW3RdLCBvID0gaSAmJiAhQXJyYXkuaXNBcnJheShuKSA/IFtdIDogaSB8fCBjZS5pc1BsYWluT2JqZWN0KG4pID8gbiA6IHt9LCBpID0gITEsIGFbdF0gPSBjZS5leHRlbmQobCwgbywgcikpIDogdm9pZCAwICE9PSByICYmIChhW3RdID0gcikpOwogICAgICAgIHJldHVybiBhCiAgICB9LCBjZS5leHRlbmQoewogICAgICAgIGV4cGFuZG86ICJqUXVlcnkiICsgKHQgKyBNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCAiIiksCiAgICAgICAgaXNSZWFkeTogITAsCiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpCiAgICAgICAgfSwKICAgICAgICBub29wOiBmdW5jdGlvbigpIHt9LAogICAgICAgIGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG47CiAgICAgICAgICAgIHJldHVybiAhKCFlIHx8ICJbb2JqZWN0IE9iamVjdF0iICE9PSBpLmNhbGwoZSkpICYmICghKHQgPSByKGUpKSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZihuID0gdWUuY2FsbCh0LCAiY29uc3RydWN0b3IiKSAmJiB0LmNvbnN0cnVjdG9yKSAmJiBvLmNhbGwobikgPT09IGEpCiAgICAgICAgfSwKICAgICAgICBpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICBmb3IgKHQgaW4gZSkgcmV0dXJuICExOwogICAgICAgICAgICByZXR1cm4gITAKICAgICAgICB9LAogICAgICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgbShlLCB7CiAgICAgICAgICAgICAgICBub25jZTogdCAmJiB0Lm5vbmNlCiAgICAgICAgICAgIH0sIG4pCiAgICAgICAgfSwKICAgICAgICBlYWNoOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByID0gMDsKICAgICAgICAgICAgaWYgKGMoZSkpIHsKICAgICAgICAgICAgICAgIGZvciAobiA9IGUubGVuZ3RoOyByIDwgbjsgcisrKQogICAgICAgICAgICAgICAgICAgIGlmICghMSA9PT0gdC5jYWxsKGVbcl0sIHIsIGVbcl0pKSBicmVhawogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIGZvciAociBpbiBlKQogICAgICAgICAgICAgICAgICAgIGlmICghMSA9PT0gdC5jYWxsKGVbcl0sIHIsIGVbcl0pKSBicmVhazsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LAogICAgICAgIHRleHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4gPSAiIiwKICAgICAgICAgICAgICAgIHIgPSAwLAogICAgICAgICAgICAgICAgaSA9IGUubm9kZVR5cGU7CiAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgIHdoaWxlICh0ID0gZVtyKytdKSBuICs9IGNlLnRleHQodCk7CiAgICAgICAgICAgIHJldHVybiAxID09PSBpIHx8IDExID09PSBpID8gZS50ZXh0Q29udGVudCA6IDkgPT09IGkgPyBlLmRvY3VtZW50RWxlbWVudC50ZXh0Q29udGVudCA6IDMgPT09IGkgfHwgNCA9PT0gaSA/IGUubm9kZVZhbHVlIDogbgogICAgICAgIH0sCiAgICAgICAgbWFrZUFycmF5OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gdCB8fCBbXTsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiAoYyhPYmplY3QoZSkpID8gY2UubWVyZ2UobiwgInN0cmluZyIgPT0gdHlwZW9mIGUgPyBbZV0gOiBlKSA6IHMuY2FsbChuLCBlKSksIG4KICAgICAgICB9LAogICAgICAgIGluQXJyYXk6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IC0xIDogc2UuY2FsbCh0LCBlLCBuKQogICAgICAgIH0sCiAgICAgICAgaXNYTUxEb2M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlICYmIGUubmFtZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgbiA9IGUgJiYgKGUub3duZXJEb2N1bWVudCB8fCBlKS5kb2N1bWVudEVsZW1lbnQ7CiAgICAgICAgICAgIHJldHVybiAhbC50ZXN0KHQgfHwgbiAmJiBuLm5vZGVOYW1lIHx8ICJIVE1MIikKICAgICAgICB9LAogICAgICAgIG1lcmdlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSArdC5sZW5ndGgsIHIgPSAwLCBpID0gZS5sZW5ndGg7IHIgPCBuOyByKyspIGVbaSsrXSA9IHRbcl07CiAgICAgICAgICAgIHJldHVybiBlLmxlbmd0aCA9IGksIGUKICAgICAgICB9LAogICAgICAgIGdyZXA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgZm9yICh2YXIgciA9IFtdLCBpID0gMCwgbyA9IGUubGVuZ3RoLCBhID0gIW47IGkgPCBvOyBpKyspICF0KGVbaV0sIGkpICE9PSBhICYmIHIucHVzaChlW2ldKTsKICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9LAogICAgICAgIG1hcDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciwgaSwgbyA9IDAsCiAgICAgICAgICAgICAgICBhID0gW107CiAgICAgICAgICAgIGlmIChjKGUpKQogICAgICAgICAgICAgICAgZm9yIChyID0gZS5sZW5ndGg7IG8gPCByOyBvKyspIG51bGwgIT0gKGkgPSB0KGVbb10sIG8sIG4pKSAmJiBhLnB1c2goaSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAobyBpbiBlKSBudWxsICE9IChpID0gdChlW29dLCBvLCBuKSkgJiYgYS5wdXNoKGkpOwogICAgICAgICAgICByZXR1cm4gZyhhKQogICAgICAgIH0sCiAgICAgICAgZ3VpZDogMSwKICAgICAgICBzdXBwb3J0OiBsZQogICAgfSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAoY2UuZm5bU3ltYm9sLml0ZXJhdG9yXSA9IG9lW1N5bWJvbC5pdGVyYXRvcl0pLCBjZS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgIG5bIltvYmplY3QgIiArIHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpCiAgICB9KTsKICAgIHZhciBwZSA9IG9lLnBvcCwKICAgICAgICBkZSA9IG9lLnNvcnQsCiAgICAgICAgaGUgPSBvZS5zcGxpY2UsCiAgICAgICAgZ2UgPSAiW1xceDIwXFx0XFxyXFxuXFxmXSIsCiAgICAgICAgdmUgPSBuZXcgUmVnRXhwKCJeIiArIGdlICsgIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIgKyBnZSArICIrJCIsICJnIik7CiAgICBjZS5jb250YWlucyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbiA9IHQgJiYgdC5wYXJlbnROb2RlOwogICAgICAgIHJldHVybiBlID09PSBuIHx8ICEoIW4gfHwgMSAhPT0gbi5ub2RlVHlwZSB8fCAhKGUuY29udGFpbnMgPyBlLmNvbnRhaW5zKG4pIDogZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiAxNiAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24obikpKQogICAgfTsKICAgIHZhciBmID0gLyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15ceDgwLVx1RkZGRlx3LV0vZzsKCiAgICBmdW5jdGlvbiBwKGUsIHQpIHsKICAgICAgICByZXR1cm4gdCA/ICJcMCIgPT09IGUgPyAiXHVmZmZkIiA6IGUuc2xpY2UoMCwgLTEpICsgIlxcIiArIGUuY2hhckNvZGVBdChlLmxlbmd0aCAtIDEpLnRvU3RyaW5nKDE2KSArICIgIiA6ICJcXCIgKyBlCiAgICB9CiAgICBjZS5lc2NhcGVTZWxlY3RvciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gKGUgKyAiIikucmVwbGFjZShmLCBwKQogICAgfTsKICAgIHZhciB5ZSA9IEMsCiAgICAgICAgbWUgPSBzOwogICAgISBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSwgYiwgdywgbywgYSwgVCwgciwgQywgZCwgaSwgayA9IG1lLAogICAgICAgICAgICBTID0gY2UuZXhwYW5kbywKICAgICAgICAgICAgRSA9IDAsCiAgICAgICAgICAgIG4gPSAwLAogICAgICAgICAgICBzID0gVygpLAogICAgICAgICAgICBjID0gVygpLAogICAgICAgICAgICB1ID0gVygpLAogICAgICAgICAgICBoID0gVygpLAogICAgICAgICAgICBsID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgJiYgKGEgPSAhMCksIDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZiA9ICJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsCiAgICAgICAgICAgIHQgPSAiKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iICsgZ2UgKyAiP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlwwLVxceDdmXSkrIiwKICAgICAgICAgICAgcCA9ICJcXFsiICsgZ2UgKyAiKigiICsgdCArICIpKD86IiArIGdlICsgIiooWypeJHwhfl0/PSkiICsgZ2UgKyAiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiICsgdCArICIpKXwpIiArIGdlICsgIipcXF0iLAogICAgICAgICAgICBnID0gIjooIiArIHQgKyAiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIgKyBwICsgIikqKXwuKilcXCl8KSIsCiAgICAgICAgICAgIHYgPSBuZXcgUmVnRXhwKGdlICsgIisiLCAiZyIpLAogICAgICAgICAgICB5ID0gbmV3IFJlZ0V4cCgiXiIgKyBnZSArICIqLCIgKyBnZSArICIqIiksCiAgICAgICAgICAgIG0gPSBuZXcgUmVnRXhwKCJeIiArIGdlICsgIiooWz4rfl18IiArIGdlICsgIikiICsgZ2UgKyAiKiIpLAogICAgICAgICAgICB4ID0gbmV3IFJlZ0V4cChnZSArICJ8PiIpLAogICAgICAgICAgICBqID0gbmV3IFJlZ0V4cChnKSwKICAgICAgICAgICAgQSA9IG5ldyBSZWdFeHAoIl4iICsgdCArICIkIiksCiAgICAgICAgICAgIEQgPSB7CiAgICAgICAgICAgICAgICBJRDogbmV3IFJlZ0V4cCgiXiMoIiArIHQgKyAiKSIpLAogICAgICAgICAgICAgICAgQ0xBU1M6IG5ldyBSZWdFeHAoIl5cXC4oIiArIHQgKyAiKSIpLAogICAgICAgICAgICAgICAgVEFHOiBuZXcgUmVnRXhwKCJeKCIgKyB0ICsgInxbKl0pIiksCiAgICAgICAgICAgICAgICBBVFRSOiBuZXcgUmVnRXhwKCJeIiArIHApLAogICAgICAgICAgICAgICAgUFNFVURPOiBuZXcgUmVnRXhwKCJeIiArIGcpLAogICAgICAgICAgICAgICAgQ0hJTEQ6IG5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIgKyBnZSArICIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIiArIGdlICsgIiooPzooWystXXwpIiArIGdlICsgIiooXFxkKyl8KSkiICsgZ2UgKyAiKlxcKXwpIiwgImkiKSwKICAgICAgICAgICAgICAgIGJvb2w6IG5ldyBSZWdFeHAoIl4oPzoiICsgZiArICIpJCIsICJpIiksCiAgICAgICAgICAgICAgICBuZWVkc0NvbnRleHQ6IG5ldyBSZWdFeHAoIl4iICsgZ2UgKyAiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIiArIGdlICsgIiooKD86LVxcZCk/XFxkKikiICsgZ2UgKyAiKlxcKXwpKD89W14tXXwkKSIsICJpIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTiA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksCiAgICAgICAgICAgIHEgPSAvXmhcZCQvaSwKICAgICAgICAgICAgTCA9IC9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sCiAgICAgICAgICAgIEggPSAvWyt+XS8sCiAgICAgICAgICAgIE8gPSBuZXcgUmVnRXhwKCJcXFxcW1xcZGEtZkEtRl17MSw2fSIgKyBnZSArICI/fFxcXFwoW15cXHJcXG5cXGZdKSIsICJnIiksCiAgICAgICAgICAgIFAgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9ICIweCIgKyBlLnNsaWNlKDEpIC0gNjU1MzY7CiAgICAgICAgICAgICAgICByZXR1cm4gdCB8fCAobiA8IDAgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKG4gKyA2NTUzNikgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKG4gPj4gMTAgfCA1NTI5NiwgMTAyMyAmIG4gfCA1NjMyMCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIFYoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBSID0gSihmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IGUuZGlzYWJsZWQgJiYgZmUoZSwgImZpZWxkc2V0IikKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgZGlyOiAicGFyZW50Tm9kZSIsCiAgICAgICAgICAgICAgICBuZXh0OiAibGVnZW5kIgogICAgICAgICAgICB9KTsKICAgICAgICB0cnkgewogICAgICAgICAgICBrLmFwcGx5KG9lID0gYWUuY2FsbCh5ZS5jaGlsZE5vZGVzKSwgeWUuY2hpbGROb2RlcyksIG9lW3llLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgayA9IHsKICAgICAgICAgICAgICAgIGFwcGx5OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgbWUuYXBwbHkoZSwgYWUuY2FsbCh0KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjYWxsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgbWUuYXBwbHkoZSwgYWUuY2FsbChhcmd1bWVudHMsIDEpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBJKHQsIGUsIG4sIHIpIHsKICAgICAgICAgICAgdmFyIGksIG8sIGEsIHMsIHUsIGwsIGMsIGYgPSBlICYmIGUub3duZXJEb2N1bWVudCwKICAgICAgICAgICAgICAgIHAgPSBlID8gZS5ub2RlVHlwZSA6IDk7CiAgICAgICAgICAgIGlmIChuID0gbiB8fCBbXSwgInN0cmluZyIgIT0gdHlwZW9mIHQgfHwgIXQgfHwgMSAhPT0gcCAmJiA5ICE9PSBwICYmIDExICE9PSBwKSByZXR1cm4gbjsKICAgICAgICAgICAgaWYgKCFyICYmIChWKGUpLCBlID0gZSB8fCBULCBDKSkgewogICAgICAgICAgICAgICAgaWYgKDExICE9PSBwICYmICh1ID0gTC5leGVjKHQpKSkKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IHVbMV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDkgPT09IHApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGEgPSBlLmdldEVsZW1lbnRCeUlkKGkpKSkgcmV0dXJuIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS5pZCA9PT0gaSkgcmV0dXJuIGsuY2FsbChuLCBhKSwgbgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGYgJiYgKGEgPSBmLmdldEVsZW1lbnRCeUlkKGkpKSAmJiBJLmNvbnRhaW5zKGUsIGEpICYmIGEuaWQgPT09IGkpIHJldHVybiBrLmNhbGwobiwgYSksIG4KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodVsyXSkgcmV0dXJuIGsuYXBwbHkobiwgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KSksIG47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSA9IHVbM10pICYmIGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSkgcmV0dXJuIGsuYXBwbHkobiwgZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSwgbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKGhbdCArICIgIl0gfHwgZCAmJiBkLnRlc3QodCkpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSB0LCBmID0gZSwgMSA9PT0gcCAmJiAoeC50ZXN0KHQpIHx8IG0udGVzdCh0KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgKGYgPSBILnRlc3QodCkgJiYgVShlLnBhcmVudE5vZGUpIHx8IGUpID09IGUgJiYgbGUuc2NvcGUgfHwgKChzID0gZS5nZXRBdHRyaWJ1dGUoImlkIikpID8gcyA9IGNlLmVzY2FwZVNlbGVjdG9yKHMpIDogZS5zZXRBdHRyaWJ1dGUoImlkIiwgcyA9IFMpKSwgbyA9IChsID0gWSh0KSkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoby0tKSBsW29dID0gKHMgPyAiIyIgKyBzIDogIjpzY29wZSIpICsgIiAiICsgUShsW29dKTsKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwuam9pbigiLCIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrLmFwcGx5KG4sIGYucXVlcnlTZWxlY3RvckFsbChjKSksIG4KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGgodCwgITApCiAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcyA9PT0gUyAmJiBlLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmUodC5yZXBsYWNlKHZlLCAiJDEiKSwgZSwgbiwgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFcoKSB7CiAgICAgICAgICAgIHZhciByID0gW107CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBlKHQsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiByLnB1c2godCArICIgIikgPiBiLmNhY2hlTGVuZ3RoICYmIGRlbGV0ZSBlW3Iuc2hpZnQoKV0sIGVbdCArICIgIl0gPSBuCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEYoZSkgewogICAgICAgICAgICByZXR1cm4gZVtTXSA9ICEwLCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiAkKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBULmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlKHQpCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgdC5wYXJlbnROb2RlICYmIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSwgdCA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQih0KSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmUoZSwgImlucHV0IikgJiYgZS50eXBlID09PSB0CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIF8odCkgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIChmZShlLCAiaW5wdXQiKSB8fCBmZShlLCAiYnV0dG9uIikpICYmIGUudHlwZSA9PT0gdAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB6KHQpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiZm9ybSIgaW4gZSA/IGUucGFyZW50Tm9kZSAmJiAhMSA9PT0gZS5kaXNhYmxlZCA/ICJsYWJlbCIgaW4gZSA/ICJsYWJlbCIgaW4gZS5wYXJlbnROb2RlID8gZS5wYXJlbnROb2RlLmRpc2FibGVkID09PSB0IDogZS5kaXNhYmxlZCA9PT0gdCA6IGUuaXNEaXNhYmxlZCA9PT0gdCB8fCBlLmlzRGlzYWJsZWQgIT09ICF0ICYmIFIoZSkgPT09IHQgOiBlLmRpc2FibGVkID09PSB0IDogImxhYmVsIiBpbiBlICYmIGUuZGlzYWJsZWQgPT09IHQKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWChhKSB7CiAgICAgICAgICAgIHJldHVybiBGKGZ1bmN0aW9uKG8pIHsKICAgICAgICAgICAgICAgIHJldHVybiBvID0gK28sIEYoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuLCByID0gYShbXSwgZS5sZW5ndGgsIG8pLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gci5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGktLSkgZVtuID0gcltpXV0gJiYgKGVbbl0gPSAhKHRbbl0gPSBlW25dKSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBVKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgJiYgZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuID0gZSA/IGUub3duZXJEb2N1bWVudCB8fCBlIDogeWU7CiAgICAgICAgICAgIHJldHVybiBuICE9IFQgJiYgOSA9PT0gbi5ub2RlVHlwZSAmJiBuLmRvY3VtZW50RWxlbWVudCAmJiAociA9IChUID0gbikuZG9jdW1lbnRFbGVtZW50LCBDID0gIWNlLmlzWE1MRG9jKFQpLCBpID0gci5tYXRjaGVzIHx8IHIud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IHIubXNNYXRjaGVzU2VsZWN0b3IsIHIubXNNYXRjaGVzU2VsZWN0b3IgJiYgeWUgIT0gVCAmJiAodCA9IFQuZGVmYXVsdFZpZXcpICYmIHQudG9wICE9PSB0ICYmIHQuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIiwgTSksIGxlLmdldEJ5SWQgPSAkKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiByLmFwcGVuZENoaWxkKGUpLmlkID0gY2UuZXhwYW5kbywgIVQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIVQuZ2V0RWxlbWVudHNCeU5hbWUoY2UuZXhwYW5kbykubGVuZ3RoCiAgICAgICAgICAgIH0pLCBsZS5kaXNjb25uZWN0ZWRNYXRjaCA9ICQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkuY2FsbChlLCAiKiIpCiAgICAgICAgICAgIH0pLCBsZS5zY29wZSA9ICQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gVC5xdWVyeVNlbGVjdG9yQWxsKCI6c2NvcGUiKQogICAgICAgICAgICB9KSwgbGUuY3NzSGFzID0gJChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFQucXVlcnlTZWxlY3RvcigiOmhhcygqLDpqcWZha2UpIiksICExCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBsZS5nZXRCeUlkID8gKGIuZmlsdGVyLklEID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLnJlcGxhY2UoTywgUCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBiLmZpbmQuSUQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQgJiYgQykgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5nZXRFbGVtZW50QnlJZChlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA/IFtuXSA6IFtdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pIDogKGIuZmlsdGVyLklEID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBlLnJlcGxhY2UoTywgUCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSAmJiBlLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgdC52YWx1ZSA9PT0gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBiLmZpbmQuSUQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQgJiYgQykgewogICAgICAgICAgICAgICAgICAgIHZhciBuLCByLCBpLCBvID0gdC5nZXRFbGVtZW50QnlJZChlKTsKICAgICAgICAgICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gPSBvLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpICYmIG4udmFsdWUgPT09IGUpIHJldHVybiBbb107CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmdldEVsZW1lbnRzQnlOYW1lKGUpLCByID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG8gPSBpW3IrK10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gPSBvLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpICYmIG4udmFsdWUgPT09IGUpIHJldHVybiBbb10KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBiLmZpbmQuVEFHID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lID8gdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKSA6IHQucXVlcnlTZWxlY3RvckFsbChlKQogICAgICAgICAgICB9LCBiLmZpbmQuQ0xBU1MgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBDKSByZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpCiAgICAgICAgICAgIH0sIGQgPSBbXSwgJChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgIHIuYXBwZW5kQ2hpbGQoZSkuaW5uZXJIVE1MID0gIjxhIGlkPSciICsgUyArICInIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBpZD0nIiArIFMgKyAiLVxyXFwnIGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGggfHwgZC5wdXNoKCJcXFsiICsgZ2UgKyAiKig/OnZhbHVlfCIgKyBmICsgIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIgKyBTICsgIi1dIikubGVuZ3RoIHx8IGQucHVzaCgifj0iKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIgKyBTICsgIisqIikubGVuZ3RoIHx8IGQucHVzaCgiLiMuK1srfl0iKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCBkLnB1c2goIjpjaGVja2VkIiksICh0ID0gVC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiaGlkZGVuIiksIGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwgIkQiKSwgci5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZCA9ICEwLCAyICE9PSBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpkaXNhYmxlZCIpLmxlbmd0aCAmJiBkLnB1c2goIjplbmFibGVkIiwgIjpkaXNhYmxlZCIpLCAodCA9IFQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJuYW1lIiwgIiIpLCBlLmFwcGVuZENoaWxkKHQpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPScnXSIpLmxlbmd0aCB8fCBkLnB1c2goIlxcWyIgKyBnZSArICIqbmFtZSIgKyBnZSArICIqPSIgKyBnZSArICIqKD86Jyd8XCJcIikiKQogICAgICAgICAgICB9KSwgbGUuY3NzSGFzIHx8IGQucHVzaCgiOmhhcyIpLCBkID0gZC5sZW5ndGggJiYgbmV3IFJlZ0V4cChkLmpvaW4oInwiKSksIGwgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoZSA9PT0gdCkgcmV0dXJuIGEgPSAhMCwgMDsKICAgICAgICAgICAgICAgIHZhciBuID0gIWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjsKICAgICAgICAgICAgICAgIHJldHVybiBuIHx8ICgxICYgKG4gPSAoZS5vd25lckRvY3VtZW50IHx8IGUpID09ICh0Lm93bmVyRG9jdW1lbnQgfHwgdCkgPyBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpIDogMSkgfHwgIWxlLnNvcnREZXRhY2hlZCAmJiB0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpID09PSBuID8gZSA9PT0gVCB8fCBlLm93bmVyRG9jdW1lbnQgPT0geWUgJiYgSS5jb250YWlucyh5ZSwgZSkgPyAtMSA6IHQgPT09IFQgfHwgdC5vd25lckRvY3VtZW50ID09IHllICYmIEkuY29udGFpbnMoeWUsIHQpID8gMSA6IG8gPyBzZS5jYWxsKG8sIGUpIC0gc2UuY2FsbChvLCB0KSA6IDAgOiA0ICYgbiA/IC0xIDogMSkKICAgICAgICAgICAgfSksIFQKICAgICAgICB9CiAgICAgICAgZm9yIChlIGluIEkubWF0Y2hlcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBJKGUsIG51bGwsIG51bGwsIHQpCiAgICAgICAgICAgIH0sIEkubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKFYoZSksIEMgJiYgIWhbdCArICIgIl0gJiYgKCFkIHx8ICFkLnRlc3QodCkpKSB0cnkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gaS5jYWxsKGUsIHQpOwogICAgICAgICAgICAgICAgICAgIGlmIChuIHx8IGxlLmRpc2Nvbm5lY3RlZE1hdGNoIHx8IGUuZG9jdW1lbnQgJiYgMTEgIT09IGUuZG9jdW1lbnQubm9kZVR5cGUpIHJldHVybiBuCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgaCh0LCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAwIDwgSSh0LCBULCBudWxsLCBbZV0pLmxlbmd0aAogICAgICAgICAgICB9LCBJLmNvbnRhaW5zID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT0gVCAmJiBWKGUpLCBjZS5jb250YWlucyhlLCB0KQogICAgICAgICAgICB9LCBJLmF0dHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAoZS5vd25lckRvY3VtZW50IHx8IGUpICE9IFQgJiYgVihlKTsKICAgICAgICAgICAgICAgIHZhciBuID0gYi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0sCiAgICAgICAgICAgICAgICAgICAgciA9IG4gJiYgdWUuY2FsbChiLmF0dHJIYW5kbGUsIHQudG9Mb3dlckNhc2UoKSkgPyBuKGUsIHQsICFDKSA6IHZvaWQgMDsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHIgPyByIDogZS5nZXRBdHRyaWJ1dGUodCkKICAgICAgICAgICAgfSwgSS5lcnJvciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIGUpCiAgICAgICAgICAgIH0sIGNlLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgIHIgPSAwLAogICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgaWYgKGEgPSAhbGUuc29ydFN0YWJsZSwgbyA9ICFsZS5zb3J0U3RhYmxlICYmIGFlLmNhbGwoZSwgMCksIGRlLmNhbGwoZSwgbCksIGEpIHsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodCA9IGVbaSsrXSkgdCA9PT0gZVtpXSAmJiAociA9IG4ucHVzaChpKSk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHItLSkgaGUuY2FsbChlLCBuW3JdLCAxKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG8gPSBudWxsLCBlCiAgICAgICAgICAgIH0sIGNlLmZuLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhjZS51bmlxdWVTb3J0KGFlLmFwcGx5KHRoaXMpKSkKICAgICAgICAgICAgfSwgKGIgPSBjZS5leHByID0gewogICAgICAgICAgICAgICAgY2FjaGVMZW5ndGg6IDUwLAogICAgICAgICAgICAgICAgY3JlYXRlUHNldWRvOiBGLAogICAgICAgICAgICAgICAgbWF0Y2g6IEQsCiAgICAgICAgICAgICAgICBhdHRySGFuZGxlOiB7fSwKICAgICAgICAgICAgICAgIGZpbmQ6IHt9LAogICAgICAgICAgICAgICAgcmVsYXRpdmU6IHsKICAgICAgICAgICAgICAgICAgICAiPiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiAicGFyZW50Tm9kZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0OiAhMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIiAiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpcjogInBhcmVudE5vZGUiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiKyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiAicHJldmlvdXNTaWJsaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Q6ICEwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAifiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiAicHJldmlvdXNTaWJsaW5nIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwcmVGaWx0ZXI6IHsKICAgICAgICAgICAgICAgICAgICBBVFRSOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlWzFdID0gZVsxXS5yZXBsYWNlKE8sIFApLCBlWzNdID0gKGVbM10gfHwgZVs0XSB8fCBlWzVdIHx8ICIiKS5yZXBsYWNlKE8sIFApLCAifj0iID09PSBlWzJdICYmIChlWzNdID0gIiAiICsgZVszXSArICIgIiksIGUuc2xpY2UoMCwgNCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIENISUxEOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlWzFdID0gZVsxXS50b0xvd2VyQ2FzZSgpLCAibnRoIiA9PT0gZVsxXS5zbGljZSgwLCAzKSA/IChlWzNdIHx8IEkuZXJyb3IoZVswXSksIGVbNF0gPSArKGVbNF0gPyBlWzVdICsgKGVbNl0gfHwgMSkgOiAyICogKCJldmVuIiA9PT0gZVszXSB8fCAib2RkIiA9PT0gZVszXSkpLCBlWzVdID0gKyhlWzddICsgZVs4XSB8fCAib2RkIiA9PT0gZVszXSkpIDogZVszXSAmJiBJLmVycm9yKGVbMF0pLCBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBQU0VVRE86IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4gPSAhZVs2XSAmJiBlWzJdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRC5DSElMRC50ZXN0KGVbMF0pID8gbnVsbCA6IChlWzNdID8gZVsyXSA9IGVbNF0gfHwgZVs1XSB8fCAiIiA6IG4gJiYgai50ZXN0KG4pICYmICh0ID0gWShuLCAhMCkpICYmICh0ID0gbi5pbmRleE9mKCIpIiwgbi5sZW5ndGggLSB0KSAtIG4ubGVuZ3RoKSAmJiAoZVswXSA9IGVbMF0uc2xpY2UoMCwgdCksIGVbMl0gPSBuLnNsaWNlKDAsIHQpKSwgZS5zbGljZSgwLCAzKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZmlsdGVyOiB7CiAgICAgICAgICAgICAgICAgICAgVEFHOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5yZXBsYWNlKE8sIFApLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiKiIgPT09IGUgPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZlKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIENMQVNTOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gc1tlICsgIiAiXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgfHwgKHQgPSBuZXcgUmVnRXhwKCIoXnwiICsgZ2UgKyAiKSIgKyBlICsgIigiICsgZ2UgKyAifCQpIikpICYmIHMoZSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudGVzdCgic3RyaW5nIiA9PSB0eXBlb2YgZS5jbGFzc05hbWUgJiYgZS5jbGFzc05hbWUgfHwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0QXR0cmlidXRlICYmIGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgQVRUUjogZnVuY3Rpb24obiwgciwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBJLmF0dHIoZSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gIiE9IiA9PT0gciA6ICFyIHx8ICh0ICs9ICIiLCAiPSIgPT09IHIgPyB0ID09PSBpIDogIiE9IiA9PT0gciA/IHQgIT09IGkgOiAiXj0iID09PSByID8gaSAmJiAwID09PSB0LmluZGV4T2YoaSkgOiAiKj0iID09PSByID8gaSAmJiAtMSA8IHQuaW5kZXhPZihpKSA6ICIkPSIgPT09IHIgPyBpICYmIHQuc2xpY2UoLWkubGVuZ3RoKSA9PT0gaSA6ICJ+PSIgPT09IHIgPyAtMSA8ICgiICIgKyB0LnJlcGxhY2UodiwgIiAiKSArICIgIikuaW5kZXhPZihpKSA6ICJ8PSIgPT09IHIgJiYgKHQgPT09IGkgfHwgdC5zbGljZSgwLCBpLmxlbmd0aCArIDEpID09PSBpICsgIi0iKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgQ0hJTEQ6IGZ1bmN0aW9uKGQsIGUsIHQsIGgsIGcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSAibnRoIiAhPT0gZC5zbGljZSgwLCAzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAibGFzdCIgIT09IGQuc2xpY2UoLTQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9ICJvZi10eXBlIiA9PT0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgPT09IGggJiYgMCA9PT0gZyA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUucGFyZW50Tm9kZQogICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIGksIG8sIGEsIHMsIHUgPSB2ICE9PSB5ID8gIm5leHRTaWJsaW5nIiA6ICJwcmV2aW91c1NpYmxpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlLnBhcmVudE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG0gJiYgZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAhbiAmJiAhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChvID0gb1t1XSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA/IGZlKG8sIGMpIDogMSA9PT0gby5ub2RlVHlwZSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHUgPSAib25seSIgPT09IGQgJiYgIXMgJiYgIm5leHRTaWJsaW5nIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IFt5ID8gbC5maXJzdENoaWxkIDogbC5sYXN0Q2hpbGRdLCB5ICYmIGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IChhID0gKHIgPSAoaSA9IGxbU10gfHwgKGxbU10gPSB7fSkpW2RdIHx8IFtdKVswXSA9PT0gRSAmJiByWzFdKSAmJiByWzJdLCBvID0gYSAmJiBsLmNoaWxkTm9kZXNbYV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChvID0gKythICYmIG8gJiYgb1t1XSB8fCAocCA9IGEgPSAwKSB8fCBzLnBvcCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IG8ubm9kZVR5cGUgJiYgKytwICYmIG8gPT09IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpW2RdID0gW0UsIGEsIHBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmICYmIChwID0gYSA9IChyID0gKGkgPSBlW1NdIHx8IChlW1NdID0ge30pKVtkXSB8fCBbXSlbMF0gPT09IEUgJiYgclsxXSksICExID09PSBwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAobyA9ICsrYSAmJiBvICYmIG9bdV0gfHwgKHAgPSBhID0gMCkgfHwgcy5wb3AoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobSA/IGZlKG8sIGMpIDogMSA9PT0gby5ub2RlVHlwZSkgJiYgKytwICYmIChmICYmICgoaSA9IG9bU10gfHwgKG9bU10gPSB7fSkpW2RdID0gW0UsIHBdKSwgbyA9PT0gZSkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocCAtPSBnKSA9PT0gaCB8fCBwICUgaCA9PSAwICYmIDAgPD0gcCAvIGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgUFNFVURPOiBmdW5jdGlvbihlLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0LCBhID0gYi5wc2V1ZG9zW2VdIHx8IGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldIHx8IEkuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIiArIGUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYVtTXSA/IGEobykgOiAxIDwgYS5sZW5ndGggPyAodCA9IFtlLCBlLCAiIiwgb10sIGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpID8gRihmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciA9IGEoZSwgbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHIubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGktLSkgZVtuID0gc2UuY2FsbChlLCByW2ldKV0gPSAhKHRbbl0gPSByW2ldKQogICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKGUsIDAsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogYQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwc2V1ZG9zOiB7CiAgICAgICAgICAgICAgICAgICAgbm90OiBGKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZShlLnJlcGxhY2UodmUsICIkMSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNbU10gPyBGKGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBvID0gcyhlLCBudWxsLCByLCBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGEtLSkoaSA9IG9bYV0pICYmIChlW2FdID0gISh0W2FdID0gaSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJbMF0gPSBlLCBzKHIsIG51bGwsIG4sIGkpLCByWzBdID0gbnVsbCwgIWkucG9wKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIGhhczogRihmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA8IEkodCwgZSkubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBjb250YWluczogRihmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdC5yZXBsYWNlKE8sIFApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSA8IChlLnRleHRDb250ZW50IHx8IGNlLnRleHQoZSkpLmluZGV4T2YodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBsYW5nOiBGKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEEudGVzdChuIHx8ICIiKSB8fCBJLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgbiksIG4gPSBuLnJlcGxhY2UoTywgUCkudG9Mb3dlckNhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gQyA/IGUubGFuZyA6IGUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IGUuZ2V0QXR0cmlidXRlKCJsYW5nIikpIHJldHVybiAodCA9IHQudG9Mb3dlckNhc2UoKSkgPT09IG4gfHwgMCA9PT0gdC5pbmRleE9mKG4gKyAiLSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoKGUgPSBlLnBhcmVudE5vZGUpICYmIDEgPT09IGUubm9kZVR5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGllLmxvY2F0aW9uICYmIGllLmxvY2F0aW9uLmhhc2g7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIHQuc2xpY2UoMSkgPT09IGUuaWQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJvb3Q6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFQuYWN0aXZlRWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICAgICAgfSgpICYmIFQuaGFzRm9jdXMoKSAmJiAhIShlLnR5cGUgfHwgZS5ocmVmIHx8IH5lLnRhYkluZGV4KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogeighMSksCiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHooITApLAogICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZlKGUsICJpbnB1dCIpICYmICEhZS5jaGVja2VkIHx8IGZlKGUsICJvcHRpb24iKSAmJiAhIWUuc2VsZWN0ZWQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnBhcmVudE5vZGUgJiYgZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsICEwID09PSBlLnNlbGVjdGVkCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlbXB0eTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBlLmZpcnN0Q2hpbGQ7IGU7IGUgPSBlLm5leHRTaWJsaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUubm9kZVR5cGUgPCA2KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhYi5wc2V1ZG9zLmVtcHR5KGUpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHEudGVzdChlLm5vZGVOYW1lKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE4udGVzdChlLm5vZGVOYW1lKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmZShlLCAiaW5wdXQiKSAmJiAiYnV0dG9uIiA9PT0gZS50eXBlIHx8IGZlKGUsICJidXR0b24iKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZlKGUsICJpbnB1dCIpICYmICJ0ZXh0IiA9PT0gZS50eXBlICYmIChudWxsID09ICh0ID0gZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgfHwgInRleHQiID09PSB0LnRvTG93ZXJDYXNlKCkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBmaXJzdDogWChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFswXQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIGxhc3Q6IFgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3QgLSAxXQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIGVxOiBYKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtuIDwgMCA/IG4gKyB0IDogbl0KICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBldmVuOiBYKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0OyBuICs9IDIpIGUucHVzaChuKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBvZGQ6IFgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMTsgbiA8IHQ7IG4gKz0gMikgZS5wdXNoKG4pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIGx0OiBYKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IG4gPCAwID8gbiArIHQgOiB0IDwgbiA/IHQgOiBuOyAwIDw9IC0tcjspIGUucHVzaChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBndDogWChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBuIDwgMCA/IG4gKyB0IDogbjsgKytyIDwgdDspIGUucHVzaChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KS5wc2V1ZG9zLm50aCA9IGIucHNldWRvcy5lcSwgewogICAgICAgICAgICAgICAgcmFkaW86ICEwLAogICAgICAgICAgICAgICAgY2hlY2tib3g6ICEwLAogICAgICAgICAgICAgICAgZmlsZTogITAsCiAgICAgICAgICAgICAgICBwYXNzd29yZDogITAsCiAgICAgICAgICAgICAgICBpbWFnZTogITAKICAgICAgICAgICAgfSkgYi5wc2V1ZG9zW2VdID0gQihlKTsKICAgICAgICBmb3IgKGUgaW4gewogICAgICAgICAgICAgICAgc3VibWl0OiAhMCwKICAgICAgICAgICAgICAgIHJlc2V0OiAhMAogICAgICAgICAgICB9KSBiLnBzZXVkb3NbZV0gPSBfKGUpOwoKICAgICAgICBmdW5jdGlvbiBHKCkge30KCiAgICAgICAgZnVuY3Rpb24gWShlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByLCBpLCBvLCBhLCBzLCB1LCBsID0gY1tlICsgIiAiXTsKICAgICAgICAgICAgaWYgKGwpIHJldHVybiB0ID8gMCA6IGwuc2xpY2UoMCk7CiAgICAgICAgICAgIGEgPSBlLCBzID0gW10sIHUgPSBiLnByZUZpbHRlcjsKICAgICAgICAgICAgd2hpbGUgKGEpIHsKICAgICAgICAgICAgICAgIGZvciAobyBpbiBuICYmICEociA9IHkuZXhlYyhhKSkgfHwgKHIgJiYgKGEgPSBhLnNsaWNlKHJbMF0ubGVuZ3RoKSB8fCBhKSwgcy5wdXNoKGkgPSBbXSkpLCBuID0gITEsIChyID0gbS5leGVjKGEpKSAmJiAobiA9IHIuc2hpZnQoKSwgaS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHJbMF0ucmVwbGFjZSh2ZSwgIiAiKQogICAgICAgICAgICAgICAgICAgIH0pLCBhID0gYS5zbGljZShuLmxlbmd0aCkpLCBiLmZpbHRlcikgIShyID0gRFtvXS5leGVjKGEpKSB8fCB1W29dICYmICEociA9IHVbb10ocikpIHx8IChuID0gci5zaGlmdCgpLCBpLnB1c2goewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgIHR5cGU6IG8sCiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlczogcgogICAgICAgICAgICAgICAgfSksIGEgPSBhLnNsaWNlKG4ubGVuZ3RoKSk7CiAgICAgICAgICAgICAgICBpZiAoIW4pIGJyZWFrCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHQgPyBhLmxlbmd0aCA6IGEgPyBJLmVycm9yKGUpIDogYyhlLCBzKS5zbGljZSgwKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUShlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSAwLCBuID0gZS5sZW5ndGgsIHIgPSAiIjsgdCA8IG47IHQrKykgciArPSBlW3RdLnZhbHVlOwogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSihhLCBlLCB0KSB7CiAgICAgICAgICAgIHZhciBzID0gZS5kaXIsCiAgICAgICAgICAgICAgICB1ID0gZS5uZXh0LAogICAgICAgICAgICAgICAgbCA9IHUgfHwgcywKICAgICAgICAgICAgICAgIGMgPSB0ICYmICJwYXJlbnROb2RlIiA9PT0gbCwKICAgICAgICAgICAgICAgIGYgPSBuKys7CiAgICAgICAgICAgIHJldHVybiBlLmZpcnN0ID8gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgd2hpbGUgKGUgPSBlW3NdKQogICAgICAgICAgICAgICAgICAgIGlmICgxID09PSBlLm5vZGVUeXBlIHx8IGMpIHJldHVybiBhKGUsIHQsIG4pOwogICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgaSwgbyA9IFtFLCBmXTsKICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGUgPSBlW3NdKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKDEgPT09IGUubm9kZVR5cGUgfHwgYykgJiYgYShlLCB0LCBuKSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZSA9IGVbc10pCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSBlLm5vZGVUeXBlIHx8IGMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbU10gfHwgKGVbU10gPSB7fSksIHUgJiYgZmUoZSwgdSkpIGUgPSBlW3NdIHx8IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHIgPSBpW2xdKSAmJiByWzBdID09PSBFICYmIHJbMV0gPT09IGYpIHJldHVybiBvWzJdID0gclsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGlbbF0gPSBvKVsyXSA9IGEoZSwgdCwgbikpIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSyhpKSB7CiAgICAgICAgICAgIHJldHVybiAxIDwgaS5sZW5ndGggPyBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IGkubGVuZ3RoOwogICAgICAgICAgICAgICAgd2hpbGUgKHItLSkKICAgICAgICAgICAgICAgICAgICBpZiAoIWlbcl0oZSwgdCwgbikpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICB9IDogaVswXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWihlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgICAgIGZvciAodmFyIG8sIGEgPSBbXSwgcyA9IDAsIHUgPSBlLmxlbmd0aCwgbCA9IG51bGwgIT0gdDsgcyA8IHU7IHMrKykobyA9IGVbc10pICYmIChuICYmICFuKG8sIHIsIGkpIHx8IChhLnB1c2gobyksIGwgJiYgdC5wdXNoKHMpKSk7CiAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBlZShkLCBoLCBnLCB2LCB5LCBlKSB7CiAgICAgICAgICAgIHJldHVybiB2ICYmICF2W1NdICYmICh2ID0gZWUodikpLCB5ICYmICF5W1NdICYmICh5ID0gZWUoeSwgZSkpLCBGKGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgIHZhciBpLCBvLCBhLCBzLCB1ID0gW10sCiAgICAgICAgICAgICAgICAgICAgbCA9IFtdLAogICAgICAgICAgICAgICAgICAgIGMgPSB0Lmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICBmID0gZSB8fCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAwLCBpID0gdC5sZW5ndGg7IHIgPCBpOyByKyspIEkoZSwgdFtyXSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgfShoIHx8ICIqIiwgbi5ub2RlVHlwZSA/IFtuXSA6IG4sIFtdKSwKICAgICAgICAgICAgICAgICAgICBwID0gIWQgfHwgIWUgJiYgaCA/IGYgOiBaKGYsIHUsIGQsIG4sIHIpOwogICAgICAgICAgICAgICAgaWYgKGcgPyBnKHAsIHMgPSB5IHx8IChlID8gZCA6IGMgfHwgdikgPyBbXSA6IHQsIG4sIHIpIDogcyA9IHAsIHYpIHsKICAgICAgICAgICAgICAgICAgICBpID0gWihzLCBsKSwgdihpLCBbXSwgbiwgciksIG8gPSBpLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoby0tKShhID0gaVtvXSkgJiYgKHNbbFtvXV0gPSAhKHBbbFtvXV0gPSBhKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHkgfHwgZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFtdLCBvID0gcy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoby0tKShhID0gc1tvXSkgJiYgaS5wdXNoKHBbb10gPSBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkobnVsbCwgcyA9IFtdLCBpLCByKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBzLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG8tLSkoYSA9IHNbb10pICYmIC0xIDwgKGkgPSB5ID8gc2UuY2FsbChlLCBhKSA6IHVbb10pICYmIChlW2ldID0gISh0W2ldID0gYSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHMgPSBaKHMgPT09IHQgPyBzLnNwbGljZShjLCBzLmxlbmd0aCkgOiBzKSwgeSA/IHkobnVsbCwgdCwgcywgcikgOiBrLmFwcGx5KHQsIHMpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB0ZShlKSB7CiAgICAgICAgICAgIGZvciAodmFyIGksIHQsIG4sIHIgPSBlLmxlbmd0aCwgbyA9IGIucmVsYXRpdmVbZVswXS50eXBlXSwgYSA9IG8gfHwgYi5yZWxhdGl2ZVsiICJdLCBzID0gbyA/IDEgOiAwLCB1ID0gSihmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IGkKICAgICAgICAgICAgICAgIH0sIGEsICEwKSwgbCA9IEooZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSA8IHNlLmNhbGwoaSwgZSkKICAgICAgICAgICAgICAgIH0sIGEsICEwKSwgYyA9IFtmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAhbyAmJiAobiB8fCB0ICE9IHcpIHx8ICgoaSA9IHQpLm5vZGVUeXBlID8gdShlLCB0LCBuKSA6IGwoZSwgdCwgbikpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpID0gbnVsbCwgcgogICAgICAgICAgICAgICAgfV07IHMgPCByOyBzKyspCiAgICAgICAgICAgICAgICBpZiAodCA9IGIucmVsYXRpdmVbZVtzXS50eXBlXSkgYyA9IFtKKEsoYyksIHQpXTsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgodCA9IGIuZmlsdGVyW2Vbc10udHlwZV0uYXBwbHkobnVsbCwgZVtzXS5tYXRjaGVzKSlbU10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gKytzOyBuIDwgcjsgbisrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIucmVsYXRpdmVbZVtuXS50eXBlXSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZSgxIDwgcyAmJiBLKGMpLCAxIDwgcyAmJiBRKGUuc2xpY2UoMCwgcyAtIDEpLmNvbmNhdCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogIiAiID09PSBlW3MgLSAyXS50eXBlID8gIioiIDogIiIKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLnJlcGxhY2UodmUsICIkMSIpLCB0LCBzIDwgbiAmJiB0ZShlLnNsaWNlKHMsIG4pKSwgbiA8IHIgJiYgdGUoZSA9IGUuc2xpY2UobikpLCBuIDwgciAmJiBRKGUpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjLnB1c2godCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIEsoYykKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG5lKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4sIHYsIHksIG0sIHgsIHIsIGkgPSBbXSwKICAgICAgICAgICAgICAgIG8gPSBbXSwKICAgICAgICAgICAgICAgIGEgPSB1W2UgKyAiICJdOwogICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgIHQgfHwgKHQgPSBZKGUpKSwgbiA9IHQubGVuZ3RoOwogICAgICAgICAgICAgICAgd2hpbGUgKG4tLSkoYSA9IHRlKHRbbl0pKVtTXSA/IGkucHVzaChhKSA6IG8ucHVzaChhKTsKICAgICAgICAgICAgICAgIChhID0gdShlLCAodiA9IG8sIG0gPSAwIDwgKHkgPSBpKS5sZW5ndGgsIHggPSAwIDwgdi5sZW5ndGgsIHIgPSBmdW5jdGlvbihlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGEsIHMsIHUgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gZSAmJiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gdywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGUgfHwgeCAmJiBiLmZpbmQuVEFHKCIqIiwgaSksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBFICs9IG51bGwgPT0gcCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IC4xLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gZC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yIChpICYmICh3ID0gdCA9PSBUIHx8IHQgfHwgaSk7IGwgIT09IGcgJiYgbnVsbCAhPSAobyA9IGRbbF0pOyBsKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggJiYgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDAsIHQgfHwgby5vd25lckRvY3VtZW50ID09IFQgfHwgKFYobyksIG4gPSAhQyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocyA9IHZbYSsrXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyhvLCB0IHx8IFQsIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsuY2FsbChyLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICYmIChFID0gaCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBtICYmICgobyA9ICFzICYmIG8pICYmIHUtLSwgZSAmJiBjLnB1c2gobykpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh1ICs9IGwsIG0gJiYgbCAhPT0gdSkgewogICAgICAgICAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMgPSB5W2ErK10pIHMoYywgZiwgdCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA8IHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGwtLSkgY1tsXSB8fCBmW2xdIHx8IChmW2xdID0gcGUuY2FsbChyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gWihmKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGsuYXBwbHkociwgZiksIGkgJiYgIWUgJiYgMCA8IGYubGVuZ3RoICYmIDEgPCB1ICsgeS5sZW5ndGggJiYgY2UudW5pcXVlU29ydChyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSAmJiAoRSA9IGgsIHcgPSBwKSwgYwogICAgICAgICAgICAgICAgfSwgbSA/IEYocikgOiByKSkpLnNlbGVjdG9yID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZShlLCB0LCBuLCByKSB7CiAgICAgICAgICAgIHZhciBpLCBvLCBhLCBzLCB1LCBsID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiBlLAogICAgICAgICAgICAgICAgYyA9ICFyICYmIFkoZSA9IGwuc2VsZWN0b3IgfHwgZSk7CiAgICAgICAgICAgIGlmIChuID0gbiB8fCBbXSwgMSA9PT0gYy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGlmICgyIDwgKG8gPSBjWzBdID0gY1swXS5zbGljZSgwKSkubGVuZ3RoICYmICJJRCIgPT09IChhID0gb1swXSkudHlwZSAmJiA5ID09PSB0Lm5vZGVUeXBlICYmIEMgJiYgYi5yZWxhdGl2ZVtvWzFdLnR5cGVdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IChiLmZpbmQuSUQoYS5tYXRjaGVzWzBdLnJlcGxhY2UoTywgUCksIHQpIHx8IFtdKVswXSkpIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgIGwgJiYgKHQgPSB0LnBhcmVudE5vZGUpLCBlID0gZS5zbGljZShvLnNoaWZ0KCkudmFsdWUubGVuZ3RoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaSA9IEQubmVlZHNDb250ZXh0LnRlc3QoZSkgPyAwIDogby5sZW5ndGg7CiAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBvW2ldLCBiLnJlbGF0aXZlW3MgPSBhLnR5cGVdKSBicmVhazsKICAgICAgICAgICAgICAgICAgICBpZiAoKHUgPSBiLmZpbmRbc10pICYmIChyID0gdShhLm1hdGNoZXNbMF0ucmVwbGFjZShPLCBQKSwgSC50ZXN0KG9bMF0udHlwZSkgJiYgVSh0LnBhcmVudE5vZGUpIHx8IHQpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5zcGxpY2UoaSwgMSksICEoZSA9IHIubGVuZ3RoICYmIFEobykpKSByZXR1cm4gay5hcHBseShuLCByKSwgbjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIChsIHx8IG5lKGUsIGMpKShyLCB0LCAhQywgbiwgIXQgfHwgSC50ZXN0KGUpICYmIFUodC5wYXJlbnROb2RlKSB8fCB0KSwgbgogICAgICAgIH0KICAgICAgICBHLnByb3RvdHlwZSA9IGIuZmlsdGVycyA9IGIucHNldWRvcywgYi5zZXRGaWx0ZXJzID0gbmV3IEcsIGxlLnNvcnRTdGFibGUgPSBTLnNwbGl0KCIiKS5zb3J0KGwpLmpvaW4oIiIpID09PSBTLCBWKCksIGxlLnNvcnREZXRhY2hlZCA9ICQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gMSAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKQogICAgICAgIH0pLCBjZS5maW5kID0gSSwgY2UuZXhwclsiOiJdID0gY2UuZXhwci5wc2V1ZG9zLCBjZS51bmlxdWUgPSBjZS51bmlxdWVTb3J0LCBJLmNvbXBpbGUgPSBuZSwgSS5zZWxlY3QgPSByZSwgSS5zZXREb2N1bWVudCA9IFYsIEkudG9rZW5pemUgPSBZLCBJLmVzY2FwZSA9IGNlLmVzY2FwZVNlbGVjdG9yLCBJLmdldFRleHQgPSBjZS50ZXh0LCBJLmlzWE1MID0gY2UuaXNYTUxEb2MsIEkuc2VsZWN0b3JzID0gY2UuZXhwciwgSS5zdXBwb3J0ID0gY2Uuc3VwcG9ydCwgSS51bmlxdWVTb3J0ID0gY2UudW5pcXVlU29ydAogICAgfSgpOwogICAgdmFyIGQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByID0gW10sCiAgICAgICAgICAgICAgICBpID0gdm9pZCAwICE9PSBuOwogICAgICAgICAgICB3aGlsZSAoKGUgPSBlW3RdKSAmJiA5ICE9PSBlLm5vZGVUeXBlKQogICAgICAgICAgICAgICAgaWYgKDEgPT09IGUubm9kZVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSAmJiBjZShlKS5pcyhuKSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgci5wdXNoKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfSwKICAgICAgICBoID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBmb3IgKHZhciBuID0gW107IGU7IGUgPSBlLm5leHRTaWJsaW5nKSAxID09PSBlLm5vZGVUeXBlICYmIGUgIT09IHQgJiYgbi5wdXNoKGUpOwogICAgICAgICAgICByZXR1cm4gbgogICAgICAgIH0sCiAgICAgICAgYiA9IGNlLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LAogICAgICAgIHcgPSAvXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTsKCiAgICBmdW5jdGlvbiBUKGUsIG4sIHIpIHsKICAgICAgICByZXR1cm4gdihuKSA/IGNlLmdyZXAoZSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gISFuLmNhbGwoZSwgdCwgZSkgIT09IHIKICAgICAgICB9KSA6IG4ubm9kZVR5cGUgPyBjZS5ncmVwKGUsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgPT09IG4gIT09IHIKICAgICAgICB9KSA6ICJzdHJpbmciICE9IHR5cGVvZiBuID8gY2UuZ3JlcChlLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAtMSA8IHNlLmNhbGwobiwgZSkgIT09IHIKICAgICAgICB9KSA6IGNlLmZpbHRlcihuLCBlLCByKQogICAgfQogICAgY2UuZmlsdGVyID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciByID0gdFswXTsKICAgICAgICByZXR1cm4gbiAmJiAoZSA9ICI6bm90KCIgKyBlICsgIikiKSwgMSA9PT0gdC5sZW5ndGggJiYgMSA9PT0gci5ub2RlVHlwZSA/IGNlLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsIGUpID8gW3JdIDogW10gOiBjZS5maW5kLm1hdGNoZXMoZSwgY2UuZ3JlcCh0LCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAxID09PSBlLm5vZGVUeXBlCiAgICAgICAgfSkpCiAgICB9LCBjZS5mbi5leHRlbmQoewogICAgICAgIGZpbmQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIHIgPSB0aGlzLmxlbmd0aCwKICAgICAgICAgICAgICAgIGkgPSB0aGlzOwogICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIGUpIHJldHVybiB0aGlzLnB1c2hTdGFjayhjZShlKS5maWx0ZXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgcjsgdCsrKQogICAgICAgICAgICAgICAgICAgIGlmIChjZS5jb250YWlucyhpW3RdLCB0aGlzKSkgcmV0dXJuICEwCiAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgZm9yIChuID0gdGhpcy5wdXNoU3RhY2soW10pLCB0ID0gMDsgdCA8IHI7IHQrKykgY2UuZmluZChlLCBpW3RdLCBuKTsKICAgICAgICAgICAgcmV0dXJuIDEgPCByID8gY2UudW5pcXVlU29ydChuKSA6IG4KICAgICAgICB9LAogICAgICAgIGZpbHRlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soVCh0aGlzLCBlIHx8IFtdLCAhMSkpCiAgICAgICAgfSwKICAgICAgICBub3Q6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKFQodGhpcywgZSB8fCBbXSwgITApKQogICAgICAgIH0sCiAgICAgICAgaXM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICEhVCh0aGlzLCAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiBiLnRlc3QoZSkgPyBjZShlKSA6IGUgfHwgW10sICExKS5sZW5ndGgKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBrLCBTID0gL14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzsKICAgIChjZS5mbi5pbml0ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciByLCBpOwogICAgICAgIGlmICghZSkgcmV0dXJuIHRoaXM7CiAgICAgICAgaWYgKG4gPSBuIHx8IGssICJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgIGlmICghKHIgPSAiPCIgPT09IGVbMF0gJiYgIj4iID09PSBlW2UubGVuZ3RoIC0gMV0gJiYgMyA8PSBlLmxlbmd0aCA/IFtudWxsLCBlLCBudWxsXSA6IFMuZXhlYyhlKSkgfHwgIXJbMV0gJiYgdCkgcmV0dXJuICF0IHx8IHQuanF1ZXJ5ID8gKHQgfHwgbikuZmluZChlKSA6IHRoaXMuY29uc3RydWN0b3IodCkuZmluZChlKTsKICAgICAgICAgICAgaWYgKHJbMV0pIHsKICAgICAgICAgICAgICAgIGlmICh0ID0gdCBpbnN0YW5jZW9mIGNlID8gdFswXSA6IHQsIGNlLm1lcmdlKHRoaXMsIGNlLnBhcnNlSFRNTChyWzFdLCB0ICYmIHQubm9kZVR5cGUgPyB0Lm93bmVyRG9jdW1lbnQgfHwgdCA6IEMsICEwKSksIHcudGVzdChyWzFdKSAmJiBjZS5pc1BsYWluT2JqZWN0KHQpKQogICAgICAgICAgICAgICAgICAgIGZvciAociBpbiB0KSB2KHRoaXNbcl0pID8gdGhpc1tyXSh0W3JdKSA6IHRoaXMuYXR0cihyLCB0W3JdKTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIChpID0gQy5nZXRFbGVtZW50QnlJZChyWzJdKSkgJiYgKHRoaXNbMF0gPSBpLCB0aGlzLmxlbmd0aCA9IDEpLCB0aGlzCiAgICAgICAgfQogICAgICAgIHJldHVybiBlLm5vZGVUeXBlID8gKHRoaXNbMF0gPSBlLCB0aGlzLmxlbmd0aCA9IDEsIHRoaXMpIDogdihlKSA/IHZvaWQgMCAhPT0gbi5yZWFkeSA/IG4ucmVhZHkoZSkgOiBlKGNlKSA6IGNlLm1ha2VBcnJheShlLCB0aGlzKQogICAgfSkucHJvdG90eXBlID0gY2UuZm4sIGsgPSBjZShDKTsKICAgIHZhciBFID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sCiAgICAgICAgaiA9IHsKICAgICAgICAgICAgY2hpbGRyZW46ICEwLAogICAgICAgICAgICBjb250ZW50czogITAsCiAgICAgICAgICAgIG5leHQ6ICEwLAogICAgICAgICAgICBwcmV2OiAhMAogICAgICAgIH07CgogICAgZnVuY3Rpb24gQShlLCB0KSB7CiAgICAgICAgd2hpbGUgKChlID0gZVt0XSkgJiYgMSAhPT0gZS5ub2RlVHlwZSk7CiAgICAgICAgcmV0dXJuIGUKICAgIH0KICAgIGNlLmZuLmV4dGVuZCh7CiAgICAgICAgaGFzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gY2UoZSwgdGhpcyksCiAgICAgICAgICAgICAgICBuID0gdC5sZW5ndGg7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgbjsgZSsrKQogICAgICAgICAgICAgICAgICAgIGlmIChjZS5jb250YWlucyh0aGlzLCB0W2VdKSkgcmV0dXJuICEwCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBjbG9zZXN0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByID0gMCwKICAgICAgICAgICAgICAgIGkgPSB0aGlzLmxlbmd0aCwKICAgICAgICAgICAgICAgIG8gPSBbXSwKICAgICAgICAgICAgICAgIGEgPSAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiBjZShlKTsKICAgICAgICAgICAgaWYgKCFiLnRlc3QoZSkpCiAgICAgICAgICAgICAgICBmb3IgKDsgciA8IGk7IHIrKykKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSB0aGlzW3JdOyBuICYmIG4gIT09IHQ7IG4gPSBuLnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLm5vZGVUeXBlIDwgMTEgJiYgKGEgPyAtMSA8IGEuaW5kZXgobikgOiAxID09PSBuLm5vZGVUeXBlICYmIGNlLmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sIGUpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5wdXNoKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soMSA8IG8ubGVuZ3RoID8gY2UudW5pcXVlU29ydChvKSA6IG8pCiAgICAgICAgfSwKICAgICAgICBpbmRleDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZSA/ICJzdHJpbmciID09IHR5cGVvZiBlID8gc2UuY2FsbChjZShlKSwgdGhpc1swXSkgOiBzZS5jYWxsKHRoaXMsIGUuanF1ZXJ5ID8gZVswXSA6IGUpIDogdGhpc1swXSAmJiB0aGlzWzBdLnBhcmVudE5vZGUgPyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xCiAgICAgICAgfSwKICAgICAgICBhZGQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlLnVuaXF1ZVNvcnQoY2UubWVyZ2UodGhpcy5nZXQoKSwgY2UoZSwgdCkpKSkKICAgICAgICB9LAogICAgICAgIGFkZEJhY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKG51bGwgPT0gZSA/IHRoaXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpCiAgICAgICAgfQogICAgfSksIGNlLmVhY2goewogICAgICAgIHBhcmVudDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGUucGFyZW50Tm9kZTsKICAgICAgICAgICAgcmV0dXJuIHQgJiYgMTEgIT09IHQubm9kZVR5cGUgPyB0IDogbnVsbAogICAgICAgIH0sCiAgICAgICAgcGFyZW50czogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZChlLCAicGFyZW50Tm9kZSIpCiAgICAgICAgfSwKICAgICAgICBwYXJlbnRzVW50aWw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGQoZSwgInBhcmVudE5vZGUiLCBuKQogICAgICAgIH0sCiAgICAgICAgbmV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gQShlLCAibmV4dFNpYmxpbmciKQogICAgICAgIH0sCiAgICAgICAgcHJldjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gQShlLCAicHJldmlvdXNTaWJsaW5nIikKICAgICAgICB9LAogICAgICAgIG5leHRBbGw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGQoZSwgIm5leHRTaWJsaW5nIikKICAgICAgICB9LAogICAgICAgIHByZXZBbGw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGQoZSwgInByZXZpb3VzU2libGluZyIpCiAgICAgICAgfSwKICAgICAgICBuZXh0VW50aWw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGQoZSwgIm5leHRTaWJsaW5nIiwgbikKICAgICAgICB9LAogICAgICAgIHByZXZVbnRpbDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gZChlLCAicHJldmlvdXNTaWJsaW5nIiwgbikKICAgICAgICB9LAogICAgICAgIHNpYmxpbmdzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBoKChlLnBhcmVudE5vZGUgfHwge30pLmZpcnN0Q2hpbGQsIGUpCiAgICAgICAgfSwKICAgICAgICBjaGlsZHJlbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gaChlLmZpcnN0Q2hpbGQpCiAgICAgICAgfSwKICAgICAgICBjb250ZW50czogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlLmNvbnRlbnREb2N1bWVudCAmJiByKGUuY29udGVudERvY3VtZW50KSA/IGUuY29udGVudERvY3VtZW50IDogKGZlKGUsICJ0ZW1wbGF0ZSIpICYmIChlID0gZS5jb250ZW50IHx8IGUpLCBjZS5tZXJnZShbXSwgZS5jaGlsZE5vZGVzKSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBpKSB7CiAgICAgICAgY2UuZm5bcl0gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gY2UubWFwKHRoaXMsIGksIGUpOwogICAgICAgICAgICByZXR1cm4gIlVudGlsIiAhPT0gci5zbGljZSgtNSkgJiYgKHQgPSBlKSwgdCAmJiAic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAobiA9IGNlLmZpbHRlcih0LCBuKSksIDEgPCB0aGlzLmxlbmd0aCAmJiAoaltyXSB8fCBjZS51bmlxdWVTb3J0KG4pLCBFLnRlc3QocikgJiYgbi5yZXZlcnNlKCkpLCB0aGlzLnB1c2hTdGFjayhuKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEQgPSAvW15ceDIwXHRcclxuXGZdKy9nOwoKICAgIGZ1bmN0aW9uIE4oZSkgewogICAgICAgIHJldHVybiBlCiAgICB9CgogICAgZnVuY3Rpb24gcShlKSB7CiAgICAgICAgdGhyb3cgZQogICAgfQoKICAgIGZ1bmN0aW9uIEwoZSwgdCwgbiwgcikgewogICAgICAgIHZhciBpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGUgJiYgdihpID0gZS5wcm9taXNlKSA/IGkuY2FsbChlKS5kb25lKHQpLmZhaWwobikgOiBlICYmIHYoaSA9IGUudGhlbikgPyBpLmNhbGwoZSwgdCwgbikgOiB0LmFwcGx5KHZvaWQgMCwgW2VdLnNsaWNlKHIpKQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgbi5hcHBseSh2b2lkIDAsIFtlXSkKICAgICAgICB9CiAgICB9CiAgICBjZS5DYWxsYmFja3MgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgdmFyIGUsIG47CiAgICAgICAgciA9ICJzdHJpbmciID09IHR5cGVvZiByID8gKGUgPSByLCBuID0ge30sIGNlLmVhY2goZS5tYXRjaChEKSB8fCBbXSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBuW3RdID0gITAKICAgICAgICB9KSwgbikgOiBjZS5leHRlbmQoe30sIHIpOwogICAgICAgIHZhciBpLCB0LCBvLCBhLCBzID0gW10sCiAgICAgICAgICAgIHUgPSBbXSwKICAgICAgICAgICAgbCA9IC0xLAogICAgICAgICAgICBjID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKGEgPSBhIHx8IHIub25jZSwgbyA9IGkgPSAhMDsgdS5sZW5ndGg7IGwgPSAtMSkgewogICAgICAgICAgICAgICAgICAgIHQgPSB1LnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCsrbCA8IHMubGVuZ3RoKSAhMSA9PT0gc1tsXS5hcHBseSh0WzBdLCB0WzFdKSAmJiByLnN0b3BPbkZhbHNlICYmIChsID0gcy5sZW5ndGgsIHQgPSAhMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHIubWVtb3J5IHx8ICh0ID0gITEpLCBpID0gITEsIGEgJiYgKHMgPSB0ID8gW10gOiAiIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZiA9IHsKICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgJiYgKHQgJiYgIWkgJiYgKGwgPSBzLmxlbmd0aCAtIDEsIHUucHVzaCh0KSksIGZ1bmN0aW9uIG4oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjZS5lYWNoKGUsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYodCkgPyByLnVuaXF1ZSAmJiBmLmhhcyh0KSB8fCBzLnB1c2godCkgOiB0ICYmIHQubGVuZ3RoICYmICJzdHJpbmciICE9PSB4KHQpICYmIG4odCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KGFyZ3VtZW50cyksIHQgJiYgIWkgJiYgYygpKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNlLmVhY2goYXJndW1lbnRzLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoLTEgPCAobiA9IGNlLmluQXJyYXkodCwgcywgbikpKSBzLnNwbGljZShuLCAxKSwgbiA8PSBsICYmIGwtLQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaGFzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyAtMSA8IGNlLmluQXJyYXkoZSwgcykgOiAwIDwgcy5sZW5ndGgKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbXB0eTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgJiYgKHMgPSBbXSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA9IHUgPSBbXSwgcyA9IHQgPSAiIiwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBsb2NrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA9IHUgPSBbXSwgdCB8fCBpIHx8IChzID0gdCA9ICIiKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGxvY2tlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhYQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpcmVXaXRoOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgfHwgKHQgPSBbZSwgKHQgPSB0IHx8IFtdKS5zbGljZSA/IHQuc2xpY2UoKSA6IHRdLCB1LnB1c2godCksIGkgfHwgYygpKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpcmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmLmZpcmVXaXRoKHRoaXMsIGFyZ3VtZW50cyksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmaXJlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIHJldHVybiBmCiAgICB9LCBjZS5leHRlbmQoewogICAgICAgIERlZmVycmVkOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBvID0gWwogICAgICAgICAgICAgICAgICAgIFsibm90aWZ5IiwgInByb2dyZXNzIiwgY2UuQ2FsbGJhY2tzKCJtZW1vcnkiKSwgY2UuQ2FsbGJhY2tzKCJtZW1vcnkiKSwgMl0sCiAgICAgICAgICAgICAgICAgICAgWyJyZXNvbHZlIiwgImRvbmUiLCBjZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIGNlLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgMCwgInJlc29sdmVkIl0sCiAgICAgICAgICAgICAgICAgICAgWyJyZWplY3QiLCAiZmFpbCIsIGNlLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgY2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAxLCAicmVqZWN0ZWQiXQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIGkgPSAicGVuZGluZyIsCiAgICAgICAgICAgICAgICBhID0gewogICAgICAgICAgICAgICAgICAgIHN0YXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFsd2F5czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJjYXRjaCI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEudGhlbihudWxsLCBlKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcGlwZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2UuRGVmZXJyZWQoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2UuZWFjaChvLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB2KGlbdFs0XV0pICYmIGlbdFs0XV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1t0WzFdXShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuICYmIG4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiB2KGUucHJvbWlzZSkgPyBlLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpIDogclt0WzBdICsgIldpdGgiXSh0aGlzLCBuID8gW2VdIDogYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaSA9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfSkucHJvbWlzZSgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoaSwgbywgYSwgcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGFyZ3VtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShpIDwgdSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGUgPSBhLmFwcGx5KG4sIHIpKSA9PT0gby5wcm9taXNlKCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlICYmICgib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlKSAmJiBlLnRoZW4sIHYodCkgPyBzID8gdC5jYWxsKGUsIGwodSwgbywgTiwgcyksIGwodSwgbywgcSwgcykpIDogKHUrKywgdC5jYWxsKGUsIGwodSwgbywgTiwgcyksIGwodSwgbywgcSwgcyksIGwodSwgbywgTiwgby5ub3RpZnlXaXRoKSkpIDogKGEgIT09IE4gJiYgKG4gPSB2b2lkIDAsIHIgPSBbZV0pLCAocyB8fCBvLnJlc29sdmVXaXRoKShuLCByKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHMgPyBlIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgJiYgY2UuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhlLCB0LmVycm9yKSwgdSA8PSBpICsgMSAmJiAoYSAhPT0gcSAmJiAobiA9IHZvaWQgMCwgciA9IFtlXSksIG8ucmVqZWN0V2l0aChuLCByKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID8gdCgpIDogKGNlLkRlZmVycmVkLmdldEVycm9ySG9vayA/IHQuZXJyb3IgPSBjZS5EZWZlcnJlZC5nZXRFcnJvckhvb2soKSA6IGNlLkRlZmVycmVkLmdldFN0YWNrSG9vayAmJiAodC5lcnJvciA9IGNlLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSwgaWUuc2V0VGltZW91dCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2UuRGVmZXJyZWQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb1swXVszXS5hZGQobCgwLCBlLCB2KHIpID8gciA6IE4sIGUubm90aWZ5V2l0aCkpLCBvWzFdWzNdLmFkZChsKDAsIGUsIHYodCkgPyB0IDogTikpLCBvWzJdWzNdLmFkZChsKDAsIGUsIHYobikgPyBuIDogcSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLnByb21pc2UoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlID8gY2UuZXh0ZW5kKGUsIGEpIDogYQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzID0ge307CiAgICAgICAgICAgIHJldHVybiBjZS5lYWNoKG8sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gdFsyXSwKICAgICAgICAgICAgICAgICAgICByID0gdFs1XTsKICAgICAgICAgICAgICAgIGFbdFsxXV0gPSBuLmFkZCwgciAmJiBuLmFkZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpID0gcgogICAgICAgICAgICAgICAgfSwgb1szIC0gZV1bMl0uZGlzYWJsZSwgb1szIC0gZV1bM10uZGlzYWJsZSwgb1swXVsyXS5sb2NrLCBvWzBdWzNdLmxvY2spLCBuLmFkZCh0WzNdLmZpcmUpLCBzW3RbMF1dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNbdFswXSArICJXaXRoIl0odGhpcyA9PT0gcyA/IHZvaWQgMCA6IHRoaXMsIGFyZ3VtZW50cyksIHRoaXMKICAgICAgICAgICAgICAgIH0sIHNbdFswXSArICJXaXRoIl0gPSBuLmZpcmVXaXRoCiAgICAgICAgICAgIH0pLCBhLnByb21pc2UocyksIGUgJiYgZS5jYWxsKHMsIHMpLCBzCiAgICAgICAgfSwKICAgICAgICB3aGVuOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCwKICAgICAgICAgICAgICAgIHQgPSBuLAogICAgICAgICAgICAgICAgciA9IEFycmF5KHQpLAogICAgICAgICAgICAgICAgaSA9IGFlLmNhbGwoYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgIG8gPSBjZS5EZWZlcnJlZCgpLAogICAgICAgICAgICAgICAgYSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByW3RdID0gdGhpcywgaVt0XSA9IDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYWUuY2FsbChhcmd1bWVudHMpIDogZSwgLS1uIHx8IG8ucmVzb2x2ZVdpdGgociwgaSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAobiA8PSAxICYmIChMKGUsIG8uZG9uZShhKHQpKS5yZXNvbHZlLCBvLnJlamVjdCwgIW4pLCAicGVuZGluZyIgPT09IG8uc3RhdGUoKSB8fCB2KGlbdF0gJiYgaVt0XS50aGVuKSkpIHJldHVybiBvLnRoZW4oKTsKICAgICAgICAgICAgd2hpbGUgKHQtLSkgTChpW3RdLCBhKHQpLCBvLnJlamVjdCk7CiAgICAgICAgICAgIHJldHVybiBvLnByb21pc2UoKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEggPSAvXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLzsKICAgIGNlLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgaWUuY29uc29sZSAmJiBpZS5jb25zb2xlLndhcm4gJiYgZSAmJiBILnRlc3QoZS5uYW1lKSAmJiBpZS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyBlLm1lc3NhZ2UsIGUuc3RhY2ssIHQpCiAgICB9LCBjZS5yZWFkeUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICBpZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aHJvdyBlCiAgICAgICAgfSkKICAgIH07CiAgICB2YXIgTyA9IGNlLkRlZmVycmVkKCk7CgogICAgZnVuY3Rpb24gUCgpIHsKICAgICAgICBDLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBQKSwgaWUucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsIFApLCBjZS5yZWFkeSgpCiAgICB9CiAgICBjZS5mbi5yZWFkeSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gTy50aGVuKGUpWyJjYXRjaCJdKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgY2UucmVhZHlFeGNlcHRpb24oZSkKICAgICAgICB9KSwgdGhpcwogICAgfSwgY2UuZXh0ZW5kKHsKICAgICAgICBpc1JlYWR5OiAhMSwKICAgICAgICByZWFkeVdhaXQ6IDEsCiAgICAgICAgcmVhZHk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgKCEwID09PSBlID8gLS1jZS5yZWFkeVdhaXQgOiBjZS5pc1JlYWR5KSB8fCAoY2UuaXNSZWFkeSA9ICEwKSAhPT0gZSAmJiAwIDwgLS1jZS5yZWFkeVdhaXQgfHwgTy5yZXNvbHZlV2l0aChDLCBbY2VdKQogICAgICAgIH0KICAgIH0pLCBjZS5yZWFkeS50aGVuID0gTy50aGVuLCAiY29tcGxldGUiID09PSBDLnJlYWR5U3RhdGUgfHwgImxvYWRpbmciICE9PSBDLnJlYWR5U3RhdGUgJiYgIUMuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsID8gaWUuc2V0VGltZW91dChjZS5yZWFkeSkgOiAoQy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgUCksIGllLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBQKSk7CiAgICB2YXIgTSA9IGZ1bmN0aW9uKGUsIHQsIG4sIHIsIGksIG8sIGEpIHsKICAgICAgICAgICAgdmFyIHMgPSAwLAogICAgICAgICAgICAgICAgdSA9IGUubGVuZ3RoLAogICAgICAgICAgICAgICAgbCA9IG51bGwgPT0gbjsKICAgICAgICAgICAgaWYgKCJvYmplY3QiID09PSB4KG4pKQogICAgICAgICAgICAgICAgZm9yIChzIGluIGkgPSAhMCwgbikgTShlLCB0LCBzLCBuW3NdLCAhMCwgbywgYSk7CiAgICAgICAgICAgIGVsc2UgaWYgKHZvaWQgMCAhPT0gciAmJiAoaSA9ICEwLCB2KHIpIHx8IChhID0gITApLCBsICYmIChhID8gKHQuY2FsbChlLCByKSwgdCA9IG51bGwpIDogKGwgPSB0LCB0ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBsLmNhbGwoY2UoZSksIG4pCiAgICAgICAgICAgICAgICB9KSksIHQpKQogICAgICAgICAgICAgICAgZm9yICg7IHMgPCB1OyBzKyspIHQoZVtzXSwgbiwgYSA/IHIgOiByLmNhbGwoZVtzXSwgcywgdChlW3NdLCBuKSkpOwogICAgICAgICAgICByZXR1cm4gaSA/IGUgOiBsID8gdC5jYWxsKGUpIDogdSA/IHQoZVswXSwgbikgOiBvCiAgICAgICAgfSwKICAgICAgICBSID0gL14tbXMtLywKICAgICAgICBJID0gLy0oW2Etel0pL2c7CgogICAgZnVuY3Rpb24gVyhlLCB0KSB7CiAgICAgICAgcmV0dXJuIHQudG9VcHBlckNhc2UoKQogICAgfQoKICAgIGZ1bmN0aW9uIEYoZSkgewogICAgICAgIHJldHVybiBlLnJlcGxhY2UoUiwgIm1zLSIpLnJlcGxhY2UoSSwgVykKICAgIH0KICAgIHZhciAkID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiAxID09PSBlLm5vZGVUeXBlIHx8IDkgPT09IGUubm9kZVR5cGUgfHwgIStlLm5vZGVUeXBlCiAgICB9OwoKICAgIGZ1bmN0aW9uIEIoKSB7CiAgICAgICAgdGhpcy5leHBhbmRvID0gY2UuZXhwYW5kbyArIEIudWlkKysKICAgIH0KICAgIEIudWlkID0gMSwgQi5wcm90b3R5cGUgPSB7CiAgICAgICAgY2FjaGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlW3RoaXMuZXhwYW5kb107CiAgICAgICAgICAgIHJldHVybiB0IHx8ICh0ID0ge30sICQoZSkgJiYgKGUubm9kZVR5cGUgPyBlW3RoaXMuZXhwYW5kb10gPSB0IDogT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRoaXMuZXhwYW5kbywgewogICAgICAgICAgICAgICAgdmFsdWU6IHQsCiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgIH0pKSksIHQKICAgICAgICB9LAogICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciwgaSA9IHRoaXMuY2FjaGUoZSk7CiAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgaVtGKHQpXSA9IG47CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAociBpbiB0KSBpW0YocildID0gdFtyXTsKICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICB9LAogICAgICAgIGdldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ID8gdGhpcy5jYWNoZShlKSA6IGVbdGhpcy5leHBhbmRvXSAmJiBlW3RoaXMuZXhwYW5kb11bRih0KV0KICAgICAgICB9LAogICAgICAgIGFjY2VzczogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0IHx8IHQgJiYgInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgdm9pZCAwID09PSBuID8gdGhpcy5nZXQoZSwgdCkgOiAodGhpcy5zZXQoZSwgdCwgbiksIHZvaWQgMCAhPT0gbiA/IG4gOiB0KQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByID0gZVt0aGlzLmV4cGFuZG9dOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSByKSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgbiA9ICh0ID0gQXJyYXkuaXNBcnJheSh0KSA/IHQubWFwKEYpIDogKHQgPSBGKHQpKSBpbiByID8gW3RdIDogdC5tYXRjaChEKSB8fCBbXSkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChuLS0pIGRlbGV0ZSByW3Rbbl1dCiAgICAgICAgICAgICAgICB9KHZvaWQgMCA9PT0gdCB8fCBjZS5pc0VtcHR5T2JqZWN0KHIpKSAmJiAoZS5ub2RlVHlwZSA/IGVbdGhpcy5leHBhbmRvXSA9IHZvaWQgMCA6IGRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGhhc0RhdGE6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlW3RoaXMuZXhwYW5kb107CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHQgJiYgIWNlLmlzRW1wdHlPYmplY3QodCkKICAgICAgICB9CiAgICB9OwogICAgdmFyIF8gPSBuZXcgQiwKICAgICAgICB6ID0gbmV3IEIsCiAgICAgICAgWCA9IC9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sCiAgICAgICAgVSA9IC9bQS1aXS9nOwoKICAgIGZ1bmN0aW9uIFYoZSwgdCwgbikgewogICAgICAgIHZhciByLCBpOwogICAgICAgIGlmICh2b2lkIDAgPT09IG4gJiYgMSA9PT0gZS5ub2RlVHlwZSkKICAgICAgICAgICAgaWYgKHIgPSAiZGF0YS0iICsgdC5yZXBsYWNlKFUsICItJCYiKS50b0xvd2VyQ2FzZSgpLCAic3RyaW5nIiA9PSB0eXBlb2YobiA9IGUuZ2V0QXR0cmlidXRlKHIpKSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBuID0gInRydWUiID09PSAoaSA9IG4pIHx8ICJmYWxzZSIgIT09IGkgJiYgKCJudWxsIiA9PT0gaSA/IG51bGwgOiBpID09PSAraSArICIiID8gK2kgOiBYLnRlc3QoaSkgPyBKU09OLnBhcnNlKGkpIDogaSkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICB6LnNldChlLCB0LCBuKQogICAgICAgICAgICB9IGVsc2UgbiA9IHZvaWQgMDsKICAgICAgICByZXR1cm4gbgogICAgfQogICAgY2UuZXh0ZW5kKHsKICAgICAgICBoYXNEYXRhOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB6Lmhhc0RhdGEoZSkgfHwgXy5oYXNEYXRhKGUpCiAgICAgICAgfSwKICAgICAgICBkYXRhOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiB6LmFjY2VzcyhlLCB0LCBuKQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlRGF0YTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB6LnJlbW92ZShlLCB0KQogICAgICAgIH0sCiAgICAgICAgX2RhdGE6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIF8uYWNjZXNzKGUsIHQsIG4pCiAgICAgICAgfSwKICAgICAgICBfcmVtb3ZlRGF0YTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBfLnJlbW92ZShlLCB0KQogICAgICAgIH0KICAgIH0pLCBjZS5mbi5leHRlbmQoewogICAgICAgIGRhdGE6IGZ1bmN0aW9uKG4sIGUpIHsKICAgICAgICAgICAgdmFyIHQsIHIsIGksIG8gPSB0aGlzWzBdLAogICAgICAgICAgICAgICAgYSA9IG8gJiYgby5hdHRyaWJ1dGVzOwogICAgICAgICAgICBpZiAodm9pZCAwID09PSBuKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5sZW5ndGggJiYgKGkgPSB6LmdldChvKSwgMSA9PT0gby5ub2RlVHlwZSAmJiAhXy5nZXQobywgImhhc0RhdGFBdHRycyIpKSkgewogICAgICAgICAgICAgICAgICAgIHQgPSBhLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodC0tKSBhW3RdICYmIDAgPT09IChyID0gYVt0XS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpICYmIChyID0gRihyLnNsaWNlKDUpKSwgVihvLCByLCBpW3JdKSk7CiAgICAgICAgICAgICAgICAgICAgXy5zZXQobywgImhhc0RhdGFBdHRycyIsICEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIG4gPyB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB6LnNldCh0aGlzLCBuKQogICAgICAgICAgICB9KSA6IE0odGhpcywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICBpZiAobyAmJiB2b2lkIDAgPT09IGUpIHJldHVybiB2b2lkIDAgIT09ICh0ID0gei5nZXQobywgbikpID8gdCA6IHZvaWQgMCAhPT0gKHQgPSBWKG8sIG4pKSA/IHQgOiB2b2lkIDA7CiAgICAgICAgICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgei5zZXQodGhpcywgbiwgZSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sIG51bGwsIGUsIDEgPCBhcmd1bWVudHMubGVuZ3RoLCBudWxsLCAhMCkKICAgICAgICB9LAogICAgICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHoucmVtb3ZlKHRoaXMsIGUpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSksIGNlLmV4dGVuZCh7CiAgICAgICAgcXVldWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIHI7CiAgICAgICAgICAgIGlmIChlKSByZXR1cm4gdCA9ICh0IHx8ICJmeCIpICsgInF1ZXVlIiwgciA9IF8uZ2V0KGUsIHQpLCBuICYmICghciB8fCBBcnJheS5pc0FycmF5KG4pID8gciA9IF8uYWNjZXNzKGUsIHQsIGNlLm1ha2VBcnJheShuKSkgOiByLnB1c2gobikpLCByIHx8IFtdCiAgICAgICAgfSwKICAgICAgICBkZXF1ZXVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHQgPSB0IHx8ICJmeCI7CiAgICAgICAgICAgIHZhciBuID0gY2UucXVldWUoZSwgdCksCiAgICAgICAgICAgICAgICByID0gbi5sZW5ndGgsCiAgICAgICAgICAgICAgICBpID0gbi5zaGlmdCgpLAogICAgICAgICAgICAgICAgbyA9IGNlLl9xdWV1ZUhvb2tzKGUsIHQpOwogICAgICAgICAgICAiaW5wcm9ncmVzcyIgPT09IGkgJiYgKGkgPSBuLnNoaWZ0KCksIHItLSksIGkgJiYgKCJmeCIgPT09IHQgJiYgbi51bnNoaWZ0KCJpbnByb2dyZXNzIiksIGRlbGV0ZSBvLnN0b3AsIGkuY2FsbChlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNlLmRlcXVldWUoZSwgdCkKICAgICAgICAgICAgfSwgbykpLCAhciAmJiBvICYmIG8uZW1wdHkuZmlyZSgpCiAgICAgICAgfSwKICAgICAgICBfcXVldWVIb29rczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IHQgKyAicXVldWVIb29rcyI7CiAgICAgICAgICAgIHJldHVybiBfLmdldChlLCBuKSB8fCBfLmFjY2VzcyhlLCBuLCB7CiAgICAgICAgICAgICAgICBlbXB0eTogY2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBfLnJlbW92ZShlLCBbdCArICJxdWV1ZSIsIG5dKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBxdWV1ZTogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICB2YXIgZSA9IDI7CiAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgdCAmJiAobiA9IHQsIHQgPSAiZngiLCBlLS0pLCBhcmd1bWVudHMubGVuZ3RoIDwgZSA/IGNlLnF1ZXVlKHRoaXNbMF0sIHQpIDogdm9pZCAwID09PSBuID8gdGhpcyA6IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gY2UucXVldWUodGhpcywgdCwgbik7CiAgICAgICAgICAgICAgICBjZS5fcXVldWVIb29rcyh0aGlzLCB0KSwgImZ4IiA9PT0gdCAmJiAiaW5wcm9ncmVzcyIgIT09IGVbMF0gJiYgY2UuZGVxdWV1ZSh0aGlzLCB0KQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZGVxdWV1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY2UuZGVxdWV1ZSh0aGlzLCBlKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgY2xlYXJRdWV1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZShlIHx8ICJmeCIsIFtdKQogICAgICAgIH0sCiAgICAgICAgcHJvbWlzZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiwgciA9IDEsCiAgICAgICAgICAgICAgICBpID0gY2UuRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgIG8gPSB0aGlzLAogICAgICAgICAgICAgICAgYSA9IHRoaXMubGVuZ3RoLAogICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIC0tciB8fCBpLnJlc29sdmVXaXRoKG8sIFtvXSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICJzdHJpbmciICE9IHR5cGVvZiBlICYmICh0ID0gZSwgZSA9IHZvaWQgMCksIGUgPSBlIHx8ICJmeCI7CiAgICAgICAgICAgIHdoaWxlIChhLS0pKG4gPSBfLmdldChvW2FdLCBlICsgInF1ZXVlSG9va3MiKSkgJiYgbi5lbXB0eSAmJiAocisrLCBuLmVtcHR5LmFkZChzKSk7CiAgICAgICAgICAgIHJldHVybiBzKCksIGkucHJvbWlzZSh0KQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEcgPSAvWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSwKICAgICAgICBZID0gbmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiICsgRyArICIpKFthLXolXSopJCIsICJpIiksCiAgICAgICAgUSA9IFsiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0Il0sCiAgICAgICAgSiA9IEMuZG9jdW1lbnRFbGVtZW50LAogICAgICAgIEsgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBjZS5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsIGUpCiAgICAgICAgfSwKICAgICAgICBaID0gewogICAgICAgICAgICBjb21wb3NlZDogITAKICAgICAgICB9OwogICAgSi5nZXRSb290Tm9kZSAmJiAoSyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gY2UuY29udGFpbnMoZS5vd25lckRvY3VtZW50LCBlKSB8fCBlLmdldFJvb3ROb2RlKFopID09PSBlLm93bmVyRG9jdW1lbnQKICAgIH0pOwogICAgdmFyIGVlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHJldHVybiAibm9uZSIgPT09IChlID0gdCB8fCBlKS5zdHlsZS5kaXNwbGF5IHx8ICIiID09PSBlLnN0eWxlLmRpc3BsYXkgJiYgSyhlKSAmJiAibm9uZSIgPT09IGNlLmNzcyhlLCAiZGlzcGxheSIpCiAgICB9OwoKICAgIGZ1bmN0aW9uIHRlKGUsIHQsIG4sIHIpIHsKICAgICAgICB2YXIgaSwgbywgYSA9IDIwLAogICAgICAgICAgICBzID0gciA/IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHIuY3VyKCkKICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGNlLmNzcyhlLCB0LCAiIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdSA9IHMoKSwKICAgICAgICAgICAgbCA9IG4gJiYgblszXSB8fCAoY2UuY3NzTnVtYmVyW3RdID8gIiIgOiAicHgiKSwKICAgICAgICAgICAgYyA9IGUubm9kZVR5cGUgJiYgKGNlLmNzc051bWJlclt0XSB8fCAicHgiICE9PSBsICYmICt1KSAmJiBZLmV4ZWMoY2UuY3NzKGUsIHQpKTsKICAgICAgICBpZiAoYyAmJiBjWzNdICE9PSBsKSB7CiAgICAgICAgICAgIHUgLz0gMiwgbCA9IGwgfHwgY1szXSwgYyA9ICt1IHx8IDE7CiAgICAgICAgICAgIHdoaWxlIChhLS0pIGNlLnN0eWxlKGUsIHQsIGMgKyBsKSwgKDEgLSBvKSAqICgxIC0gKG8gPSBzKCkgLyB1IHx8IC41KSkgPD0gMCAmJiAoYSA9IDApLCBjIC89IG87CiAgICAgICAgICAgIGMgKj0gMiwgY2Uuc3R5bGUoZSwgdCwgYyArIGwpLCBuID0gbiB8fCBbXQogICAgICAgIH0KICAgICAgICByZXR1cm4gbiAmJiAoYyA9ICtjIHx8ICt1IHx8IDAsIGkgPSBuWzFdID8gYyArIChuWzFdICsgMSkgKiBuWzJdIDogK25bMl0sIHIgJiYgKHIudW5pdCA9IGwsIHIuc3RhcnQgPSBjLCByLmVuZCA9IGkpKSwgaQogICAgfQogICAgdmFyIG5lID0ge307CgogICAgZnVuY3Rpb24gcmUoZSwgdCkgewogICAgICAgIGZvciAodmFyIG4sIHIsIGksIG8sIGEsIHMsIHUsIGwgPSBbXSwgYyA9IDAsIGYgPSBlLmxlbmd0aDsgYyA8IGY7IGMrKykociA9IGVbY10pLnN0eWxlICYmIChuID0gci5zdHlsZS5kaXNwbGF5LCB0ID8gKCJub25lIiA9PT0gbiAmJiAobFtjXSA9IF8uZ2V0KHIsICJkaXNwbGF5IikgfHwgbnVsbCwgbFtjXSB8fCAoci5zdHlsZS5kaXNwbGF5ID0gIiIpKSwgIiIgPT09IHIuc3R5bGUuZGlzcGxheSAmJiBlZShyKSAmJiAobFtjXSA9ICh1ID0gYSA9IG8gPSB2b2lkIDAsIGEgPSAoaSA9IHIpLm93bmVyRG9jdW1lbnQsIHMgPSBpLm5vZGVOYW1lLCAodSA9IG5lW3NdKSB8fCAobyA9IGEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLCB1ID0gY2UuY3NzKG8sICJkaXNwbGF5IiksIG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwgIm5vbmUiID09PSB1ICYmICh1ID0gImJsb2NrIiksIG5lW3NdID0gdSkpKSkgOiAibm9uZSIgIT09IG4gJiYgKGxbY10gPSAibm9uZSIsIF8uc2V0KHIsICJkaXNwbGF5IiwgbikpKTsKICAgICAgICBmb3IgKGMgPSAwOyBjIDwgZjsgYysrKSBudWxsICE9IGxbY10gJiYgKGVbY10uc3R5bGUuZGlzcGxheSA9IGxbY10pOwogICAgICAgIHJldHVybiBlCiAgICB9CiAgICBjZS5mbi5leHRlbmQoewogICAgICAgIHNob3c6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gcmUodGhpcywgITApCiAgICAgICAgfSwKICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHJlKHRoaXMpCiAgICAgICAgfSwKICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJib29sZWFuIiA9PSB0eXBlb2YgZSA/IGUgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpIDogdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZWUodGhpcykgPyBjZSh0aGlzKS5zaG93KCkgOiBjZSh0aGlzKS5oaWRlKCkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciB4ZSwgYmUsIHdlID0gL14oPzpjaGVja2JveHxyYWRpbykkL2ksCiAgICAgICAgVGUgPSAvPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSwKICAgICAgICBDZSA9IC9eJHxebW9kdWxlJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaTsKICAgIHhlID0gQy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksIChiZSA9IEMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhZGlvIiksIGJlLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsICJjaGVja2VkIiksIGJlLnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0IiksIHhlLmFwcGVuZENoaWxkKGJlKSwgbGUuY2hlY2tDbG9uZSA9IHhlLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCwgeGUuaW5uZXJIVE1MID0gIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLCBsZS5ub0Nsb25lQ2hlY2tlZCA9ICEheGUuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLCB4ZS5pbm5lckhUTUwgPSAiPG9wdGlvbj48L29wdGlvbj4iLCBsZS5vcHRpb24gPSAhIXhlLmxhc3RDaGlsZDsKICAgIHZhciBrZSA9IHsKICAgICAgICB0aGVhZDogWzEsICI8dGFibGU+IiwgIjwvdGFibGU+Il0sCiAgICAgICAgY29sOiBbMiwgIjx0YWJsZT48Y29sZ3JvdXA+IiwgIjwvY29sZ3JvdXA+PC90YWJsZT4iXSwKICAgICAgICB0cjogWzIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+Il0sCiAgICAgICAgdGQ6IFszLCAiPHRhYmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLAogICAgICAgIF9kZWZhdWx0OiBbMCwgIiIsICIiXQogICAgfTsKCiAgICBmdW5jdGlvbiBTZShlLCB0KSB7CiAgICAgICAgdmFyIG47CiAgICAgICAgcmV0dXJuIG4gPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA/IGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCB8fCAiKiIpIDogInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbCA/IGUucXVlcnlTZWxlY3RvckFsbCh0IHx8ICIqIikgOiBbXSwgdm9pZCAwID09PSB0IHx8IHQgJiYgZmUoZSwgdCkgPyBjZS5tZXJnZShbZV0sIG4pIDogbgogICAgfQoKICAgIGZ1bmN0aW9uIEVlKGUsIHQpIHsKICAgICAgICBmb3IgKHZhciBuID0gMCwgciA9IGUubGVuZ3RoOyBuIDwgcjsgbisrKSBfLnNldChlW25dLCAiZ2xvYmFsRXZhbCIsICF0IHx8IF8uZ2V0KHRbbl0sICJnbG9iYWxFdmFsIikpCiAgICB9CiAgICBrZS50Ym9keSA9IGtlLnRmb290ID0ga2UuY29sZ3JvdXAgPSBrZS5jYXB0aW9uID0ga2UudGhlYWQsIGtlLnRoID0ga2UudGQsIGxlLm9wdGlvbiB8fCAoa2Uub3B0Z3JvdXAgPSBrZS5vcHRpb24gPSBbMSwgIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCAiPC9zZWxlY3Q+Il0pOwogICAgdmFyIGplID0gLzx8JiM/XHcrOy87CgogICAgZnVuY3Rpb24gQWUoZSwgdCwgbiwgciwgaSkgewogICAgICAgIGZvciAodmFyIG8sIGEsIHMsIHUsIGwsIGMsIGYgPSB0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgcCA9IFtdLCBkID0gMCwgaCA9IGUubGVuZ3RoOyBkIDwgaDsgZCsrKQogICAgICAgICAgICBpZiAoKG8gPSBlW2RdKSB8fCAwID09PSBvKQogICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09PSB4KG8pKSBjZS5tZXJnZShwLCBvLm5vZGVUeXBlID8gW29dIDogbyk7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChqZS50ZXN0KG8pKSB7CiAgICAgICAgICAgIGEgPSBhIHx8IGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSksIHMgPSAoVGUuZXhlYyhvKSB8fCBbIiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKSwgdSA9IGtlW3NdIHx8IGtlLl9kZWZhdWx0LCBhLmlubmVySFRNTCA9IHVbMV0gKyBjZS5odG1sUHJlZmlsdGVyKG8pICsgdVsyXSwgYyA9IHVbMF07CiAgICAgICAgICAgIHdoaWxlIChjLS0pIGEgPSBhLmxhc3RDaGlsZDsKICAgICAgICAgICAgY2UubWVyZ2UocCwgYS5jaGlsZE5vZGVzKSwgKGEgPSBmLmZpcnN0Q2hpbGQpLnRleHRDb250ZW50ID0gIiIKICAgICAgICB9IGVsc2UgcC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpOwogICAgICAgIGYudGV4dENvbnRlbnQgPSAiIiwgZCA9IDA7CiAgICAgICAgd2hpbGUgKG8gPSBwW2QrK10pCiAgICAgICAgICAgIGlmIChyICYmIC0xIDwgY2UuaW5BcnJheShvLCByKSkgaSAmJiBpLnB1c2gobyk7CiAgICAgICAgICAgIGVsc2UgaWYgKGwgPSBLKG8pLCBhID0gU2UoZi5hcHBlbmRDaGlsZChvKSwgInNjcmlwdCIpLCBsICYmIEVlKGEpLCBuKSB7CiAgICAgICAgICAgIGMgPSAwOwogICAgICAgICAgICB3aGlsZSAobyA9IGFbYysrXSkgQ2UudGVzdChvLnR5cGUgfHwgIiIpICYmIG4ucHVzaChvKQogICAgICAgIH0KICAgICAgICByZXR1cm4gZgogICAgfQogICAgdmFyIERlID0gL14oW14uXSopKD86XC4oLispfCkvOwoKICAgIGZ1bmN0aW9uIE5lKCkgewogICAgICAgIHJldHVybiAhMAogICAgfQoKICAgIGZ1bmN0aW9uIHFlKCkgewogICAgICAgIHJldHVybiAhMQogICAgfQoKICAgIGZ1bmN0aW9uIExlKGUsIHQsIG4sIHIsIGksIG8pIHsKICAgICAgICB2YXIgYSwgczsKICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHQpIHsKICAgICAgICAgICAgZm9yIChzIGluICJzdHJpbmciICE9IHR5cGVvZiBuICYmIChyID0gciB8fCBuLCBuID0gdm9pZCAwKSwgdCkgTGUoZSwgcywgbiwgciwgdFtzXSwgbyk7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfQogICAgICAgIGlmIChudWxsID09IHIgJiYgbnVsbCA9PSBpID8gKGkgPSBuLCByID0gbiA9IHZvaWQgMCkgOiBudWxsID09IGkgJiYgKCJzdHJpbmciID09IHR5cGVvZiBuID8gKGkgPSByLCByID0gdm9pZCAwKSA6IChpID0gciwgciA9IG4sIG4gPSB2b2lkIDApKSwgITEgPT09IGkpIGkgPSBxZTsKICAgICAgICBlbHNlIGlmICghaSkgcmV0dXJuIGU7CiAgICAgICAgcmV0dXJuIDEgPT09IG8gJiYgKGEgPSBpLCAoaSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGNlKCkub2ZmKGUpLCBhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICB9KS5ndWlkID0gYS5ndWlkIHx8IChhLmd1aWQgPSBjZS5ndWlkKyspKSwgZS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBjZS5ldmVudC5hZGQodGhpcywgdCwgaSwgciwgbikKICAgICAgICB9KQogICAgfQoKICAgIGZ1bmN0aW9uIEhlKGUsIHIsIHQpIHsKICAgICAgICB0ID8gKF8uc2V0KGUsIHIsICExKSwgY2UuZXZlbnQuYWRkKGUsIHIsIHsKICAgICAgICAgICAgbmFtZXNwYWNlOiAhMSwKICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4gPSBfLmdldCh0aGlzLCByKTsKICAgICAgICAgICAgICAgIGlmICgxICYgZS5pc1RyaWdnZXIgJiYgdGhpc1tyXSkgewogICAgICAgICAgICAgICAgICAgIGlmIChuKShjZS5ldmVudC5zcGVjaWFsW3JdIHx8IHt9KS5kZWxlZ2F0ZVR5cGUgJiYgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuID0gYWUuY2FsbChhcmd1bWVudHMpLCBfLnNldCh0aGlzLCByLCBuKSwgdGhpc1tyXSgpLCB0ID0gXy5nZXQodGhpcywgciksIF8uc2V0KHRoaXMsIHIsICExKSwgbiAhPT0gdCkgcmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIGUucHJldmVudERlZmF1bHQoKSwgdAogICAgICAgICAgICAgICAgfSBlbHNlIG4gJiYgKF8uc2V0KHRoaXMsIHIsIGNlLmV2ZW50LnRyaWdnZXIoblswXSwgbi5zbGljZSgxKSwgdGhpcykpLCBlLnN0b3BQcm9wYWdhdGlvbigpLCBlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gTmUpCiAgICAgICAgICAgIH0KICAgICAgICB9KSkgOiB2b2lkIDAgPT09IF8uZ2V0KGUsIHIpICYmIGNlLmV2ZW50LmFkZChlLCByLCBOZSkKICAgIH0KICAgIGNlLmV2ZW50ID0gewogICAgICAgIGdsb2JhbDoge30sCiAgICAgICAgYWRkOiBmdW5jdGlvbih0LCBlLCBuLCByLCBpKSB7CiAgICAgICAgICAgIHZhciBvLCBhLCBzLCB1LCBsLCBjLCBmLCBwLCBkLCBoLCBnLCB2ID0gXy5nZXQodCk7CiAgICAgICAgICAgIGlmICgkKHQpKSB7CiAgICAgICAgICAgICAgICBuLmhhbmRsZXIgJiYgKG4gPSAobyA9IG4pLmhhbmRsZXIsIGkgPSBvLnNlbGVjdG9yKSwgaSAmJiBjZS5maW5kLm1hdGNoZXNTZWxlY3RvcihKLCBpKSwgbi5ndWlkIHx8IChuLmd1aWQgPSBjZS5ndWlkKyspLCAodSA9IHYuZXZlbnRzKSB8fCAodSA9IHYuZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKSksIChhID0gdi5oYW5kbGUpIHx8IChhID0gdi5oYW5kbGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiBjZSAmJiBjZS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/IGNlLmV2ZW50LmRpc3BhdGNoLmFwcGx5KHQsIGFyZ3VtZW50cykgOiB2b2lkIDAKICAgICAgICAgICAgICAgIH0pLCBsID0gKGUgPSAoZSB8fCAiIikubWF0Y2goRCkgfHwgWyIiXSkubGVuZ3RoOwogICAgICAgICAgICAgICAgd2hpbGUgKGwtLSkgZCA9IGcgPSAocyA9IERlLmV4ZWMoZVtsXSkgfHwgW10pWzFdLCBoID0gKHNbMl0gfHwgIiIpLnNwbGl0KCIuIikuc29ydCgpLCBkICYmIChmID0gY2UuZXZlbnQuc3BlY2lhbFtkXSB8fCB7fSwgZCA9IChpID8gZi5kZWxlZ2F0ZVR5cGUgOiBmLmJpbmRUeXBlKSB8fCBkLCBmID0gY2UuZXZlbnQuc3BlY2lhbFtkXSB8fCB7fSwgYyA9IGNlLmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogZCwKICAgICAgICAgICAgICAgICAgICBvcmlnVHlwZTogZywKICAgICAgICAgICAgICAgICAgICBkYXRhOiByLAogICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IG4sCiAgICAgICAgICAgICAgICAgICAgZ3VpZDogbi5ndWlkLAogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiBpLAogICAgICAgICAgICAgICAgICAgIG5lZWRzQ29udGV4dDogaSAmJiBjZS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLAogICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogaC5qb2luKCIuIikKICAgICAgICAgICAgICAgIH0sIG8pLCAocCA9IHVbZF0pIHx8ICgocCA9IHVbZF0gPSBbXSkuZGVsZWdhdGVDb3VudCA9IDAsIGYuc2V0dXAgJiYgITEgIT09IGYuc2V0dXAuY2FsbCh0LCByLCBoLCBhKSB8fCB0LmFkZEV2ZW50TGlzdGVuZXIgJiYgdC5hZGRFdmVudExpc3RlbmVyKGQsIGEpKSwgZi5hZGQgJiYgKGYuYWRkLmNhbGwodCwgYyksIGMuaGFuZGxlci5ndWlkIHx8IChjLmhhbmRsZXIuZ3VpZCA9IG4uZ3VpZCkpLCBpID8gcC5zcGxpY2UocC5kZWxlZ2F0ZUNvdW50KyssIDAsIGMpIDogcC5wdXNoKGMpLCBjZS5ldmVudC5nbG9iYWxbZF0gPSAhMCkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgICAgIHZhciBvLCBhLCBzLCB1LCBsLCBjLCBmLCBwLCBkLCBoLCBnLCB2ID0gXy5oYXNEYXRhKGUpICYmIF8uZ2V0KGUpOwogICAgICAgICAgICBpZiAodiAmJiAodSA9IHYuZXZlbnRzKSkgewogICAgICAgICAgICAgICAgbCA9ICh0ID0gKHQgfHwgIiIpLm1hdGNoKEQpIHx8IFsiIl0pLmxlbmd0aDsKICAgICAgICAgICAgICAgIHdoaWxlIChsLS0pCiAgICAgICAgICAgICAgICAgICAgaWYgKGQgPSBnID0gKHMgPSBEZS5leGVjKHRbbF0pIHx8IFtdKVsxXSwgaCA9IChzWzJdIHx8ICIiKS5zcGxpdCgiLiIpLnNvcnQoKSwgZCkgewogICAgICAgICAgICAgICAgICAgICAgICBmID0gY2UuZXZlbnQuc3BlY2lhbFtkXSB8fCB7fSwgcCA9IHVbZCA9IChyID8gZi5kZWxlZ2F0ZVR5cGUgOiBmLmJpbmRUeXBlKSB8fCBkXSB8fCBbXSwgcyA9IHNbMl0gJiYgbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIiksIGEgPSBvID0gcC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChvLS0pIGMgPSBwW29dLCAhaSAmJiBnICE9PSBjLm9yaWdUeXBlIHx8IG4gJiYgbi5ndWlkICE9PSBjLmd1aWQgfHwgcyAmJiAhcy50ZXN0KGMubmFtZXNwYWNlKSB8fCByICYmIHIgIT09IGMuc2VsZWN0b3IgJiYgKCIqKiIgIT09IHIgfHwgIWMuc2VsZWN0b3IpIHx8IChwLnNwbGljZShvLCAxKSwgYy5zZWxlY3RvciAmJiBwLmRlbGVnYXRlQ291bnQtLSwgZi5yZW1vdmUgJiYgZi5yZW1vdmUuY2FsbChlLCBjKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgJiYgIXAubGVuZ3RoICYmIChmLnRlYXJkb3duICYmICExICE9PSBmLnRlYXJkb3duLmNhbGwoZSwgaCwgdi5oYW5kbGUpIHx8IGNlLnJlbW92ZUV2ZW50KGUsIGQsIHYuaGFuZGxlKSwgZGVsZXRlIHVbZF0pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZCBpbiB1KSBjZS5ldmVudC5yZW1vdmUoZSwgZCArIHRbbF0sIG4sIHIsICEwKTsKICAgICAgICAgICAgICAgIGNlLmlzRW1wdHlPYmplY3QodSkgJiYgXy5yZW1vdmUoZSwgImhhbmRsZSBldmVudHMiKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgbiwgciwgaSwgbywgYSwgcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSwKICAgICAgICAgICAgICAgIHUgPSBjZS5ldmVudC5maXgoZSksCiAgICAgICAgICAgICAgICBsID0gKF8uZ2V0KHRoaXMsICJldmVudHMiKSB8fCBPYmplY3QuY3JlYXRlKG51bGwpKVt1LnR5cGVdIHx8IFtdLAogICAgICAgICAgICAgICAgYyA9IGNlLmV2ZW50LnNwZWNpYWxbdS50eXBlXSB8fCB7fTsKICAgICAgICAgICAgZm9yIChzWzBdID0gdSwgdCA9IDE7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHNbdF0gPSBhcmd1bWVudHNbdF07CiAgICAgICAgICAgIGlmICh1LmRlbGVnYXRlVGFyZ2V0ID0gdGhpcywgIWMucHJlRGlzcGF0Y2ggfHwgITEgIT09IGMucHJlRGlzcGF0Y2guY2FsbCh0aGlzLCB1KSkgewogICAgICAgICAgICAgICAgYSA9IGNlLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcywgdSwgbCksIHQgPSAwOwogICAgICAgICAgICAgICAgd2hpbGUgKChpID0gYVt0KytdKSAmJiAhdS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgdS5jdXJyZW50VGFyZ2V0ID0gaS5lbGVtLCBuID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKG8gPSBpLmhhbmRsZXJzW24rK10pICYmICF1LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpIHUucm5hbWVzcGFjZSAmJiAhMSAhPT0gby5uYW1lc3BhY2UgJiYgIXUucm5hbWVzcGFjZS50ZXN0KG8ubmFtZXNwYWNlKSB8fCAodS5oYW5kbGVPYmogPSBvLCB1LmRhdGEgPSBvLmRhdGEsIHZvaWQgMCAhPT0gKHIgPSAoKGNlLmV2ZW50LnNwZWNpYWxbby5vcmlnVHlwZV0gfHwge30pLmhhbmRsZSB8fCBvLmhhbmRsZXIpLmFwcGx5KGkuZWxlbSwgcykpICYmICExID09PSAodS5yZXN1bHQgPSByKSAmJiAodS5wcmV2ZW50RGVmYXVsdCgpLCB1LnN0b3BQcm9wYWdhdGlvbigpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBjLnBvc3REaXNwYXRjaCAmJiBjLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsIHUpLCB1LnJlc3VsdAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBoYW5kbGVyczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiwgciwgaSwgbywgYSwgcyA9IFtdLAogICAgICAgICAgICAgICAgdSA9IHQuZGVsZWdhdGVDb3VudCwKICAgICAgICAgICAgICAgIGwgPSBlLnRhcmdldDsKICAgICAgICAgICAgaWYgKHUgJiYgbC5ub2RlVHlwZSAmJiAhKCJjbGljayIgPT09IGUudHlwZSAmJiAxIDw9IGUuYnV0dG9uKSkKICAgICAgICAgICAgICAgIGZvciAoOyBsICE9PSB0aGlzOyBsID0gbC5wYXJlbnROb2RlIHx8IHRoaXMpCiAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGwubm9kZVR5cGUgJiYgKCJjbGljayIgIT09IGUudHlwZSB8fCAhMCAhPT0gbC5kaXNhYmxlZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gW10sIGEgPSB7fSwgbiA9IDA7IG4gPCB1OyBuKyspIHZvaWQgMCA9PT0gYVtpID0gKHIgPSB0W25dKS5zZWxlY3RvciArICIgIl0gJiYgKGFbaV0gPSByLm5lZWRzQ29udGV4dCA/IC0xIDwgY2UoaSwgdGhpcykuaW5kZXgobCkgOiBjZS5maW5kKGksIHRoaXMsIG51bGwsIFtsXSkubGVuZ3RoKSwgYVtpXSAmJiBvLnB1c2gocik7CiAgICAgICAgICAgICAgICAgICAgICAgIG8ubGVuZ3RoICYmIHMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBsID0gdGhpcywgdSA8IHQubGVuZ3RoICYmIHMucHVzaCh7CiAgICAgICAgICAgICAgICBlbGVtOiBsLAogICAgICAgICAgICAgICAgaGFuZGxlcnM6IHQuc2xpY2UodSkKICAgICAgICAgICAgfSksIHMKICAgICAgICB9LAogICAgICAgIGFkZFByb3A6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNlLkV2ZW50LnByb3RvdHlwZSwgdCwgewogICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgZ2V0OiB2KGUpID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3JpZ2luYWxFdmVudCkgcmV0dXJuIGUodGhpcy5vcmlnaW5hbEV2ZW50KQogICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9yaWdpbmFsRXZlbnQpIHJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbdF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgdCwgewogICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBmaXg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGVbY2UuZXhwYW5kb10gPyBlIDogbmV3IGNlLkV2ZW50KGUpCiAgICAgICAgfSwKICAgICAgICBzcGVjaWFsOiB7CiAgICAgICAgICAgIGxvYWQ6IHsKICAgICAgICAgICAgICAgIG5vQnViYmxlOiAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGljazogewogICAgICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMgfHwgZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2UudGVzdCh0LnR5cGUpICYmIHQuY2xpY2sgJiYgZmUodCwgImlucHV0IikgJiYgSGUodCwgImNsaWNrIiwgITApLCAhMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMgfHwgZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2UudGVzdCh0LnR5cGUpICYmIHQuY2xpY2sgJiYgZmUodCwgImlucHV0IikgJiYgSGUodCwgImNsaWNrIiksICEwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX2RlZmF1bHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUudGFyZ2V0OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZS50ZXN0KHQudHlwZSkgJiYgdC5jbGljayAmJiBmZSh0LCAiaW5wdXQiKSAmJiBfLmdldCh0LCAiY2xpY2siKSB8fCBmZSh0LCAiYSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJlZm9yZXVubG9hZDogewogICAgICAgICAgICAgICAgcG9zdERpc3BhdGNoOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBlLnJlc3VsdCAmJiBlLm9yaWdpbmFsRXZlbnQgJiYgKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGUucmVzdWx0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgY2UucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyICYmIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBuKQogICAgfSwgY2UuRXZlbnQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIGNlLkV2ZW50KSkgcmV0dXJuIG5ldyBjZS5FdmVudChlLCB0KTsKICAgICAgICBlICYmIGUudHlwZSA/ICh0aGlzLm9yaWdpbmFsRXZlbnQgPSBlLCB0aGlzLnR5cGUgPSBlLnR5cGUsIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZS5kZWZhdWx0UHJldmVudGVkIHx8IHZvaWQgMCA9PT0gZS5kZWZhdWx0UHJldmVudGVkICYmICExID09PSBlLnJldHVyblZhbHVlID8gTmUgOiBxZSwgdGhpcy50YXJnZXQgPSBlLnRhcmdldCAmJiAzID09PSBlLnRhcmdldC5ub2RlVHlwZSA/IGUudGFyZ2V0LnBhcmVudE5vZGUgOiBlLnRhcmdldCwgdGhpcy5jdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0LCB0aGlzLnJlbGF0ZWRUYXJnZXQgPSBlLnJlbGF0ZWRUYXJnZXQpIDogdGhpcy50eXBlID0gZSwgdCAmJiBjZS5leHRlbmQodGhpcywgdCksIHRoaXMudGltZVN0YW1wID0gZSAmJiBlLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpLCB0aGlzW2NlLmV4cGFuZG9dID0gITAKICAgIH0sIGNlLkV2ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICBjb25zdHJ1Y3RvcjogY2UuRXZlbnQsCiAgICAgICAgaXNEZWZhdWx0UHJldmVudGVkOiBxZSwKICAgICAgICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcWUsCiAgICAgICAgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHFlLAogICAgICAgIGlzU2ltdWxhdGVkOiAhMSwKICAgICAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwogICAgICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IE5lLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUucHJldmVudERlZmF1bHQoKQogICAgICAgIH0sCiAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CiAgICAgICAgICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBOZSwgZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCAmJiBlLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgfSwKICAgICAgICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKICAgICAgICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IE5lLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICB9CiAgICB9LCBjZS5lYWNoKHsKICAgICAgICBhbHRLZXk6ICEwLAogICAgICAgIGJ1YmJsZXM6ICEwLAogICAgICAgIGNhbmNlbGFibGU6ICEwLAogICAgICAgIGNoYW5nZWRUb3VjaGVzOiAhMCwKICAgICAgICBjdHJsS2V5OiAhMCwKICAgICAgICBkZXRhaWw6ICEwLAogICAgICAgIGV2ZW50UGhhc2U6ICEwLAogICAgICAgIG1ldGFLZXk6ICEwLAogICAgICAgIHBhZ2VYOiAhMCwKICAgICAgICBwYWdlWTogITAsCiAgICAgICAgc2hpZnRLZXk6ICEwLAogICAgICAgIHZpZXc6ICEwLAogICAgICAgICJjaGFyIjogITAsCiAgICAgICAgY29kZTogITAsCiAgICAgICAgY2hhckNvZGU6ICEwLAogICAgICAgIGtleTogITAsCiAgICAgICAga2V5Q29kZTogITAsCiAgICAgICAgYnV0dG9uOiAhMCwKICAgICAgICBidXR0b25zOiAhMCwKICAgICAgICBjbGllbnRYOiAhMCwKICAgICAgICBjbGllbnRZOiAhMCwKICAgICAgICBvZmZzZXRYOiAhMCwKICAgICAgICBvZmZzZXRZOiAhMCwKICAgICAgICBwb2ludGVySWQ6ICEwLAogICAgICAgIHBvaW50ZXJUeXBlOiAhMCwKICAgICAgICBzY3JlZW5YOiAhMCwKICAgICAgICBzY3JlZW5ZOiAhMCwKICAgICAgICB0YXJnZXRUb3VjaGVzOiAhMCwKICAgICAgICB0b0VsZW1lbnQ6ICEwLAogICAgICAgIHRvdWNoZXM6ICEwLAogICAgICAgIHdoaWNoOiAhMAogICAgfSwgY2UuZXZlbnQuYWRkUHJvcCksIGNlLmVhY2goewogICAgICAgIGZvY3VzOiAiZm9jdXNpbiIsCiAgICAgICAgYmx1cjogImZvY3Vzb3V0IgogICAgfSwgZnVuY3Rpb24ociwgaSkgewogICAgICAgIGZ1bmN0aW9uIG8oZSkgewogICAgICAgICAgICBpZiAoQy5kb2N1bWVudE1vZGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gXy5nZXQodGhpcywgImhhbmRsZSIpLAogICAgICAgICAgICAgICAgICAgIG4gPSBjZS5ldmVudC5maXgoZSk7CiAgICAgICAgICAgICAgICBuLnR5cGUgPSAiZm9jdXNpbiIgPT09IGUudHlwZSA/ICJmb2N1cyIgOiAiYmx1ciIsIG4uaXNTaW11bGF0ZWQgPSAhMCwgdChlKSwgbi50YXJnZXQgPT09IG4uY3VycmVudFRhcmdldCAmJiB0KG4pCiAgICAgICAgICAgIH0gZWxzZSBjZS5ldmVudC5zaW11bGF0ZShpLCBlLnRhcmdldCwgY2UuZXZlbnQuZml4KGUpKQogICAgICAgIH0KICAgICAgICBjZS5ldmVudC5zcGVjaWFsW3JdID0gewogICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgIGlmIChIZSh0aGlzLCByLCAhMCksICFDLmRvY3VtZW50TW9kZSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgKGUgPSBfLmdldCh0aGlzLCBpKSkgfHwgdGhpcy5hZGRFdmVudExpc3RlbmVyKGksIG8pLCBfLnNldCh0aGlzLCBpLCAoZSB8fCAwKSArIDEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEhlKHRoaXMsIHIpLCAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgIGlmICghQy5kb2N1bWVudE1vZGUpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIChlID0gXy5nZXQodGhpcywgaSkgLSAxKSA/IF8uc2V0KHRoaXMsIGksIGUpOiAodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGksIG8pLCBfLnJlbW92ZSh0aGlzLCBpKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2RlZmF1bHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBfLmdldChlLnRhcmdldCwgcikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVsZWdhdGVUeXBlOiBpCiAgICAgICAgfSwgY2UuZXZlbnQuc3BlY2lhbFtpXSA9IHsKICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcy5kb2N1bWVudCB8fCB0aGlzLAogICAgICAgICAgICAgICAgICAgIHQgPSBDLmRvY3VtZW50TW9kZSA/IHRoaXMgOiBlLAogICAgICAgICAgICAgICAgICAgIG4gPSBfLmdldCh0LCBpKTsKICAgICAgICAgICAgICAgIG4gfHwgKEMuZG9jdW1lbnRNb2RlID8gdGhpcy5hZGRFdmVudExpc3RlbmVyKGksIG8pIDogZS5hZGRFdmVudExpc3RlbmVyKHIsIG8sICEwKSksIF8uc2V0KHQsIGksIChuIHx8IDApICsgMSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcy5kb2N1bWVudCB8fCB0aGlzLAogICAgICAgICAgICAgICAgICAgIHQgPSBDLmRvY3VtZW50TW9kZSA/IHRoaXMgOiBlLAogICAgICAgICAgICAgICAgICAgIG4gPSBfLmdldCh0LCBpKSAtIDE7CiAgICAgICAgICAgICAgICBuID8gXy5zZXQodCwgaSwgbikgOiAoQy5kb2N1bWVudE1vZGUgPyB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaSwgbykgOiBlLnJlbW92ZUV2ZW50TGlzdGVuZXIociwgbywgITApLCBfLnJlbW92ZSh0LCBpKSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCBjZS5lYWNoKHsKICAgICAgICBtb3VzZWVudGVyOiAibW91c2VvdmVyIiwKICAgICAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiLAogICAgICAgIHBvaW50ZXJlbnRlcjogInBvaW50ZXJvdmVyIiwKICAgICAgICBwb2ludGVybGVhdmU6ICJwb2ludGVyb3V0IgogICAgfSwgZnVuY3Rpb24oZSwgaSkgewogICAgICAgIGNlLmV2ZW50LnNwZWNpYWxbZV0gPSB7CiAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogaSwKICAgICAgICAgICAgYmluZFR5cGU6IGksCiAgICAgICAgICAgIGhhbmRsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4gPSBlLnJlbGF0ZWRUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgciA9IGUuaGFuZGxlT2JqOwogICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgKG4gPT09IHRoaXMgfHwgY2UuY29udGFpbnModGhpcywgbikpIHx8IChlLnR5cGUgPSByLm9yaWdUeXBlLCB0ID0gci5oYW5kbGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIGUudHlwZSA9IGkpLCB0CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBvbjogZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICByZXR1cm4gTGUodGhpcywgZSwgdCwgbiwgcikKICAgICAgICB9LAogICAgICAgIG9uZTogZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICByZXR1cm4gTGUodGhpcywgZSwgdCwgbiwgciwgMSkKICAgICAgICB9LAogICAgICAgIG9mZjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciwgaTsKICAgICAgICAgICAgaWYgKGUgJiYgZS5wcmV2ZW50RGVmYXVsdCAmJiBlLmhhbmRsZU9iaikgcmV0dXJuIHIgPSBlLmhhbmRsZU9iaiwgY2UoZS5kZWxlZ2F0ZVRhcmdldCkub2ZmKHIubmFtZXNwYWNlID8gci5vcmlnVHlwZSArICIuIiArIHIubmFtZXNwYWNlIDogci5vcmlnVHlwZSwgci5zZWxlY3Rvciwgci5oYW5kbGVyKSwgdGhpczsKICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gZSkgdGhpcy5vZmYoaSwgdCwgZVtpXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAhMSAhPT0gdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0IHx8IChuID0gdCwgdCA9IHZvaWQgMCksICExID09PSBuICYmIChuID0gcWUpLCB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjZS5ldmVudC5yZW1vdmUodGhpcywgZSwgbiwgdCkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBPZSA9IC88c2NyaXB0fDxzdHlsZXw8bGluay9pLAogICAgICAgIFBlID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksCiAgICAgICAgTWUgPSAvXlxzKjwhXFtDREFUQVxbfFxdXF0+XHMqJC9nOwoKICAgIGZ1bmN0aW9uIFJlKGUsIHQpIHsKICAgICAgICByZXR1cm4gZmUoZSwgInRhYmxlIikgJiYgZmUoMTEgIT09IHQubm9kZVR5cGUgPyB0IDogdC5maXJzdENoaWxkLCAidHIiKSAmJiBjZShlKS5jaGlsZHJlbigidGJvZHkiKVswXSB8fCBlCiAgICB9CgogICAgZnVuY3Rpb24gSWUoZSkgewogICAgICAgIHJldHVybiBlLnR5cGUgPSAobnVsbCAhPT0gZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgKyAiLyIgKyBlLnR5cGUsIGUKICAgIH0KCiAgICBmdW5jdGlvbiBXZShlKSB7CiAgICAgICAgcmV0dXJuICJ0cnVlLyIgPT09IChlLnR5cGUgfHwgIiIpLnNsaWNlKDAsIDUpID8gZS50eXBlID0gZS50eXBlLnNsaWNlKDUpIDogZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSwgZQogICAgfQoKICAgIGZ1bmN0aW9uIEZlKGUsIHQpIHsKICAgICAgICB2YXIgbiwgciwgaSwgbywgYSwgczsKICAgICAgICBpZiAoMSA9PT0gdC5ub2RlVHlwZSkgewogICAgICAgICAgICBpZiAoXy5oYXNEYXRhKGUpICYmIChzID0gXy5nZXQoZSkuZXZlbnRzKSkKICAgICAgICAgICAgICAgIGZvciAoaSBpbiBfLnJlbW92ZSh0LCAiaGFuZGxlIGV2ZW50cyIpLCBzKQogICAgICAgICAgICAgICAgICAgIGZvciAobiA9IDAsIHIgPSBzW2ldLmxlbmd0aDsgbiA8IHI7IG4rKykgY2UuZXZlbnQuYWRkKHQsIGksIHNbaV1bbl0pOwogICAgICAgICAgICB6Lmhhc0RhdGEoZSkgJiYgKG8gPSB6LmFjY2VzcyhlKSwgYSA9IGNlLmV4dGVuZCh7fSwgbyksIHouc2V0KHQsIGEpKQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiAkZShuLCByLCBpLCBvKSB7CiAgICAgICAgciA9IGcocik7CiAgICAgICAgdmFyIGUsIHQsIGEsIHMsIHUsIGwsIGMgPSAwLAogICAgICAgICAgICBmID0gbi5sZW5ndGgsCiAgICAgICAgICAgIHAgPSBmIC0gMSwKICAgICAgICAgICAgZCA9IHJbMF0sCiAgICAgICAgICAgIGggPSB2KGQpOwogICAgICAgIGlmIChoIHx8IDEgPCBmICYmICJzdHJpbmciID09IHR5cGVvZiBkICYmICFsZS5jaGVja0Nsb25lICYmIFBlLnRlc3QoZCkpIHJldHVybiBuLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IG4uZXEoZSk7CiAgICAgICAgICAgIGggJiYgKHJbMF0gPSBkLmNhbGwodGhpcywgZSwgdC5odG1sKCkpKSwgJGUodCwgciwgaSwgbykKICAgICAgICB9KTsKICAgICAgICBpZiAoZiAmJiAodCA9IChlID0gQWUociwgblswXS5vd25lckRvY3VtZW50LCAhMSwgbiwgbykpLmZpcnN0Q2hpbGQsIDEgPT09IGUuY2hpbGROb2Rlcy5sZW5ndGggJiYgKGUgPSB0KSwgdCB8fCBvKSkgewogICAgICAgICAgICBmb3IgKHMgPSAoYSA9IGNlLm1hcChTZShlLCAic2NyaXB0IiksIEllKSkubGVuZ3RoOyBjIDwgZjsgYysrKSB1ID0gZSwgYyAhPT0gcCAmJiAodSA9IGNlLmNsb25lKHUsICEwLCAhMCksIHMgJiYgY2UubWVyZ2UoYSwgU2UodSwgInNjcmlwdCIpKSksIGkuY2FsbChuW2NdLCB1LCBjKTsKICAgICAgICAgICAgaWYgKHMpCiAgICAgICAgICAgICAgICBmb3IgKGwgPSBhW2EubGVuZ3RoIC0gMV0ub3duZXJEb2N1bWVudCwgY2UubWFwKGEsIFdlKSwgYyA9IDA7IGMgPCBzOyBjKyspIHUgPSBhW2NdLCBDZS50ZXN0KHUudHlwZSB8fCAiIikgJiYgIV8uYWNjZXNzKHUsICJnbG9iYWxFdmFsIikgJiYgY2UuY29udGFpbnMobCwgdSkgJiYgKHUuc3JjICYmICJtb2R1bGUiICE9PSAodS50eXBlIHx8ICIiKS50b0xvd2VyQ2FzZSgpID8gY2UuX2V2YWxVcmwgJiYgIXUubm9Nb2R1bGUgJiYgY2UuX2V2YWxVcmwodS5zcmMsIHsKICAgICAgICAgICAgICAgICAgICBub25jZTogdS5ub25jZSB8fCB1LmdldEF0dHJpYnV0ZSgibm9uY2UiKQogICAgICAgICAgICAgICAgfSwgbCkgOiBtKHUudGV4dENvbnRlbnQucmVwbGFjZShNZSwgIiIpLCB1LCBsKSkKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG4KICAgIH0KCiAgICBmdW5jdGlvbiBCZShlLCB0LCBuKSB7CiAgICAgICAgZm9yICh2YXIgciwgaSA9IHQgPyBjZS5maWx0ZXIodCwgZSkgOiBlLCBvID0gMDsgbnVsbCAhPSAociA9IGlbb10pOyBvKyspIG4gfHwgMSAhPT0gci5ub2RlVHlwZSB8fCBjZS5jbGVhbkRhdGEoU2UocikpLCByLnBhcmVudE5vZGUgJiYgKG4gJiYgSyhyKSAmJiBFZShTZShyLCAic2NyaXB0IikpLCByLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocikpOwogICAgICAgIHJldHVybiBlCiAgICB9CiAgICBjZS5leHRlbmQoewogICAgICAgIGh0bWxQcmVmaWx0ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LAogICAgICAgIGNsb25lOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCBvLCBhLCBzLCB1LCBsLCBjID0gZS5jbG9uZU5vZGUoITApLAogICAgICAgICAgICAgICAgZiA9IEsoZSk7CiAgICAgICAgICAgIGlmICghKGxlLm5vQ2xvbmVDaGVja2VkIHx8IDEgIT09IGUubm9kZVR5cGUgJiYgMTEgIT09IGUubm9kZVR5cGUgfHwgY2UuaXNYTUxEb2MoZSkpKQogICAgICAgICAgICAgICAgZm9yIChhID0gU2UoYyksIHIgPSAwLCBpID0gKG8gPSBTZShlKSkubGVuZ3RoOyByIDwgaTsgcisrKSBzID0gb1tyXSwgdSA9IGFbcl0sIHZvaWQgMCwgImlucHV0IiA9PT0gKGwgPSB1Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpICYmIHdlLnRlc3Qocy50eXBlKSA/IHUuY2hlY2tlZCA9IHMuY2hlY2tlZCA6ICJpbnB1dCIgIT09IGwgJiYgInRleHRhcmVhIiAhPT0gbCB8fCAodS5kZWZhdWx0VmFsdWUgPSBzLmRlZmF1bHRWYWx1ZSk7CiAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gbyB8fCBTZShlKSwgYSA9IGEgfHwgU2UoYyksIHIgPSAwLCBpID0gby5sZW5ndGg7IHIgPCBpOyByKyspIEZlKG9bcl0sIGFbcl0pOwogICAgICAgICAgICAgICAgZWxzZSBGZShlLCBjKTsKICAgICAgICAgICAgcmV0dXJuIDAgPCAoYSA9IFNlKGMsICJzY3JpcHQiKSkubGVuZ3RoICYmIEVlKGEsICFmICYmIFNlKGUsICJzY3JpcHQiKSksIGMKICAgICAgICB9LAogICAgICAgIGNsZWFuRGF0YTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBmb3IgKHZhciB0LCBuLCByLCBpID0gY2UuZXZlbnQuc3BlY2lhbCwgbyA9IDA7IHZvaWQgMCAhPT0gKG4gPSBlW29dKTsgbysrKQogICAgICAgICAgICAgICAgaWYgKCQobikpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IG5bXy5leHBhbmRvXSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5ldmVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgaW4gdC5ldmVudHMpIGlbcl0gPyBjZS5ldmVudC5yZW1vdmUobiwgcikgOiBjZS5yZW1vdmVFdmVudChuLCByLCB0LmhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5bXy5leHBhbmRvXSA9IHZvaWQgMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBuW3ouZXhwYW5kb10gJiYgKG5bei5leHBhbmRvXSA9IHZvaWQgMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBkZXRhY2g6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEJlKHRoaXMsIGUsICEwKQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBCZSh0aGlzLCBlKQogICAgICAgIH0sCiAgICAgICAgdGV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gTSh0aGlzLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlID8gY2UudGV4dCh0aGlzKSA6IHRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIDEgIT09IHRoaXMubm9kZVR5cGUgJiYgMTEgIT09IHRoaXMubm9kZVR5cGUgJiYgOSAhPT0gdGhpcy5ub2RlVHlwZSB8fCAodGhpcy50ZXh0Q29udGVudCA9IGUpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LCBudWxsLCBlLCBhcmd1bWVudHMubGVuZ3RoKQogICAgICAgIH0sCiAgICAgICAgYXBwZW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICRlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiAxMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiA5ICE9PSB0aGlzLm5vZGVUeXBlIHx8IFJlKHRoaXMsIGUpLmFwcGVuZENoaWxkKGUpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBwcmVwZW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICRlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKDEgPT09IHRoaXMubm9kZVR5cGUgfHwgMTEgPT09IHRoaXMubm9kZVR5cGUgfHwgOSA9PT0gdGhpcy5ub2RlVHlwZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gUmUodGhpcywgZSk7CiAgICAgICAgICAgICAgICAgICAgdC5pbnNlcnRCZWZvcmUoZSwgdC5maXJzdENoaWxkKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgYmVmb3JlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICRlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlICYmIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgdGhpcykKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGFmdGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICRlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlICYmIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgdGhpcy5uZXh0U2libGluZykKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSwgdCA9IDA7IG51bGwgIT0gKGUgPSB0aGlzW3RdKTsgdCsrKSAxID09PSBlLm5vZGVUeXBlICYmIChjZS5jbGVhbkRhdGEoU2UoZSwgITEpKSwgZS50ZXh0Q29udGVudCA9ICIiKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIGNsb25lOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlID0gbnVsbCAhPSBlICYmIGUsIHQgPSBudWxsID09IHQgPyBlIDogdCwgdGhpcy5tYXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY2UuY2xvbmUodGhpcywgZSwgdCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGh0bWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIE0odGhpcywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzWzBdIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIG4gPSAwLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmxlbmd0aDsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUgJiYgMSA9PT0gdC5ub2RlVHlwZSkgcmV0dXJuIHQuaW5uZXJIVE1MOwogICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlICYmICFPZS50ZXN0KGUpICYmICFrZVsoVGUuZXhlYyhlKSB8fCBbIiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKV0pIHsKICAgICAgICAgICAgICAgICAgICBlID0gY2UuaHRtbFByZWZpbHRlcihlKTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbiA8IHI7IG4rKykgMSA9PT0gKHQgPSB0aGlzW25dIHx8IHt9KS5ub2RlVHlwZSAmJiAoY2UuY2xlYW5EYXRhKFNlKHQsICExKSksIHQuaW5uZXJIVE1MID0gZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAwCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHQgJiYgdGhpcy5lbXB0eSgpLmFwcGVuZChlKQogICAgICAgICAgICB9LCBudWxsLCBlLCBhcmd1bWVudHMubGVuZ3RoKQogICAgICAgIH0sCiAgICAgICAgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgbiA9IFtdOwogICAgICAgICAgICByZXR1cm4gJGUodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucGFyZW50Tm9kZTsKICAgICAgICAgICAgICAgIGNlLmluQXJyYXkodGhpcywgbikgPCAwICYmIChjZS5jbGVhbkRhdGEoU2UodGhpcykpLCB0ICYmIHQucmVwbGFjZUNoaWxkKGUsIHRoaXMpKQogICAgICAgICAgICB9LCBuKQogICAgICAgIH0KICAgIH0pLCBjZS5lYWNoKHsKICAgICAgICBhcHBlbmRUbzogImFwcGVuZCIsCiAgICAgICAgcHJlcGVuZFRvOiAicHJlcGVuZCIsCiAgICAgICAgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKICAgICAgICBpbnNlcnRBZnRlcjogImFmdGVyIiwKICAgICAgICByZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCiAgICB9LCBmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgY2UuZm5bZV0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQsIG4gPSBbXSwgciA9IGNlKGUpLCBpID0gci5sZW5ndGggLSAxLCBvID0gMDsgbyA8PSBpOyBvKyspIHQgPSBvID09PSBpID8gdGhpcyA6IHRoaXMuY2xvbmUoITApLCBjZShyW29dKVthXSh0KSwgcy5hcHBseShuLCB0LmdldCgpKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKG4pCiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgX2UgPSBuZXcgUmVnRXhwKCJeKCIgKyBHICsgIikoPyFweClbYS16JV0rJCIsICJpIiksCiAgICAgICAgemUgPSAvXi0tLywKICAgICAgICBYZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7CiAgICAgICAgICAgIHJldHVybiB0ICYmIHQub3BlbmVyIHx8ICh0ID0gaWUpLCB0LmdldENvbXB1dGVkU3R5bGUoZSkKICAgICAgICB9LAogICAgICAgIFVlID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciwgaSwgbyA9IHt9OwogICAgICAgICAgICBmb3IgKGkgaW4gdCkgb1tpXSA9IGUuc3R5bGVbaV0sIGUuc3R5bGVbaV0gPSB0W2ldOwogICAgICAgICAgICBmb3IgKGkgaW4gciA9IG4uY2FsbChlKSwgdCkgZS5zdHlsZVtpXSA9IG9baV07CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfSwKICAgICAgICBWZSA9IG5ldyBSZWdFeHAoUS5qb2luKCJ8IiksICJpIik7CgogICAgZnVuY3Rpb24gR2UoZSwgdCwgbikgewogICAgICAgIHZhciByLCBpLCBvLCBhLCBzID0gemUudGVzdCh0KSwKICAgICAgICAgICAgdSA9IGUuc3R5bGU7CiAgICAgICAgcmV0dXJuIChuID0gbiB8fCBYZShlKSkgJiYgKGEgPSBuLmdldFByb3BlcnR5VmFsdWUodCkgfHwgblt0XSwgcyAmJiBhICYmIChhID0gYS5yZXBsYWNlKHZlLCAiJDEiKSB8fCB2b2lkIDApLCAiIiAhPT0gYSB8fCBLKGUpIHx8IChhID0gY2Uuc3R5bGUoZSwgdCkpLCAhbGUucGl4ZWxCb3hTdHlsZXMoKSAmJiBfZS50ZXN0KGEpICYmIFZlLnRlc3QodCkgJiYgKHIgPSB1LndpZHRoLCBpID0gdS5taW5XaWR0aCwgbyA9IHUubWF4V2lkdGgsIHUubWluV2lkdGggPSB1Lm1heFdpZHRoID0gdS53aWR0aCA9IGEsIGEgPSBuLndpZHRoLCB1LndpZHRoID0gciwgdS5taW5XaWR0aCA9IGksIHUubWF4V2lkdGggPSBvKSksIHZvaWQgMCAhPT0gYSA/IGEgKyAiIiA6IGEKICAgIH0KCiAgICBmdW5jdGlvbiBZZShlLCB0KSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICghZSgpKSByZXR1cm4gKHRoaXMuZ2V0ID0gdCkuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmdldAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSEgZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gZSgpIHsKICAgICAgICAgICAgaWYgKGwpIHsKICAgICAgICAgICAgICAgIHUuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIiwgbC5zdHlsZS5jc3NUZXh0ID0gInBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiLCBKLmFwcGVuZENoaWxkKHUpLmFwcGVuZENoaWxkKGwpOwogICAgICAgICAgICAgICAgdmFyIGUgPSBpZS5nZXRDb21wdXRlZFN0eWxlKGwpOwogICAgICAgICAgICAgICAgbiA9ICIxJSIgIT09IGUudG9wLCBzID0gMTIgPT09IHQoZS5tYXJnaW5MZWZ0KSwgbC5zdHlsZS5yaWdodCA9ICI2MCUiLCBvID0gMzYgPT09IHQoZS5yaWdodCksIHIgPSAzNiA9PT0gdChlLndpZHRoKSwgbC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSIsIGkgPSAxMiA9PT0gdChsLm9mZnNldFdpZHRoIC8gMyksIEoucmVtb3ZlQ2hpbGQodSksIGwgPSBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGUpKQogICAgICAgIH0KICAgICAgICB2YXIgbiwgciwgaSwgbywgYSwgcywgdSA9IEMuY3JlYXRlRWxlbWVudCgiZGl2IiksCiAgICAgICAgICAgIGwgPSBDLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIGwuc3R5bGUgJiYgKGwuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiY29udGVudC1ib3giLCBsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiIiwgbGUuY2xlYXJDbG9uZVN0eWxlID0gImNvbnRlbnQtYm94IiA9PT0gbC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCwgY2UuZXh0ZW5kKGxlLCB7CiAgICAgICAgICAgIGJveFNpemluZ1JlbGlhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKCksIHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcGl4ZWxCb3hTdHlsZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUoKSwgbwogICAgICAgICAgICB9LAogICAgICAgICAgICBwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKCksIG4KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKCksIHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2Nyb2xsYm94U2l6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSgpLCBpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbGlhYmxlVHJEaW1lbnNpb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuLCByOwogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gYSAmJiAoZSA9IEMuY3JlYXRlRWxlbWVudCgidGFibGUiKSwgdCA9IEMuY3JlYXRlRWxlbWVudCgidHIiKSwgbiA9IEMuY3JlYXRlRWxlbWVudCgiZGl2IiksIGUuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZSIsIHQuc3R5bGUuY3NzVGV4dCA9ICJib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JvcmRlcjoxcHggc29saWQiLCB0LnN0eWxlLmhlaWdodCA9ICIxcHgiLCBuLnN0eWxlLmhlaWdodCA9ICI5cHgiLCBuLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siLCBKLmFwcGVuZENoaWxkKGUpLmFwcGVuZENoaWxkKHQpLmFwcGVuZENoaWxkKG4pLCByID0gaWUuZ2V0Q29tcHV0ZWRTdHlsZSh0KSwgYSA9IHBhcnNlSW50KHIuaGVpZ2h0LCAxMCkgKyBwYXJzZUludChyLmJvcmRlclRvcFdpZHRoLCAxMCkgKyBwYXJzZUludChyLmJvcmRlckJvdHRvbVdpZHRoLCAxMCkgPT09IHQub2Zmc2V0SGVpZ2h0LCBKLnJlbW92ZUNoaWxkKGUpKSwgYQogICAgICAgICAgICB9CiAgICAgICAgfSkpCiAgICB9KCk7CiAgICB2YXIgUWUgPSBbIldlYmtpdCIsICJNb3oiLCAibXMiXSwKICAgICAgICBKZSA9IEMuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsCiAgICAgICAgS2UgPSB7fTsKCiAgICBmdW5jdGlvbiBaZShlKSB7CiAgICAgICAgdmFyIHQgPSBjZS5jc3NQcm9wc1tlXSB8fCBLZVtlXTsKICAgICAgICByZXR1cm4gdCB8fCAoZSBpbiBKZSA/IGUgOiBLZVtlXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlWzBdLnRvVXBwZXJDYXNlKCkgKyBlLnNsaWNlKDEpLAogICAgICAgICAgICAgICAgbiA9IFFlLmxlbmd0aDsKICAgICAgICAgICAgd2hpbGUgKG4tLSkKICAgICAgICAgICAgICAgIGlmICgoZSA9IFFlW25dICsgdCkgaW4gSmUpIHJldHVybiBlCiAgICAgICAgfShlKSB8fCBlKQogICAgfQogICAgdmFyIGV0ID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLAogICAgICAgIHR0ID0gewogICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIiwKICAgICAgICAgICAgdmlzaWJpbGl0eTogImhpZGRlbiIsCiAgICAgICAgICAgIGRpc3BsYXk6ICJibG9jayIKICAgICAgICB9LAogICAgICAgIG50ID0gewogICAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiAiMCIsCiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICI0MDAiCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBydChlLCB0LCBuKSB7CiAgICAgICAgdmFyIHIgPSBZLmV4ZWModCk7CiAgICAgICAgcmV0dXJuIHIgPyBNYXRoLm1heCgwLCByWzJdIC0gKG4gfHwgMCkpICsgKHJbM10gfHwgInB4IikgOiB0CiAgICB9CgogICAgZnVuY3Rpb24gaXQoZSwgdCwgbiwgciwgaSwgbykgewogICAgICAgIHZhciBhID0gIndpZHRoIiA9PT0gdCA/IDEgOiAwLAogICAgICAgICAgICBzID0gMCwKICAgICAgICAgICAgdSA9IDAsCiAgICAgICAgICAgIGwgPSAwOwogICAgICAgIGlmIChuID09PSAociA/ICJib3JkZXIiIDogImNvbnRlbnQiKSkgcmV0dXJuIDA7CiAgICAgICAgZm9yICg7IGEgPCA0OyBhICs9IDIpICJtYXJnaW4iID09PSBuICYmIChsICs9IGNlLmNzcyhlLCBuICsgUVthXSwgITAsIGkpKSwgciA/ICgiY29udGVudCIgPT09IG4gJiYgKHUgLT0gY2UuY3NzKGUsICJwYWRkaW5nIiArIFFbYV0sICEwLCBpKSksICJtYXJnaW4iICE9PSBuICYmICh1IC09IGNlLmNzcyhlLCAiYm9yZGVyIiArIFFbYV0gKyAiV2lkdGgiLCAhMCwgaSkpKSA6ICh1ICs9IGNlLmNzcyhlLCAicGFkZGluZyIgKyBRW2FdLCAhMCwgaSksICJwYWRkaW5nIiAhPT0gbiA/IHUgKz0gY2UuY3NzKGUsICJib3JkZXIiICsgUVthXSArICJXaWR0aCIsICEwLCBpKSA6IHMgKz0gY2UuY3NzKGUsICJib3JkZXIiICsgUVthXSArICJXaWR0aCIsICEwLCBpKSk7CiAgICAgICAgcmV0dXJuICFyICYmIDAgPD0gbyAmJiAodSArPSBNYXRoLm1heCgwLCBNYXRoLmNlaWwoZVsib2Zmc2V0IiArIHRbMF0udG9VcHBlckNhc2UoKSArIHQuc2xpY2UoMSldIC0gbyAtIHUgLSBzIC0gLjUpKSB8fCAwKSwgdSArIGwKICAgIH0KCiAgICBmdW5jdGlvbiBvdChlLCB0LCBuKSB7CiAgICAgICAgdmFyIHIgPSBYZShlKSwKICAgICAgICAgICAgaSA9ICghbGUuYm94U2l6aW5nUmVsaWFibGUoKSB8fCBuKSAmJiAiYm9yZGVyLWJveCIgPT09IGNlLmNzcyhlLCAiYm94U2l6aW5nIiwgITEsIHIpLAogICAgICAgICAgICBvID0gaSwKICAgICAgICAgICAgYSA9IEdlKGUsIHQsIHIpLAogICAgICAgICAgICBzID0gIm9mZnNldCIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpOwogICAgICAgIGlmIChfZS50ZXN0KGEpKSB7CiAgICAgICAgICAgIGlmICghbikgcmV0dXJuIGE7CiAgICAgICAgICAgIGEgPSAiYXV0byIKICAgICAgICB9CiAgICAgICAgcmV0dXJuICghbGUuYm94U2l6aW5nUmVsaWFibGUoKSAmJiBpIHx8ICFsZS5yZWxpYWJsZVRyRGltZW5zaW9ucygpICYmIGZlKGUsICJ0ciIpIHx8ICJhdXRvIiA9PT0gYSB8fCAhcGFyc2VGbG9hdChhKSAmJiAiaW5saW5lIiA9PT0gY2UuY3NzKGUsICJkaXNwbGF5IiwgITEsIHIpKSAmJiBlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICYmIChpID0gImJvcmRlci1ib3giID09PSBjZS5jc3MoZSwgImJveFNpemluZyIsICExLCByKSwgKG8gPSBzIGluIGUpICYmIChhID0gZVtzXSkpLCAoYSA9IHBhcnNlRmxvYXQoYSkgfHwgMCkgKyBpdChlLCB0LCBuIHx8IChpID8gImJvcmRlciIgOiAiY29udGVudCIpLCBvLCByLCBhKSArICJweCIKICAgIH0KCiAgICBmdW5jdGlvbiBhdChlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBhdC5wcm90b3R5cGUuaW5pdChlLCB0LCBuLCByLCBpKQogICAgfQogICAgY2UuZXh0ZW5kKHsKICAgICAgICBjc3NIb29rczogewogICAgICAgICAgICBvcGFjaXR5OiB7CiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IEdlKGUsICJvcGFjaXR5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIiA9PT0gbiA/ICIxIiA6IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNzc051bWJlcjogewogICAgICAgICAgICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogITAsCiAgICAgICAgICAgIGFzcGVjdFJhdGlvOiAhMCwKICAgICAgICAgICAgYm9yZGVySW1hZ2VTbGljZTogITAsCiAgICAgICAgICAgIGNvbHVtbkNvdW50OiAhMCwKICAgICAgICAgICAgZmxleEdyb3c6ICEwLAogICAgICAgICAgICBmbGV4U2hyaW5rOiAhMCwKICAgICAgICAgICAgZm9udFdlaWdodDogITAsCiAgICAgICAgICAgIGdyaWRBcmVhOiAhMCwKICAgICAgICAgICAgZ3JpZENvbHVtbjogITAsCiAgICAgICAgICAgIGdyaWRDb2x1bW5FbmQ6ICEwLAogICAgICAgICAgICBncmlkQ29sdW1uU3RhcnQ6ICEwLAogICAgICAgICAgICBncmlkUm93OiAhMCwKICAgICAgICAgICAgZ3JpZFJvd0VuZDogITAsCiAgICAgICAgICAgIGdyaWRSb3dTdGFydDogITAsCiAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICEwLAogICAgICAgICAgICBvcGFjaXR5OiAhMCwKICAgICAgICAgICAgb3JkZXI6ICEwLAogICAgICAgICAgICBvcnBoYW5zOiAhMCwKICAgICAgICAgICAgc2NhbGU6ICEwLAogICAgICAgICAgICB3aWRvd3M6ICEwLAogICAgICAgICAgICB6SW5kZXg6ICEwLAogICAgICAgICAgICB6b29tOiAhMCwKICAgICAgICAgICAgZmlsbE9wYWNpdHk6ICEwLAogICAgICAgICAgICBmbG9vZE9wYWNpdHk6ICEwLAogICAgICAgICAgICBzdG9wT3BhY2l0eTogITAsCiAgICAgICAgICAgIHN0cm9rZU1pdGVybGltaXQ6ICEwLAogICAgICAgICAgICBzdHJva2VPcGFjaXR5OiAhMAogICAgICAgIH0sCiAgICAgICAgY3NzUHJvcHM6IHt9LAogICAgICAgIHN0eWxlOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgIGlmIChlICYmIDMgIT09IGUubm9kZVR5cGUgJiYgOCAhPT0gZS5ub2RlVHlwZSAmJiBlLnN0eWxlKSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgbywgYSwgcyA9IEYodCksCiAgICAgICAgICAgICAgICAgICAgdSA9IHplLnRlc3QodCksCiAgICAgICAgICAgICAgICAgICAgbCA9IGUuc3R5bGU7CiAgICAgICAgICAgICAgICBpZiAodSB8fCAodCA9IFplKHMpKSwgYSA9IGNlLmNzc0hvb2tzW3RdIHx8IGNlLmNzc0hvb2tzW3NdLCB2b2lkIDAgPT09IG4pIHJldHVybiBhICYmICJnZXQiIGluIGEgJiYgdm9pZCAwICE9PSAoaSA9IGEuZ2V0KGUsICExLCByKSkgPyBpIDogbFt0XTsKICAgICAgICAgICAgICAgICJzdHJpbmciID09PSAobyA9IHR5cGVvZiBuKSAmJiAoaSA9IFkuZXhlYyhuKSkgJiYgaVsxXSAmJiAobiA9IHRlKGUsIHQsIGkpLCBvID0gIm51bWJlciIpLCBudWxsICE9IG4gJiYgbiA9PSBuICYmICgibnVtYmVyIiAhPT0gbyB8fCB1IHx8IChuICs9IGkgJiYgaVszXSB8fCAoY2UuY3NzTnVtYmVyW3NdID8gIiIgOiAicHgiKSksIGxlLmNsZWFyQ2xvbmVTdHlsZSB8fCAiIiAhPT0gbiB8fCAwICE9PSB0LmluZGV4T2YoImJhY2tncm91bmQiKSB8fCAobFt0XSA9ICJpbmhlcml0IiksIGEgJiYgInNldCIgaW4gYSAmJiB2b2lkIDAgPT09IChuID0gYS5zZXQoZSwgbiwgcikpIHx8ICh1ID8gbC5zZXRQcm9wZXJ0eSh0LCBuKSA6IGxbdF0gPSBuKSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgY3NzOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgIHZhciBpLCBvLCBhLCBzID0gRih0KTsKICAgICAgICAgICAgcmV0dXJuIHplLnRlc3QodCkgfHwgKHQgPSBaZShzKSksIChhID0gY2UuY3NzSG9va3NbdF0gfHwgY2UuY3NzSG9va3Nbc10pICYmICJnZXQiIGluIGEgJiYgKGkgPSBhLmdldChlLCAhMCwgbikpLCB2b2lkIDAgPT09IGkgJiYgKGkgPSBHZShlLCB0LCByKSksICJub3JtYWwiID09PSBpICYmIHQgaW4gbnQgJiYgKGkgPSBudFt0XSksICIiID09PSBuIHx8IG4gPyAobyA9IHBhcnNlRmxvYXQoaSksICEwID09PSBuIHx8IGlzRmluaXRlKG8pID8gbyB8fCAwIDogaSkgOiBpCiAgICAgICAgfQogICAgfSksIGNlLmVhY2goWyJoZWlnaHQiLCAid2lkdGgiXSwgZnVuY3Rpb24oZSwgdSkgewogICAgICAgIGNlLmNzc0hvb2tzW3VdID0gewogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGlmICh0KSByZXR1cm4gIWV0LnRlc3QoY2UuY3NzKGUsICJkaXNwbGF5IikpIHx8IGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggJiYgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA/IG90KGUsIHUsIG4pIDogVWUoZSwgdHQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBvdChlLCB1LCBuKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgaSA9IFhlKGUpLAogICAgICAgICAgICAgICAgICAgIG8gPSAhbGUuc2Nyb2xsYm94U2l6ZSgpICYmICJhYnNvbHV0ZSIgPT09IGkucG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgYSA9IChvIHx8IG4pICYmICJib3JkZXItYm94IiA9PT0gY2UuY3NzKGUsICJib3hTaXppbmciLCAhMSwgaSksCiAgICAgICAgICAgICAgICAgICAgcyA9IG4gPyBpdChlLCB1LCBuLCBhLCBpKSA6IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gYSAmJiBvICYmIChzIC09IE1hdGguY2VpbChlWyJvZmZzZXQiICsgdVswXS50b1VwcGVyQ2FzZSgpICsgdS5zbGljZSgxKV0gLSBwYXJzZUZsb2F0KGlbdV0pIC0gaXQoZSwgdSwgImJvcmRlciIsICExLCBpKSAtIC41KSksIHMgJiYgKHIgPSBZLmV4ZWModCkpICYmICJweCIgIT09IChyWzNdIHx8ICJweCIpICYmIChlLnN0eWxlW3VdID0gdCwgdCA9IGNlLmNzcyhlLCB1KSksIHJ0KDAsIHQsIHMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgY2UuY3NzSG9va3MubWFyZ2luTGVmdCA9IFllKGxlLnJlbGlhYmxlTWFyZ2luTGVmdCwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgIGlmICh0KSByZXR1cm4gKHBhcnNlRmxvYXQoR2UoZSwgIm1hcmdpbkxlZnQiKSkgfHwgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gVWUoZSwgewogICAgICAgICAgICBtYXJnaW5MZWZ0OiAwCiAgICAgICAgfSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQKICAgICAgICB9KSkgKyAicHgiCiAgICB9KSwgY2UuZWFjaCh7CiAgICAgICAgbWFyZ2luOiAiIiwKICAgICAgICBwYWRkaW5nOiAiIiwKICAgICAgICBib3JkZXI6ICJXaWR0aCIKICAgIH0sIGZ1bmN0aW9uKGksIG8pIHsKICAgICAgICBjZS5jc3NIb29rc1tpICsgb10gPSB7CiAgICAgICAgICAgIGV4cGFuZDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSB7fSwgciA9ICJzdHJpbmciID09IHR5cGVvZiBlID8gZS5zcGxpdCgiICIpIDogW2VdOyB0IDwgNDsgdCsrKSBuW2kgKyBRW3RdICsgb10gPSByW3RdIHx8IHJbdCAtIDJdIHx8IHJbMF07CiAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICB9CiAgICAgICAgfSwgIm1hcmdpbiIgIT09IGkgJiYgKGNlLmNzc0hvb2tzW2kgKyBvXS5zZXQgPSBydCkKICAgIH0pLCBjZS5mbi5leHRlbmQoewogICAgICAgIGNzczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gTSh0aGlzLCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgaSwgbyA9IHt9LAogICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBYZShlKSwgaSA9IHQubGVuZ3RoOyBhIDwgaTsgYSsrKSBvW3RbYV1dID0gY2UuY3NzKGUsIHRbYV0sICExLCByKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gbiA/IGNlLnN0eWxlKGUsIHQsIG4pIDogY2UuY3NzKGUsIHQpCiAgICAgICAgICAgIH0sIGUsIHQsIDEgPCBhcmd1bWVudHMubGVuZ3RoKQogICAgICAgIH0KICAgIH0pLCAoKGNlLlR3ZWVuID0gYXQpLnByb3RvdHlwZSA9IHsKICAgICAgICBjb25zdHJ1Y3RvcjogYXQsCiAgICAgICAgaW5pdDogZnVuY3Rpb24oZSwgdCwgbiwgciwgaSwgbykgewogICAgICAgICAgICB0aGlzLmVsZW0gPSBlLCB0aGlzLnByb3AgPSBuLCB0aGlzLmVhc2luZyA9IGkgfHwgY2UuZWFzaW5nLl9kZWZhdWx0LCB0aGlzLm9wdGlvbnMgPSB0LCB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpLCB0aGlzLmVuZCA9IHIsIHRoaXMudW5pdCA9IG8gfHwgKGNlLmNzc051bWJlcltuXSA/ICIiIDogInB4IikKICAgICAgICB9LAogICAgICAgIGN1cjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gYXQucHJvcEhvb2tzW3RoaXMucHJvcF07CiAgICAgICAgICAgIHJldHVybiBlICYmIGUuZ2V0ID8gZS5nZXQodGhpcykgOiBhdC5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpCiAgICAgICAgfSwKICAgICAgICBydW46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4gPSBhdC5wcm9wSG9va3NbdGhpcy5wcm9wXTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbiA/IHRoaXMucG9zID0gdCA9IGNlLmVhc2luZ1t0aGlzLmVhc2luZ10oZSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogZSwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uKSA6IHRoaXMucG9zID0gdCA9IGUsIHRoaXMubm93ID0gKHRoaXMuZW5kIC0gdGhpcy5zdGFydCkgKiB0ICsgdGhpcy5zdGFydCwgdGhpcy5vcHRpb25zLnN0ZXAgJiYgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzKSwgbiAmJiBuLnNldCA/IG4uc2V0KHRoaXMpIDogYXQucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSwgdGhpcwogICAgICAgIH0KICAgIH0pLmluaXQucHJvdG90eXBlID0gYXQucHJvdG90eXBlLCAoYXQucHJvcEhvb2tzID0gewogICAgICAgIF9kZWZhdWx0OiB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gMSAhPT0gZS5lbGVtLm5vZGVUeXBlIHx8IG51bGwgIT0gZS5lbGVtW2UucHJvcF0gJiYgbnVsbCA9PSBlLmVsZW0uc3R5bGVbZS5wcm9wXSA/IGUuZWxlbVtlLnByb3BdIDogKHQgPSBjZS5jc3MoZS5lbGVtLCBlLnByb3AsICIiKSkgJiYgImF1dG8iICE9PSB0ID8gdCA6IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjZS5meC5zdGVwW2UucHJvcF0gPyBjZS5meC5zdGVwW2UucHJvcF0oZSkgOiAxICE9PSBlLmVsZW0ubm9kZVR5cGUgfHwgIWNlLmNzc0hvb2tzW2UucHJvcF0gJiYgbnVsbCA9PSBlLmVsZW0uc3R5bGVbWmUoZS5wcm9wKV0gPyBlLmVsZW1bZS5wcm9wXSA9IGUubm93IDogY2Uuc3R5bGUoZS5lbGVtLCBlLnByb3AsIGUubm93ICsgZS51bml0KQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSkuc2Nyb2xsVG9wID0gYXQucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7CiAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUuZWxlbS5ub2RlVHlwZSAmJiBlLmVsZW0ucGFyZW50Tm9kZSAmJiAoZS5lbGVtW2UucHJvcF0gPSBlLm5vdykKICAgICAgICB9CiAgICB9LCBjZS5lYXNpbmcgPSB7CiAgICAgICAgbGluZWFyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfSwKICAgICAgICBzd2luZzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gLjUgLSBNYXRoLmNvcyhlICogTWF0aC5QSSkgLyAyCiAgICAgICAgfSwKICAgICAgICBfZGVmYXVsdDogInN3aW5nIgogICAgfSwgY2UuZnggPSBhdC5wcm90b3R5cGUuaW5pdCwgY2UuZnguc3RlcCA9IHt9OwogICAgdmFyIHN0LCB1dCwgbHQsIGN0LCBmdCA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLywKICAgICAgICBwdCA9IC9xdWV1ZUhvb2tzJC87CgogICAgZnVuY3Rpb24gZHQoKSB7CiAgICAgICAgdXQgJiYgKCExID09PSBDLmhpZGRlbiAmJiBpZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPyBpZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZHQpIDogaWUuc2V0VGltZW91dChkdCwgY2UuZnguaW50ZXJ2YWwpLCBjZS5meC50aWNrKCkpCiAgICB9CgogICAgZnVuY3Rpb24gaHQoKSB7CiAgICAgICAgcmV0dXJuIGllLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHN0ID0gdm9pZCAwCiAgICAgICAgfSksIHN0ID0gRGF0ZS5ub3coKQogICAgfQoKICAgIGZ1bmN0aW9uIGd0KGUsIHQpIHsKICAgICAgICB2YXIgbiwgciA9IDAsCiAgICAgICAgICAgIGkgPSB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGUKICAgICAgICAgICAgfTsKICAgICAgICBmb3IgKHQgPSB0ID8gMSA6IDA7IHIgPCA0OyByICs9IDIgLSB0KSBpWyJtYXJnaW4iICsgKG4gPSBRW3JdKV0gPSBpWyJwYWRkaW5nIiArIG5dID0gZTsKICAgICAgICByZXR1cm4gdCAmJiAoaS5vcGFjaXR5ID0gaS53aWR0aCA9IGUpLCBpCiAgICB9CgogICAgZnVuY3Rpb24gdnQoZSwgdCwgbikgewogICAgICAgIGZvciAodmFyIHIsIGkgPSAoeXQudHdlZW5lcnNbdF0gfHwgW10pLmNvbmNhdCh5dC50d2VlbmVyc1siKiJdKSwgbyA9IDAsIGEgPSBpLmxlbmd0aDsgbyA8IGE7IG8rKykKICAgICAgICAgICAgaWYgKHIgPSBpW29dLmNhbGwobiwgdCwgZSkpIHJldHVybiByCiAgICB9CgogICAgZnVuY3Rpb24geXQobywgZSwgdCkgewogICAgICAgIHZhciBuLCBhLCByID0gMCwKICAgICAgICAgICAgaSA9IHl0LnByZWZpbHRlcnMubGVuZ3RoLAogICAgICAgICAgICBzID0gY2UuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgdS5lbGVtCiAgICAgICAgICAgIH0pLAogICAgICAgICAgICB1ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoYSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHN0IHx8IGh0KCksIHQgPSBNYXRoLm1heCgwLCBsLnN0YXJ0VGltZSArIGwuZHVyYXRpb24gLSBlKSwgbiA9IDEgLSAodCAvIGwuZHVyYXRpb24gfHwgMCksIHIgPSAwLCBpID0gbC50d2VlbnMubGVuZ3RoOyByIDwgaTsgcisrKSBsLnR3ZWVuc1tyXS5ydW4obik7CiAgICAgICAgICAgICAgICByZXR1cm4gcy5ub3RpZnlXaXRoKG8sIFtsLCBuLCB0XSksIG4gPCAxICYmIGkgPyB0IDogKGkgfHwgcy5ub3RpZnlXaXRoKG8sIFtsLCAxLCAwXSksIHMucmVzb2x2ZVdpdGgobywgW2xdKSwgITEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGwgPSBzLnByb21pc2UoewogICAgICAgICAgICAgICAgZWxlbTogbywKICAgICAgICAgICAgICAgIHByb3BzOiBjZS5leHRlbmQoe30sIGUpLAogICAgICAgICAgICAgICAgb3B0czogY2UuZXh0ZW5kKCEwLCB7CiAgICAgICAgICAgICAgICAgICAgc3BlY2lhbEVhc2luZzoge30sCiAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBjZS5lYXNpbmcuX2RlZmF1bHQKICAgICAgICAgICAgICAgIH0sIHQpLAogICAgICAgICAgICAgICAgb3JpZ2luYWxQcm9wZXJ0aWVzOiBlLAogICAgICAgICAgICAgICAgb3JpZ2luYWxPcHRpb25zOiB0LAogICAgICAgICAgICAgICAgc3RhcnRUaW1lOiBzdCB8fCBodCgpLAogICAgICAgICAgICAgICAgZHVyYXRpb246IHQuZHVyYXRpb24sCiAgICAgICAgICAgICAgICB0d2VlbnM6IFtdLAogICAgICAgICAgICAgICAgY3JlYXRlVHdlZW46IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGNlLlR3ZWVuKG8sIGwub3B0cywgZSwgdCwgbC5vcHRzLnNwZWNpYWxFYXNpbmdbZV0gfHwgbC5vcHRzLmVhc2luZyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwudHdlZW5zLnB1c2gobiksIG4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzdG9wOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZSA/IGwudHdlZW5zLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHJldHVybiB0aGlzOwogICAgICAgICAgICAgICAgICAgIGZvciAoYSA9ICEwOyB0IDwgbjsgdCsrKSBsLnR3ZWVuc1t0XS5ydW4oMSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyAocy5ub3RpZnlXaXRoKG8sIFtsLCAxLCAwXSksIHMucmVzb2x2ZVdpdGgobywgW2wsIGVdKSkgOiBzLnJlamVjdFdpdGgobywgW2wsIGVdKSwgdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwKICAgICAgICAgICAgYyA9IGwucHJvcHM7CiAgICAgICAgZm9yICghIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuLCByLCBpLCBvLCBhOwogICAgICAgICAgICAgICAgZm9yIChuIGluIGUpCiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSB0W3IgPSBGKG4pXSwgbyA9IGVbbl0sIEFycmF5LmlzQXJyYXkobykgJiYgKGkgPSBvWzFdLCBvID0gZVtuXSA9IG9bMF0pLCBuICE9PSByICYmIChlW3JdID0gbywgZGVsZXRlIGVbbl0pLCAoYSA9IGNlLmNzc0hvb2tzW3JdKSAmJiAiZXhwYW5kIiBpbiBhKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gaW4gbyA9IGEuZXhwYW5kKG8pLCBkZWxldGUgZVtyXSwgbykgbiBpbiBlIHx8IChlW25dID0gb1tuXSwgdFtuXSA9IGkpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgdFtyXSA9IGkKICAgICAgICAgICAgfShjLCBsLm9wdHMuc3BlY2lhbEVhc2luZyk7IHIgPCBpOyByKyspCiAgICAgICAgICAgIGlmIChuID0geXQucHJlZmlsdGVyc1tyXS5jYWxsKGwsIG8sIGMsIGwub3B0cykpIHJldHVybiB2KG4uc3RvcCkgJiYgKGNlLl9xdWV1ZUhvb2tzKGwuZWxlbSwgbC5vcHRzLnF1ZXVlKS5zdG9wID0gbi5zdG9wLmJpbmQobikpLCBuOwogICAgICAgIHJldHVybiBjZS5tYXAoYywgdnQsIGwpLCB2KGwub3B0cy5zdGFydCkgJiYgbC5vcHRzLnN0YXJ0LmNhbGwobywgbCksIGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLCBsLm9wdHMuY29tcGxldGUpLmZhaWwobC5vcHRzLmZhaWwpLmFsd2F5cyhsLm9wdHMuYWx3YXlzKSwgY2UuZngudGltZXIoY2UuZXh0ZW5kKHUsIHsKICAgICAgICAgICAgZWxlbTogbywKICAgICAgICAgICAgYW5pbTogbCwKICAgICAgICAgICAgcXVldWU6IGwub3B0cy5xdWV1ZQogICAgICAgIH0pKSwgbAogICAgfQogICAgY2UuQW5pbWF0aW9uID0gY2UuZXh0ZW5kKHl0LCB7CiAgICAgICAgdHdlZW5lcnM6IHsKICAgICAgICAgICAgIioiOiBbZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmNyZWF0ZVR3ZWVuKGUsIHQpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRlKG4uZWxlbSwgZSwgWS5leGVjKHQpLCBuKSwgbgogICAgICAgICAgICB9XQogICAgICAgIH0sCiAgICAgICAgdHdlZW5lcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2KGUpID8gKHQgPSBlLCBlID0gWyIqIl0pIDogZSA9IGUubWF0Y2goRCk7CiAgICAgICAgICAgIGZvciAodmFyIG4sIHIgPSAwLCBpID0gZS5sZW5ndGg7IHIgPCBpOyByKyspIG4gPSBlW3JdLCB5dC50d2VlbmVyc1tuXSA9IHl0LnR3ZWVuZXJzW25dIHx8IFtdLCB5dC50d2VlbmVyc1tuXS51bnNoaWZ0KHQpCiAgICAgICAgfSwKICAgICAgICBwcmVmaWx0ZXJzOiBbZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciwgaSwgbywgYSwgcywgdSwgbCwgYywgZiA9ICJ3aWR0aCIgaW4gdCB8fCAiaGVpZ2h0IiBpbiB0LAogICAgICAgICAgICAgICAgcCA9IHRoaXMsCiAgICAgICAgICAgICAgICBkID0ge30sCiAgICAgICAgICAgICAgICBoID0gZS5zdHlsZSwKICAgICAgICAgICAgICAgIGcgPSBlLm5vZGVUeXBlICYmIGVlKGUpLAogICAgICAgICAgICAgICAgdiA9IF8uZ2V0KGUsICJmeHNob3ciKTsKICAgICAgICAgICAgZm9yIChyIGluIG4ucXVldWUgfHwgKG51bGwgPT0gKGEgPSBjZS5fcXVldWVIb29rcyhlLCAiZngiKSkudW5xdWV1ZWQgJiYgKGEudW5xdWV1ZWQgPSAwLCBzID0gYS5lbXB0eS5maXJlLCBhLmVtcHR5LmZpcmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBhLnVucXVldWVkIHx8IHMoKQogICAgICAgICAgICAgICAgfSksIGEudW5xdWV1ZWQrKywgcC5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcC5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEudW5xdWV1ZWQtLSwgY2UucXVldWUoZSwgImZ4IikubGVuZ3RoIHx8IGEuZW1wdHkuZmlyZSgpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pKSwgdCkKICAgICAgICAgICAgICAgIGlmIChpID0gdFtyXSwgZnQudGVzdChpKSkgewogICAgICAgICAgICAgICAgICAgIGlmIChkZWxldGUgdFtyXSwgbyA9IG8gfHwgInRvZ2dsZSIgPT09IGksIGkgPT09IChnID8gImhpZGUiIDogInNob3ciKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInNob3ciICE9PSBpIHx8ICF2IHx8IHZvaWQgMCA9PT0gdltyXSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkW3JdID0gdiAmJiB2W3JdIHx8IGNlLnN0eWxlKGUsIHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgodSA9ICFjZS5pc0VtcHR5T2JqZWN0KHQpKSB8fCAhY2UuaXNFbXB0eU9iamVjdChkKSkKICAgICAgICAgICAgICAgIGZvciAociBpbiBmICYmIDEgPT09IGUubm9kZVR5cGUgJiYgKG4ub3ZlcmZsb3cgPSBbaC5vdmVyZmxvdywgaC5vdmVyZmxvd1gsIGgub3ZlcmZsb3dZXSwgbnVsbCA9PSAobCA9IHYgJiYgdi5kaXNwbGF5KSAmJiAobCA9IF8uZ2V0KGUsICJkaXNwbGF5IikpLCAibm9uZSIgPT09IChjID0gY2UuY3NzKGUsICJkaXNwbGF5IikpICYmIChsID8gYyA9IGwgOiAocmUoW2VdLCAhMCksIGwgPSBlLnN0eWxlLmRpc3BsYXkgfHwgbCwgYyA9IGNlLmNzcyhlLCAiZGlzcGxheSIpLCByZShbZV0pKSksICgiaW5saW5lIiA9PT0gYyB8fCAiaW5saW5lLWJsb2NrIiA9PT0gYyAmJiBudWxsICE9IGwpICYmICJub25lIiA9PT0gY2UuY3NzKGUsICJmbG9hdCIpICYmICh1IHx8IChwLmRvbmUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGguZGlzcGxheSA9IGwKICAgICAgICAgICAgICAgICAgICB9KSwgbnVsbCA9PSBsICYmIChjID0gaC5kaXNwbGF5LCBsID0gIm5vbmUiID09PSBjID8gIiIgOiBjKSksIGguZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siKSksIG4ub3ZlcmZsb3cgJiYgKGgub3ZlcmZsb3cgPSAiaGlkZGVuIiwgcC5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGgub3ZlcmZsb3cgPSBuLm92ZXJmbG93WzBdLCBoLm92ZXJmbG93WCA9IG4ub3ZlcmZsb3dbMV0sIGgub3ZlcmZsb3dZID0gbi5vdmVyZmxvd1syXQogICAgICAgICAgICAgICAgICAgIH0pKSwgdSA9ICExLCBkKSB1IHx8ICh2ID8gImhpZGRlbiIgaW4gdiAmJiAoZyA9IHYuaGlkZGVuKSA6IHYgPSBfLmFjY2VzcyhlLCAiZnhzaG93IiwgewogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGwKICAgICAgICAgICAgICAgIH0pLCBvICYmICh2LmhpZGRlbiA9ICFnKSwgZyAmJiByZShbZV0sICEwKSwgcC5kb25lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAociBpbiBnIHx8IHJlKFtlXSksIF8ucmVtb3ZlKGUsICJmeHNob3ciKSwgZCkgY2Uuc3R5bGUoZSwgciwgZFtyXSkKICAgICAgICAgICAgICAgIH0pKSwgdSA9IHZ0KGcgPyB2W3JdIDogMCwgciwgcCksIHIgaW4gdiB8fCAodltyXSA9IHUuc3RhcnQsIGcgJiYgKHUuZW5kID0gdS5zdGFydCwgdS5zdGFydCA9IDApKQogICAgICAgIH1dLAogICAgICAgIHByZWZpbHRlcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB0ID8geXQucHJlZmlsdGVycy51bnNoaWZ0KGUpIDogeXQucHJlZmlsdGVycy5wdXNoKGUpCiAgICAgICAgfQogICAgfSksIGNlLnNwZWVkID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciByID0gZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSA/IGNlLmV4dGVuZCh7fSwgZSkgOiB7CiAgICAgICAgICAgIGNvbXBsZXRlOiBuIHx8ICFuICYmIHQgfHwgdihlKSAmJiBlLAogICAgICAgICAgICBkdXJhdGlvbjogZSwKICAgICAgICAgICAgZWFzaW5nOiBuICYmIHQgfHwgdCAmJiAhdih0KSAmJiB0CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gY2UuZngub2ZmID8gci5kdXJhdGlvbiA9IDAgOiAibnVtYmVyIiAhPSB0eXBlb2Ygci5kdXJhdGlvbiAmJiAoci5kdXJhdGlvbiBpbiBjZS5meC5zcGVlZHMgPyByLmR1cmF0aW9uID0gY2UuZnguc3BlZWRzW3IuZHVyYXRpb25dIDogci5kdXJhdGlvbiA9IGNlLmZ4LnNwZWVkcy5fZGVmYXVsdCksIG51bGwgIT0gci5xdWV1ZSAmJiAhMCAhPT0gci5xdWV1ZSB8fCAoci5xdWV1ZSA9ICJmeCIpLCByLm9sZCA9IHIuY29tcGxldGUsIHIuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdihyLm9sZCkgJiYgci5vbGQuY2FsbCh0aGlzKSwgci5xdWV1ZSAmJiBjZS5kZXF1ZXVlKHRoaXMsIHIucXVldWUpCiAgICAgICAgfSwgcgogICAgfSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBmYWRlVG86IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGVlKS5jc3MoIm9wYWNpdHkiLCAwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiB0CiAgICAgICAgICAgIH0sIGUsIG4sIHIpCiAgICAgICAgfSwKICAgICAgICBhbmltYXRlOiBmdW5jdGlvbih0LCBlLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBpID0gY2UuaXNFbXB0eU9iamVjdCh0KSwKICAgICAgICAgICAgICAgIG8gPSBjZS5zcGVlZChlLCBuLCByKSwKICAgICAgICAgICAgICAgIGEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHl0KHRoaXMsIGNlLmV4dGVuZCh7fSwgdCksIG8pOwogICAgICAgICAgICAgICAgICAgIChpIHx8IF8uZ2V0KHRoaXMsICJmaW5pc2giKSkgJiYgZS5zdG9wKCEwKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIGEuZmluaXNoID0gYSwgaSB8fCAhMSA9PT0gby5xdWV1ZSA/IHRoaXMuZWFjaChhKSA6IHRoaXMucXVldWUoby5xdWV1ZSwgYSkKICAgICAgICB9LAogICAgICAgIHN0b3A6IGZ1bmN0aW9uKGksIGUsIG8pIHsKICAgICAgICAgICAgdmFyIGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUuc3RvcDsKICAgICAgICAgICAgICAgIGRlbGV0ZSBlLnN0b3AsIHQobykKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBpICYmIChvID0gZSwgZSA9IGksIGkgPSB2b2lkIDApLCBlICYmIHRoaXMucXVldWUoaSB8fCAiZngiLCBbXSksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gITAsCiAgICAgICAgICAgICAgICAgICAgdCA9IG51bGwgIT0gaSAmJiBpICsgInF1ZXVlSG9va3MiLAogICAgICAgICAgICAgICAgICAgIG4gPSBjZS50aW1lcnMsCiAgICAgICAgICAgICAgICAgICAgciA9IF8uZ2V0KHRoaXMpOwogICAgICAgICAgICAgICAgaWYgKHQpIHJbdF0gJiYgclt0XS5zdG9wICYmIGEoclt0XSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIHIpIHJbdF0gJiYgclt0XS5zdG9wICYmIHB0LnRlc3QodCkgJiYgYShyW3RdKTsKICAgICAgICAgICAgICAgIGZvciAodCA9IG4ubGVuZ3RoOyB0LS07KSBuW3RdLmVsZW0gIT09IHRoaXMgfHwgbnVsbCAhPSBpICYmIG5bdF0ucXVldWUgIT09IGkgfHwgKG5bdF0uYW5pbS5zdG9wKG8pLCBlID0gITEsIG4uc3BsaWNlKHQsIDEpKTsKICAgICAgICAgICAgICAgICFlICYmIG8gfHwgY2UuZGVxdWV1ZSh0aGlzLCBpKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZmluaXNoOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiAhMSAhPT0gYSAmJiAoYSA9IGEgfHwgImZ4IiksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0ID0gXy5nZXQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IHRbYSArICJxdWV1ZSJdLAogICAgICAgICAgICAgICAgICAgIHIgPSB0W2EgKyAicXVldWVIb29rcyJdLAogICAgICAgICAgICAgICAgICAgIGkgPSBjZS50aW1lcnMsCiAgICAgICAgICAgICAgICAgICAgbyA9IG4gPyBuLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICBmb3IgKHQuZmluaXNoID0gITAsIGNlLnF1ZXVlKHRoaXMsIGEsIFtdKSwgciAmJiByLnN0b3AgJiYgci5zdG9wLmNhbGwodGhpcywgITApLCBlID0gaS5sZW5ndGg7IGUtLTspIGlbZV0uZWxlbSA9PT0gdGhpcyAmJiBpW2VdLnF1ZXVlID09PSBhICYmIChpW2VdLmFuaW0uc3RvcCghMCksIGkuc3BsaWNlKGUsIDEpKTsKICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBvOyBlKyspIG5bZV0gJiYgbltlXS5maW5pc2ggJiYgbltlXS5maW5pc2guY2FsbCh0aGlzKTsKICAgICAgICAgICAgICAgIGRlbGV0ZSB0LmZpbmlzaAogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0pLCBjZS5lYWNoKFsidG9nZ2xlIiwgInNob3ciLCAiaGlkZSJdLCBmdW5jdGlvbihlLCByKSB7CiAgICAgICAgdmFyIGkgPSBjZS5mbltyXTsKICAgICAgICBjZS5mbltyXSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSB8fCAiYm9vbGVhbiIgPT0gdHlwZW9mIGUgPyBpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiB0aGlzLmFuaW1hdGUoZ3QociwgITApLCBlLCB0LCBuKQogICAgICAgIH0KICAgIH0pLCBjZS5lYWNoKHsKICAgICAgICBzbGlkZURvd246IGd0KCJzaG93IiksCiAgICAgICAgc2xpZGVVcDogZ3QoImhpZGUiKSwKICAgICAgICBzbGlkZVRvZ2dsZTogZ3QoInRvZ2dsZSIpLAogICAgICAgIGZhZGVJbjogewogICAgICAgICAgICBvcGFjaXR5OiAic2hvdyIKICAgICAgICB9LAogICAgICAgIGZhZGVPdXQ6IHsKICAgICAgICAgICAgb3BhY2l0eTogImhpZGUiCiAgICAgICAgfSwKICAgICAgICBmYWRlVG9nZ2xlOiB7CiAgICAgICAgICAgIG9wYWNpdHk6ICJ0b2dnbGUiCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24oZSwgcikgewogICAgICAgIGNlLmZuW2VdID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5hbmltYXRlKHIsIGUsIHQsIG4pCiAgICAgICAgfQogICAgfSksIGNlLnRpbWVycyA9IFtdLCBjZS5meC50aWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUsIHQgPSAwLAogICAgICAgICAgICBuID0gY2UudGltZXJzOwogICAgICAgIGZvciAoc3QgPSBEYXRlLm5vdygpOyB0IDwgbi5sZW5ndGg7IHQrKykoZSA9IG5bdF0pKCkgfHwgblt0XSAhPT0gZSB8fCBuLnNwbGljZSh0LS0sIDEpOwogICAgICAgIG4ubGVuZ3RoIHx8IGNlLmZ4LnN0b3AoKSwgc3QgPSB2b2lkIDAKICAgIH0sIGNlLmZ4LnRpbWVyID0gZnVuY3Rpb24oZSkgewogICAgICAgIGNlLnRpbWVycy5wdXNoKGUpLCBjZS5meC5zdGFydCgpCiAgICB9LCBjZS5meC5pbnRlcnZhbCA9IDEzLCBjZS5meC5zdGFydCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHV0IHx8ICh1dCA9ICEwLCBkdCgpKQogICAgfSwgY2UuZnguc3RvcCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHV0ID0gbnVsbAogICAgfSwgY2UuZnguc3BlZWRzID0gewogICAgICAgIHNsb3c6IDYwMCwKICAgICAgICBmYXN0OiAyMDAsCiAgICAgICAgX2RlZmF1bHQ6IDQwMAogICAgfSwgY2UuZm4uZGVsYXkgPSBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgcmV0dXJuIHIgPSBjZS5meCAmJiBjZS5meC5zcGVlZHNbcl0gfHwgciwgZSA9IGUgfHwgImZ4IiwgdGhpcy5xdWV1ZShlLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gaWUuc2V0VGltZW91dChlLCByKTsKICAgICAgICAgICAgdC5zdG9wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZS5jbGVhclRpbWVvdXQobikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBsdCA9IEMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSwgY3QgPSBDLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLCBsdC50eXBlID0gImNoZWNrYm94IiwgbGUuY2hlY2tPbiA9ICIiICE9PSBsdC52YWx1ZSwgbGUub3B0U2VsZWN0ZWQgPSBjdC5zZWxlY3RlZCwgKGx0ID0gQy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZSA9ICJ0IiwgbHQudHlwZSA9ICJyYWRpbyIsIGxlLnJhZGlvVmFsdWUgPSAidCIgPT09IGx0LnZhbHVlOwogICAgdmFyIG10LCB4dCA9IGNlLmV4cHIuYXR0ckhhbmRsZTsKICAgIGNlLmZuLmV4dGVuZCh7CiAgICAgICAgYXR0cjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gTSh0aGlzLCBjZS5hdHRyLCBlLCB0LCAxIDwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICB9LAogICAgICAgIHJlbW92ZUF0dHI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNlLnJlbW92ZUF0dHIodGhpcywgZSkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgY2UuZXh0ZW5kKHsKICAgICAgICBhdHRyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCBvID0gZS5ub2RlVHlwZTsKICAgICAgICAgICAgaWYgKDMgIT09IG8gJiYgOCAhPT0gbyAmJiAyICE9PSBvKSByZXR1cm4gInVuZGVmaW5lZCIgPT0gdHlwZW9mIGUuZ2V0QXR0cmlidXRlID8gY2UucHJvcChlLCB0LCBuKSA6ICgxID09PSBvICYmIGNlLmlzWE1MRG9jKGUpIHx8IChpID0gY2UuYXR0ckhvb2tzW3QudG9Mb3dlckNhc2UoKV0gfHwgKGNlLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpID8gbXQgOiB2b2lkIDApKSwgdm9pZCAwICE9PSBuID8gbnVsbCA9PT0gbiA/IHZvaWQgY2UucmVtb3ZlQXR0cihlLCB0KSA6IGkgJiYgInNldCIgaW4gaSAmJiB2b2lkIDAgIT09IChyID0gaS5zZXQoZSwgbiwgdCkpID8gciA6IChlLnNldEF0dHJpYnV0ZSh0LCBuICsgIiIpLCBuKSA6IGkgJiYgImdldCIgaW4gaSAmJiBudWxsICE9PSAociA9IGkuZ2V0KGUsIHQpKSA/IHIgOiBudWxsID09IChyID0gY2UuZmluZC5hdHRyKGUsIHQpKSA/IHZvaWQgMCA6IHIpCiAgICAgICAgfSwKICAgICAgICBhdHRySG9va3M6IHsKICAgICAgICAgICAgdHlwZTogewogICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsZS5yYWRpb1ZhbHVlICYmICJyYWRpbyIgPT09IHQgJiYgZmUoZSwgImlucHV0IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCB0KSwgbiAmJiAoZS52YWx1ZSA9IG4pLCB0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZW1vdmVBdHRyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByID0gMCwKICAgICAgICAgICAgICAgIGkgPSB0ICYmIHQubWF0Y2goRCk7CiAgICAgICAgICAgIGlmIChpICYmIDEgPT09IGUubm9kZVR5cGUpCiAgICAgICAgICAgICAgICB3aGlsZSAobiA9IGlbcisrXSkgZS5yZW1vdmVBdHRyaWJ1dGUobikKICAgICAgICB9CiAgICB9KSwgbXQgPSB7CiAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiAhMSA9PT0gdCA/IGNlLnJlbW92ZUF0dHIoZSwgbikgOiBlLnNldEF0dHJpYnV0ZShuLCBuKSwgbgogICAgICAgIH0KICAgIH0sIGNlLmVhY2goY2UuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIGEgPSB4dFt0XSB8fCBjZS5maW5kLmF0dHI7CiAgICAgICAgeHRbdF0gPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCBvID0gdC50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICByZXR1cm4gbiB8fCAoaSA9IHh0W29dLCB4dFtvXSA9IHIsIHIgPSBudWxsICE9IGEoZSwgdCwgbikgPyBvIDogbnVsbCwgeHRbb10gPSBpKSwgcgogICAgICAgIH0KICAgIH0pOwogICAgdmFyIGJ0ID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSwKICAgICAgICB3dCA9IC9eKD86YXxhcmVhKSQvaTsKCiAgICBmdW5jdGlvbiBUdChlKSB7CiAgICAgICAgcmV0dXJuIChlLm1hdGNoKEQpIHx8IFtdKS5qb2luKCIgIikKICAgIH0KCiAgICBmdW5jdGlvbiBDdChlKSB7CiAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlICYmIGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiCiAgICB9CgogICAgZnVuY3Rpb24ga3QoZSkgewogICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGUpID8gZSA6ICJzdHJpbmciID09IHR5cGVvZiBlICYmIGUubWF0Y2goRCkgfHwgW10KICAgIH0KICAgIGNlLmZuLmV4dGVuZCh7CiAgICAgICAgcHJvcDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gTSh0aGlzLCBjZS5wcm9wLCBlLCB0LCAxIDwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICB9LAogICAgICAgIHJlbW92ZVByb3A6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzW2NlLnByb3BGaXhbZV0gfHwgZV0KICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgY2UuZXh0ZW5kKHsKICAgICAgICBwcm9wOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCBvID0gZS5ub2RlVHlwZTsKICAgICAgICAgICAgaWYgKDMgIT09IG8gJiYgOCAhPT0gbyAmJiAyICE9PSBvKSByZXR1cm4gMSA9PT0gbyAmJiBjZS5pc1hNTERvYyhlKSB8fCAodCA9IGNlLnByb3BGaXhbdF0gfHwgdCwgaSA9IGNlLnByb3BIb29rc1t0XSksIHZvaWQgMCAhPT0gbiA/IGkgJiYgInNldCIgaW4gaSAmJiB2b2lkIDAgIT09IChyID0gaS5zZXQoZSwgbiwgdCkpID8gciA6IGVbdF0gPSBuIDogaSAmJiAiZ2V0IiBpbiBpICYmIG51bGwgIT09IChyID0gaS5nZXQoZSwgdCkpID8gciA6IGVbdF0KICAgICAgICB9LAogICAgICAgIHByb3BIb29rczogewogICAgICAgICAgICB0YWJJbmRleDogewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBjZS5maW5kLmF0dHIoZSwgInRhYmluZGV4Iik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPyBwYXJzZUludCh0LCAxMCkgOiBidC50ZXN0KGUubm9kZU5hbWUpIHx8IHd0LnRlc3QoZS5ub2RlTmFtZSkgJiYgZS5ocmVmID8gMCA6IC0xCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHByb3BGaXg6IHsKICAgICAgICAgICAgImZvciI6ICJodG1sRm9yIiwKICAgICAgICAgICAgImNsYXNzIjogImNsYXNzTmFtZSIKICAgICAgICB9CiAgICB9KSwgbGUub3B0U2VsZWN0ZWQgfHwgKGNlLnByb3BIb29rcy5zZWxlY3RlZCA9IHsKICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLnBhcmVudE5vZGU7CiAgICAgICAgICAgIHJldHVybiB0ICYmIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwgbnVsbAogICAgICAgIH0sCiAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gZS5wYXJlbnROb2RlOwogICAgICAgICAgICB0ICYmICh0LnNlbGVjdGVkSW5kZXgsIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCkKICAgICAgICB9CiAgICB9KSwgY2UuZWFjaChbInRhYkluZGV4IiwgInJlYWRPbmx5IiwgIm1heExlbmd0aCIsICJjZWxsU3BhY2luZyIsICJjZWxsUGFkZGluZyIsICJyb3dTcGFuIiwgImNvbFNwYW4iLCAidXNlTWFwIiwgImZyYW1lQm9yZGVyIiwgImNvbnRlbnRFZGl0YWJsZSJdLCBmdW5jdGlvbigpIHsKICAgICAgICBjZS5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV0gPSB0aGlzCiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBhZGRDbGFzczogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgZSwgbiwgciwgaSwgbywgYTsKICAgICAgICAgICAgcmV0dXJuIHYodCkgPyB0aGlzLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgY2UodGhpcykuYWRkQ2xhc3ModC5jYWxsKHRoaXMsIGUsIEN0KHRoaXMpKSkKICAgICAgICAgICAgfSkgOiAoZSA9IGt0KHQpKS5sZW5ndGggPyB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAociA9IEN0KHRoaXMpLCBuID0gMSA9PT0gdGhpcy5ub2RlVHlwZSAmJiAiICIgKyBUdChyKSArICIgIikgewogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDA7IG8gPCBlLmxlbmd0aDsgbysrKSBpID0gZVtvXSwgbi5pbmRleE9mKCIgIiArIGkgKyAiICIpIDwgMCAmJiAobiArPSBpICsgIiAiKTsKICAgICAgICAgICAgICAgICAgICBhID0gVHQobiksIHIgIT09IGEgJiYgdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgYSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkgOiB0aGlzCiAgICAgICAgfSwKICAgICAgICByZW1vdmVDbGFzczogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgZSwgbiwgciwgaSwgbywgYTsKICAgICAgICAgICAgcmV0dXJuIHYodCkgPyB0aGlzLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgY2UodGhpcykucmVtb3ZlQ2xhc3ModC5jYWxsKHRoaXMsIGUsIEN0KHRoaXMpKSkKICAgICAgICAgICAgfSkgOiBhcmd1bWVudHMubGVuZ3RoID8gKGUgPSBrdCh0KSkubGVuZ3RoID8gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHIgPSBDdCh0aGlzKSwgbiA9IDEgPT09IHRoaXMubm9kZVR5cGUgJiYgIiAiICsgVHQocikgKyAiICIpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSAwOyBvIDwgZS5sZW5ndGg7IG8rKykgewogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtvXTsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKC0xIDwgbi5pbmRleE9mKCIgIiArIGkgKyAiICIpKSBuID0gbi5yZXBsYWNlKCIgIiArIGkgKyAiICIsICIgIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYSA9IFR0KG4pLCByICE9PSBhICYmIHRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsIGEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pIDogdGhpcyA6IHRoaXMuYXR0cigiY2xhc3MiLCAiIikKICAgICAgICB9LAogICAgICAgIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgIHZhciBlLCByLCBpLCBvLCBhID0gdHlwZW9mIHQsCiAgICAgICAgICAgICAgICBzID0gInN0cmluZyIgPT09IGEgfHwgQXJyYXkuaXNBcnJheSh0KTsKICAgICAgICAgICAgcmV0dXJuIHYodCkgPyB0aGlzLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgY2UodGhpcykudG9nZ2xlQ2xhc3ModC5jYWxsKHRoaXMsIGUsIEN0KHRoaXMpLCBuKSwgbikKICAgICAgICAgICAgfSkgOiAiYm9vbGVhbiIgPT0gdHlwZW9mIG4gJiYgcyA/IG4gPyB0aGlzLmFkZENsYXNzKHQpIDogdGhpcy5yZW1vdmVDbGFzcyh0KSA6IChlID0ga3QodCksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChzKQogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IGNlKHRoaXMpLCBpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIHIgPSBlW2ldLCBvLmhhc0NsYXNzKHIpID8gby5yZW1vdmVDbGFzcyhyKSA6IG8uYWRkQ2xhc3Mocik7CiAgICAgICAgICAgICAgICBlbHNlIHZvaWQgMCAhPT0gdCAmJiAiYm9vbGVhbiIgIT09IGEgfHwgKChyID0gQ3QodGhpcykpICYmIF8uc2V0KHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgciksIHRoaXMuc2V0QXR0cmlidXRlICYmIHRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsIHIgfHwgITEgPT09IHQgPyAiIiA6IF8uZ2V0KHRoaXMsICJfX2NsYXNzTmFtZV9fIikgfHwgIiIpKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIGhhc0NsYXNzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuLCByID0gMDsKICAgICAgICAgICAgdCA9ICIgIiArIGUgKyAiICI7CiAgICAgICAgICAgIHdoaWxlIChuID0gdGhpc1tyKytdKQogICAgICAgICAgICAgICAgaWYgKDEgPT09IG4ubm9kZVR5cGUgJiYgLTEgPCAoIiAiICsgVHQoQ3QobikpICsgIiAiKS5pbmRleE9mKHQpKSByZXR1cm4gITA7CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIFN0ID0gL1xyL2c7CiAgICBjZS5mbi5leHRlbmQoewogICAgICAgIHZhbDogZnVuY3Rpb24obikgewogICAgICAgICAgICB2YXIgciwgZSwgaSwgdCA9IHRoaXNbMF07CiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGkgPSB2KG4pLCB0aGlzLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICAxID09PSB0aGlzLm5vZGVUeXBlICYmIChudWxsID09ICh0ID0gaSA/IG4uY2FsbCh0aGlzLCBlLCBjZSh0aGlzKS52YWwoKSkgOiBuKSA/IHQgPSAiIiA6ICJudW1iZXIiID09IHR5cGVvZiB0ID8gdCArPSAiIiA6IEFycmF5LmlzQXJyYXkodCkgJiYgKHQgPSBjZS5tYXAodCwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyAiIiA6IGUgKyAiIgogICAgICAgICAgICAgICAgfSkpLCAociA9IGNlLnZhbEhvb2tzW3RoaXMudHlwZV0gfHwgY2UudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkgJiYgInNldCIgaW4gciAmJiB2b2lkIDAgIT09IHIuc2V0KHRoaXMsIHQsICJ2YWx1ZSIpIHx8ICh0aGlzLnZhbHVlID0gdCkpCiAgICAgICAgICAgIH0pKSA6IHQgPyAociA9IGNlLnZhbEhvb2tzW3QudHlwZV0gfHwgY2UudmFsSG9va3NbdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkgJiYgImdldCIgaW4gciAmJiB2b2lkIDAgIT09IChlID0gci5nZXQodCwgInZhbHVlIikpID8gZSA6ICJzdHJpbmciID09IHR5cGVvZihlID0gdC52YWx1ZSkgPyBlLnJlcGxhY2UoU3QsICIiKSA6IG51bGwgPT0gZSA/ICIiIDogZSA6IHZvaWQgMAogICAgICAgIH0KICAgIH0pLCBjZS5leHRlbmQoewogICAgICAgIHZhbEhvb2tzOiB7CiAgICAgICAgICAgIG9wdGlvbjogewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBjZS5maW5kLmF0dHIoZSwgInZhbHVlIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gdCA/IHQgOiBUdChjZS50ZXh0KGUpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZWxlY3Q6IHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBuLCByLCBpID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5zZWxlY3RlZEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gInNlbGVjdC1vbmUiID09PSBlLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhID8gbnVsbCA6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gYSA/IG8gKyAxIDogaS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gbyA8IDAgPyB1IDogYSA/IG8gOiAwOyByIDwgdTsgcisrKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChuID0gaVtyXSkuc2VsZWN0ZWQgfHwgciA9PT0gbykgJiYgIW4uZGlzYWJsZWQgJiYgKCFuLnBhcmVudE5vZGUuZGlzYWJsZWQgfHwgIWZlKG4ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGNlKG4pLnZhbCgpLCBhKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucHVzaCh0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciwgaSA9IGUub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGNlLm1ha2VBcnJheSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChhLS0pKChyID0gaVthXSkuc2VsZWN0ZWQgPSAtMSA8IGNlLmluQXJyYXkoY2UudmFsSG9va3Mub3B0aW9uLmdldChyKSwgbykpICYmIChuID0gITApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuIHx8IChlLnNlbGVjdGVkSW5kZXggPSAtMSksIG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCBjZS5lYWNoKFsicmFkaW8iLCAiY2hlY2tib3giXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgY2UudmFsSG9va3NbdGhpc10gPSB7CiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHJldHVybiBlLmNoZWNrZWQgPSAtMSA8IGNlLmluQXJyYXkoY2UoZSkudmFsKCksIHQpCiAgICAgICAgICAgIH0KICAgICAgICB9LCBsZS5jaGVja09uIHx8IChjZS52YWxIb29rc1t0aGlzXS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSBlLmdldEF0dHJpYnV0ZSgidmFsdWUiKSA/ICJvbiIgOiBlLnZhbHVlCiAgICAgICAgfSkKICAgIH0pOwogICAgdmFyIEV0ID0gaWUubG9jYXRpb24sCiAgICAgICAganQgPSB7CiAgICAgICAgICAgIGd1aWQ6IERhdGUubm93KCkKICAgICAgICB9LAogICAgICAgIEF0ID0gL1w/LzsKICAgIGNlLnBhcnNlWE1MID0gZnVuY3Rpb24oZSkgewogICAgICAgIHZhciB0LCBuOwogICAgICAgIGlmICghZSB8fCAic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdCA9IChuZXcgaWUuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoZSwgInRleHQveG1sIikKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgIHJldHVybiBuID0gdCAmJiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLCB0ICYmICFuIHx8IGNlLmVycm9yKCJJbnZhbGlkIFhNTDogIiArIChuID8gY2UubWFwKG4uY2hpbGROb2RlcywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZS50ZXh0Q29udGVudAogICAgICAgIH0pLmpvaW4oIlxuIikgOiBlKSksIHQKICAgIH07CiAgICB2YXIgRHQgPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sCiAgICAgICAgTnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICB9OwogICAgY2UuZXh0ZW5kKGNlLmV2ZW50LCB7CiAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICB2YXIgaSwgbywgYSwgcywgdSwgbCwgYywgZiwgcCA9IFtuIHx8IENdLAogICAgICAgICAgICAgICAgZCA9IHVlLmNhbGwoZSwgInR5cGUiKSA/IGUudHlwZSA6IGUsCiAgICAgICAgICAgICAgICBoID0gdWUuY2FsbChlLCAibmFtZXNwYWNlIikgPyBlLm5hbWVzcGFjZS5zcGxpdCgiLiIpIDogW107CiAgICAgICAgICAgIGlmIChvID0gZiA9IGEgPSBuID0gbiB8fCBDLCAzICE9PSBuLm5vZGVUeXBlICYmIDggIT09IG4ubm9kZVR5cGUgJiYgIUR0LnRlc3QoZCArIGNlLmV2ZW50LnRyaWdnZXJlZCkgJiYgKC0xIDwgZC5pbmRleE9mKCIuIikgJiYgKGQgPSAoaCA9IGQuc3BsaXQoIi4iKSkuc2hpZnQoKSwgaC5zb3J0KCkpLCB1ID0gZC5pbmRleE9mKCI6IikgPCAwICYmICJvbiIgKyBkLCAoZSA9IGVbY2UuZXhwYW5kb10gPyBlIDogbmV3IGNlLkV2ZW50KGQsICJvYmplY3QiID09IHR5cGVvZiBlICYmIGUpKS5pc1RyaWdnZXIgPSByID8gMiA6IDMsIGUubmFtZXNwYWNlID0gaC5qb2luKCIuIiksIGUucm5hbWVzcGFjZSA9IGUubmFtZXNwYWNlID8gbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIikgOiBudWxsLCBlLnJlc3VsdCA9IHZvaWQgMCwgZS50YXJnZXQgfHwgKGUudGFyZ2V0ID0gbiksIHQgPSBudWxsID09IHQgPyBbZV0gOiBjZS5tYWtlQXJyYXkodCwgW2VdKSwgYyA9IGNlLmV2ZW50LnNwZWNpYWxbZF0gfHwge30sIHIgfHwgIWMudHJpZ2dlciB8fCAhMSAhPT0gYy50cmlnZ2VyLmFwcGx5KG4sIHQpKSkgewogICAgICAgICAgICAgICAgaWYgKCFyICYmICFjLm5vQnViYmxlICYmICF5KG4pKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gYy5kZWxlZ2F0ZVR5cGUgfHwgZCwgRHQudGVzdChzICsgZCkgfHwgKG8gPSBvLnBhcmVudE5vZGUpOyBvOyBvID0gby5wYXJlbnROb2RlKSBwLnB1c2gobyksIGEgPSBvOwogICAgICAgICAgICAgICAgICAgIGEgPT09IChuLm93bmVyRG9jdW1lbnQgfHwgQykgJiYgcC5wdXNoKGEuZGVmYXVsdFZpZXcgfHwgYS5wYXJlbnRXaW5kb3cgfHwgaWUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgIHdoaWxlICgobyA9IHBbaSsrXSkgJiYgIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgZiA9IG8sIGUudHlwZSA9IDEgPCBpID8gcyA6IGMuYmluZFR5cGUgfHwgZCwgKGwgPSAoXy5nZXQobywgImV2ZW50cyIpIHx8IE9iamVjdC5jcmVhdGUobnVsbCkpW2UudHlwZV0gJiYgXy5nZXQobywgImhhbmRsZSIpKSAmJiBsLmFwcGx5KG8sIHQpLCAobCA9IHUgJiYgb1t1XSkgJiYgbC5hcHBseSAmJiAkKG8pICYmIChlLnJlc3VsdCA9IGwuYXBwbHkobywgdCksICExID09PSBlLnJlc3VsdCAmJiBlLnByZXZlbnREZWZhdWx0KCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUudHlwZSA9IGQsIHIgfHwgZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCBjLl9kZWZhdWx0ICYmICExICE9PSBjLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksIHQpIHx8ICEkKG4pIHx8IHUgJiYgdihuW2RdKSAmJiAheShuKSAmJiAoKGEgPSBuW3VdKSAmJiAoblt1XSA9IG51bGwpLCBjZS5ldmVudC50cmlnZ2VyZWQgPSBkLCBlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgZi5hZGRFdmVudExpc3RlbmVyKGQsIE50KSwgbltkXSgpLCBlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgZi5yZW1vdmVFdmVudExpc3RlbmVyKGQsIE50KSwgY2UuZXZlbnQudHJpZ2dlcmVkID0gdm9pZCAwLCBhICYmIChuW3VdID0gYSkpLCBlLnJlc3VsdAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBzaW11bGF0ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciA9IGNlLmV4dGVuZChuZXcgY2UuRXZlbnQsIG4sIHsKICAgICAgICAgICAgICAgIHR5cGU6IGUsCiAgICAgICAgICAgICAgICBpc1NpbXVsYXRlZDogITAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNlLmV2ZW50LnRyaWdnZXIociwgbnVsbCwgdCkKICAgICAgICB9CiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjZS5ldmVudC50cmlnZ2VyKGUsIHQsIHRoaXMpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICB0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IHRoaXNbMF07CiAgICAgICAgICAgIGlmIChuKSByZXR1cm4gY2UuZXZlbnQudHJpZ2dlcihlLCB0LCBuLCAhMCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBxdCA9IC9cW1xdJC8sCiAgICAgICAgTHQgPSAvXHI/XG4vZywKICAgICAgICBIdCA9IC9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSwKICAgICAgICBPdCA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTsKCiAgICBmdW5jdGlvbiBQdChuLCBlLCByLCBpKSB7CiAgICAgICAgdmFyIHQ7CiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIGNlLmVhY2goZSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByIHx8IHF0LnRlc3QobikgPyBpKG4sIHQpIDogUHQobiArICJbIiArICgib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiBudWxsICE9IHQgPyBlIDogIiIpICsgIl0iLCB0LCByLCBpKQogICAgICAgIH0pOwogICAgICAgIGVsc2UgaWYgKHIgfHwgIm9iamVjdCIgIT09IHgoZSkpIGkobiwgZSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBmb3IgKHQgaW4gZSkgUHQobiArICJbIiArIHQgKyAiXSIsIGVbdF0sIHIsIGkpCiAgICB9CiAgICBjZS5wYXJhbSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbiwgciA9IFtdLAogICAgICAgICAgICBpID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB2KHQpID8gdCgpIDogdDsKICAgICAgICAgICAgICAgIHJbci5sZW5ndGhdID0gZW5jb2RlVVJJQ29tcG9uZW50KGUpICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KG51bGwgPT0gbiA/ICIiIDogbikKICAgICAgICAgICAgfTsKICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4gIiI7CiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkgfHwgZS5qcXVlcnkgJiYgIWNlLmlzUGxhaW5PYmplY3QoZSkpIGNlLmVhY2goZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGkodGhpcy5uYW1lLCB0aGlzLnZhbHVlKQogICAgICAgIH0pOwogICAgICAgIGVsc2UKICAgICAgICAgICAgZm9yIChuIGluIGUpIFB0KG4sIGVbbl0sIHQsIGkpOwogICAgICAgIHJldHVybiByLmpvaW4oIiYiKQogICAgfSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gY2UucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKQogICAgICAgIH0sCiAgICAgICAgc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGNlLnByb3AodGhpcywgImVsZW1lbnRzIik7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA/IGNlLm1ha2VBcnJheShlKSA6IHRoaXMKICAgICAgICAgICAgfSkuZmlsdGVyKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnR5cGU7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lICYmICFjZSh0aGlzKS5pcygiOmRpc2FibGVkIikgJiYgT3QudGVzdCh0aGlzLm5vZGVOYW1lKSAmJiAhSHQudGVzdChlKSAmJiAodGhpcy5jaGVja2VkIHx8ICF3ZS50ZXN0KGUpKQogICAgICAgICAgICB9KS5tYXAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBjZSh0aGlzKS52YWwoKTsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IG4gPyBudWxsIDogQXJyYXkuaXNBcnJheShuKSA/IGNlLm1hcChuLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdC5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZS5yZXBsYWNlKEx0LCAiXHJcbiIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkgOiB7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogdC5uYW1lLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLnJlcGxhY2UoTHQsICJcclxuIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuZ2V0KCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBNdCA9IC8lMjAvZywKICAgICAgICBSdCA9IC8jLiokLywKICAgICAgICBJdCA9IC8oWz8mXSlfPVteJl0qLywKICAgICAgICBXdCA9IC9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sCiAgICAgICAgRnQgPSAvXig/OkdFVHxIRUFEKSQvLAogICAgICAgICR0ID0gL15cL1wvLywKICAgICAgICBCdCA9IHt9LAogICAgICAgIF90ID0ge30sCiAgICAgICAgenQgPSAiKi8iLmNvbmNhdCgiKiIpLAogICAgICAgIFh0ID0gQy5jcmVhdGVFbGVtZW50KCJhIik7CgogICAgZnVuY3Rpb24gVXQobykgewogICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICJzdHJpbmciICE9IHR5cGVvZiBlICYmICh0ID0gZSwgZSA9ICIqIik7CiAgICAgICAgICAgIHZhciBuLCByID0gMCwKICAgICAgICAgICAgICAgIGkgPSBlLnRvTG93ZXJDYXNlKCkubWF0Y2goRCkgfHwgW107CiAgICAgICAgICAgIGlmICh2KHQpKQogICAgICAgICAgICAgICAgd2hpbGUgKG4gPSBpW3IrK10pICIrIiA9PT0gblswXSA/IChuID0gbi5zbGljZSgxKSB8fCAiKiIsIChvW25dID0gb1tuXSB8fCBbXSkudW5zaGlmdCh0KSkgOiAob1tuXSA9IG9bbl0gfHwgW10pLnB1c2godCkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gVnQodCwgaSwgbywgYSkgewogICAgICAgIHZhciBzID0ge30sCiAgICAgICAgICAgIHUgPSB0ID09PSBfdDsKCiAgICAgICAgZnVuY3Rpb24gbChlKSB7CiAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICByZXR1cm4gc1tlXSA9ICEwLCBjZS5lYWNoKHRbZV0gfHwgW10sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gdChpLCBvLCBhKTsKICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgbiB8fCB1IHx8IHNbbl0gPyB1ID8gIShyID0gbikgOiB2b2lkIDAgOiAoaS5kYXRhVHlwZXMudW5zaGlmdChuKSwgbChuKSwgITEpCiAgICAgICAgICAgIH0pLCByCiAgICAgICAgfQogICAgICAgIHJldHVybiBsKGkuZGF0YVR5cGVzWzBdKSB8fCAhc1siKiJdICYmIGwoIioiKQogICAgfQoKICAgIGZ1bmN0aW9uIEd0KGUsIHQpIHsKICAgICAgICB2YXIgbiwgciwgaSA9IGNlLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTsKICAgICAgICBmb3IgKG4gaW4gdCkgdm9pZCAwICE9PSB0W25dICYmICgoaVtuXSA/IGUgOiByIHx8IChyID0ge30pKVtuXSA9IHRbbl0pOwogICAgICAgIHJldHVybiByICYmIGNlLmV4dGVuZCghMCwgZSwgciksIGUKICAgIH0KICAgIFh0LmhyZWYgPSBFdC5ocmVmLCBjZS5leHRlbmQoewogICAgICAgIGFjdGl2ZTogMCwKICAgICAgICBsYXN0TW9kaWZpZWQ6IHt9LAogICAgICAgIGV0YWc6IHt9LAogICAgICAgIGFqYXhTZXR0aW5nczogewogICAgICAgICAgICB1cmw6IEV0LmhyZWYsCiAgICAgICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAgICBpc0xvY2FsOiAvXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLy50ZXN0KEV0LnByb3RvY29sKSwKICAgICAgICAgICAgZ2xvYmFsOiAhMCwKICAgICAgICAgICAgcHJvY2Vzc0RhdGE6ICEwLAogICAgICAgICAgICBhc3luYzogITAsCiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IiwKICAgICAgICAgICAgYWNjZXB0czogewogICAgICAgICAgICAgICAgIioiOiB6dCwKICAgICAgICAgICAgICAgIHRleHQ6ICJ0ZXh0L3BsYWluIiwKICAgICAgICAgICAgICAgIGh0bWw6ICJ0ZXh0L2h0bWwiLAogICAgICAgICAgICAgICAgeG1sOiAiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsCiAgICAgICAgICAgICAgICBqc29uOiAiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IgogICAgICAgICAgICB9LAogICAgICAgICAgICBjb250ZW50czogewogICAgICAgICAgICAgICAgeG1sOiAvXGJ4bWxcYi8sCiAgICAgICAgICAgICAgICBodG1sOiAvXGJodG1sLywKICAgICAgICAgICAgICAgIGpzb246IC9cYmpzb25cYi8KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVzcG9uc2VGaWVsZHM6IHsKICAgICAgICAgICAgICAgIHhtbDogInJlc3BvbnNlWE1MIiwKICAgICAgICAgICAgICAgIHRleHQ6ICJyZXNwb25zZVRleHQiLAogICAgICAgICAgICAgICAganNvbjogInJlc3BvbnNlSlNPTiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29udmVydGVyczogewogICAgICAgICAgICAgICAgIiogdGV4dCI6IFN0cmluZywKICAgICAgICAgICAgICAgICJ0ZXh0IGh0bWwiOiAhMCwKICAgICAgICAgICAgICAgICJ0ZXh0IGpzb24iOiBKU09OLnBhcnNlLAogICAgICAgICAgICAgICAgInRleHQgeG1sIjogY2UucGFyc2VYTUwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmxhdE9wdGlvbnM6IHsKICAgICAgICAgICAgICAgIHVybDogITAsCiAgICAgICAgICAgICAgICBjb250ZXh0OiAhMAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBhamF4U2V0dXA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQgPyBHdChHdChlLCBjZS5hamF4U2V0dGluZ3MpLCB0KSA6IEd0KGNlLmFqYXhTZXR0aW5ncywgZSkKICAgICAgICB9LAogICAgICAgIGFqYXhQcmVmaWx0ZXI6IFV0KEJ0KSwKICAgICAgICBhamF4VHJhbnNwb3J0OiBVdChfdCksCiAgICAgICAgYWpheDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAodCA9IGUsIGUgPSB2b2lkIDApLCB0ID0gdCB8fCB7fTsKICAgICAgICAgICAgdmFyIGMsIGYsIHAsIG4sIGQsIHIsIGgsIGcsIGksIG8sIHYgPSBjZS5hamF4U2V0dXAoe30sIHQpLAogICAgICAgICAgICAgICAgeSA9IHYuY29udGV4dCB8fCB2LAogICAgICAgICAgICAgICAgbSA9IHYuY29udGV4dCAmJiAoeS5ub2RlVHlwZSB8fCB5LmpxdWVyeSkgPyBjZSh5KSA6IGNlLmV2ZW50LAogICAgICAgICAgICAgICAgeCA9IGNlLkRlZmVycmVkKCksCiAgICAgICAgICAgICAgICBiID0gY2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLAogICAgICAgICAgICAgICAgdyA9IHYuc3RhdHVzQ29kZSB8fCB7fSwKICAgICAgICAgICAgICAgIGEgPSB7fSwKICAgICAgICAgICAgICAgIHMgPSB7fSwKICAgICAgICAgICAgICAgIHUgPSAiY2FuY2VsZWQiLAogICAgICAgICAgICAgICAgVCA9IHsKICAgICAgICAgICAgICAgICAgICByZWFkeVN0YXRlOiAwLAogICAgICAgICAgICAgICAgICAgIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ID0gV3QuZXhlYyhwKSkgblt0WzFdLnRvTG93ZXJDYXNlKCkgKyAiICJdID0gKG5bdFsxXS50b0xvd2VyQ2FzZSgpICsgIiAiXSB8fCBbXSkuY29uY2F0KHRbMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbltlLnRvTG93ZXJDYXNlKCkgKyAiICJdCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IG51bGwgOiB0LmpvaW4oIiwgIikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoID8gcCA6IG51bGwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gaCAmJiAoZSA9IHNbZS50b0xvd2VyQ2FzZSgpXSA9IHNbZS50b0xvd2VyQ2FzZSgpXSB8fCBlLCBhW2VdID0gdCksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gaCAmJiAodi5taW1lVHlwZSA9IGUpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoKSBULmFsd2F5cyhlW1Quc3RhdHVzXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIGUpIHdbdF0gPSBbd1t0XSwgZVt0XV07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgfHwgdTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMgJiYgYy5hYm9ydCh0KSwgbCgwLCB0KSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICh4LnByb21pc2UoVCksIHYudXJsID0gKChlIHx8IHYudXJsIHx8IEV0LmhyZWYpICsgIiIpLnJlcGxhY2UoJHQsIEV0LnByb3RvY29sICsgIi8vIiksIHYudHlwZSA9IHQubWV0aG9kIHx8IHQudHlwZSB8fCB2Lm1ldGhvZCB8fCB2LnR5cGUsIHYuZGF0YVR5cGVzID0gKHYuZGF0YVR5cGUgfHwgIioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEQpIHx8IFsiIl0sIG51bGwgPT0gdi5jcm9zc0RvbWFpbikgewogICAgICAgICAgICAgICAgciA9IEMuY3JlYXRlRWxlbWVudCgiYSIpOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByLmhyZWYgPSB2LnVybCwgci5ocmVmID0gci5ocmVmLCB2LmNyb3NzRG9tYWluID0gWHQucHJvdG9jb2wgKyAiLy8iICsgWHQuaG9zdCAhPSByLnByb3RvY29sICsgIi8vIiArIHIuaG9zdAogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgIHYuY3Jvc3NEb21haW4gPSAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh2LmRhdGEgJiYgdi5wcm9jZXNzRGF0YSAmJiAic3RyaW5nIiAhPSB0eXBlb2Ygdi5kYXRhICYmICh2LmRhdGEgPSBjZS5wYXJhbSh2LmRhdGEsIHYudHJhZGl0aW9uYWwpKSwgVnQoQnQsIHYsIHQsIFQpLCBoKSByZXR1cm4gVDsKICAgICAgICAgICAgZm9yIChpIGluIChnID0gY2UuZXZlbnQgJiYgdi5nbG9iYWwpICYmIDAgPT0gY2UuYWN0aXZlKysgJiYgY2UuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IiksIHYudHlwZSA9IHYudHlwZS50b1VwcGVyQ2FzZSgpLCB2Lmhhc0NvbnRlbnQgPSAhRnQudGVzdCh2LnR5cGUpLCBmID0gdi51cmwucmVwbGFjZShSdCwgIiIpLCB2Lmhhc0NvbnRlbnQgPyB2LmRhdGEgJiYgdi5wcm9jZXNzRGF0YSAmJiAwID09PSAodi5jb250ZW50VHlwZSB8fCAiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikgJiYgKHYuZGF0YSA9IHYuZGF0YS5yZXBsYWNlKE10LCAiKyIpKSA6IChvID0gdi51cmwuc2xpY2UoZi5sZW5ndGgpLCB2LmRhdGEgJiYgKHYucHJvY2Vzc0RhdGEgfHwgInN0cmluZyIgPT0gdHlwZW9mIHYuZGF0YSkgJiYgKGYgKz0gKEF0LnRlc3QoZikgPyAiJiIgOiAiPyIpICsgdi5kYXRhLCBkZWxldGUgdi5kYXRhKSwgITEgPT09IHYuY2FjaGUgJiYgKGYgPSBmLnJlcGxhY2UoSXQsICIkMSIpLCBvID0gKEF0LnRlc3QoZikgPyAiJiIgOiAiPyIpICsgIl89IiArIGp0Lmd1aWQrKyArIG8pLCB2LnVybCA9IGYgKyBvKSwgdi5pZk1vZGlmaWVkICYmIChjZS5sYXN0TW9kaWZpZWRbZl0gJiYgVC5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsIGNlLmxhc3RNb2RpZmllZFtmXSksIGNlLmV0YWdbZl0gJiYgVC5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwgY2UuZXRhZ1tmXSkpLCAodi5kYXRhICYmIHYuaGFzQ29udGVudCAmJiAhMSAhPT0gdi5jb250ZW50VHlwZSB8fCB0LmNvbnRlbnRUeXBlKSAmJiBULnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsIHYuY29udGVudFR5cGUpLCBULnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsIHYuZGF0YVR5cGVzWzBdICYmIHYuYWNjZXB0c1t2LmRhdGFUeXBlc1swXV0gPyB2LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dICsgKCIqIiAhPT0gdi5kYXRhVHlwZXNbMF0gPyAiLCAiICsgenQgKyAiOyBxPTAuMDEiIDogIiIpIDogdi5hY2NlcHRzWyIqIl0pLCB2LmhlYWRlcnMpIFQuc2V0UmVxdWVzdEhlYWRlcihpLCB2LmhlYWRlcnNbaV0pOwogICAgICAgICAgICBpZiAodi5iZWZvcmVTZW5kICYmICghMSA9PT0gdi5iZWZvcmVTZW5kLmNhbGwoeSwgVCwgdikgfHwgaCkpIHJldHVybiBULmFib3J0KCk7CiAgICAgICAgICAgIGlmICh1ID0gImFib3J0IiwgYi5hZGQodi5jb21wbGV0ZSksIFQuZG9uZSh2LnN1Y2Nlc3MpLCBULmZhaWwodi5lcnJvciksIGMgPSBWdChfdCwgdiwgdCwgVCkpIHsKICAgICAgICAgICAgICAgIGlmIChULnJlYWR5U3RhdGUgPSAxLCBnICYmIG0udHJpZ2dlcigiYWpheFNlbmQiLCBbVCwgdl0pLCBoKSByZXR1cm4gVDsKICAgICAgICAgICAgICAgIHYuYXN5bmMgJiYgMCA8IHYudGltZW91dCAmJiAoZCA9IGllLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgVC5hYm9ydCgidGltZW91dCIpCiAgICAgICAgICAgICAgICB9LCB2LnRpbWVvdXQpKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgaCA9ICExLCBjLnNlbmQoYSwgbCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaCkgdGhyb3cgZTsKICAgICAgICAgICAgICAgICAgICBsKC0xLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgbCgtMSwgIk5vIFRyYW5zcG9ydCIpOwoKICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgbywgYSwgcywgdSwgbCA9IHQ7CiAgICAgICAgICAgICAgICBoIHx8IChoID0gITAsIGQgJiYgaWUuY2xlYXJUaW1lb3V0KGQpLCBjID0gdm9pZCAwLCBwID0gciB8fCAiIiwgVC5yZWFkeVN0YXRlID0gMCA8IGUgPyA0IDogMCwgaSA9IDIwMCA8PSBlICYmIGUgPCAzMDAgfHwgMzA0ID09PSBlLCBuICYmIChzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciByLCBpLCBvLCBhLCBzID0gZS5jb250ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGUuZGF0YVR5cGVzOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgiKiIgPT09IHVbMF0pIHUuc2hpZnQoKSwgdm9pZCAwID09PSByICYmIChyID0gZS5taW1lVHlwZSB8fCB0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSBpbiBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNbaV0gJiYgc1tpXS50ZXN0KHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS51bnNoaWZ0KGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHVbMF0gaW4gbikgbyA9IHVbMF07CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSBpbiBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVbMF0gfHwgZS5jb252ZXJ0ZXJzW2kgKyAiICIgKyB1WzBdXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHx8IChhID0gaSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBvID0gbyB8fCBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChvKSByZXR1cm4gbyAhPT0gdVswXSAmJiB1LnVuc2hpZnQobyksIG5bb10KICAgICAgICAgICAgICAgIH0odiwgVCwgbikpLCAhaSAmJiAtMSA8IGNlLmluQXJyYXkoInNjcmlwdCIsIHYuZGF0YVR5cGVzKSAmJiBjZS5pbkFycmF5KCJqc29uIiwgdi5kYXRhVHlwZXMpIDwgMCAmJiAodi5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdID0gZnVuY3Rpb24oKSB7fSksIHMgPSBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIG8sIGEsIHMsIHUsIGwgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUuZGF0YVR5cGVzLnNsaWNlKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNbMV0pCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSBpbiBlLmNvbnZlcnRlcnMpIGxbYS50b0xvd2VyQ2FzZSgpXSA9IGUuY29udmVydGVyc1thXTsKICAgICAgICAgICAgICAgICAgICBvID0gYy5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChvKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5yZXNwb25zZUZpZWxkc1tvXSAmJiAobltlLnJlc3BvbnNlRmllbGRzW29dXSA9IHQpLCAhdSAmJiByICYmIGUuZGF0YUZpbHRlciAmJiAodCA9IGUuZGF0YUZpbHRlcih0LCBlLmRhdGFUeXBlKSksIHUgPSBvLCBvID0gYy5zaGlmdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIqIiA9PT0gbykgbyA9IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgiKiIgIT09IHUgJiYgdSAhPT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShhID0gbFt1ICsgIiAiICsgb10gfHwgbFsiKiAiICsgb10pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzID0gaS5zcGxpdCgiICIpKVsxXSA9PT0gbyAmJiAoYSA9IGxbdSArICIgIiArIHNbMF1dIHx8IGxbIiogIiArIHNbMF1dKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhMCA9PT0gYSA/IGEgPSBsW2ldIDogITAgIT09IGxbaV0gJiYgKG8gPSBzWzBdLCBjLnVuc2hpZnQoc1sxXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEwICE9PSBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgJiYgZVsidGhyb3dzIl0pIHQgPSBhKHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBhKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6ICJwYXJzZXJlcnJvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBhID8gZSA6ICJObyBjb252ZXJzaW9uIGZyb20gIiArIHUgKyAiIHRvICIgKyBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogInN1Y2Nlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSh2LCBzLCBULCBpKSwgaSA/ICh2LmlmTW9kaWZpZWQgJiYgKCh1ID0gVC5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKSAmJiAoY2UubGFzdE1vZGlmaWVkW2ZdID0gdSksICh1ID0gVC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSAmJiAoY2UuZXRhZ1tmXSA9IHUpKSwgMjA0ID09PSBlIHx8ICJIRUFEIiA9PT0gdi50eXBlID8gbCA9ICJub2NvbnRlbnQiIDogMzA0ID09PSBlID8gbCA9ICJub3Rtb2RpZmllZCIgOiAobCA9IHMuc3RhdGUsIG8gPSBzLmRhdGEsIGkgPSAhKGEgPSBzLmVycm9yKSkpIDogKGEgPSBsLCAhZSAmJiBsIHx8IChsID0gImVycm9yIiwgZSA8IDAgJiYgKGUgPSAwKSkpLCBULnN0YXR1cyA9IGUsIFQuc3RhdHVzVGV4dCA9ICh0IHx8IGwpICsgIiIsIGkgPyB4LnJlc29sdmVXaXRoKHksIFtvLCBsLCBUXSkgOiB4LnJlamVjdFdpdGgoeSwgW1QsIGwsIGFdKSwgVC5zdGF0dXNDb2RlKHcpLCB3ID0gdm9pZCAwLCBnICYmIG0udHJpZ2dlcihpID8gImFqYXhTdWNjZXNzIiA6ICJhamF4RXJyb3IiLCBbVCwgdiwgaSA/IG8gOiBhXSksIGIuZmlyZVdpdGgoeSwgW1QsIGxdKSwgZyAmJiAobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLCBbVCwgdl0pLCAtLWNlLmFjdGl2ZSB8fCBjZS5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gVAogICAgICAgIH0sCiAgICAgICAgZ2V0SlNPTjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gY2UuZ2V0KGUsIHQsIG4sICJqc29uIikKICAgICAgICB9LAogICAgICAgIGdldFNjcmlwdDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gY2UuZ2V0KGUsIHZvaWQgMCwgdCwgInNjcmlwdCIpCiAgICAgICAgfQogICAgfSksIGNlLmVhY2goWyJnZXQiLCAicG9zdCJdLCBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgY2VbaV0gPSBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgIHJldHVybiB2KHQpICYmIChyID0gciB8fCBuLCBuID0gdCwgdCA9IHZvaWQgMCksIGNlLmFqYXgoY2UuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIHVybDogZSwKICAgICAgICAgICAgICAgIHR5cGU6IGksCiAgICAgICAgICAgICAgICBkYXRhVHlwZTogciwKICAgICAgICAgICAgICAgIGRhdGE6IHQsCiAgICAgICAgICAgICAgICBzdWNjZXNzOiBuCiAgICAgICAgICAgIH0sIGNlLmlzUGxhaW5PYmplY3QoZSkgJiYgZSkpCiAgICAgICAgfQogICAgfSksIGNlLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSkgewogICAgICAgIHZhciB0OwogICAgICAgIGZvciAodCBpbiBlLmhlYWRlcnMpICJjb250ZW50LXR5cGUiID09PSB0LnRvTG93ZXJDYXNlKCkgJiYgKGUuY29udGVudFR5cGUgPSBlLmhlYWRlcnNbdF0gfHwgIiIpCiAgICB9KSwgY2UuX2V2YWxVcmwgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgcmV0dXJuIGNlLmFqYXgoewogICAgICAgICAgICB1cmw6IGUsCiAgICAgICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCiAgICAgICAgICAgIGNhY2hlOiAhMCwKICAgICAgICAgICAgYXN5bmM6ICExLAogICAgICAgICAgICBnbG9iYWw6ICExLAogICAgICAgICAgICBjb252ZXJ0ZXJzOiB7CiAgICAgICAgICAgICAgICAidGV4dCBzY3JpcHQiOiBmdW5jdGlvbigpIHt9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRhdGFGaWx0ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNlLmdsb2JhbEV2YWwoZSwgdCwgbikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBjZS5mbi5leHRlbmQoewogICAgICAgIHdyYXBBbGw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgIHJldHVybiB0aGlzWzBdICYmICh2KGUpICYmIChlID0gZS5jYWxsKHRoaXNbMF0pKSwgdCA9IGNlKGUsIHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLCB0aGlzWzBdLnBhcmVudE5vZGUgJiYgdC5pbnNlcnRCZWZvcmUodGhpc1swXSksIHQubWFwKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgd2hpbGUgKGUuZmlyc3RFbGVtZW50Q2hpbGQpIGUgPSBlLmZpcnN0RWxlbWVudENoaWxkOwogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfSkuYXBwZW5kKHRoaXMpKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgd3JhcElubmVyOiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgIHJldHVybiB2KG4pID8gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNlKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcywgZSkpCiAgICAgICAgICAgIH0pIDogdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBjZSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICB0ID0gZS5jb250ZW50cygpOwogICAgICAgICAgICAgICAgdC5sZW5ndGggPyB0LndyYXBBbGwobikgOiBlLmFwcGVuZChuKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgd3JhcDogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgbiA9IHYodCk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgY2UodGhpcykud3JhcEFsbChuID8gdC5jYWxsKHRoaXMsIGUpIDogdCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIHVud3JhcDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQoZSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNlKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2RlcykKICAgICAgICAgICAgfSksIHRoaXMKICAgICAgICB9CiAgICB9KSwgY2UuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gIWNlLmV4cHIucHNldWRvcy52aXNpYmxlKGUpCiAgICB9LCBjZS5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gISEoZS5vZmZzZXRXaWR0aCB8fCBlLm9mZnNldEhlaWdodCB8fCBlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKQogICAgfSwgY2UuYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgaWUuWE1MSHR0cFJlcXVlc3QKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgfTsKICAgIHZhciBZdCA9IHsKICAgICAgICAgICAgMDogMjAwLAogICAgICAgICAgICAxMjIzOiAyMDQKICAgICAgICB9LAogICAgICAgIFF0ID0gY2UuYWpheFNldHRpbmdzLnhocigpOwogICAgbGUuY29ycyA9ICEhUXQgJiYgIndpdGhDcmVkZW50aWFscyIgaW4gUXQsIGxlLmFqYXggPSBRdCA9ICEhUXQsIGNlLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oaSkgewogICAgICAgIHZhciBvLCBhOwogICAgICAgIGlmIChsZS5jb3JzIHx8IFF0ICYmICFpLmNyb3NzRG9tYWluKSByZXR1cm4gewogICAgICAgICAgICBzZW5kOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiwgciA9IGkueGhyKCk7CiAgICAgICAgICAgICAgICBpZiAoci5vcGVuKGkudHlwZSwgaS51cmwsIGkuYXN5bmMsIGkudXNlcm5hbWUsIGkucGFzc3dvcmQpLCBpLnhockZpZWxkcykKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gaW4gaS54aHJGaWVsZHMpIHJbbl0gPSBpLnhockZpZWxkc1tuXTsKICAgICAgICAgICAgICAgIGZvciAobiBpbiBpLm1pbWVUeXBlICYmIHIub3ZlcnJpZGVNaW1lVHlwZSAmJiByLm92ZXJyaWRlTWltZVR5cGUoaS5taW1lVHlwZSksIGkuY3Jvc3NEb21haW4gfHwgZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdIHx8IChlWyJYLVJlcXVlc3RlZC1XaXRoIl0gPSAiWE1MSHR0cFJlcXVlc3QiKSwgZSkgci5zZXRSZXF1ZXN0SGVhZGVyKG4sIGVbbl0pOwogICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gJiYgKG8gPSBhID0gci5vbmxvYWQgPSByLm9uZXJyb3IgPSByLm9uYWJvcnQgPSByLm9udGltZW91dCA9IHIub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbCwgImFib3J0IiA9PT0gZSA/IHIuYWJvcnQoKSA6ICJlcnJvciIgPT09IGUgPyAibnVtYmVyIiAhPSB0eXBlb2Ygci5zdGF0dXMgPyB0KDAsICJlcnJvciIpIDogdChyLnN0YXR1cywgci5zdGF0dXNUZXh0KSA6IHQoWXRbci5zdGF0dXNdIHx8IHIuc3RhdHVzLCByLnN0YXR1c1RleHQsICJ0ZXh0IiAhPT0gKHIucmVzcG9uc2VUeXBlIHx8ICJ0ZXh0IikgfHwgInN0cmluZyIgIT0gdHlwZW9mIHIucmVzcG9uc2VUZXh0ID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5OiByLnJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiByLnJlc3BvbnNlVGV4dAogICAgICAgICAgICAgICAgICAgICAgICB9LCByLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCByLm9ubG9hZCA9IG8oKSwgYSA9IHIub25lcnJvciA9IHIub250aW1lb3V0ID0gbygiZXJyb3IiKSwgdm9pZCAwICE9PSByLm9uYWJvcnQgPyByLm9uYWJvcnQgPSBhIDogci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICA0ID09PSByLnJlYWR5U3RhdGUgJiYgaWUuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbyAmJiBhKCkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwgbyA9IG8oImFib3J0Iik7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHIuc2VuZChpLmhhc0NvbnRlbnQgJiYgaS5kYXRhIHx8IG51bGwpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbyAmJiBvKCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCBjZS5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLmNyb3NzRG9tYWluICYmIChlLmNvbnRlbnRzLnNjcmlwdCA9ICExKQogICAgfSksIGNlLmFqYXhTZXR1cCh7CiAgICAgICAgYWNjZXB0czogewogICAgICAgICAgICBzY3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCIKICAgICAgICB9LAogICAgICAgIGNvbnRlbnRzOiB7CiAgICAgICAgICAgIHNjcmlwdDogL1xiKD86amF2YXxlY21hKXNjcmlwdFxiLwogICAgICAgIH0sCiAgICAgICAgY29udmVydGVyczogewogICAgICAgICAgICAidGV4dCBzY3JpcHQiOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY2UuZ2xvYmFsRXZhbChlKSwgZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSksIGNlLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2b2lkIDAgPT09IGUuY2FjaGUgJiYgKGUuY2FjaGUgPSAhMSksIGUuY3Jvc3NEb21haW4gJiYgKGUudHlwZSA9ICJHRVQiKQogICAgfSksIGNlLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsIGZ1bmN0aW9uKG4pIHsKICAgICAgICB2YXIgciwgaTsKICAgICAgICBpZiAobi5jcm9zc0RvbWFpbiB8fCBuLnNjcmlwdEF0dHJzKSByZXR1cm4gewogICAgICAgICAgICBzZW5kOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByID0gY2UoIjxzY3JpcHQ+IikuYXR0cihuLnNjcmlwdEF0dHJzIHx8IHt9KS5wcm9wKHsKICAgICAgICAgICAgICAgICAgICBjaGFyc2V0OiBuLnNjcmlwdENoYXJzZXQsCiAgICAgICAgICAgICAgICAgICAgc3JjOiBuLnVybAogICAgICAgICAgICAgICAgfSkub24oImxvYWQgZXJyb3IiLCBpID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHIucmVtb3ZlKCksIGkgPSBudWxsLCBlICYmIHQoImVycm9yIiA9PT0gZS50eXBlID8gNDA0IDogMjAwLCBlLnR5cGUpCiAgICAgICAgICAgICAgICB9KSwgQy5oZWFkLmFwcGVuZENoaWxkKHJbMF0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkgJiYgaSgpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHZhciBKdCwgS3QgPSBbXSwKICAgICAgICBadCA9IC8oPSlcPyg/PSZ8JCl8XD9cPy87CiAgICBjZS5hamF4U2V0dXAoewogICAgICAgIGpzb25wOiAiY2FsbGJhY2siLAogICAgICAgIGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IEt0LnBvcCgpIHx8IGNlLmV4cGFuZG8gKyAiXyIgKyBqdC5ndWlkKys7CiAgICAgICAgICAgIHJldHVybiB0aGlzW2VdID0gITAsIGUKICAgICAgICB9CiAgICB9KSwgY2UuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICB2YXIgciwgaSwgbywgYSA9ICExICE9PSBlLmpzb25wICYmIChadC50ZXN0KGUudXJsKSA/ICJ1cmwiIDogInN0cmluZyIgPT0gdHlwZW9mIGUuZGF0YSAmJiAwID09PSAoZS5jb250ZW50VHlwZSB8fCAiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikgJiYgWnQudGVzdChlLmRhdGEpICYmICJkYXRhIik7CiAgICAgICAgaWYgKGEgfHwgImpzb25wIiA9PT0gZS5kYXRhVHlwZXNbMF0pIHJldHVybiByID0gZS5qc29ucENhbGxiYWNrID0gdihlLmpzb25wQ2FsbGJhY2spID8gZS5qc29ucENhbGxiYWNrKCkgOiBlLmpzb25wQ2FsbGJhY2ssIGEgPyBlW2FdID0gZVthXS5yZXBsYWNlKFp0LCAiJDEiICsgcikgOiAhMSAhPT0gZS5qc29ucCAmJiAoZS51cmwgKz0gKEF0LnRlc3QoZS51cmwpID8gIiYiIDogIj8iKSArIGUuanNvbnAgKyAiPSIgKyByKSwgZS5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBvIHx8IGNlLmVycm9yKHIgKyAiIHdhcyBub3QgY2FsbGVkIiksIG9bMF0KICAgICAgICB9LCBlLmRhdGFUeXBlc1swXSA9ICJqc29uIiwgaSA9IGllW3JdLCBpZVtyXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBvID0gYXJndW1lbnRzCiAgICAgICAgfSwgbi5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gaSA/IGNlKGllKS5yZW1vdmVQcm9wKHIpIDogaWVbcl0gPSBpLCBlW3JdICYmIChlLmpzb25wQ2FsbGJhY2sgPSB0Lmpzb25wQ2FsbGJhY2ssIEt0LnB1c2gocikpLCBvICYmIHYoaSkgJiYgaShvWzBdKSwgbyA9IGkgPSB2b2lkIDAKICAgICAgICB9KSwgInNjcmlwdCIKICAgIH0pLCBsZS5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoKEp0ID0gQy5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTCA9ICI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsIDIgPT09IEp0LmNoaWxkTm9kZXMubGVuZ3RoKSwgY2UucGFyc2VIVE1MID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgZSA/IFtdIDogKCJib29sZWFuIiA9PSB0eXBlb2YgdCAmJiAobiA9IHQsIHQgPSAhMSksIHQgfHwgKGxlLmNyZWF0ZUhUTUxEb2N1bWVudCA/ICgociA9ICh0ID0gQy5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpKS5jcmVhdGVFbGVtZW50KCJiYXNlIikpLmhyZWYgPSBDLmxvY2F0aW9uLmhyZWYsIHQuaGVhZC5hcHBlbmRDaGlsZChyKSkgOiB0ID0gQyksIG8gPSAhbiAmJiBbXSwgKGkgPSB3LmV4ZWMoZSkpID8gW3QuY3JlYXRlRWxlbWVudChpWzFdKV0gOiAoaSA9IEFlKFtlXSwgdCwgbyksIG8gJiYgby5sZW5ndGggJiYgY2UobykucmVtb3ZlKCksIGNlLm1lcmdlKFtdLCBpLmNoaWxkTm9kZXMpKSk7CiAgICAgICAgdmFyIHIsIGksIG8KICAgIH0sIGNlLmZuLmxvYWQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgdmFyIHIsIGksIG8sIGEgPSB0aGlzLAogICAgICAgICAgICBzID0gZS5pbmRleE9mKCIgIik7CiAgICAgICAgcmV0dXJuIC0xIDwgcyAmJiAociA9IFR0KGUuc2xpY2UocykpLCBlID0gZS5zbGljZSgwLCBzKSksIHYodCkgPyAobiA9IHQsIHQgPSB2b2lkIDApIDogdCAmJiAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiAoaSA9ICJQT1NUIiksIDAgPCBhLmxlbmd0aCAmJiBjZS5hamF4KHsKICAgICAgICAgICAgdXJsOiBlLAogICAgICAgICAgICB0eXBlOiBpIHx8ICJHRVQiLAogICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiLAogICAgICAgICAgICBkYXRhOiB0CiAgICAgICAgfSkuZG9uZShmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIG8gPSBhcmd1bWVudHMsIGEuaHRtbChyID8gY2UoIjxkaXY+IikuYXBwZW5kKGNlLnBhcnNlSFRNTChlKSkuZmluZChyKSA6IGUpCiAgICAgICAgfSkuYWx3YXlzKG4gJiYgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBhLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuLmFwcGx5KHRoaXMsIG8gfHwgW2UucmVzcG9uc2VUZXh0LCB0LCBlXSkKICAgICAgICAgICAgfSkKICAgICAgICB9KSwgdGhpcwogICAgfSwgY2UuZXhwci5wc2V1ZG9zLmFuaW1hdGVkID0gZnVuY3Rpb24odCkgewogICAgICAgIHJldHVybiBjZS5ncmVwKGNlLnRpbWVycywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdCA9PT0gZS5lbGVtCiAgICAgICAgfSkubGVuZ3RoCiAgICB9LCBjZS5vZmZzZXQgPSB7CiAgICAgICAgc2V0T2Zmc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCBvLCBhLCBzLCB1LCBsID0gY2UuY3NzKGUsICJwb3NpdGlvbiIpLAogICAgICAgICAgICAgICAgYyA9IGNlKGUpLAogICAgICAgICAgICAgICAgZiA9IHt9OwogICAgICAgICAgICAic3RhdGljIiA9PT0gbCAmJiAoZS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSIpLCBzID0gYy5vZmZzZXQoKSwgbyA9IGNlLmNzcyhlLCAidG9wIiksIHUgPSBjZS5jc3MoZSwgImxlZnQiKSwgKCJhYnNvbHV0ZSIgPT09IGwgfHwgImZpeGVkIiA9PT0gbCkgJiYgLTEgPCAobyArIHUpLmluZGV4T2YoImF1dG8iKSA/IChhID0gKHIgPSBjLnBvc2l0aW9uKCkpLnRvcCwgaSA9IHIubGVmdCkgOiAoYSA9IHBhcnNlRmxvYXQobykgfHwgMCwgaSA9IHBhcnNlRmxvYXQodSkgfHwgMCksIHYodCkgJiYgKHQgPSB0LmNhbGwoZSwgbiwgY2UuZXh0ZW5kKHt9LCBzKSkpLCBudWxsICE9IHQudG9wICYmIChmLnRvcCA9IHQudG9wIC0gcy50b3AgKyBhKSwgbnVsbCAhPSB0LmxlZnQgJiYgKGYubGVmdCA9IHQubGVmdCAtIHMubGVmdCArIGkpLCAidXNpbmciIGluIHQgPyB0LnVzaW5nLmNhbGwoZSwgZikgOiBjLmNzcyhmKQogICAgICAgIH0KICAgIH0sIGNlLmZuLmV4dGVuZCh7CiAgICAgICAgb2Zmc2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdm9pZCAwID09PSB0ID8gdGhpcyA6IHRoaXMuZWFjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjZS5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsIHQsIGUpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgZSwgbiwgciA9IHRoaXNbMF07CiAgICAgICAgICAgIHJldHVybiByID8gci5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCA/IChlID0gci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgbiA9IHIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldywgewogICAgICAgICAgICAgICAgdG9wOiBlLnRvcCArIG4ucGFnZVlPZmZzZXQsCiAgICAgICAgICAgICAgICBsZWZ0OiBlLmxlZnQgKyBuLnBhZ2VYT2Zmc2V0CiAgICAgICAgICAgIH0pIDogewogICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgbGVmdDogMAogICAgICAgICAgICB9IDogdm9pZCAwCiAgICAgICAgfSwKICAgICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh0aGlzWzBdKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiwgciA9IHRoaXNbMF0sCiAgICAgICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGlmICgiZml4ZWQiID09PSBjZS5jc3MociwgInBvc2l0aW9uIikpIHQgPSByLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMub2Zmc2V0KCksIG4gPSByLm93bmVyRG9jdW1lbnQsIGUgPSByLm9mZnNldFBhcmVudCB8fCBuLmRvY3VtZW50RWxlbWVudDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZSAmJiAoZSA9PT0gbi5ib2R5IHx8IGUgPT09IG4uZG9jdW1lbnRFbGVtZW50KSAmJiAic3RhdGljIiA9PT0gY2UuY3NzKGUsICJwb3NpdGlvbiIpKSBlID0gZS5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgIGUgJiYgZSAhPT0gciAmJiAxID09PSBlLm5vZGVUeXBlICYmICgoaSA9IGNlKGUpLm9mZnNldCgpKS50b3AgKz0gY2UuY3NzKGUsICJib3JkZXJUb3BXaWR0aCIsICEwKSwgaS5sZWZ0ICs9IGNlLmNzcyhlLCAiYm9yZGVyTGVmdFdpZHRoIiwgITApKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB0b3A6IHQudG9wIC0gaS50b3AgLSBjZS5jc3MociwgIm1hcmdpblRvcCIsICEwKSwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0LmxlZnQgLSBpLmxlZnQgLSBjZS5jc3MociwgIm1hcmdpbkxlZnQiLCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgb2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9mZnNldFBhcmVudDsKICAgICAgICAgICAgICAgIHdoaWxlIChlICYmICJzdGF0aWMiID09PSBjZS5jc3MoZSwgInBvc2l0aW9uIikpIGUgPSBlLm9mZnNldFBhcmVudDsKICAgICAgICAgICAgICAgIHJldHVybiBlIHx8IEoKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgY2UuZWFjaCh7CiAgICAgICAgc2Nyb2xsTGVmdDogInBhZ2VYT2Zmc2V0IiwKICAgICAgICBzY3JvbGxUb3A6ICJwYWdlWU9mZnNldCIKICAgIH0sIGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICB2YXIgbyA9ICJwYWdlWU9mZnNldCIgPT09IGk7CiAgICAgICAgY2UuZm5bdF0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBNKHRoaXMsIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgaWYgKHkoZSkgPyByID0gZSA6IDkgPT09IGUubm9kZVR5cGUgJiYgKHIgPSBlLmRlZmF1bHRWaWV3KSwgdm9pZCAwID09PSBuKSByZXR1cm4gciA/IHJbaV0gOiBlW3RdOwogICAgICAgICAgICAgICAgciA/IHIuc2Nyb2xsVG8obyA/IHIucGFnZVhPZmZzZXQgOiBuLCBvID8gbiA6IHIucGFnZVlPZmZzZXQpIDogZVt0XSA9IG4KICAgICAgICAgICAgfSwgdCwgZSwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICB9CiAgICB9KSwgY2UuZWFjaChbInRvcCIsICJsZWZ0Il0sIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICBjZS5jc3NIb29rc1tuXSA9IFllKGxlLnBpeGVsUG9zaXRpb24sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaWYgKHQpIHJldHVybiB0ID0gR2UoZSwgbiksIF9lLnRlc3QodCkgPyBjZShlKS5wb3NpdGlvbigpW25dICsgInB4IiA6IHQKICAgICAgICB9KQogICAgfSksIGNlLmVhY2goewogICAgICAgIEhlaWdodDogImhlaWdodCIsCiAgICAgICAgV2lkdGg6ICJ3aWR0aCIKICAgIH0sIGZ1bmN0aW9uKGEsIHMpIHsKICAgICAgICBjZS5lYWNoKHsKICAgICAgICAgICAgcGFkZGluZzogImlubmVyIiArIGEsCiAgICAgICAgICAgIGNvbnRlbnQ6IHMsCiAgICAgICAgICAgICIiOiAib3V0ZXIiICsgYQogICAgICAgIH0sIGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgY2UuZm5bb10gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKHIgfHwgImJvb2xlYW4iICE9IHR5cGVvZiBlKSwKICAgICAgICAgICAgICAgICAgICBpID0gciB8fCAoITAgPT09IGUgfHwgITAgPT09IHQgPyAibWFyZ2luIiA6ICJib3JkZXIiKTsKICAgICAgICAgICAgICAgIHJldHVybiBNKHRoaXMsIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geShlKSA/IDAgPT09IG8uaW5kZXhPZigib3V0ZXIiKSA/IGVbImlubmVyIiArIGFdIDogZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIgKyBhXSA6IDkgPT09IGUubm9kZVR5cGUgPyAociA9IGUuZG9jdW1lbnRFbGVtZW50LCBNYXRoLm1heChlLmJvZHlbInNjcm9sbCIgKyBhXSwgclsic2Nyb2xsIiArIGFdLCBlLmJvZHlbIm9mZnNldCIgKyBhXSwgclsib2Zmc2V0IiArIGFdLCByWyJjbGllbnQiICsgYV0pKSA6IHZvaWQgMCA9PT0gbiA/IGNlLmNzcyhlLCB0LCBpKSA6IGNlLnN0eWxlKGUsIHQsIG4sIGkpCiAgICAgICAgICAgICAgICB9LCBzLCBuID8gZSA6IHZvaWQgMCwgbikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9KSwgY2UuZWFjaChbImFqYXhTdGFydCIsICJhamF4U3RvcCIsICJhamF4Q29tcGxldGUiLCAiYWpheEVycm9yIiwgImFqYXhTdWNjZXNzIiwgImFqYXhTZW5kIl0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICBjZS5mblt0XSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub24odCwgZSkKICAgICAgICB9CiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBiaW5kOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKGUsIG51bGwsIHQsIG4pCiAgICAgICAgfSwKICAgICAgICB1bmJpbmQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub2ZmKGUsIG51bGwsIHQpCiAgICAgICAgfSwKICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vbih0LCBlLCBuLCByKQogICAgICAgIH0sCiAgICAgICAgdW5kZWxlZ2F0ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gMSA9PT0gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub2ZmKGUsICIqKiIpIDogdGhpcy5vZmYodCwgZSB8fCAiKioiLCBuKQogICAgICAgIH0sCiAgICAgICAgaG92ZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub24oIm1vdXNlZW50ZXIiLCBlKS5vbigibW91c2VsZWF2ZSIsIHQgfHwgZSkKICAgICAgICB9CiAgICB9KSwgY2UuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oZSwgbikgewogICAgICAgIGNlLmZuW25dID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gMCA8IGFyZ3VtZW50cy5sZW5ndGggPyB0aGlzLm9uKG4sIG51bGwsIGUsIHQpIDogdGhpcy50cmlnZ2VyKG4pCiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgZW4gPSAvXltcc1x1RkVGRlx4QTBdK3woW15cc1x1RkVGRlx4QTBdKVtcc1x1RkVGRlx4QTBdKyQvZzsKICAgIGNlLnByb3h5ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHZhciBuLCByLCBpOwogICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAobiA9IGVbdF0sIHQgPSBlLCBlID0gbiksIHYoZSkpIHJldHVybiByID0gYWUuY2FsbChhcmd1bWVudHMsIDIpLCAoaSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZS5hcHBseSh0IHx8IHRoaXMsIHIuY29uY2F0KGFlLmNhbGwoYXJndW1lbnRzKSkpCiAgICAgICAgfSkuZ3VpZCA9IGUuZ3VpZCA9IGUuZ3VpZCB8fCBjZS5ndWlkKyssIGkKICAgIH0sIGNlLmhvbGRSZWFkeSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICBlID8gY2UucmVhZHlXYWl0KysgOiBjZS5yZWFkeSghMCkKICAgIH0sIGNlLmlzQXJyYXkgPSBBcnJheS5pc0FycmF5LCBjZS5wYXJzZUpTT04gPSBKU09OLnBhcnNlLCBjZS5ub2RlTmFtZSA9IGZlLCBjZS5pc0Z1bmN0aW9uID0gdiwgY2UuaXNXaW5kb3cgPSB5LCBjZS5jYW1lbENhc2UgPSBGLCBjZS50eXBlID0geCwgY2Uubm93ID0gRGF0ZS5ub3csIGNlLmlzTnVtZXJpYyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IGNlLnR5cGUoZSk7CiAgICAgICAgcmV0dXJuICgibnVtYmVyIiA9PT0gdCB8fCAic3RyaW5nIiA9PT0gdCkgJiYgIWlzTmFOKGUgLSBwYXJzZUZsb2F0KGUpKQogICAgfSwgY2UudHJpbSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gIiIgOiAoZSArICIiKS5yZXBsYWNlKGVuLCAiJDEiKQogICAgfSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgJiYgZGVmaW5lKCJqcXVlcnkiLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGNlCiAgICB9KTsKICAgIHZhciB0biA9IGllLmpRdWVyeSwKICAgICAgICBubiA9IGllLiQ7CiAgICByZXR1cm4gY2Uubm9Db25mbGljdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gaWUuJCA9PT0gY2UgJiYgKGllLiQgPSBubiksIGUgJiYgaWUualF1ZXJ5ID09PSBjZSAmJiAoaWUualF1ZXJ5ID0gdG4pLCBjZQogICAgfSwgInVuZGVmaW5lZCIgPT0gdHlwZW9mIGUgJiYgKGllLmpRdWVyeSA9IGllLiQgPSBjZSksIGNlCn0pOwpqUXVlcnkubm9Db25mbGljdCgpOw=="}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/escape-html.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.032Z","timestamp":1785130090032,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-includes/js/dist/escape-html.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=5o%2BfW74imhebc18F%2BGObiYaYkrHyOqUSNAgdptEDQ9YGqenrF%2FIJmgEHH3VuxQ3XDO4ISO8L7zRrSPerNQIarD2fqyqiiBhRyAhfJEM3uogwm9zvy%2BcmtYHEszwbEPl0lmxlNKvbIg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36be4d120a-OSL\r\ncontent-length: 571\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":1877,"size_decoded":1398,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text","md5":"294bc84cb3f98ab80432ece83c986b1e","sha1":"67e8ae3654d1c5a239fc1a9d9fb330f3a59f38f0","sha256":"14866c1ad29241fe3acec49aedbdf86ab557747c036fdd5849d5783cc0839098","sha512":"12c4bf0025a50bcdc3bc02f1a16e7a76e3bb11870d3cae6faedb0e9041672de7afb8b29fbd5dc7049cf061480c185ba5bb2a4bea55dbcf34c0198c0de84bf8ce","ssdeep":"","tlshash":"ea41368dbcf270505207f179841f9419b23d869b18ad6e50be4c62a26f3243d42f5bde","first_seen":"2026-07-27T04:11:05.743683Z","last_seen":"2026-07-27T05:30:59.78272Z","times_seen":3,"resource_available":true,"data":"LyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLwohZnVuY3Rpb24oKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgZSA9IHsKICAgICAgICBkOiBmdW5jdGlvbihuLCB0KSB7CiAgICAgICAgICAgIGZvciAodmFyIHIgaW4gdCkKICAgICAgICAgICAgICAgIGUubyh0LCByKSAmJiAhZS5vKG4sIHIpICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCByLCB7CiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgZ2V0OiB0W3JdCiAgICAgICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgbzogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIG4pCiAgICAgICAgfSwKICAgICAgICByOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBTeW1ib2wgJiYgU3ltYm9sLnRvU3RyaW5nVGFnICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAiTW9kdWxlIgogICAgICAgICAgICB9KSwKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfQogICAgICAsIG4gPSB7fTsKICAgIGUucihuKSwKICAgIGUuZChuLCB7CiAgICAgICAgZXNjYXBlQW1wZXJzYW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9LAogICAgICAgIGVzY2FwZUF0dHJpYnV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgfSwKICAgICAgICBlc2NhcGVFZGl0YWJsZUhUTUw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gYQogICAgICAgIH0sCiAgICAgICAgZXNjYXBlSFRNTDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgfSwKICAgICAgICBlc2NhcGVMZXNzVGhhbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgfSwKICAgICAgICBlc2NhcGVRdW90YXRpb25NYXJrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHUKICAgICAgICB9LAogICAgICAgIGlzVmFsaWRBdHRyaWJ1dGVOYW1lOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGYKICAgICAgICB9CiAgICB9KTsKICAgIGNvbnN0IHQgPSAvW1x1MDA3Ri1cdTAwOUYgIic+Lz0iXHVGREQwLVx1RkRFRl0vOwogICAgZnVuY3Rpb24gcihlKSB7CiAgICAgICAgcmV0dXJuIGUucmVwbGFjZSgvJig/IShbYS16MC05XSt8I1swLTldK3wjeFthLWYwLTldKyk7KS9naSwgIiZhbXA7IikKICAgIH0KICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgIHJldHVybiBlLnJlcGxhY2UoLyIvZywgIiZxdW90OyIpCiAgICB9CiAgICBmdW5jdGlvbiBvKGUpIHsKICAgICAgICByZXR1cm4gZS5yZXBsYWNlKC88L2csICImbHQ7IikKICAgIH0KICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlLnJlcGxhY2UoLz4vZywgIiZndDsiKQogICAgICAgIH0odShyKGUpKSkKICAgIH0KICAgIGZ1bmN0aW9uIGkoZSkgewogICAgICAgIHJldHVybiBvKHIoZSkpCiAgICB9CiAgICBmdW5jdGlvbiBhKGUpIHsKICAgICAgICByZXR1cm4gbyhlLnJlcGxhY2UoLyYvZywgIiZhbXA7IikpCiAgICB9CiAgICBmdW5jdGlvbiBmKGUpIHsKICAgICAgICByZXR1cm4gIXQudGVzdChlKQogICAgfQogICAgKHdpbmRvdy53cCA9IHdpbmRvdy53cCB8fCB7fSkuZXNjYXBlSHRtbCA9IG4KfSgpOwo="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/favicon-300x300.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:11.686Z","timestamp":1785130091686,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/favicon-300x300.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:11 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:21 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=ge9srEeIVRo74C8WowjgqLCQcFk2E4xL5aLELpNm9EN%2FEfAXORiww4Dqol1lAYj2HR3bN72y%2FVLrs3MwMEXM8WWezpZegJTdeDgHAAKN4ceUTFwXrX%2Fz6AF6rYaJOy1fya16IxoHxg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=6,i=?0\r\ncf-ray: a2193d410f51120a-OSL\r\ncontent-length: 16654\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":16654,"size_decoded":17423,"mime_type":"image/png","magic":"PNG image data, 386 x 405, 8-bit/color RGBA, non-interlaced","md5":"ba9d69850685bad1093ca040e89a459c","sha1":"9f5861a18d4b2f27b22b875c5e45c39167038158","sha256":"2ffd5a64e61cd55abc9d556a3a483ebb5608ddfbef10d53d15764befe2bdd727","sha512":"84c76c85143733fac38ce103ce793e8ad785007520d9e9ff95ffb921cbbbf5529e0ca655ca342560505c8ef735287d563816c4d3c3a77fb73a550af351d71bef","ssdeep":"384:xygHTpuUR1dhlln3fz/obN+F0XdgumYMuQHHjfAtSUu82MMF:x/Vj3f8bB6fdnjfKZZ2MG","tlshash":"c072c0c1b1850bf10c23dd3aef1975d94949d1492b372d60e8f65fb1eaf8ea184860c9","first_seen":"2026-07-27T04:11:05.602182Z","last_seen":"2026-07-27T05:30:59.794077Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/translate_static/img/te_bk.gif","fqdn":"translate.googleapis.com","domain":"translate.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":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:12.179Z","timestamp":1785130092179,"http_version":"HTTP/3","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 /translate_static/img/te_bk.gif HTTP/1.1\r\nHost: translate.googleapis.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://dreamspinfluence.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, 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\naccept-ranges: bytes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 848\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 10:11:17 GMT\r\nexpires: Fri, 23 Jul 2027 10:11:17 GMT\r\ncache-control: public, max-age=31536000\r\nage: 328615\r\nlast-modified: Sun, 25 Jun 2023 02:58:00 GMT\r\ncontent-type: image/gif\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":848,"size_decoded":1507,"mime_type":"image/gif","magic":"GIF image data, version 89a, 1 x 59","md5":"daf9b48977041ac85a62dc9b7c16b38d","sha1":"049dcb061470572d06fd83b287ebd1d96e6bb870","sha256":"cb1fd0e051209c32622e91cdeda967e50d80a184b185ac6a656a807986e8eb75","sha512":"99f5f27990b6b5559c751a92c04037f5d42e848a966893484af66d3f66828c29a2dddc8788d7dd4cd835e8ab6d834e74fb3eaa4e2cd72d55b2813d7aab990af2","ssdeep":"","tlshash":"1c018c0cc8700a19e3422fb0ca5b6e0429675b465d88b20fb6aa22c27d04ba48049b1c","first_seen":"2023-04-05T23:29:53Z","last_seen":"2026-08-02T15:21:36.26205Z","times_seen":11095,"resource_available":false,"data":"R0lGODlhAQA7APcAANfX19/f3+Hh4eLi4uTk5Obm5ujo6Orq6uvr6+3t7e7u7uTv++bw++fw/Ojx/Ory/O30/O71/fHx8fP4/fT5/fb6/vj7/vr8/vz9//7+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAQA7AAAINQAzCBxIUCCGCwgtVFhIYcKECA8jQHgw8UEDBg4aLGCwIIOEjyAlKEiA4ICBAgQGCAgQAEBAADs="}},"time_used":16,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/css/spop.min.css","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.978Z","timestamp":1785130089978,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/css/spop.min.css HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=iUxLkc%2FDs0LyRL3TDQk%2BjFV%2FdBltAxapdHpJ20e0Je4ZTs52lxzALLAAt0lLh%2FcKe%2BtVqWFHTNKg5YguGTtlR%2F18lYWVTSujTG2FwMmuMNmqCsn6BWB2cCY9hDKmL5NMbYRNdUgmmQ%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d365e27120a-OSL\r\ncontent-length: 1129\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":5060,"size_decoded":1947,"mime_type":"text/css","magic":"Unicode text, UTF-8 text, with very long lines (4926)","md5":"fbdd8ac58b39539c151b1761f5f33a25","sha1":"c5dab44939f8574c19b49609a17bf042cd7749b4","sha256":"e7f057878dab30d574667321d5db5bde89b96e3112c6d0a77063d11b1e1150ec","sha512":"4f76b2e99f9b8aa1f2b0a4673face7f49a1fcc9137e3829258d98eeb7752d91791cc8ef6de58eeffb2f14d9d8d923775962d3b1d5716699c7fb0c2c2a189be4d","ssdeep":"96:ASvw/fV9LKpEH+Lpuh57JsYiqmA8LjUcsyuv6XrWr6rqrmTVgbfoiL:A1oEJlHgrWr6rqrmTVmfoiL","tlshash":"86a1debb4e43288c72729b56d7cd5ea8a2acd34371538ddf33092b4a8706e9925c5247","first_seen":"2025-01-15T15:10:46.582473Z","last_seen":"2026-08-01T06:17:31.489145Z","times_seen":70,"resource_available":false,"data":"QGNoYXJzZXQgIlVURi04IjsvKiEKICogc21hbGxQb3AgMC4xLjIgfCBodHRwczovL2dpdGh1Yi5jb20vc2lsdmlvLXIvc3BvcAogKiBDb3B5cmlnaHQgKGMpIDIwMTUgU8OtbHZpbyBSb3NhIEBzaWx2aW9yXwogKiBNSVQgbGljZW5zZQogKi8uc3BvcC1jb250YWluZXJ7ei1pbmRleDoyMDAwO3Bvc2l0aW9uOmZpeGVkfS5zcG9wLWNvbnRhaW5lciwuc3BvcC1jb250YWluZXIgKiwuc3BvcC1jb250YWluZXIgOmFmdGVyLC5zcG9wLWNvbnRhaW5lciA6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveH0uc3BvcC0tdG9wLWxlZnR7dG9wOjEwMHB4O2xlZnQ6MH0uc3BvcC0tdG9wLWxlZnQgLnNwb3B7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbXMtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDB9LnNwb3AtLXRvcC1jZW50ZXJ7dG9wOjEwMHB4O2xlZnQ6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpfS5zcG9wLS10b3AtY2VudGVyIC5zcG9wey13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjo1MCUgMDstbXMtdHJhbnNmb3JtLW9yaWdpbjo1MCUgMDt0cmFuc2Zvcm0tb3JpZ2luOjUwJSAwfS5zcG9wLS10b3AtcmlnaHR7dG9wOjEwMHB4O3JpZ2h0OjB9LnNwb3AtLXRvcC1yaWdodCAuc3BvcHstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MTAwJSAwOy1tcy10cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMDt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMH0uc3BvcC0tY2VudGVye3RvcDo1MCU7bGVmdDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTUwJSwtNTAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtNTAlLC01MCUsMCl9LnNwb3AtLWNlbnRlciAuc3BvcHstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46NTAlIDA7LW1zLXRyYW5zZm9ybS1vcmlnaW46NTAlIDA7dHJhbnNmb3JtLW9yaWdpbjo1MCUgMH0uc3BvcC0tYm90dG9tLWxlZnR7Ym90dG9tOjA7bGVmdDowfS5zcG9wLS1ib3R0b20tbGVmdCAuc3BvcHstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAxMDAlOy1tcy10cmFuc2Zvcm0tb3JpZ2luOjAgMTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjAgMTAwJX0uc3BvcC0tYm90dG9tLWNlbnRlcntib3R0b206MDtsZWZ0OjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0uc3BvcC0tYm90dG9tLWNlbnRlciAuc3BvcHstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46NTAlIDEwMCU7LW1zLXRyYW5zZm9ybS1vcmlnaW46NTAlIDEwMCU7dHJhbnNmb3JtLW9yaWdpbjo1MCUgMTAwJX0uc3BvcC0tYm90dG9tLXJpZ2h0e2JvdHRvbTowO3JpZ2h0OjB9LnNwb3AtLWJvdHRvbS1yaWdodCAuc3BvcHstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlOy1tcy10cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjMwZW0pey5zcG9wLS1ib3R0b20tY2VudGVyLC5zcG9wLS1ib3R0b20tbGVmdCwuc3BvcC0tYm90dG9tLXJpZ2h0LC5zcG9wLS10b3AtY2VudGVyLC5zcG9wLS10b3AtbGVmdCwuc3BvcC0tdG9wLXJpZ2h0e2JvdHRvbTphdXRvO3RvcDoxMDBweDtsZWZ0OjA7cmlnaHQ6MDttYXJnaW4tbGVmdDowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfS5zcG9wLS1ib3R0b20tY2VudGVyIC5zcG9wLC5zcG9wLS1ib3R0b20tbGVmdCAuc3BvcCwuc3BvcC0tYm90dG9tLXJpZ2h0IC5zcG9wLC5zcG9wLS10b3AtY2VudGVyIC5zcG9wLC5zcG9wLS10b3AtbGVmdCAuc3BvcCwuc3BvcC0tdG9wLXJpZ2h0IC5zcG9wey13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjo1MCUgMTAwJTstbXMtdHJhbnNmb3JtLW9yaWdpbjo1MCUgMTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjUwJSAxMDAlfS5zcG9we2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjE1KX19LnNwb3B7cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDo1NnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1zaXplOjE0cHg7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjMwZW0pey5zcG9we2JvcmRlci1yYWRpdXM6MnB4O3dpZHRoOjMyMHB4O21hcmdpbjouN2VtfX0uc3BvcC0tZXJyb3IsLnNwb3AtLWluZm8sLnNwb3AtLXN1Y2Nlc3MsLnNwb3AtLXdhcm5pbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNTQsIDU5LCA1NywgMC43NSl9QC13ZWJraXQta2V5ZnJhbWVzIHNwb3BJbnswJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguMiwuMik7dHJhbnNmb3JtOnNjYWxlKC4yLC4yKX05NSV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4xLDEuMSk7dHJhbnNmb3JtOnNjYWxlKDEuMSwxLjEpfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSwxKTt0cmFuc2Zvcm06c2NhbGUoMSwxKX19QGtleWZyYW1lcyBzcG9wSW57MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjIsLjIpO3RyYW5zZm9ybTpzY2FsZSguMiwuMil9OTUley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMSwxLjEpO3RyYW5zZm9ybTpzY2FsZSgxLjEsMS4xKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEsMSk7dHJhbnNmb3JtOnNjYWxlKDEsMSl9fUAtd2Via2l0LWtleWZyYW1lcyBzcG9wT3V0ezAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLDEpO3RyYW5zZm9ybTpzY2FsZSgxLDEpfTIwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjEsMS4xKTt0cmFuc2Zvcm06c2NhbGUoMS4xLDEuMSl9MTAwJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMCwwKTt0cmFuc2Zvcm06c2NhbGUoMCwwKX19QGtleWZyYW1lcyBzcG9wT3V0ezAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLDEpO3RyYW5zZm9ybTpzY2FsZSgxLDEpfTIwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjEsMS4xKTt0cmFuc2Zvcm06c2NhbGUoMS4xLDEuMSl9MTAwJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMCwwKTt0cmFuc2Zvcm06c2NhbGUoMCwwKX19LnNwb3AtLW91dHstd2Via2l0LWFuaW1hdGlvbjpzcG9wT3V0IC40cyBlYXNlLWluLW91dDthbmltYXRpb246c3BvcE91dCAuNHMgZWFzZS1pbi1vdXR9LnNwb3AtLWluey13ZWJraXQtYW5pbWF0aW9uOnNwb3BJbiAuNHMgZWFzZS1pbi1vdXQ7YW5pbWF0aW9uOnNwb3BJbiAuNHMgZWFzZS1pbi1vdXR9LnNwb3AtYm9keXtwYWRkaW5nOjEuNGVtfS5zcG9wLWJvZHkgcHttYXJnaW46MH0uc3BvcC1ib2R5IGF7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5zcG9wLWJvZHkgYTpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC44KTt0ZXh0LWRlY29yYXRpb246bm9uZX0uc3BvcC10aXRsZXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTouMjVlbTtjb2xvcjojZmZmfS5zcG9wLWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7aGVpZ2h0OjMycHg7d2lkdGg6MzJweDtwYWRkaW5nLXRvcDo3cHg7cGFkZGluZy1yaWdodDo3cHg7Zm9udC1zaXplOjIycHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246cmlnaHQ7bGluZS1oZWlnaHQ6LjY7Y29sb3I6I2ZmZjtvcGFjaXR5Oi41fS5zcG9wLWNsb3NlOmhvdmVye29wYWNpdHk6Ljc7Y3Vyc29yOnBvaW50ZXJ9LnNwb3AtaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTNweDtsZWZ0OjE2cHg7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtib3JkZXItcmFkaXVzOjUwJTstd2Via2l0LWFuaW1hdGlvbjpzcG9wSW4gLjRzIC40cyBlYXNlLWluLW91dDthbmltYXRpb246c3BvcEluIC40cyAuNHMgZWFzZS1pbi1vdXR9LnNwb3AtaWNvbjphZnRlciwuc3BvcC1pY29uOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2t9LnNwb3AtaWNvbisuc3BvcC1ib2R5e3BhZGRpbmctbGVmdDo0LjJlbX0uc3BvcC1pY29uLS1lcnJvciwuc3BvcC1pY29uLS1pbmZve2JvcmRlcjoycHggc29saWQgIzNhOTVlZH0uc3BvcC1pY29uLS1lcnJvcjpiZWZvcmUsLnNwb3AtaWNvbi0taW5mbzpiZWZvcmV7dG9wOjVweDtsZWZ0OjExcHg7d2lkdGg6NHB4O2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojM2E5NWVkfS5zcG9wLWljb24tLWVycm9yOmFmdGVyLC5zcG9wLWljb24tLWluZm86YWZ0ZXJ7dG9wOjEycHg7bGVmdDoxMXB4O3dpZHRoOjRweDtoZWlnaHQ6OXB4O2JhY2tncm91bmQtY29sb3I6IzNhOTVlZH0uc3BvcC1pY29uLS1lcnJvcntib3JkZXItY29sb3I6I2ZmNTY1Nn0uc3BvcC1pY29uLS1lcnJvcjpiZWZvcmV7dG9wOjE2cHg7YmFja2dyb3VuZC1jb2xvcjojZmY1NjU2fS5zcG9wLWljb24tLWVycm9yOmFmdGVye3RvcDo1cHg7YmFja2dyb3VuZC1jb2xvcjojZmY1NjU2fS5zcG9wLWljb24tLXN1Y2Nlc3N7Ym9yZGVyOjJweCBzb2xpZCAjMmVjYzU0fS5zcG9wLWljb24tLXN1Y2Nlc3M6YmVmb3Jle3RvcDo3cHg7bGVmdDo3cHg7d2lkdGg6MTNweDtoZWlnaHQ6OHB4O2JvcmRlci1ib3R0b206M3B4IHNvbGlkICMyZWNjNTQ7Ym9yZGVyLWxlZnQ6M3B4IHNvbGlkICMyZWNjNTQ7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7LW1zLXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9LnNwb3AtaWNvbi0td2FybmluZ3tib3JkZXI6MnB4IHNvbGlkICNmY2QwMDB9LnNwb3AtaWNvbi0td2FybmluZzpiZWZvcmV7dG9wOjdweDtsZWZ0OjdweDt3aWR0aDowO2hlaWdodDowO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZjZDAwMDtib3JkZXItd2lkdGg6MCA2cHggMTBweH0="}},"time_used":5,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":5,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/images/logo.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.007Z","timestamp":1785130090007,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/images/logo.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: 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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=fTPOwk1Rdx9NUccyLAskwzBZ7Bqt%2BIDVTOiaTzO2t9jm03uSFc3GdEmWPXu3qiwP5%2FNpqnEFImNwZm%2F3k0l%2BgIxMoBn7Fpy5B6mnBUVNOZ8U8IlAM3Qan157jj1pwF9vlOGYxDteqw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i\r\ncf-ray: a2193d368e3c120a-OSL\r\ncontent-length: 75306\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":75306,"size_decoded":76074,"mime_type":"image/png","magic":"PNG image data, 882 x 313, 8-bit/color RGBA, non-interlaced","md5":"a1b777471477255d7aae6d6100ee0c9e","sha1":"908a96872dd2ef488a49afbbcc7bf9d4bee18201","sha256":"7d3a856559e00fe98311312e0560fcd589cbfed4f8383f070078ce1f2d1f48a5","sha512":"7f3f874820d2ba4e171639ed20377e32e64d910ffda43b807f32c660f6cf9fe89d01b5f7786d0771ac2c2f7422a9a7574dcf4417414f116dd7311c54d2e83a3a","ssdeep":"1536:GT9adnT9sONGGdAo3Om+2cS+jri/PbcbFN0xUiWtvff29/UDDFvR:d3TGG2o3jcSSrwPJWf2hwFZ","tlshash":"c373f1856eb2c105db8e4c879e8c701a3b3b6190b76dc9bdb8f8432aa2f544ddce5d11","first_seen":"2026-07-27T04:11:05.73222Z","last_seen":"2026-07-27T05:30:59.812914Z","times_seen":3,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAA3IAAAE5CAYAAADV1xJnAAAACXBIWXMAAC4jAAAuIwF4pT92AAAFyWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4wLWMwMDAgNzkuMTcxYzI3ZiwgMjAyMi8wOC8xNi0xODowMjo0MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI0LjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyNC0xMS0yOFQyMjowODo0MyswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjQtMTEtMjhUMjI6MjM6MTYrMDE6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQtMTEtMjhUMjI6MjM6MTYrMDE6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU1NzJkNTdhLTY4ODMtMzE0Zi1iODgzLTFjNGVmZTBhOWMwYyIgeG1wTU06RG9jdW1lbnRJRD0i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"}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/bg-testimonial.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.355Z","timestamp":1785130090355,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/bg-testimonial.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-9.css?ver=1706574923\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:19 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Wmu0Pa5GWOCtYivPlu9dfl6EL4YVR0SLsC9HQYJbyfKlKWXgvF6zcA6hVRRxaivIIMi7PQ%2BcEBRoBxukZYLX3Thb8G0St46yJHn4wtL8LrEoCVO4Yratrg%2BqYhk0JvGJ8qNr1SE4vw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=4,i\r\ncf-ray: a2193d38be8e120a-OSL\r\ncontent-length: 39798\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":39798,"size_decoded":40562,"mime_type":"image/png","magic":"PNG image data, 3840 x 1676, 8-bit/color RGBA, non-interlaced","md5":"0256c61d1d31bcb443a9e205fdcdecb6","sha1":"da2e6a160cf9321d89808d43ddc98942ea10f130","sha256":"fb7cf7358067c670db5a7d88c2e2c5289ca96a18816a17798971821329e41836","sha512":"0787d70ca2e6904951b74b72d6fce0911b9b354df4589351b3566844d18fa6c354d6cd69319410358323badc00b23db8e97eae0006bdb8fbedd68a2e8f324495","ssdeep":"768:97bSydqZXyRfTlEtVrUrANnRvf+S89H2wu:97b9+OfTStVrUryFfum","tlshash":"b90353f4d12be8aeed59447706df1bb83b382e414502532ac776ac28bf3b9f1c864954","first_seen":"2026-07-27T04:11:05.703488Z","last_seen":"2026-07-27T05:30:59.81102Z","times_seen":3,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAADwAAAAaMCAYAAACi0WlNAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAJsLSURBVHgB7N1bWhu7toBR4yurC+fttGD3v2c7IWTtFImIAd/KLklT0hgvrJjCZiUknz5p/q6n//v///y7AgAAAAAAAAAAAAAAAAAAQlivAAAAAAAAAAAAAAAAAACAMATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAAAAAAAAAAAAAEAQATAAAAAAAAAAAAAAAAAAAAQRAAMAAAAAAAAAAAAAAAAAQBABMAAAAAAAAAAAAAAAAAAABBEAAwAAAAAAAAAAAAAAAABAEAEwAAAAAAAAAAAAAAAAAAAEEQADAAAAAADwf/btWAAAAABgkL/1NHaURwAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAABB794KaSBAFULTVRN3/buMHZsyMTXAyxE8rF/ocaGiqXtUOLgUQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAADAAAAAAAAAAAAAAAAAAdAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAh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"}},"time_used":9,"timings":{"blocked":2,"dns":0,"connect":0,"send":0,"wait":6,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":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://dreamspinfluence.com/","date":"2026-07-27T05:28:17.010Z","timestamp":1785130097010,"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://dreamspinfluence.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 05:28:17 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/ZEKTqmn8TF+NoSkDqB4T97deRiEMGDA7Xnf4+2xA+Z7GwVHC4Ierx+rAM0KDLMyQQqbeI\r\nx-77-nzt-ray: fdb5412324199c1071ec666a9776bd00\r\nx-77-cache: HIT\r\nx-77-age: 1717054\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-02T16:37:23.831913Z","times_seen":3040,"resource_available":false,"data":"LmJ0bi5zdmVsdGUteXdvZm1se2JvcmRlci1yYWRpdXM6OTk5OXB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6LjI1cmVtO2ZvbnQtc2l6ZToxLjEyNXJlbTtsaW5lLWhlaWdodDoxLjc1cmVtO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTtkaXNwbGF5OmlubGluZS1mbGV4fS5idG4tcHJpbWFyeS5zdmVsdGUteXdvZm1se2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pIDtjb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1jb250ZW50KSB9LmJ0bi1wcmltYXJ5LnN2ZWx0ZS15d29mbWw6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1ob3ZlcikgfS5idG4tZ2hvc3Quc3ZlbHRlLXl3b2ZtbDpob3ZlcnstLXVuLWJnLW9wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMCAwIDAvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uYnRuLXN1Y2Nlc3Muc3ZlbHRlLXl3b2ZtbHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigxNiAxODUgMTI5L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSA7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS5idG4tc3VjY2Vzcy5zdmVsdGUteXdvZm1sOmhvdmVyey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDUgMTUwIDEwNS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5idG4tc20uc3ZlbHRlLXl3b2ZtbHt3aWR0aDoxLjVyZW07aGVpZ2h0OjEuNXJlbX0uYnRuLW1kLnN2ZWx0ZS15d29mbWx7d2lkdGg6MnJlbTtoZWlnaHQ6MnJlbX0uYnRuLWxnLnN2ZWx0ZS15d29mbWx7d2lkdGg6Mi43NXJlbTtoZWlnaHQ6Mi43NXJlbX0uYnRuLXhsLnN2ZWx0ZS15d29mbWx7d2lkdGg6M3JlbTtoZWlnaHQ6M3JlbX0uYnRuLWRpc2FibGVkLnN2ZWx0ZS15d29mbWx7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjJ9LmJ0bi1kaXNhYmxlZC5zdmVsdGUteXdvZm1sOmhvdmVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzAwMDB9Kiw6YmVmb3JlLDphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowO2JvcmRlci1jb2xvcjp2YXIoLS11bi1kZWZhdWx0LWJvcmRlci1jb2xvciwjZTVlN2ViKX06YmVmb3JlLDphZnRlcnstLXVuLWNvbnRlbnQ6IiJ9aHRtbCw6aG9zdHstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTt0YWItc2l6ZTo0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2xpbmUtaGVpZ2h0OjEuNX1ib2R5e2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjB9aHJ7aGVpZ2h0OjA7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9Y29kZSxrYmQsc2FtcCxwcmV7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7Zm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLE1vbmFjbyxDb25zb2xhcyxMaWJlcmF0aW9uIE1vbm8sQ291cmllciBOZXcsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1mZWF0dXJlLXNldHRpbmdzOmluaGVyaXQ7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6aW5oZXJpdDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0O21hcmdpbjowO3BhZGRpbmc6MH1idXR0b24sc2VsZWN0e3RleHQtdHJhbnNmb3JtOm5vbmV9YnV0dG9uLFt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JhY2tncm91bmQtaW1hZ2U6bm9uZX06LW1vei1mb2N1c3Jpbmd7b3V0bGluZTphdXRvfTotbW96LXVpLWludmFsaWR7Ym94LXNoYWRvdzpub25lfXByb2dyZXNze3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b306Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkO291dGxpbmUtb2Zmc2V0Oi0ycHh9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1ibG9ja3F1b3RlLGRsLGRkLGgxLGgyLGgzLGg0LGg1LGg2LGhyLGZpZ3VyZSxwLHByZXttYXJnaW46MH1maWVsZHNldHttYXJnaW46MDtwYWRkaW5nOjB9bGVnZW5ke3BhZGRpbmc6MH1vbCx1bCxtZW51e21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9ZGlhbG9ne3BhZGRpbmc6MH10ZXh0YXJlYXtyZXNpemU6dmVydGljYWx9aW5wdXQ6OnBsYWNlaG9sZGVyLHRleHRhcmVhOjpwbGFjZWhvbGRlcntvcGFjaXR5OjE7Y29sb3I6IzljYTNhZn1idXR0b24sW3JvbGU9YnV0dG9uXXtjdXJzb3I6cG9pbnRlcn06ZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9aW1nLHN2Zyx2aWRlbyxjYW52YXMsYXVkaW8saWZyYW1lLGVtYmVkLG9iamVjdHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTpibG9ja31pbWcsdmlkZW97bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG99W2hpZGRlbl06d2hlcmUoOm5vdChbaGlkZGVuPXVudGlsLWZvdW5kXSkpe2Rpc3BsYXk6bm9uZX0qLDpiZWZvcmUsOmFmdGVyLDo6YmFja2Ryb3B7LS11bi1yb3RhdGU6MDstLXVuLXJvdGF0ZS14OjA7LS11bi1yb3RhdGUteTowOy0tdW4tcm90YXRlLXo6MDstLXVuLXNjYWxlLXg6MTstLXVuLXNjYWxlLXk6MTstLXVuLXNjYWxlLXo6MTstLXVuLXNrZXcteDowOy0tdW4tc2tldy15OjA7LS11bi10cmFuc2xhdGUteDowOy0tdW4tdHJhbnNsYXRlLXk6MDstLXVuLXRyYW5zbGF0ZS16OjA7LS11bi1wYW4teDogOy0tdW4tcGFuLXk6IDstLXVuLXBpbmNoLXpvb206IDstLXVuLXNjcm9sbC1zbmFwLXN0cmljdG5lc3M6cHJveGltaXR5Oy0tdW4tb3JkaW5hbDogOy0tdW4tc2xhc2hlZC16ZXJvOiA7LS11bi1udW1lcmljLWZpZ3VyZTogOy0tdW4tbnVtZXJpYy1zcGFjaW5nOiA7LS11bi1udW1lcmljLWZyYWN0aW9uOiA7LS11bi1ib3JkZXItc3BhY2luZy14OjA7LS11bi1ib3JkZXItc3BhY2luZy15OjA7LS11bi1yaW5nLW9mZnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdW4tcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdW4tc2hhZG93LWluc2V0OiA7LS11bi1zaGFkb3c6MCAwICMwMDAwOy0tdW4tcmluZy1pbnNldDogOy0tdW4tcmluZy1vZmZzZXQtd2lkdGg6MHB4Oy0tdW4tcmluZy1vZmZzZXQtY29sb3I6I2ZmZjstLXVuLXJpbmctd2lkdGg6MHB4Oy0tdW4tcmluZy1jb2xvcjojOTNjNWZkODA7LS11bi1ibHVyOiA7LS11bi1icmlnaHRuZXNzOiA7LS11bi1jb250cmFzdDogOy0tdW4tZHJvcC1zaGFkb3c6IDstLXVuLWdyYXlzY2FsZTogOy0tdW4taHVlLXJvdGF0ZTogOy0tdW4taW52ZXJ0OiA7LS11bi1zYXR1cmF0ZTogOy0tdW4tc2VwaWE6IDstLXVuLWJhY2tkcm9wLWJsdXI6IDstLXVuLWJhY2tkcm9wLWJyaWdodG5lc3M6IDstLXVuLWJhY2tkcm9wLWNvbnRyYXN0OiA7LS11bi1iYWNrZHJvcC1ncmF5c2NhbGU6IDstLXVuLWJhY2tkcm9wLWh1ZS1yb3RhdGU6IDstLXVuLWJhY2tkcm9wLWludmVydDogOy0tdW4tYmFja2Ryb3Atb3BhY2l0eTogOy0tdW4tYmFja2Ryb3Atc2F0dXJhdGU6IDstLXVuLWJhY2tkcm9wLXNlcGlhOiB9LmZsZXgtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0uYnV0dG9uLWZvY3VzOmZvY3VzLXZpc2libGV7b3V0bGluZS13aWR0aDoycHg7b3V0bGluZS1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWZvY3VzKSA7b3V0bGluZS1vZmZzZXQ6MXB4O291dGxpbmUtc3R5bGU6c29saWR9LmJ1dHRvbi1mb2N1cy1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLXdpZHRoOjJweDtvdXRsaW5lLWNvbG9yOnZhcigtLWNvbG9yLXByaW1hcnktZm9jdXMpIDtvdXRsaW5lLWNvbG9yOnZhcigtLWNvbG9yLXNlY29uZGFyeS1mb2N1cykgO291dGxpbmUtb2Zmc2V0OjFweDtvdXRsaW5lLXN0eWxlOnNvbGlkfS5jb250ZW50LWZvY3VzOmZvY3VzLXZpc2libGV7b3V0bGluZS13aWR0aDoycHg7b3V0bGluZS1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWZvY3VzKSA7b3V0bGluZS1vZmZzZXQ6LTVweDtvdXRsaW5lLXN0eWxlOnNvbGlkfS5jb250ZW50LWZvY3VzLXNlY29uZGFyeTpmb2N1cy12aXNpYmxle291dGxpbmUtd2lkdGg6MnB4O291dGxpbmUtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1mb2N1cykgO291dGxpbmUtY29sb3I6dmFyKC0tY29sb3Itc2Vjb25kYXJ5LWZvY3VzKSA7b3V0bGluZS1vZmZzZXQ6LTVweDtvdXRsaW5lLXN0eWxlOnNvbGlkfS5cW2NsaXBcOnJlY3RcKDBcLDBcLDBcLDBcKVxde2NsaXA6cmVjdCgwLDAsMCwwKX0uc3Itb25seXtjbGlwOnJlY3QoMCwwLDAsMCk7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlci13aWR0aDowO3dpZHRoOjFweDtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW59LnBvaW50ZXItZXZlbnRzLWF1dG97cG9pbnRlci1ldmVudHM6YXV0b30ucG9pbnRlci1ldmVudHMtbm9uZXtwb2ludGVyLWV2ZW50czpub25lfS5hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZX0uZml4ZWR7cG9zaXRpb246Zml4ZWR9LnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5zdGlja3l7cG9zaXRpb246c3RpY2t5fS4tYm90dG9tLTRcLjV7Ym90dG9tOi0xLjEyNXJlbX0uLXJpZ2h0LVxbNHB4XF17cmlnaHQ6LTRweH0uLXRvcC1cWzRweFxde3RvcDotNHB4fS5ib3R0b20tXFstOHB4XF17Ym90dG9tOi04cHh9LmJvdHRvbS0we2JvdHRvbTowfS5ib3R0b20tM3tib3R0b206Ljc1cmVtfS5ib3R0b20tZnVsbHtib3R0b206MTAwJX0ubGVmdC1cWzJweFxde2xlZnQ6MnB4fS5sZWZ0LTB7bGVmdDowfS5sZWZ0LTFcLzJ7bGVmdDo1MCV9LmxlZnQtMntsZWZ0Oi41cmVtfS5sZWZ0LTNcLjd7bGVmdDouOTI1cmVtfS5yaWdodC1cWzE2cHhcXXtyaWdodDoxNnB4fS5yaWdodC0we3JpZ2h0OjB9LnJpZ2h0LTBcLjV7cmlnaHQ6LjEyNXJlbX0ucmlnaHQtMntyaWdodDouNXJlbX0ucmlnaHQtM3tyaWdodDouNzVyZW19LnRvcC1cWzJweFxde3RvcDoycHh9LnRvcC0we3RvcDowfS50b3AtMnt0b3A6LjVyZW19LnRvcC0ze3RvcDouNzVyZW19LnRvcC0zXC43e3RvcDouOTI1cmVtfS50b3AtMzB7dG9wOjcuNXJlbX0udG9wLTQwe3RvcDoxMHJlbX0ubGluZS1jbGFtcC0xey13ZWJraXQtbGluZS1jbGFtcDoxO2xpbmUtY2xhbXA6MTstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7ZGlzcGxheTotd2Via2l0LWJveDtvdmVyZmxvdzpoaWRkZW59LmxpbmUtY2xhbXAtMnstd2Via2l0LWxpbmUtY2xhbXA6MjtsaW5lLWNsYW1wOjI7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsO2Rpc3BsYXk6LXdlYmtpdC1ib3g7b3ZlcmZsb3c6aGlkZGVufS5saW5lLWNsYW1wLTN7LXdlYmtpdC1saW5lLWNsYW1wOjM7bGluZS1jbGFtcDozOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtkaXNwbGF5Oi13ZWJraXQtYm94O292ZXJmbG93OmhpZGRlbn0ubGluZS1jbGFtcC01ey13ZWJraXQtbGluZS1jbGFtcDo1O2xpbmUtY2xhbXA6NTstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7ZGlzcGxheTotd2Via2l0LWJveDtvdmVyZmxvdzpoaWRkZW59LnotMXt6LWluZGV4OjF9LnotMTB7ei1pbmRleDoxMH0uei0xMDB7ei1pbmRleDoxMDB9LnotNTB7ei1pbmRleDo1MH0uZ3JpZHtkaXNwbGF5OmdyaWR9LmZsb2F0LXJpZ2h0e2Zsb2F0OnJpZ2h0fS4tbS1weHttYXJnaW46LTFweH0ubS0ze21hcmdpbjouNzVyZW19Lm0tYXV0b3ttYXJnaW46YXV0b30ubTE1e21hcmdpbjozLjc1cmVtfS5tMTZ7bWFyZ2luOjRyZW19Lm0xOHttYXJnaW46NC41cmVtfS5tMjF7bWFyZ2luOjUuMjVyZW19Lm0yMnttYXJnaW46NS41cmVtfS5tNnttYXJnaW46MS41cmVtfS5tN3ttYXJnaW46MS43NXJlbX0ubTh7bWFyZ2luOjJyZW19Lm05e21hcmdpbjoyLjI1cmVtfS5teC0ye21hcmdpbi1sZWZ0Oi41cmVtO21hcmdpbi1yaWdodDouNXJlbX0ubXgtM3ttYXJnaW4tbGVmdDouNzVyZW07bWFyZ2luLXJpZ2h0Oi43NXJlbX0ubXgtNHttYXJnaW4tbGVmdDoxcmVtO21hcmdpbi1yaWdodDoxcmVtfS5teS0ze21hcmdpbi10b3A6Ljc1cmVtO21hcmdpbi1ib3R0b206Ljc1cmVtfS5teS00e21hcmdpbi10b3A6MXJlbTttYXJnaW4tYm90dG9tOjFyZW19Li1tdC0ze21hcmdpbi10b3A6LS43NXJlbX0ubWItXFsycHhcXXttYXJnaW4tYm90dG9tOjJweH0ubWItMHttYXJnaW4tYm90dG9tOjB9Lm1iLTEsLm5vdC1sYXN0LW9mLXR5cGVcOm1iLTE6bm90KDpsYXN0LW9mLXR5cGUpe21hcmdpbi1ib3R0b206LjI1cmVtfS5tYi0ye21hcmdpbi1ib3R0b206LjVyZW19Lm1iLTN7bWFyZ2luLWJvdHRvbTouNzVyZW19Lm1iLTR7bWFyZ2luLWJvdHRvbToxcmVtfS5tYi02e21hcmdpbi1ib3R0b206MS41cmVtfS5tbC0wXC41e21hcmdpbi1sZWZ0Oi4xMjVyZW19Lm1sLTF7bWFyZ2luLWxlZnQ6LjI1cmVtfS5tbC0ye21hcmdpbi1sZWZ0Oi41cmVtfS5tbC0ze21hcmdpbi1sZWZ0Oi43NXJlbX0ubWwtNHttYXJnaW4tbGVmdDoxcmVtfS5tbC04e21hcmdpbi1sZWZ0OjJyZW19Lm1yLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbX0ubXItMVwuNXttYXJnaW4tcmlnaHQ6LjM3NXJlbX0ubXItMTB7bWFyZ2luLXJpZ2h0OjIuNXJlbX0ubXItMnttYXJnaW4tcmlnaHQ6LjVyZW19Lm1yLTN7bWFyZ2luLXJpZ2h0Oi43NXJlbX0ubXItNHttYXJnaW4tcmlnaHQ6MXJlbX0ubXQtXFsxcHhcXXttYXJnaW4tdG9wOjFweH0ubXQtMFwuNXttYXJnaW4tdG9wOi4xMjVyZW19Lm10LTJ7bWFyZ2luLXRvcDouNXJlbX0ubXQtM3ttYXJnaW4tdG9wOi43NXJlbX0ubXQtNHttYXJnaW4tdG9wOjFyZW19Lm10LTZ7bWFyZ2luLXRvcDoxLjVyZW19Lm10LTh7bWFyZ2luLXRvcDoycmVtfS5maXJzdC1vZi10eXBlXDptdC0yOmZpcnN0LW9mLXR5cGV7bWFyZ2luLXRvcDouNXJlbX0uaW5saW5le2Rpc3BsYXk6aW5saW5lfS5ibG9ja3tkaXNwbGF5OmJsb2NrfS5pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhpZGRlbntkaXNwbGF5Om5vbmV9LmgtXFsxXC4yZW1cXXtoZWlnaHQ6MS4yZW19LmgtXFsxZW1cXXtoZWlnaHQ6MWVtfS5oLVxbNTBweFxde2hlaWdodDo1MHB4fS5oLTF7aGVpZ2h0Oi4yNXJlbX0uaC0xMHtoZWlnaHQ6Mi41cmVtfS5oLTExe2hlaWdodDoyLjc1cmVtfS5oLTEye2hlaWdodDozcmVtfS5oLTJ7aGVpZ2h0Oi41cmVtfS5oLTJcLjV7aGVpZ2h0Oi42MjVyZW19LmgtMjB7aGVpZ2h0OjVyZW19LmgtMzB7aGVpZ2h0OjcuNXJlbX0uaC00e2hlaWdodDoxcmVtfS5oLTQwe2hlaWdodDoxMHJlbX0uaC00MDBweHtoZWlnaHQ6NDAwcHh9LmgtNXtoZWlnaHQ6MS4yNXJlbX0uaC01NHB4e2hlaWdodDo1NHB4fS5oLTZ7aGVpZ2h0OjEuNXJlbX0uaC02MHB4e2hlaWdodDo2MHB4fS5oLTY0cHh7aGVpZ2h0OjY0cHh9LmgtN3toZWlnaHQ6MS43NXJlbX0uaC04e2hlaWdodDoycmVtfS5oLWZ1bGx7aGVpZ2h0OjEwMCV9LmgtcHh7aGVpZ2h0OjFweH0ubWF4LWgtXFsxMjVweFxde21heC1oZWlnaHQ6MTI1cHh9Lm1heC1oLVxbMjQwcHhcXXttYXgtaGVpZ2h0OjI0MHB4fS5tYXgtaC1cWzMycHhcXXttYXgtaGVpZ2h0OjMycHh9Lm1heC1oLTEzMnB4e21heC1oZWlnaHQ6MTMycHh9Lm1heC1oLTY0e21heC1oZWlnaHQ6MTZyZW19Lm1heC1oLTgwdmh7bWF4LWhlaWdodDo4MHZofS5tYXgtaC04NnttYXgtaGVpZ2h0OjIxLjVyZW19Lm1heC1oLWZ1bGx7bWF4LWhlaWdodDoxMDAlfS5tYXgtdy1cWzgwXCVcXXttYXgtd2lkdGg6ODAlfS5tYXgtdy1cWzg1XCVcXXttYXgtd2lkdGg6ODUlfS5tYXgtdy1cW2NhbGNcKDEwMFwlLTE1MHB4XClcXXttYXgtd2lkdGg6Y2FsYygxMDAlIC0gMTUwcHgpfS5tYXgtdy1mdWxse21heC13aWR0aDoxMDAlfS5taW4taC1cWzE2cHhcXXttaW4taGVpZ2h0OjE2cHh9Lm1pbi13LVxbMTZweFxde21pbi13aWR0aDoxNnB4fS5taW4tdy0we21pbi13aWR0aDowfS5taW4tdy01e21pbi13aWR0aDoxLjI1cmVtfS5taW4tdy01XC41e21pbi13aWR0aDoxLjM3NXJlbX0ubWluLXctNnttaW4td2lkdGg6MS41cmVtfS53LVxbMVwuMmVtXF17d2lkdGg6MS4yZW19LnctXFsxZW1cXXt3aWR0aDoxZW19LnctXFs1MHB4XF17d2lkdGg6NTBweH0udy0we3dpZHRoOjB9LnctMXt3aWR0aDouMjVyZW19LnctMTF7d2lkdGg6Mi43NXJlbX0udy0xMTZ7d2lkdGg6MjlyZW19LnctMTJ7d2lkdGg6M3JlbX0udy0ye3dpZHRoOi41cmVtfS53LTJcLjV7d2lkdGg6LjYyNXJlbX0udy0yODBweHt3aWR0aDoyODBweH0udy0zNDhweHt3aWR0aDozNDhweH0udy00e3dpZHRoOjFyZW19LnctNXt3aWR0aDoxLjI1cmVtfS53LTUye3dpZHRoOjEzcmVtfS53LTU2e3dpZHRoOjE0cmVtfS53LTZ7d2lkdGg6MS41cmVtfS53LTYwcHh7d2lkdGg6NjBweH0udy03e3dpZHRoOjEuNzVyZW19LnctOHt3aWR0aDoycmVtfS53LWZ1bGx7d2lkdGg6MTAwJX0udy1tYXh7d2lkdGg6bWF4LWNvbnRlbnR9LnctcHh7d2lkdGg6MXB4fS5mbGV4e2Rpc3BsYXk6ZmxleH0uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0uZmxleC0xe2ZsZXg6MX0uZmxleC1ub25le2ZsZXg6bm9uZX0uZmxleC1zaHJpbmt7ZmxleC1zaHJpbms6MX0uZmxleC1zaHJpbmstMCwuc2hyaW5rLTB7ZmxleC1zaHJpbms6MH0uZmxleC1ncm93LC5ncm93e2ZsZXgtZ3JvdzoxfS5mbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmZsZXgtY29se2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwfS4tdHJhbnNsYXRlLXgtMVwvMnstLXVuLXRyYW5zbGF0ZS14Oi01MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tdW4tdHJhbnNsYXRlLXgpKSB0cmFuc2xhdGVZKHZhcigtLXVuLXRyYW5zbGF0ZS15KSkgdHJhbnNsYXRlWih2YXIoLS11bi10cmFuc2xhdGUteikpIHJvdGF0ZSh2YXIoLS11bi1yb3RhdGUpKSByb3RhdGVYKHZhcigtLXVuLXJvdGF0ZS14KSkgcm90YXRlWSh2YXIoLS11bi1yb3RhdGUteSkpIHJvdGF0ZVoodmFyKC0tdW4tcm90YXRlLXopKSBza2V3WCh2YXIoLS11bi1za2V3LXgpKSBza2V3WSh2YXIoLS11bi1za2V3LXkpKSBzY2FsZVgodmFyKC0tdW4tc2NhbGUteCkpIHNjYWxlWSh2YXIoLS11bi1zY2FsZS15KSkgc2NhbGVaKHZhcigtLXVuLXNjYWxlLXopKX0udHJhbnNsYXRlLXgtZnVsbHstLXVuLXRyYW5zbGF0ZS14OjEwMCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tdW4tdHJhbnNsYXRlLXgpKSB0cmFuc2xhdGVZKHZhcigtLXVuLXRyYW5zbGF0ZS15KSkgdHJhbnNsYXRlWih2YXIoLS11bi10cmFuc2xhdGUteikpIHJvdGF0ZSh2YXIoLS11bi1yb3RhdGUpKSByb3RhdGVYKHZhcigtLXVuLXJvdGF0ZS14KSkgcm90YXRlWSh2YXIoLS11bi1yb3RhdGUteSkpIHJvdGF0ZVoodmFyKC0tdW4tcm90YXRlLXopKSBza2V3WCh2YXIoLS11bi1za2V3LXgpKSBza2V3WSh2YXIoLS11bi1za2V3LXkpKSBzY2FsZVgodmFyKC0tdW4tc2NhbGUteCkpIHNjYWxlWSh2YXIoLS11bi1zY2FsZS15KSkgc2NhbGVaKHZhcigtLXVuLXNjYWxlLXopKX0uZ3JvdXA6aG92ZXIgLmdyb3VwLWhvdmVyXDpzY2FsZS0xMTV7LS11bi1zY2FsZS14OjEuMTU7LS11bi1zY2FsZS15OjEuMTU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tdW4tdHJhbnNsYXRlLXgpKSB0cmFuc2xhdGVZKHZhcigtLXVuLXRyYW5zbGF0ZS15KSkgdHJhbnNsYXRlWih2YXIoLS11bi10cmFuc2xhdGUteikpIHJvdGF0ZSh2YXIoLS11bi1yb3RhdGUpKSByb3RhdGVYKHZhcigtLXVuLXJvdGF0ZS14KSkgcm90YXRlWSh2YXIoLS11bi1yb3RhdGUteSkpIHJvdGF0ZVoodmFyKC0tdW4tcm90YXRlLXopKSBza2V3WCh2YXIoLS11bi1za2V3LXgpKSBza2V3WSh2YXIoLS11bi1za2V3LXkpKSBzY2FsZVgodmFyKC0tdW4tc2NhbGUteCkpIHNjYWxlWSh2YXIoLS11bi1zY2FsZS15KSkgc2NhbGVaKHZhcigtLXVuLXNjYWxlLXopKX0uaG92ZXJcOnNjYWxlLTEyMDpob3ZlcnstLXVuLXNjYWxlLXg6MS4yOy0tdW4tc2NhbGUteToxLjI7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tdW4tdHJhbnNsYXRlLXgpKSB0cmFuc2xhdGVZKHZhcigtLXVuLXRyYW5zbGF0ZS15KSkgdHJhbnNsYXRlWih2YXIoLS11bi10cmFuc2xhdGUteikpIHJvdGF0ZSh2YXIoLS11bi1yb3RhdGUpKSByb3RhdGVYKHZhcigtLXVuLXJvdGF0ZS14KSkgcm90YXRlWSh2YXIoLS11bi1yb3RhdGUteSkpIHJvdGF0ZVoodmFyKC0tdW4tcm90YXRlLXopKSBza2V3WCh2YXIoLS11bi1za2V3LXgpKSBza2V3WSh2YXIoLS11bi1za2V3LXkpKSBzY2FsZVgodmFyKC0tdW4tc2NhbGUteCkpIHNjYWxlWSh2YXIoLS11bi1zY2FsZS15KSkgc2NhbGVaKHZhcigtLXVuLXNjYWxlLXopKX0udHJhbnNmb3Jte3RyYW5zZm9ybTp0cmFuc2xhdGVYKHZhcigtLXVuLXRyYW5zbGF0ZS14KSkgdHJhbnNsYXRlWSh2YXIoLS11bi10cmFuc2xhdGUteSkpIHRyYW5zbGF0ZVoodmFyKC0tdW4tdHJhbnNsYXRlLXopKSByb3RhdGUodmFyKC0tdW4tcm90YXRlKSkgcm90YXRlWCh2YXIoLS11bi1yb3RhdGUteCkpIHJvdGF0ZVkodmFyKC0tdW4tcm90YXRlLXkpKSByb3RhdGVaKHZhcigtLXVuLXJvdGF0ZS16KSkgc2tld1godmFyKC0tdW4tc2tldy14KSkgc2tld1kodmFyKC0tdW4tc2tldy15KSkgc2NhbGVYKHZhcigtLXVuLXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdW4tc2NhbGUteSkpIHNjYWxlWih2YXIoLS11bi1zY2FsZS16KSl9QGtleWZyYW1lcyBwdWxzZXswJSx0b3tvcGFjaXR5OjF9NTAle29wYWNpdHk6LjV9fUBrZXlmcmFtZXMgcHVzaC10by1sZWZ0ezAle21hcmdpbi1yaWdodDotNTAlO3RyYW5zZm9ybTpzY2FsZSgwKX10b3ttYXJnaW4tcmlnaHQ6aW5oZXJpdDt0cmFuc2Zvcm06c2NhbGUoMSl9fUBrZXlmcmFtZXMgc3BpbnswJXtyb3RhdGU6MGRlZ310b3tyb3RhdGU6MzYwZGVnfX1Aa2V5ZnJhbWVzIHR5cGluZ3swJSw1MCUsdG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9MjUle3RyYW5zZm9ybTp0cmFuc2xhdGVZKC02cHgpfX0uYW5pbWF0ZS1wdWxzZXthbmltYXRpb246MnMgY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkgaW5maW5pdGUgcHVsc2V9LmFuaW1hdGUtcHVzaC10by1sZWZ0e2FuaW1hdGlvbjouMjVzIGVhc2UtaW4tb3V0IHB1c2gtdG8tbGVmdH0uYW5pbWF0ZS1zcGlue2FuaW1hdGlvbjoxcyBsaW5lYXIgaW5maW5pdGUgc3Bpbn0uYW5pbWF0ZS10eXBpbmd7YW5pbWF0aW9uOi44cyBlYXNlLWluLW91dCB0eXBpbmd9LmN1cnNvci1hdXRve2N1cnNvcjphdXRvfS5jdXJzb3ItcG9pbnRlciwuaG92ZXJcOmN1cnNvci1wb2ludGVyOmhvdmVye2N1cnNvcjpwb2ludGVyfS5jdXJzb3Itbm90LWFsbG93ZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0ucmVzaXple3Jlc2l6ZTpib3RofS5yZXNpemUtbm9uZXtyZXNpemU6bm9uZX0uc2Nyb2xsLW10LTJ7c2Nyb2xsLW1hcmdpbi10b3A6LjVyZW19Lmxpc3QtZGVjaW1hbHtsaXN0LXN0eWxlLXR5cGU6ZGVjaW1hbH0ubGlzdC1kaXNje2xpc3Qtc3R5bGUtdHlwZTpkaXNjfS5jb250ZW50LWNlbnRlcnthbGlnbi1jb250ZW50OmNlbnRlcn0uaXRlbXMtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uaXRlbXMtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZX0uc2VsZi1zdHJldGNoe2FsaWduLXNlbGY6c3RyZXRjaH0uanVzdGlmeS1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uanVzdGlmeS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5qdXN0aWZ5LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LmdhcC0ye2dhcDouNXJlbX0uZ2FwLTN7Z2FwOi43NXJlbX0uc3BhY2UteC0yPjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdW4tc3BhY2UteC1yZXZlcnNlOjA7bWFyZ2luLWxlZnQ6Y2FsYyguNXJlbSAqIGNhbGMoMSAtIHZhcigtLXVuLXNwYWNlLXgtcmV2ZXJzZSkpKTttYXJnaW4tcmlnaHQ6Y2FsYyguNXJlbSAqIHZhcigtLXVuLXNwYWNlLXgtcmV2ZXJzZSkpfS5zcGFjZS14LTU+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS11bi1zcGFjZS14LXJldmVyc2U6MDttYXJnaW4tbGVmdDpjYWxjKDEuMjVyZW0gKiBjYWxjKDEgLSB2YXIoLS11bi1zcGFjZS14LXJldmVyc2UpKSk7bWFyZ2luLXJpZ2h0OmNhbGMoMS4yNXJlbSAqIHZhcigtLXVuLXNwYWNlLXgtcmV2ZXJzZSkpfS5zcGFjZS15LTI+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS11bi1zcGFjZS15LXJldmVyc2U6MDttYXJnaW4tdG9wOmNhbGMoLjVyZW0gKiBjYWxjKDEgLSB2YXIoLS11bi1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJvdHRvbTpjYWxjKC41cmVtICogdmFyKC0tdW4tc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktND46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXVuLXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi10b3A6Y2FsYygxcmVtICogY2FsYygxIC0gdmFyKC0tdW4tc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYygxcmVtICogdmFyKC0tdW4tc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktNT46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXVuLXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi10b3A6Y2FsYygxLjI1cmVtICogY2FsYygxIC0gdmFyKC0tdW4tc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYygxLjI1cmVtICogdmFyKC0tdW4tc3BhY2UteS1yZXZlcnNlKSl9Lm92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3ctY2xpcHtvdmVyZmxvdzpjbGlwfS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy14LWhpZGRlbntvdmVyZmxvdy14OmhpZGRlbn0ub3ZlcmZsb3cteS1hdXRve292ZXJmbG93LXk6YXV0b30ub3ZlcmZsb3cteS1zY3JvbGx7b3ZlcmZsb3cteTpzY3JvbGx9Lm92ZXJzY3JvbGwtY29udGFpbntvdmVyc2Nyb2xsLWJlaGF2aW9yOmNvbnRhaW59LnRydW5jYXRle3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbn0udGV4dC1lbGxpcHNpc3t0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS53aGl0ZXNwYWNlLW5vcm1hbHt3aGl0ZS1zcGFjZTpub3JtYWx9LndoaXRlc3BhY2Utbm93cmFwe3doaXRlLXNwYWNlOm5vd3JhcH0ud2hpdGVzcGFjZS1wcmV7d2hpdGUtc3BhY2U6cHJlfS53aGl0ZXNwYWNlLXByZS13cmFwe3doaXRlLXNwYWNlOnByZS13cmFwfS5icmVhay13b3Jkc3tvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LmJyZWFrLWFsbHt3b3JkLWJyZWFrOmJyZWFrLWFsbH0uYm9yZGVyLC5ib3JkZXItMXtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItMHtib3JkZXItd2lkdGg6MH0uYm9yZGVyLTJ7Ym9yZGVyLXdpZHRoOjJweH0uYm9yZGVyLXQtMntib3JkZXItdG9wLXdpZHRoOjJweH0uYm9yZGVyLWdyYXktMzAwey0tdW4tYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDIwOSAyMTMgMjE5L3ZhcigtLXVuLWJvcmRlci1vcGFjaXR5KSl9LmJvcmRlci1ncmVlbi00MDB7LS11bi1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoNzQgMjIyIDEyOC92YXIoLS11bi1ib3JkZXItb3BhY2l0eSkpfS5ib3JkZXItcHJpbWFyeXtib3JkZXItY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeSl9LmJvcmRlci1wcmltYXJ5LWJ1dHRvbntib3JkZXItY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pfS5ib3JkZXItcmVkLTUwMHstLXVuLWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYigyMzkgNjggNjgvdmFyKC0tdW4tYm9yZGVyLW9wYWNpdHkpKX0uYm9yZGVyLXNsYXRlLTIwMHstLXVuLWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYigyMjYgMjMyIDI0MC92YXIoLS11bi1ib3JkZXItb3BhY2l0eSkpfS5ib3JkZXItd2hpdGV7LS11bi1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tYm9yZGVyLW9wYWNpdHkpKX0uZm9jdXNcOmJvcmRlci1ibHVlLTUwMDpmb2N1c3stLXVuLWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYig1OSAxMzAgMjQ2L3ZhcigtLXVuLWJvcmRlci1vcGFjaXR5KSl9LmJvcmRlci10LW5ldXRyYWwtMTAwey0tdW4tYm9yZGVyLW9wYWNpdHk6MTstLXVuLWJvcmRlci10b3Atb3BhY2l0eTp2YXIoLS11bi1ib3JkZXItb3BhY2l0eSk7Ym9yZGVyLXRvcC1jb2xvcjpyZ2IoMjQ1IDI0NSAyNDUvdmFyKC0tdW4tYm9yZGVyLXRvcC1vcGFjaXR5KSl9LmJvcmRlci1yb3VuZGVkLWZ1bGwsLnJvdW5kZWQtZnVsbHtib3JkZXItcmFkaXVzOjk5OTlweH0ucm91bmRlZC0yLC5yb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6LjVyZW19LnJvdW5kZWQtMnhse2JvcmRlci1yYWRpdXM6MXJlbX0ucm91bmRlZC0zeGwsLnJvdW5kZWQtNntib3JkZXItcmFkaXVzOjEuNXJlbX0ucm91bmRlZC1tZHtib3JkZXItcmFkaXVzOi4zNzVyZW19LnJvdW5kZWQteGx7Ym9yZGVyLXJhZGl1czouNzVyZW19LnJvdW5kZWQtbHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4yNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4yNXJlbX0ucm91bmRlZC1sLTN4bHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjEuNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjEuNXJlbX0ucm91bmRlZC1ye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4yNXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czouMjVyZW19LnJvdW5kZWQtci0zeGx7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MS41cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjEuNXJlbX0ucm91bmRlZC10LTZ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxLjVyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MS41cmVtfS5yb3VuZGVkLWxiLTN4bHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjEuNXJlbX0ucm91bmRlZC1sdC0zeGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxLjVyZW19LnJvdW5kZWQtcmItM3hse2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjEuNXJlbX0ucm91bmRlZC1ydC0zeGx7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MS41cmVtfS5ib3JkZXItZGFzaGVke2JvcmRlci1zdHlsZTpkYXNoZWR9LmJvcmRlci1ub25le2JvcmRlci1zdHlsZTpub25lfS5iZy1ibGFja3stLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigwIDAgMC92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1ibGFja1wvODB7YmFja2dyb3VuZC1jb2xvcjojMDAwY30uYmctZW1lcmFsZC01MDB7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTYgMTg1IDEyOS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1ncmF5LTIwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMjkgMjMxIDIzNS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1ncmF5LTMwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMDkgMjEzIDIxOS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1ncmF5LTQwMFwvXFtcLjk1XF17YmFja2dyb3VuZC1jb2xvcjojOWNhM2FmZjJ9LmJnLWdyYXktNjAwXC9cW1wuOTVcXXtiYWNrZ3JvdW5kLWNvbG9yOiM0YjU1NjNmMn0uYmctZ3JlZW4tNDAwey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDc0IDIyMiAxMjgvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uYmctZ3JlZW4tNTAwey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDM0IDE5NyA5NC92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1uZXV0cmFsLTEwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNDUgMjQ1IDI0NS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1uZXV0cmFsLTEwMFwvNTB7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1ODB9LmJnLW5ldXRyYWwtNjAwXC80MHtiYWNrZ3JvdW5kLWNvbG9yOiM1MjUyNTI2Nn0uYmctb3JhbmdlLTUwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNDkgMTE1IDIyL3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmJnLXByaW1hcnktYnV0dG9ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pIH0uYmctcmVkLTUwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMzkgNjggNjgvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uYmctcmVkLTYwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMjAgMzggMzgvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uYmctc2xhdGUtMTAwey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0MSAyNDUgMjQ5L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmJnLXNsYXRlLTIwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMjYgMjMyIDI0MC92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1zbGF0ZS0zMDB7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjAzIDIxMyAyMjUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uYmctc2xhdGUtNDAwey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDE0OCAxNjMgMTg0L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmJnLXNsYXRlLTUwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy10cmFuc3BhcmVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfS5iZy13aGl0ZXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5ob3Zlci1iZy1ibGFjazpob3ZlcnstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigwIDAgMC92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5ob3Zlci1iZy1lbWVyYWxkLTYwMDpob3ZlcnstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1IDE1MCAxMDUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uaG92ZXItYmctcHJpbWFyeS1idXR0b24taG92ZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1ob3ZlcikgfS5ob3Zlci1iZy1wcmltYXJ5LWJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uKSB9LmhvdmVyLWJnLXNsYXRlLTEwMDpob3ZlcnstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNDEgMjQ1IDI0OS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5ob3Zlci1iZy10cmFuc3BhcmVudDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfS5ob3Zlclw6Ymctc2xhdGUtMTAwOmhvdmVyey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0MSAyNDUgMjQ5L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmJnLW9wYWNpdHktMTAsLmhvdmVyLWJnLW9wYWNpdHktMTA6aG92ZXJ7LS11bi1iZy1vcGFjaXR5Oi4xfS5mcm9tLXdoaXRlXC8xMDB7LS11bi1ncmFkaWVudC1mcm9tLXBvc2l0aW9uOjAlOy0tdW4tZ3JhZGllbnQtZnJvbTojZmZmIHZhcigtLXVuLWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdW4tZ3JhZGllbnQtdG8tcG9zaXRpb246MTAwJTstLXVuLWdyYWRpZW50LXRvOiNmZmYwIHZhcigtLXVuLWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXVuLWdyYWRpZW50LXN0b3BzOnZhcigtLXVuLWdyYWRpZW50LWZyb20pLCB2YXIoLS11bi1ncmFkaWVudC10byl9LnZpYS13aGl0ZVwvNDB7LS11bi1ncmFkaWVudC12aWEtcG9zaXRpb246NTAlOy0tdW4tZ3JhZGllbnQtdG86I2ZmZjA7LS11bi1ncmFkaWVudC1zdG9wczp2YXIoLS11bi1ncmFkaWVudC1mcm9tKSwgI2ZmZjYgdmFyKC0tdW4tZ3JhZGllbnQtdmlhLXBvc2l0aW9uKSwgdmFyKC0tdW4tZ3JhZGllbnQtdG8pfS52aWEtd2hpdGVcLzUwey0tdW4tZ3JhZGllbnQtdmlhLXBvc2l0aW9uOjUwJTstLXVuLWdyYWRpZW50LXRvOiNmZmYwOy0tdW4tZ3JhZGllbnQtc3RvcHM6dmFyKC0tdW4tZ3JhZGllbnQtZnJvbSksICNmZmZmZmY4MCB2YXIoLS11bi1ncmFkaWVudC12aWEtcG9zaXRpb24pLCB2YXIoLS11bi1ncmFkaWVudC10byl9LnRvLXRyYW5zcGFyZW50ey0tdW4tZ3JhZGllbnQtdG8tcG9zaXRpb246MTAwJTstLXVuLWdyYWRpZW50LXRvOnRyYW5zcGFyZW50IHZhcigtLXVuLWdyYWRpZW50LXRvLXBvc2l0aW9uKX0uZnJvbS0wXCV7LS11bi1ncmFkaWVudC1mcm9tLXBvc2l0aW9uOjAlfS52aWEtNTBcJXstLXVuLWdyYWRpZW50LXZpYS1wb3NpdGlvbjo1MCV9LnZpYS03MFwley0tdW4tZ3JhZGllbnQtdmlhLXBvc2l0aW9uOjcwJX0uYmctZ3JhZGllbnQtdG8tdHstLXVuLWdyYWRpZW50LXNoYXBlOnRvIHRvcCBpbiBva2xjaDstLXVuLWdyYWRpZW50OnZhcigtLXVuLWdyYWRpZW50LXNoYXBlKSwgdmFyKC0tdW4tZ3JhZGllbnQtc3RvcHMpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHZhcigtLXVuLWdyYWRpZW50KSl9LmZpbGwtY3VycmVudHtmaWxsOmN1cnJlbnRDb2xvcn0uZmlsbC1wcmltYXJ5LWJ1dHRvbntmaWxsOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uKSB9LmZpbGwtcHJpbWFyeS1idXR0b24tY29udGVudHtmaWxsOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLWNvbnRlbnQpIH0ub2JqZWN0LWNvbnRhaW57b2JqZWN0LWZpdDpjb250YWlufS5wLTB7cGFkZGluZzowfS5wLTBcLjh7cGFkZGluZzouMnJlbX0ucC0xe3BhZGRpbmc6LjI1cmVtfS5wLTFcLjV7cGFkZGluZzouMzc1cmVtfS5wLTJ7cGFkZGluZzouNXJlbX0ucC0ze3BhZGRpbmc6Ljc1cmVtfS5wLTR7cGFkZGluZzoxcmVtfS5wLTh7cGFkZGluZzoycmVtfS5weCwucHgtNHtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LnB4LTF7cGFkZGluZy1sZWZ0Oi4yNXJlbTtwYWRkaW5nLXJpZ2h0Oi4yNXJlbX0ucHgtMntwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0ucHgtM3twYWRkaW5nLWxlZnQ6Ljc1cmVtO3BhZGRpbmctcmlnaHQ6Ljc1cmVtfS5weC04e3BhZGRpbmctbGVmdDoycmVtO3BhZGRpbmctcmlnaHQ6MnJlbX0ucHktMXtwYWRkaW5nLXRvcDouMjVyZW07cGFkZGluZy1ib3R0b206LjI1cmVtfS5weS0ye3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5weS0yXC41e3BhZGRpbmctdG9wOi42MjVyZW07cGFkZGluZy1ib3R0b206LjYyNXJlbX0ucHktM3twYWRkaW5nLXRvcDouNzVyZW07cGFkZGluZy1ib3R0b206Ljc1cmVtfS5wYi0we3BhZGRpbmctYm90dG9tOjB9LnBiLTF7cGFkZGluZy1ib3R0b206LjI1cmVtfS5wYi0ye3BhZGRpbmctYm90dG9tOi41cmVtfS5wYi0ze3BhZGRpbmctYm90dG9tOi43NXJlbX0ucGItNHtwYWRkaW5nLWJvdHRvbToxcmVtfS5wbC0ye3BhZGRpbmctbGVmdDouNXJlbX0ucGwtNCwuZ3JvdXA6aG92ZXIgLmdyb3VwLWhvdmVyXDpub3QtZmlyc3RcOnBsLTQ6bm90KDpmaXJzdC1jaGlsZCl7cGFkZGluZy1sZWZ0OjFyZW19LnByLTF7cGFkZGluZy1yaWdodDouMjVyZW19LnByLTR7cGFkZGluZy1yaWdodDoxcmVtfS5wdC0xe3BhZGRpbmctdG9wOi4yNXJlbX0ucHQtNntwYWRkaW5nLXRvcDoxLjVyZW19LnB0LTl7cGFkZGluZy10b3A6Mi4yNXJlbX0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnR9LnRleHQtMnhse2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MnJlbX0udGV4dC1iYXNle2ZvbnQtc2l6ZToxcmVtO2xpbmUtaGVpZ2h0OjEuNXJlbX0udGV4dC1iYXNlLWlucHV0e2ZvbnQtc2l6ZToxcmVtO2xpbmUtaGVpZ2h0OjEuMjVyZW19LnRleHQtbGd7Zm9udC1zaXplOjEuMTI1cmVtO2xpbmUtaGVpZ2h0OjEuNzVyZW19LnRleHQtc217Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS4yNXJlbX0udGV4dC14c3tmb250LXNpemU6Ljc1cmVtO2xpbmUtaGVpZ2h0OjFyZW19LnRleHQtYmxhY2t7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMCAwIDAvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS50ZXh0LWdyYXktMzAwey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDIwOSAyMTMgMjE5L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0udGV4dC1ncmF5LTUwMHstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDcgMTE0IDEyOC92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSB9LnRleHQtbmV1dHJhbC00MDB7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMTYzIDE2MyAxNjMvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS50ZXh0LW5ldXRyYWwtNTAwey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDExNSAxMTUgMTE1L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0udGV4dC1wcmltYXJ5e2NvbG9yOnZhcigtLWNvbG9yLXByaW1hcnkpIH0udGV4dC1wcmltYXJ5LWJ1dHRvbntjb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbikgfS50ZXh0LXByaW1hcnktYnV0dG9uLWNvbnRlbnR7Y29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24tY29udGVudCkgfS50ZXh0LXByaW1hcnktY29udGVudHtjb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWNvbnRlbnQpIH0udGV4dC1yZWQtNTAwey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDIzOSA2OCA2OC92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSB9LnRleHQtc2xhdGUtNDAwey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDE0OCAxNjMgMTg0L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0uY29sb3Itc2xhdGUtNTAwLC50ZXh0LXNsYXRlLTUwMHstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSB9LnRleHQtc2xhdGUtNjAwey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDcxIDg1IDEwNS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSB9LmNvbG9yLXNsYXRlLTgwMCwudGV4dC1zbGF0ZS04MDB7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMzAgNDEgNTkvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS50ZXh0LXdoaXRley0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDI1NSAyNTUgMjU1L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0uaG92ZXItdGV4dC1wcmltYXJ5LWJ1dHRvbi1jb250ZW50OmhvdmVye2NvbG9yOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLWNvbnRlbnQpIH0uaG92ZXJcOnRleHQtZ3JheS00MDA6aG92ZXJ7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMTU2IDE2MyAxNzUvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS5ob3Zlclw6dGV4dC1zbGF0ZS04MDA6aG92ZXJ7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMzAgNDEgNTkvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS5wbGFjZWhvbGRlclw6dGV4dC1zbGF0ZS0zMDA6OnBsYWNlaG9sZGVyey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDIwMyAyMTMgMjI1L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0uY29sb3ItcmVkLTYwMHstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyMjAgMzggMzgvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS5ob3Zlclw6Y29sb3Itc2xhdGUtNzAwOmhvdmVyey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDUxIDY1IDg1L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0udGV4dC1vcGFjaXR5LTIwey0tdW4tdGV4dC1vcGFjaXR5Oi4yfS5mb250LTIwMHtmb250LXdlaWdodDoyMDB9LmZvbnQtNTAwLC5mb250LW1lZGl1bXtmb250LXdlaWdodDo1MDB9LmZvbnQtYm9sZHtmb250LXdlaWdodDo3MDB9LmZvbnQtbGlnaHR7Zm9udC13ZWlnaHQ6MzAwfS5mb250LXNlbWlib2xke2ZvbnQtd2VpZ2h0OjYwMH0ubGVhZGluZy1cWzIycHhcXXtsaW5lLWhlaWdodDoyMnB4fS5sZWFkaW5nLTRcLjV7bGluZS1oZWlnaHQ6MS4xMjVyZW19LmxlYWRpbmctNVwuNXtsaW5lLWhlaWdodDoxLjM3NXJlbX0ubGVhZGluZy02e2xpbmUtaGVpZ2h0OjEuNXJlbX0ubGVhZGluZy1ub3JtYWx7bGluZS1oZWlnaHQ6MS41fS5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWN9LnVuZGVybGluZXt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9Lm5vLXVuZGVybGluZSwuaG92ZXItbm8tdW5kZXJsaW5lOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5vcGFjaXR5LTEwe29wYWNpdHk6LjF9Lm9wYWNpdHktMTAwe29wYWNpdHk6MX0ub3BhY2l0eS0yMHtvcGFjaXR5Oi4yfS5vcGFjaXR5LTMwe29wYWNpdHk6LjN9Lm9wYWNpdHktNjB7b3BhY2l0eTouNn0uc2hhZG93ey0tdW4tc2hhZG93OnZhcigtLXVuLXNoYWRvdy1pbnNldCkgMCAxcHggM3B4IDAgdmFyKC0tdW4tc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksdmFyKC0tdW4tc2hhZG93LWluc2V0KSAwIDFweCAycHggLTFweCB2YXIoLS11bi1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXVuLXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXVuLXJpbmctc2hhZG93KSwgdmFyKC0tdW4tc2hhZG93KX0uc2hhZG93LWxney0tdW4tc2hhZG93OnZhcigtLXVuLXNoYWRvdy1pbnNldCkgMCAxMHB4IDE1cHggLTNweCB2YXIoLS11bi1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSx2YXIoLS11bi1zaGFkb3ctaW5zZXQpIDAgNHB4IDZweCAtNHB4IHZhcigtLXVuLXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdW4tcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdW4tcmluZy1zaGFkb3cpLCB2YXIoLS11bi1zaGFkb3cpfS5zaGFkb3ctbWR7LS11bi1zaGFkb3c6dmFyKC0tdW4tc2hhZG93LWluc2V0KSAwIDRweCA2cHggLTFweCB2YXIoLS11bi1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSx2YXIoLS11bi1zaGFkb3ctaW5zZXQpIDAgMnB4IDRweCAtMnB4IHZhcigtLXVuLXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdW4tcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdW4tcmluZy1zaGFkb3cpLCB2YXIoLS11bi1zaGFkb3cpfS5zaGFkb3ctc217LS11bi1zaGFkb3c6dmFyKC0tdW4tc2hhZG93LWluc2V0KSAwIDFweCAycHggMCB2YXIoLS11bi1zaGFkb3ctY29sb3IsIzAwMDAwMDBkKTtib3gtc2hhZG93OnZhcigtLXVuLXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXVuLXJpbmctc2hhZG93KSwgdmFyKC0tdW4tc2hhZG93KX0uZm9jdXMtd2l0aGluXDpvdXRsaW5lLTI6Zm9jdXMtd2l0aGlue291dGxpbmUtd2lkdGg6MnB4fS5mb2N1cy13aXRoaW5cOm91dGxpbmUtcHJpbWFyeS1mb2N1czpmb2N1cy13aXRoaW57b3V0bGluZS1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWZvY3VzKSB9Lm91dGxpbmUsLmZvY3VzLXdpdGhpblw6b3V0bGluZS1zb2xpZDpmb2N1cy13aXRoaW57b3V0bGluZS1zdHlsZTpzb2xpZH0ub3V0bGluZS1ub25lLC5mb2N1c1w6b3V0bGluZS1ub25lOmZvY3VzLC5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLW5vbmU6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLW9mZnNldDoycHg7b3V0bGluZToycHggc29saWQgIzAwMDB9LmZvY3VzLXdpdGhpblw6cmluZy0zOmZvY3VzLXdpdGhpbnstLXVuLXJpbmctd2lkdGg6M3B4Oy0tdW4tcmluZy1vZmZzZXQtc2hhZG93OnZhcigtLXVuLXJpbmctaW5zZXQpIDAgMCAwIHZhcigtLXVuLXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS11bi1yaW5nLW9mZnNldC1jb2xvcik7LS11bi1yaW5nLXNoYWRvdzp2YXIoLS11bi1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKHZhcigtLXVuLXJpbmctd2lkdGgpICsgdmFyKC0tdW4tcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS11bi1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXVuLXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXVuLXJpbmctc2hhZG93KSwgdmFyKC0tdW4tc2hhZG93KX0uZm9jdXMtd2l0aGluXDpyaW5nLW9mZnNldC0xOmZvY3VzLXdpdGhpbnstLXVuLXJpbmctb2Zmc2V0LXdpZHRoOjFweH0uZm9jdXMtd2l0aGluXDpyaW5nLWJsdWUtNDAwOmZvY3VzLXdpdGhpbnstLXVuLXJpbmctb3BhY2l0eToxOy0tdW4tcmluZy1jb2xvcjpyZ2IoOTYgMTY1IDI1MC92YXIoLS11bi1yaW5nLW9wYWNpdHkpKSB9LmZvY3VzXDpyaW5nLWJsdWUtNTAwOmZvY3Vzey0tdW4tcmluZy1vcGFjaXR5OjE7LS11bi1yaW5nLWNvbG9yOnJnYig1OSAxMzAgMjQ2L3ZhcigtLXVuLXJpbmctb3BhY2l0eSkpIH0udHJhbnNpdGlvbnt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLGZpbHRlciwtd2Via2l0LWJhY2tkcm9wLWZpbHRlcixiYWNrZHJvcC1maWx0ZXI7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfS50cmFuc2l0aW9uLWFsbHt0cmFuc2l0aW9uLXByb3BlcnR5OmFsbDt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LnRyYW5zaXRpb24tY29sb3Jze3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX0udHJhbnNpdGlvbi1vcGFjaXR5e3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LnRyYW5zaXRpb24tcGFkZGluZy00MDB7dHJhbnNpdGlvbi1wcm9wZXJ0eTpwYWRkaW5nO3RyYW5zaXRpb24tZHVyYXRpb246LjRzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfS50cmFuc2l0aW9uLXRyYW5zZm9ybXt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LnRyYW5zaXRpb24td2lkdGgtMjUwe3RyYW5zaXRpb24tcHJvcGVydHk6d2lkdGg7dHJhbnNpdGlvbi1kdXJhdGlvbjouMjVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfS5kdXJhdGlvbi0xNTB7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS5kdXJhdGlvbi0zMDB7dHJhbnNpdGlvbi1kdXJhdGlvbjouM3N9LmR1cmF0aW9uLTc1e3RyYW5zaXRpb24tZHVyYXRpb246NzVtc30uZGVsYXktMHt0cmFuc2l0aW9uLWRlbGF5OjBzfS5lYXNlLWluLW91dHt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX0uZWFzZS1vdXR7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsMCwuMiwxKX0uY29udGVudC1cW1wiXCJcXXtjb250ZW50OiIifS5iZy1wcmltYXJ5LWdyYWRpZW50e2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDgwZGVnLCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYWRpZW50LWZyb20pLCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYWRpZW50LXRvKSAxMzAlKX0uYmctcHJpbWFyeS1ncmFkaWVudC1idXR0b257YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoODBkZWcsIHZhcigtLWNvbG9yLXByaW1hcnktZ3JhZGllbnQtYnV0dG9uLWZyb20pLCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYWRpZW50LWJ1dHRvbi10bykgMTMwJSl9LmJnLXByaW1hcnktZ3JhZGllbnQtaG92ZXI6aG92ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoODBkZWcsIHZhcigtLWNvbG9yLXByaW1hcnktZ3JhZGllbnQtaG92ZXItZnJvbSksIHZhcigtLWNvbG9yLXByaW1hcnktZ3JhZGllbnQtaG92ZXItdG8pIDEzMCUpfS5saW5lLWNsYW1wLTV7LXdlYmtpdC1saW5lLWNsYW1wOjU7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsO2Rpc3BsYXk6LXdlYmtpdC1ib3g7b3ZlcmZsb3c6aGlkZGVufS50eXBpbmctaW5kaWNhdG9yLnN2ZWx0ZS1zNDB4Z2t7Ym9yZGVyLXJhZGl1czo5OTk5cHh9LnR5cGluZy1pbmRpY2F0b3Iuc20uc3ZlbHRlLXM0MHhna3t3aWR0aDouMjVyZW07aGVpZ2h0Oi4yNXJlbX0udHlwaW5nLWluZGljYXRvci5tZC5zdmVsdGUtczQweGdre3dpZHRoOi41cmVtO2hlaWdodDouNXJlbX0udHlwaW5nLWluZGljYXRvci5pbmRpY2F0b3ItY29sb3ItYmxhY2suc3ZlbHRlLXM0MHhna3stLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigwIDAgMC92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS50eXBpbmctaW5kaWNhdG9yLmluZGljYXRvci1jb2xvci1ncmF5LnN2ZWx0ZS1zNDB4Z2t7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTAwIDExNiAxMzkvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0udHlwaW5nLWluZGljYXRvci5zdmVsdGUtczQweGdrOm5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1sZWZ0Oi4yNXJlbX0udHlwaW5nLWluZGljYXRvci1zZWNvbmQuc3ZlbHRlLXM0MHhna3thbmltYXRpb24tZGVsYXk6LjFzfS50eXBpbmctaW5kaWNhdG9yLXRoaXJkLnN2ZWx0ZS1zNDB4Z2t7YW5pbWF0aW9uLWRlbGF5Oi4yc30uYnRuLnN2ZWx0ZS0xZTg0bjd3e2JvcmRlci1yYWRpdXM6MS41cmVtO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmctbGVmdDoxcmVtO3BhZGRpbmctcmlnaHQ6MXJlbTt0cmFuc2l0aW9uLXByb3BlcnR5OmFsbDt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7ZGlzcGxheTppbmxpbmUtZmxleH0uYnRuLXByaW1hcnkuc3ZlbHRlLTFlODRuN3d7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbikgO2NvbG9yOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLWNvbnRlbnQpIH0uYnRuLXByaW1hcnkuc3ZlbHRlLTFlODRuN3c6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1ob3ZlcikgfS5idG4tb3V0bGluZS5zdmVsdGUtMWU4NG43d3tib3JkZXItd2lkdGg6MXB4O2JvcmRlci1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbik7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIDstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigwIDAgMC92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSB9LmJ0bi1vdXRsaW5lLnN2ZWx0ZS0xZTg0bjd3OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pIDtjb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1jb250ZW50KSB9LmJ0bi1yYWlzZWQuc3ZlbHRlLTFlODRuN3d7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIDstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSA7Ym94LXNoYWRvdzowIDJweCA2cHggIzAwMDAwMDI5fS5idG4tcmFpc2VkLnN2ZWx0ZS0xZTg0bjd3OmhvdmVyey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0MSAyNDUgMjQ5L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmJ0bi1zbS5zdmVsdGUtMWU4NG43d3toZWlnaHQ6MnJlbX0uYnRuLW1kLnN2ZWx0ZS0xZTg0bjd3e2hlaWdodDoyLjVyZW19LmJ0bi1sZy5zdmVsdGUtMWU4NG43d3toZWlnaHQ6M3JlbX0uYnRuLWRpc2FibGVkLnN2ZWx0ZS0xZTg0bjd3e2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi4yfS5kYXJrLnN2ZWx0ZS1zajk5aDN7YmFja2dyb3VuZC1jb2xvcjojNGI1NTYzZjI7cGFkZGluZzouNXJlbSAuNzVyZW19LmxpZ2h0LnN2ZWx0ZS1zajk5aDN7YmFja2dyb3VuZC1jb2xvcjojOWNhM2FmZjI7cGFkZGluZzouMjVyZW0gLjVyZW19c3ZnLnN2ZWx0ZS15aXhoYXR7ZmlsbDpjdXJyZW50Q29sb3I7d2lkdGg6MWVtO2hlaWdodDoxZW19LmNhcm91c2VsLnN2ZWx0ZS0xMHFxanpke2p1c3RpZnktY29udGVudDpzdGFydDthbGlnbi1pdGVtczpzdGFydDt3aWR0aDoxMDAlfS5jYXJvdXNlbC5zdmVsdGUtMTBxcWp6ZDpob3ZlciAuYnV0dG9uOndoZXJlKC5zdmVsdGUtMTBxcWp6ZCksLmNhcm91c2VsLnN2ZWx0ZS0xMHFxanpkOmZvY3VzLXdpdGhpbiAuYnV0dG9uOndoZXJlKC5zdmVsdGUtMTBxcWp6ZCl7b3BhY2l0eToxfS5idXR0b24uc3ZlbHRlLTEwcXFqemR7b3BhY2l0eTowO3otaW5kZXg6MTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JvcmRlcjpub25lO3RyYW5zaXRpb246b3BhY2l0eSAuNHM7cG9zaXRpb246YWJzb2x1dGV9LmxlZnQuc3ZlbHRlLTEwcXFqemR7bGVmdDotMWVtfS5yaWdodC5zdmVsdGUtMTBxcWp6ZHtyaWdodDotMWVtfS5tZXNzYWdlLWNvbnRlbnQtaHRtbCB1bHttYXJnaW4tcmlnaHQ6LjI1cmVtO3BhZGRpbmctbGVmdDoxcmVtO2xpc3Qtc3R5bGUtdHlwZTpkaXNjfS5tZXNzYWdlLWNvbnRlbnQtaHRtbCBsaTpub3QoOmZpcnN0LWNoaWxkKSwubWVzc2FnZS1jb250ZW50LWh0bWwgbGk+dWwsLm1lc3NhZ2UtY29udGVudC1odG1sIGxpPm9se21hcmdpbi10b3A6LjVyZW19Lm1lc3NhZ2UtY29udGVudC1odG1sIG9se21hcmdpbi1yaWdodDouMjVyZW07cGFkZGluZy1sZWZ0OjFyZW07bGlzdC1zdHlsZS10eXBlOmRlY2ltYWx9Lm1lc3NhZ2UtY29udGVudC1odG1sIGF7dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfS5tZXNzYWdlLWNvbnRlbnQtaHRtbCBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5tZXNzYWdlLWNvbnRlbnQtaHRtbCAqe3doaXRlLXNwYWNlOm5vcm1hbDtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9Lm1lc3NhZ2UtY29udGVudC10ZXh0LnN2ZWx0ZS1uZmIweW17b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkO3dvcmQtYnJlYWs6YnJlYWstd29yZDt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0ubWVzc2FnZS1jb250ZW50LXRleHQgYXt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9Lm1lc3NhZ2UtY29udGVudC10ZXh0IGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmF2YXRhci1ncm91cC1pdGVtLnN2ZWx0ZS15ZnhhN3Q6Zmlyc3Qtb2YtdHlwZXt6LWluZGV4OjN9LmF2YXRhci1ncm91cC1pdGVtLnN2ZWx0ZS15ZnhhN3Q6bnRoLW9mLXR5cGUoMil7ei1pbmRleDoyfS5hdmF0YXItZ3JvdXAtaXRlbS5zdmVsdGUteWZ4YTd0Om50aC1vZi10eXBlKDMpe3otaW5kZXg6MX0uYXZhdGFyLXNtLnN2ZWx0ZS15ZnhhN3Q6bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLWxlZnQ6LTEycHh9LmF2YXRhci1tZC5zdmVsdGUteWZ4YTd0Om5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1sZWZ0Oi0xNnB4fS5hdmF0YXItbGcuc3ZlbHRlLXlmeGE3dDpub3QoOmZpcnN0LWNoaWxkKXttYXJnaW4tbGVmdDotMjJweH0ucmVtb3ZlSWNvbi5zdmVsdGUtMTFmM2Jkd3tvcGFjaXR5OjA7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5O3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX0uYXR0YWNobWVudFdyYXBwZXIuc3ZlbHRlLTExZjNiZHc6aG92ZXIgLnJlbW92ZUljb246d2hlcmUoLnN2ZWx0ZS0xMWYzYmR3KSwuYXR0YWNobWVudFdyYXBwZXIuc3ZlbHRlLTExZjNiZHc6Zm9jdXMtd2l0aGluIC5yZW1vdmVJY29uOndoZXJlKC5zdmVsdGUtMTFmM2Jkdyl7b3BhY2l0eToxfS50ZXh0YXJlYS1jb250YWluZXIuc3ZlbHRlLTF0bDlsY2V7b3ZlcnNjcm9sbC1iZWhhdmlvcjpjb250YWluO3Njcm9sbGJhci13aWR0aDpub25lO2ZsZXg6MTttYXgtaGVpZ2h0OjMycHg7bWFyZ2luLXRvcDouNzVyZW07bWFyZ2luLWJvdHRvbTouNzVyZW07ZGlzcGxheTpncmlkO292ZXJmbG93OmhpZGRlbiBhdXRvfS50ZXh0YXJlYS1jb250YWluZXIuc3ZlbHRlLTF0bDlsY2U6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0udGV4dGFyZWEtY29udGFpbmVyLXJlc2l6YWJsZS5zdmVsdGUtMXRsOWxjZXttYXgtaGVpZ2h0OjEyNXB4fS50ZXh0YXJlYS1jb250YWluZXIuc3ZlbHRlLTF0bDlsY2U6YWZ0ZXJ7Y29udGVudDphdHRyKGRhdGEtdGV4dGFyZWEtdmFsdWUpICIgIjt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt2aXNpYmlsaXR5OmhpZGRlbjtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmQ7d29yZC1icmVhazpicmVhay13b3JkfS50ZXh0YXJlYS1jb250YWluZXIuc3ZlbHRlLTF0bDlsY2U6YWZ0ZXIsdGV4dGFyZWEuc3ZlbHRlLTF0bDlsY2V7Zm9udC1zaXplOmluaGVyaXQ7Z3JpZC1hcmVhOjEvMS8yLzI7bWFyZ2luLWxlZnQ6MXJlbTttYXJnaW4tcmlnaHQ6Ljc1cmVtfXRleHRhcmVhLnN2ZWx0ZS0xdGw5bGNlOjpwbGFjZWhvbGRlcnt3b3JkLWJyZWFrOmJyZWFrLWFsbDtvdmVyZmxvdzpoaWRkZW59ZW0tZW1vamktcGlja2Vyey0tYm9yZGVyLXJhZGl1czoxMnB4Oy0tdW4tYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItd2lkdGg6MXB4O2JvcmRlci1jb2xvcjpyZ2IoMjI2IDIzMiAyNDAvdmFyKC0tdW4tYm9yZGVyLW9wYWNpdHkpKTtib3JkZXItcmFkaXVzOi43NXJlbTt3aWR0aDoxMDAlO2hlaWdodDo0MDBweDttYXgtaGVpZ2h0Ojgwdmg7cGFkZGluZy10b3A6LjI1cmVtO2JveC1zaGFkb3c6MCAxcHggMTVweCAxcHggIzAwMDAwMDFmfS5zd2l0Y2guc3ZlbHRlLTF5emZ6em97LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjI5IDIzMSAyMzUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIDtib3JkZXItcmFkaXVzOjk5OTlweDt3aWR0aDoyLjc1cmVtO2hlaWdodDoxLjVyZW07dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2U7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfS5zd2l0Y2guc3ZlbHRlLTF5emZ6em86Zm9jdXN7b3V0bGluZS1vZmZzZXQ6MnB4O291dGxpbmU6MnB4IHNvbGlkICMwMDAwfS5zd2l0Y2guc3ZlbHRlLTF5emZ6em86YWZ0ZXJ7LS11bi1ib3JkZXItb3BhY2l0eToxO2JvcmRlci13aWR0aDoxcHg7Ym9yZGVyLWNvbG9yOnJnYigyMDkgMjEzIDIxOS92YXIoLS11bi1ib3JkZXItb3BhY2l0eSkpOy0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0NSAyNDUgMjQ1L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSA7Y29udGVudDoiIjtib3JkZXItcmFkaXVzOjk5OTlweDt3aWR0aDoxLjI1cmVtO2hlaWdodDoxLjI1cmVtO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MnB4O2xlZnQ6MnB4fS5zd2l0Y2guY2hlY2tlZC5zdmVsdGUtMXl6Znp6b3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uKSB9LnN3aXRjaC5jaGVja2VkLnN2ZWx0ZS0xeXpmenpvOmFmdGVyey0tdW4tdHJhbnNsYXRlLXg6MTAwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCh2YXIoLS11bi10cmFuc2xhdGUteCkpIHRyYW5zbGF0ZVkodmFyKC0tdW4tdHJhbnNsYXRlLXkpKSB0cmFuc2xhdGVaKHZhcigtLXVuLXRyYW5zbGF0ZS16KSkgcm90YXRlKHZhcigtLXVuLXJvdGF0ZSkpIHJvdGF0ZVgodmFyKC0tdW4tcm90YXRlLXgpKSByb3RhdGVZKHZhcigtLXVuLXJvdGF0ZS15KSkgcm90YXRlWih2YXIoLS11bi1yb3RhdGUteikpIHNrZXdYKHZhcigtLXVuLXNrZXcteCkpIHNrZXdZKHZhcigtLXVuLXNrZXcteSkpIHNjYWxlWCh2YXIoLS11bi1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXVuLXNjYWxlLXkpKSBzY2FsZVoodmFyKC0tdW4tc2NhbGUteikpOy0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0NSAyNDUgMjQ1L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmludmFsaWQuc3ZlbHRlLTEyZjRjMWcsLmludmFsaWQuc3ZlbHRlLTE5bTN1Y3l7LS11bi1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoMjM5IDY4IDY4L3ZhcigtLXVuLWJvcmRlci1vcGFjaXR5KSl9c2VsZWN0LnN2ZWx0ZS04aDVycTR7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSdub25lJyB2aWV3Qm94PScwIDAgMjAgMjAnJTNFJTNDcGF0aCBzdHJva2U9JyUyMzZCNzI4MCcgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzEuNScgZD0nbTYgOCA0IDQgNC00Jy8lM0UlM0Mvc3ZnJTNFIik7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAuNXJlbSBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZToxLjVlbSAxLjVlbX0uaW52YWxpZC5zdmVsdGUtOGg1cnE0ey0tdW4tYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDIzOSA2OCA2OC92YXIoLS11bi1ib3JkZXItb3BhY2l0eSkpfS5pY29uLnN2ZWx0ZS0xcnNhMnF2e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pIDtjb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1jb250ZW50KSA7Ym9yZGVyLXJhZGl1czoxLjVyZW07cGFkZGluZzouNXJlbTtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0uZHJhd2VyLWJ1dHRvbi5zdmVsdGUtajZleHEwe3RleHQtYWxpZ246bGVmdDtib3JkZXItcmFkaXVzOi41cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO3BhZGRpbmc6LjVyZW07dHJhbnNpdGlvbjpjb2xvciA3NW1zIGN1YmljLWJlemllciguNCwwLC4yLDEpLGJhY2tncm91bmQtY29sb3IgNzVtcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKSxib3JkZXItY29sb3IgNzVtcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKSx0ZXh0LWRlY29yYXRpb24tY29sb3IgNzVtcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKSxmaWxsIDc1bXMgY3ViaWMtYmV6aWVyKC40LDAsLjIsMSksc3Ryb2tlIDc1bXMgY3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7ZGlzcGxheTpmbGV4fS5kcmF3ZXItYnV0dG9uLnN2ZWx0ZS1qNmV4cTA6aG92ZXJ7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjQ1IDI0NSAyNDUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uZHJhd2VyLWJ1dHRvbi1kaXNhYmxlZC5zdmVsdGUtajZleHEwe3RleHQtYWxpZ246bGVmdDtvcGFjaXR5Oi4zO2JvcmRlci1yYWRpdXM6LjVyZW07YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOjEwMCU7cGFkZGluZzouNXJlbTtkaXNwbGF5OmZsZXh9LmRyYXdlci1idXR0b24tZGlzYWJsZWQuc3ZlbHRlLWo2ZXhxMDpob3ZlcntjdXJzb3I6bm90LWFsbG93ZWR9LmRyYXdlci1zd2l0Y2guc3ZlbHRlLTFqZXN4dGN7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1yYWRpdXM6LjVyZW07YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOjEwMCU7cGFkZGluZzouNXJlbTt0cmFuc2l0aW9uOmNvbG9yIDc1bXMgY3ViaWMtYmV6aWVyKC40LDAsLjIsMSksYmFja2dyb3VuZC1jb2xvciA3NW1zIGN1YmljLWJlemllciguNCwwLC4yLDEpLGJvcmRlci1jb2xvciA3NW1zIGN1YmljLWJlemllciguNCwwLC4yLDEpLHRleHQtZGVjb3JhdGlvbi1jb2xvciA3NW1zIGN1YmljLWJlemllciguNCwwLC4yLDEpLGZpbGwgNzVtcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKSxzdHJva2UgNzVtcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTtkaXNwbGF5OmZsZXh9LmRyYXdlci1zd2l0Y2guc3ZlbHRlLTFqZXN4dGM6aG92ZXJ7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjQ1IDI0NSAyNDUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0ubWVzc2FnZS1jb250ZW50LnN2ZWx0ZS0xZ2Z2aGk2e292ZXJmbG93LXdyYXA6YnJlYWstd29yZDt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlLXdyYXB9Lm1lc3NhZ2UtY29udGVudC1sZWZ0LnN2ZWx0ZS0xZ2Z2aGk2e2JvcmRlci1yYWRpdXM6LjI1cmVtIDEuNXJlbSAxLjVyZW0gLjI1cmVtfS5tZXNzYWdlLWNvbnRlbnQtbGVmdC1maXJzdC5zdmVsdGUtMWdmdmhpNntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjEuNXJlbX0ubWVzc2FnZS1jb250ZW50LWxlZnQtbGFzdC5zdmVsdGUtMWdmdmhpNntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjEuNXJlbX0ubWVzc2FnZS1jb250ZW50LXJpZ2h0LnN2ZWx0ZS0xZ2Z2aGk2e2JvcmRlci1yYWRpdXM6MS41cmVtIC4yNXJlbSAuMjVyZW0gMS41cmVtfS5tZXNzYWdlLWNvbnRlbnQtcmlnaHQtZmlyc3Quc3ZlbHRlLTFnZnZoaTZ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MS41cmVtfS5tZXNzYWdlLWNvbnRlbnQtcmlnaHQtbGFzdC5zdmVsdGUtMWdmdmhpNntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czoxLjVyZW19LmNvdW50LWFuaW1hdGUuc3ZlbHRlLTIyOGM3bnthbmltYXRpb246LjJzIGN1YmljLWJlemllciguNCwyLC42LDEpIHN2ZWx0ZS0yMjhjN24tcG9wLXNjYWxlfUBrZXlmcmFtZXMgc3ZlbHRlLTIyOGM3bi1wb3Atc2NhbGV7MCV7dHJhbnNmb3JtOnNjYWxlKDEpfTUwJXt0cmFuc2Zvcm06c2NhbGUoMS4xKX10b3t0cmFuc2Zvcm06c2NhbGUoMSl9fQovKiR2aXRlJDoxKi8="}},"time_used":29,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":29,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bootstrap.smartsuppchat.com/widget/94af8d4353c64c882a89c94aad66b4942fb10a18.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://dreamspinfluence.com/","date":"2026-07-27T05:28:13.574Z","timestamp":1785130093574,"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/94af8d4353c64c882a89c94aad66b4942fb10a18.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://dreamspinfluence.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://dreamspinfluence.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 05:28:13 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: \"4ef-Aog11ej5p6Fr1K5teqD2+2AV38Q\"\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":1263,"size_decoded":906,"mime_type":"application/json; charset=utf-8","magic":"JSON text data","md5":"0fafe5fa36153c7c052531504fce61e6","sha1":"028835d5e8f9a7a16bd4ae6d7aa0f6fb6015dfc4","sha256":"aa8819e5205e1595be816b70c0631f925e541df1159aa6c064d7230d8ce9f3ab","sha512":"ce2a26a6444dd55381f79c01ff12d4349bd5dd3b584a129af054c46c64e44fd79c89e17562da3a708721a99d0d75e461dc7dc906d432b31e26257535bfb8ea1e","ssdeep":"","tlshash":"5521676d4a5822ed5245c7d6c5047a076bbcdcb371007ebeea0d5a0e70db2e6213646b","first_seen":"2026-07-27T04:11:05.751755Z","last_seen":"2026-07-27T05:30:59.78977Z","times_seen":3,"resource_available":false,"data":"eyJhaVJhdGluZ0VuYWJsZWQiOnRydWUsImFsbG93ZWREb21haW5zIjpbXSwiYnV0dG9uU3R5bGUiOiJncmVldGluZyIsImNvbG9yIjoiIzEyMzNkZiIsImNvbG9yMiI6bnVsbCwiY29sb3JHcmFkaWVudCI6dHJ1ZSwiY29uc2VudE1vZGVFbmFibGVkIjpmYWxzZSwiY3Jvc3NEb21haW5FbmFibGVkIjpmYWxzZSwiY3VzdG9tQnJhbmRpbmdFbmFibGVkIjpmYWxzZSwiY3VzdG9tQnJhbmRpbmdMaW5rIjoiIiwiY3VzdG9tQnJhbmRpbmdUZXh0IjoiIiwiZW1haWxDb250cm9sIjp0cnVlLCJmZWF0dXJlcyI6eyJhcGkiOmZhbHNlLCJjdXN0b21pemUiOmZhbHNlLCJnYSI6ZmFsc2UsImdyb3VwcyI6ZmFsc2UsInJhdGluZyI6ZmFsc2UsIndoaXRlTGFiZWwiOmZhbHNlfSwiZ29vZ2xlQW5hbHl0aWNzRW5hYmxlZCI6ZmFsc2UsImdvb2dsZUFuYWx5dGljc01hbnVhbCI6ZmFsc2UsImdvb2dsZUFuYWx5dGljc01lYXN1cmVtZW50SWRzIjpbXSwiZ3JvdXBTZWxlY3RFbmFibGVkIjpmYWxzZSwiaGVhZGVyU3R5bGUiOiJzdGFuZGFyZCIsImhpZGVPZmZsaW5lQ2hhdCI6ZmFsc2UsImhpZGVXaWRnZXQiOmZhbHNlLCJob3N0Ijoid2Vic29ja2V0LXZpc2l0b3JzLnNtYXJ0c3VwcC5jb20iLCJpbnRlcm5hbEFuYWx5dGljc0VuYWJsZWQiOmZhbHNlLCJpc0Jsb2NrZWQiOmZhbHNlLCJsYW5nIjoiZW4iLCJtb2JpbGVQb3B1cHNFbmFibGVkIjp0cnVlLCJuYW1lQ29udHJvbCI6dHJ1ZSwibnVtYmVyQ29udHJvbCI6ZmFsc2UsIm9wZW5PblRyaWdnZXIiOmZhbHNlLCJvcmllbnRhdGlvbiI6InJpZ2h0IiwicGFja2FnZU5hbWUiOiJmcmVlIiwicG9wdXBUZXh0YXJlYUVuYWJsZWQiOmZhbHNlLCJwcml2YWN5Tm90aWNlQ2hlY2tSZXF1aXJlZCI6ZmFsc2UsInByaXZhY3lOb3RpY2VFbmFibGVkIjp0cnVlLCJwcml2YWN5Tm90aWNlVXJsIjoiIiwicmF0aW5nRW5hYmxlZCI6ZmFsc2UsInJlcXVpcmVMb2dpbiI6ZmFsc2UsInRyYW5zbGF0ZXMiOnsiZW4iOnsiYnV0dG9uLmdyZWV0aW5nIjoiQ2hhdCB3aXRoIHVzISJ9fSwidXJsQ2FyZHNFbmFibGVkIjp0cnVlLCJ3aWRnZXRWZXJzaW9uIjozLCJoYXNJbnRlcm5hbEFwaSI6ZmFsc2UsImNvbmZpZyI6e30sImJyb3dzZXJMYW5nIjoiZW4iLCJ3aWRnZXRUcmFja2VyVXJsIjoiaHR0cHM6Ly93aWRnZXQtdHJhY2tlci5zbWFydHN1cHAuY29tIiwidHJhbnNsYXRpb25zQmFzZVVybCI6Imh0dHBzOi8vdHJhbnNsYXRpb25zLnNtYXJ0c3VwcGNkbi5jb20iLCJ3aWRnZXRUcmFja2VyRW5hYmxlZCI6ZmFsc2V9"}},"time_used":87,"timings":{"blocked":0,"dns":3,"connect":24,"send":0,"wait":28,"receive":0,"ssl":32},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.jquery.com/jquery-latest.min.js","fqdn":"code.jquery.com","domain":"jquery.com","tld":"com"},"ip":{"addr":"151.101.193.155","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.009Z","timestamp":1785130090009,"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-latest.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://dreamspinfluence.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-1762a\"\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 05:28:10 GMT\r\nage: 3537220\r\nx-served-by: cache-lga21983-LGA, cache-bma-essb1270057-BMA\r\nx-cache: HIT, HIT\r\nx-cache-hits: 43985, 169107\r\nx-timer: S1785130090.053199,VS0,VE0\r\nvary: Accept-Encoding\r\ncontent-length: 33202\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":95786,"size_decoded":33844,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (32086)","md5":"8101d596b2b8fa35fe3a634ea342d7c3","sha1":"d6c1f41972de07b09bfa63d2e50f9ab41ec372bd","sha256":"540bc6dec1dd4b92ea4d3fb903f69eabf6d919afd48f4e312b163c28cff0f441","sha512":"9e1634eb02ab6acdfd95bf6544eefa278dfdec21f55e94522df2c949fb537a8dfeab6bcfecf69e6c82c7f53a87f864699ce85f0068ee60c56655339927eebcdb","ssdeep":"1536:/PEkjP+iADIOr/NEe876nmBu3HvF38sEeLHFoqqhJ7SerN5wVI+xcBmPv7E+nzm6:ENMyqhJvN32cBC7M6Whca98HrB","tlshash":"b293c8d9b6d27162977730b850bf510bb13a98eab80c4c60f1a4d8e47d78e89507bf2d","first_seen":"2023-03-07T01:02:02Z","last_seen":"2026-08-02T16:20:16.363146Z","times_seen":55622,"resource_available":true,"data":"LyohIGpRdWVyeSB2MS4xMS4xIHwgKGMpIDIwMDUsIDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPXt9LGw9IjEuMTEuMSIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5mbi5pbml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14tbXMtLyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpkLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZiPmM/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW0udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBhcnNlRmxvYXQoYSk+PTB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtpZighYXx8Im9iamVjdCIhPT1tLnR5cGUoYSl8fGEubm9kZVR5cGV8fG0uaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFqLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWouY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfWlmKGsub3duTGFzdClmb3IoYiBpbiBhKXJldHVybiBqLmNhbGwoYSxiKTtmb3IoYiBpbiBhKTtyZXR1cm4gdm9pZCAwPT09Ynx8ai5jYWxsKGEsYil9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP2hbaS5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmbS50cmltKGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKG8sIm1zLSIpLnJlcGxhY2UocCxxKX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPTAsZj1hLmxlbmd0aCxnPXIoYSk7aWYoYyl7aWYoZyl7Zm9yKDtmPmU7ZSsrKWlmKGQ9Yi5hcHBseShhW2VdLGMpLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgaWYoZyl7Zm9yKDtmPmU7ZSsrKWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWt9ZWxzZSBmb3IoZSBpbiBhKWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6KGErIiIpLnJlcGxhY2UobiwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtdO3JldHVybiBudWxsIT1hJiYocihPYmplY3QoYSkpP20ubWVyZ2UoYywic3RyaW5nIj09dHlwZW9mIGE/W2FdOmEpOmYuY2FsbChjLGEpKSxjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihnKXJldHVybiBnLmNhbGwoYixhLGMpO2ZvcihkPWIubGVuZ3RoLGM9Yz8wPmM/TWF0aC5tYXgoMCxkK2MpOmM6MDtkPmM7YysrKWlmKGMgaW4gYiYmYltjXT09PWEpcmV0dXJuIGN9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYil7dmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO3doaWxlKGM+ZClhW2UrK109YltkKytdO2lmKGMhPT1jKXdoaWxlKHZvaWQgMCE9PWJbZF0pYVtlKytdPWJbZCsrXTtyZXR1cm4gYS5sZW5ndGg9ZSxhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQsZT1bXSxmPTAsZz1hLmxlbmd0aCxoPSFjO2c+ZjtmKyspZD0hYihhW2ZdLGYpLGQhPT1oJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZj0wLGc9YS5sZW5ndGgsaD1yKGEpLGk9W107aWYoaClmb3IoO2c+ZjtmKyspZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7ZWxzZSBmb3IoZiBpbiBhKWQ9YihhW2ZdLGYsYyksbnVsbCE9ZCYmaS5wdXNoKGQpO3JldHVybiBlLmFwcGx5KFtdLGkpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiJiYoZj1hW2JdLGI9YSxhPWYpLG0uaXNGdW5jdGlvbihhKT8oYz1kLmNhbGwoYXJndW1lbnRzLDIpLGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGMuY29uY2F0KGQuY2FsbChhcmd1bWVudHMpKSl9LGUuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxtLmd1aWQrKyxlKTp2b2lkIDB9LG5vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDprfSksbS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7aFsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiByKGEpe3ZhciBiPWEubGVuZ3RoLGM9bS50eXBlKGEpO3JldHVybiJmdW5jdGlvbiI9PT1jfHxtLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZiPyEwOiJhcnJheSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfXZhciBzPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU9InNpenpsZSIrLW5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9Z2IoKSx6PWdiKCksQT1nYigpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPSJ1bmRlZmluZWQiLEQ9MTw8MzEsRT17fS5oYXNPd25Qcm9wZXJ0eSxGPVtdLEc9Ri5wb3AsSD1GLnB1c2gsST1GLnB1c2gsSj1GLnNsaWNlLEs9Ri5pbmRleE9mfHxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2M+YjtiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9LEw9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixOPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsTz1OLnJlcGxhY2UoInciLCJ3IyIpLFA9IlxcWyIrTSsiKigiK04rIikoPzoiK00rIiooWypeJHwhfl0/PSkiK00rIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitPKyIpKXwpIitNKyIqXFxdIixRPSI6KCIrTisiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrUCsiKSopfC4qKVxcKXwpIixSPW5ldyBSZWdFeHAoIl4iK00rIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTSsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitNKyIqLCIrTSsiKiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTSsiKihbPit+XXwiK00rIikiK00rIioiKSxVPW5ldyBSZWdFeHAoIj0iK00rIiooW15cXF0nXCJdKj8pIitNKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChRKSxXPW5ldyBSZWdFeHAoIl4iK08rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK04rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTisiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTi5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrUCksUFNFVURPOm5ldyBSZWdFeHAoIl4iK1EpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0wrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYj0vWyt+XS8sYmI9Lyd8XFwvZyxjYj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK00rIj98KCIrTSsiKXwuKSIsImlnIiksZGI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9O3RyeXtJLmFwcGx5KEY9Si5jYWxsKHYuY2hpbGROb2Rlcyksdi5jaGlsZE5vZGVzKSxGW3YuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGViKXtJPXthcHBseTpGLmxlbmd0aD9mdW5jdGlvbihhLGIpe0guYXBwbHkoYSxKLmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBmYihhLGIsZCxlKXt2YXIgZixoLGosayxsLG8scixzLHcseDtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixkPWR8fFtdLCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShrPWIubm9kZVR5cGUpJiY5IT09aylyZXR1cm5bXTtpZihwJiYhZSl7aWYoZj1fLmV4ZWMoYSkpaWYoaj1mWzFdKXtpZig5PT09ayl7aWYoaD1iLmdldEVsZW1lbnRCeUlkKGopLCFofHwhaC5wYXJlbnROb2RlKXJldHVybiBkO2lmKGguaWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGg9Yi5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGopKSYmdChiLGgpJiZoLmlkPT09ailyZXR1cm4gZC5wdXNoKGgpLGR9ZWxzZXtpZihmWzJdKXJldHVybiBJLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoaj1mWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEkuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4PTk9PT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1nKGEpLChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYiwiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0pb1tsXT1zK3FiKG9bbF0pO3c9YWIudGVzdChhKSYmb2IoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9pbigiLCIpfWlmKHgpdHJ5e3JldHVybiBJLmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxkfWNhdGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGdiKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBoYihhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGliKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gamIoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24ga2IoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEQpLSh+YS5zb3VyY2VJbmRleHx8RCk7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIGxiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG1iKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBuYihhKXtyZXR1cm4gaGIoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaGIoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBvYihhKXtyZXR1cm4gYSYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPT1DJiZhfWM9ZmIuc3VwcG9ydD17fSxmPWZiLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxtPWZiLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGU9YT9hLm93bmVyRG9jdW1lbnR8fGE6dixnPWUuZGVmYXVsdFZpZXc7cmV0dXJuIGUhPT1uJiY5PT09ZS5ub2RlVHlwZSYmZS5kb2N1bWVudEVsZW1lbnQ/KG49ZSxvPWUuZG9jdW1lbnRFbGVtZW50LHA9IWYoZSksZyYmZyE9PWcudG9wJiYoZy5hZGRFdmVudExpc3RlbmVyP2cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixmdW5jdGlvbigpe20oKX0sITEpOmcuYXR0YWNoRXZlbnQmJmcuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe20oKX0pKSxjLmF0dHJpYnV0ZXM9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1pYihmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSYmaWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdhJz48L2Rpdj48ZGl2IGNsYXNzPSdhIGknPjwvZGl2PiIsYS5maXJzdENoaWxkLmNsYXNzTmFtZT0iaSIsMj09PWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aH0pLGMuZ2V0QnlJZD1pYihmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFlLmdldEVsZW1lbnRzQnlOYW1lfHwhZS5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09QyYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYixkYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PUMmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Qz9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PUMmJnA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZS5xdWVyeVNlbGVjdG9yQWxsKSkmJihpYihmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdCBtc2FsbG93Y2xpcD0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NsaXBePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK0wrIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIil9KSxpYihmdW5jdGlvbihhKXt2YXIgYj1lLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxhLmFwcGVuZENoaWxkKGIpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoJiZxLnB1c2goIm5hbWUiK00rIipbKl4kfCF+XT89IiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8cS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLHEucHVzaCgiLC4qOiIpfSkpLChjLm1hdGNoZXNTZWxlY3Rvcj0kLnRlc3Qocz1vLm1hdGNoZXN8fG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxvLm1vek1hdGNoZXNTZWxlY3Rvcnx8by5vTWF0Y2hlc1NlbGVjdG9yfHxvLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmliKGZ1bmN0aW9uKGEpe2MuZGlzY29ubmVjdGVkTWF0Y2g9cy5jYWxsKGEsImRpdiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixRKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9JC50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8JC50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09ZXx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1lfHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA6NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGY9YS5wYXJlbnROb2RlLGc9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFmfHwhZylyZXR1cm4gYT09PWU/LTE6Yj09PWU/MTpmPy0xOmc/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA7aWYoZj09PWcpcmV0dXJuIGtiKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaS51bnNoaWZ0KGMpO3doaWxlKGhbZF09PT1pW2RdKWQrKztyZXR1cm4gZD9rYihoW2RdLGlbZF0pOmhbZF09PT12Py0xOmlbZF09PT12PzE6MH0sZSk6bn0sZmIubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBmYihhLG51bGwsbnVsbCxiKX0sZmIubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFUsIj0nJDEnXSIpLCEoIWMubWF0Y2hlc1NlbGVjdG9yfHwhcHx8ciYmci50ZXN0KGIpfHxxJiZxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBmYihiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxmYi5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGZiLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZFLmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxmYi5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGZiLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIpLGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNwbGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1mYi5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9ZmIuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aGIsbWF0Y2g6WCxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKGNiLGRiKSxhWzNdPShhWzNdfHxhWzRdfHxhWzVdfHwiIikucmVwbGFjZShjYixkYiksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGZiLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2FbNV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzddK2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmZiLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5jdGlvbihhKXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBYLkNISUxELnRlc3QoYVswXSk/bnVsbDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlYudGVzdChjKSYmKGI9ZyhjLCEwKSkmJihiPWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2IsZGIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2ErIigiK00rInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fHR5cGVvZiBhLmdldEF0dHJpYnV0ZSE9PUMmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWZiLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09YjpiPyhlKz0iIiwiPSI9PT1iP2U9PT1jOiIhPSI9PT1iP2UhPT1jOiJePSI9PT1iP2MmJjA9PT1lLmluZGV4T2YoYyk6Iio9Ij09PWI/YyYmZS5pbmRleE9mKGMpPi0xOiIkPSI9PT1iP2MmJmUuc2xpY2UoLWMubGVuZ3RoKT09PWM6In49Ij09PWI/KCIgIitlKyIgIikuaW5kZXhPZihjKT4tMToifD0iPT09Yj9lPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSI6ITEpOiEwfX0sQ0hJTEQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0ibnRoIiE9PWEuc2xpY2UoMCwzKSxnPSJsYXN0IiE9PWEuc2xpY2UoLTQpLGg9Im9mLXR5cGUiPT09YjtyZXR1cm4gMT09PWQmJjA9PT1lP2Z1bmN0aW9uKGEpe3JldHVybiEhYS5wYXJlbnROb2RlfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG0sbixvLHA9ZiE9PWc/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixxPWIucGFyZW50Tm9kZSxyPWgmJmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxzPSFpJiYhaDtpZihxKXtpZihmKXt3aGlsZShwKXtsPWI7d2hpbGUobD1sW3BdKWlmKGg/bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bC5ub2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe2s9cVt1XXx8KHFbdV09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSxtPWpbMF09PT13JiZqWzJdLGw9biYmcS5jaGlsZE5vZGVzW25dO3doaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKDE9PT1sLm5vZGVUeXBlJiYrK20mJmw9PT1iKXtrW2FdPVt3LG4sbV07YnJlYWt9fWVsc2UgaWYocyYmKGo9KGJbdV18fChiW3VdPXt9KSlbYV0pJiZqWzBdPT09dyltPWpbMV07ZWxzZSB3aGlsZShsPSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSlpZigoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKSYmKyttJiYocyYmKChsW3VdfHwobFt1XT17fSkpW2FdPVt3LG1dKSxsPT09YikpYnJlYWs7cmV0dXJuIG0tPWUsbT09PWR8fG0lZD09PTAmJm0vZD49MH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRvc1thXXx8ZC5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0sZC5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aGIoZnVuY3Rpb24oYSxjKXt2YXIgZCxmPWUoYSxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUsuY2FsbChhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDpoYihmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0/aGIoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksIWMucG9wKCl9fSksaGFzOmhiKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZmIoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczpoYihmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aGIoZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChhfHwiIil8fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKGNiLGRiKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGIpe3ZhciBjO2RvIGlmKGM9cD9iLmxhbmc6Yi5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGIuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuIGM9Yy50b0xvd2VyQ2FzZSgpLGM9PT1hfHwwPT09Yy5pbmRleE9mKGErIi0iKTt3aGlsZSgoYj1iLnBhcmVudE5vZGUpJiYxPT09Yi5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGIpe3ZhciBjPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFzaDtyZXR1cm4gYyYmYy5zbGljZSgxKT09PWIuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1vfSxmb2N1czpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW4uYWN0aXZlRWxlbWVudCYmKCFuLmhhc0ZvY3VzfHxuLmhhc0ZvY3VzKCkpJiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGEuc2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHkoYSl9LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gWi50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gWS50ZXN0KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRvbiI9PT1ifSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShiPWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpuYihmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bmIoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYi0xXX0pLGVxOm5iKGZ1bmN0aW9uKGEsYixjKXtyZXR1cm5bMD5jP2MrYjpjXX0pLGV2ZW46bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxsdDpuYihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4gYX0pLGd0Om5iKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9zLmVxO2ZvcihiIGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWQucHNldWRvc1tiXT1sYihiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQucHNldWRvc1tiXT1tYihiKTtmdW5jdGlvbiBwYigpe31wYi5wcm90b3R5cGU9ZC5maWx0ZXJzPWQucHNldWRvcyxkLnNldEZpbHRlcnM9bmV3IHBiLGc9ZmIudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXpbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7d2hpbGUoaCl7KCFjfHwoZT1TLmV4ZWMoaCkpKSYmKGUmJihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9VC5leGVjKGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShSLCIgIil9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9WFtnXS5leGVjKGgpKXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4gYj9oLmxlbmd0aDpoP2ZiLmVycm9yKGEpOnooYSxpKS5zbGljZSgwKX07ZnVuY3Rpb24gcWIoYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2M+YjtiKyspZCs9YVtiXS52YWx1ZTtyZXR1cm4gZH1mdW5jdGlvbiByYihhLGIsYyl7dmFyIGQ9Yi5kaXIsZT1jJiYicGFyZW50Tm9kZSI9PT1kLGY9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxmKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpcmV0dXJuIGEoYixjLGYpfTpmdW5jdGlvbihiLGMsZyl7dmFyIGgsaSxqPVt3LGZdO2lmKGcpe3doaWxlKGI9YltkXSlpZigoMT09PWIubm9kZVR5cGV8fGUpJiZhKGIsYyxnKSlyZXR1cm4hMH1lbHNlIHdoaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSl7aWYoaT1iW3VdfHwoYlt1XT17fSksKGg9aVtkXSkmJmhbMF09PT13JiZoWzFdPT09ZilyZXR1cm4galsyXT1oWzJdO2lmKGlbZF09aixqWzJdPWEoYixjLGcpKXJldHVybiEwfX19ZnVuY3Rpb24gc2IoYSl7cmV0dXJuIGEubGVuZ3RoPjE/ZnVuY3Rpb24oYixjLGQpe3ZhciBlPWEubGVuZ3RoO3doaWxlKGUtLSlpZighYVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gdGIoYSxiLGMpe2Zvcih2YXIgZD0wLGU9Yi5sZW5ndGg7ZT5kO2QrKylmYihhLGJbZF0sYyk7cmV0dXJuIGN9ZnVuY3Rpb24gdWIoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwhPWI7aT5oO2grKykoZj1hW2hdKSYmKCFjfHxjKGYsZCxlKSkmJihnLnB1c2goZiksaiYmYi5wdXNoKGgpKTtyZXR1cm4gZ31mdW5jdGlvbiB2YihhLGIsYyxkLGUsZil7cmV0dXJuIGQmJiFkW3VdJiYoZD12YihkKSksZSYmIWVbdV0mJihlPXZiKGUsZikpLGhiKGZ1bmN0aW9uKGYsZyxoLGkpe3ZhciBqLGssbCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fHRiKGJ8fCIqIixoLm5vZGVUeXBlP1toXTpoLFtdKSxxPSFhfHwhZiYmYj9wOnViKHAsbSxhLGgsaSkscj1jP2V8fChmP2E6b3x8ZCk/W106ZzpxO2lmKGMmJmMocSxyLGgsaSksZCl7aj11YihyLG4pLGQoaixbXSxoLGkpLGs9ai5sZW5ndGg7d2hpbGUoay0tKShsPWpba10pJiYocltuW2tdXT0hKHFbbltrXV09bCkpfWlmKGYpe2lmKGV8fGEpe2lmKGUpe2o9W10saz1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJmoucHVzaChxW2tdPWwpO2UobnVsbCxyPVtdLGosaSl9az1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJihqPWU/Sy5jYWxsKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj11YihyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SS5hcHBseShnLHIpfSl9ZnVuY3Rpb24gd2IoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1yYihmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9cmIoZnVuY3Rpb24oYSl7cmV0dXJuIEsuY2FsbChiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7cmV0dXJuIWcmJihkfHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSl9XTtmPmk7aSsrKWlmKGM9ZC5yZWxhdGl2ZVthW2ldLnR5cGVdKW09W3JiKHNiKG0pLGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0Y2hlcyksY1t1XSl7Zm9yKGU9KytpO2Y+ZTtlKyspaWYoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKWJyZWFrO3JldHVybiB2YihpPjEmJnNiKG0pLGk+MSYmcWIoYS5zbGljZSgwLGktMSkuY29uY2F0KHt2YWx1ZToiICI9PT1hW2ktMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShSLCIkMSIpLGMsZT5pJiZ3YihhLnNsaWNlKGksZSkpLGY+ZSYmd2IoYT1hLnNsaWNlKGUpKSxmPmUmJnFiKGEpKX1tLnB1c2goYyl9cmV0dXJuIHNiKG0pfWZ1bmN0aW9uIHhiKGEsYil7dmFyIGM9Yi5sZW5ndGg+MCxlPWEubGVuZ3RoPjAsZj1mdW5jdGlvbihmLGcsaCxpLGspe3ZhciBsLG0sbyxwPTAscT0iMCIscj1mJiZbXSxzPVtdLHQ9aix1PWZ8fGUmJmQuZmluZC5UQUcoIioiLGspLHY9dys9bnVsbD09dD8xOk1hdGgucmFuZG9tKCl8fC4xLHg9dS5sZW5ndGg7Zm9yKGsmJihqPWchPT1uJiZnKTtxIT09eCYmbnVsbCE9KGw9dVtxXSk7cSsrKXtpZihlJiZsKXttPTA7d2hpbGUobz1hW20rK10paWYobyhsLGcsaCkpe2kucHVzaChsKTticmVha31rJiYodz12KX1jJiYoKGw9IW8mJmwpJiZwLS0sZiYmci5wdXNoKGwpKX1pZihwKz1xLGMmJnEhPT1wKXttPTA7d2hpbGUobz1iW20rK10pbyhyLHMsZyxoKTtpZihmKXtpZihwPjApd2hpbGUocS0tKXJbcV18fHNbcV18fChzW3FdPUcuY2FsbChpKSk7cz11YihzKX1JLmFwcGx5KGkscyksayYmIWYmJnMubGVuZ3RoPjAmJnArYi5sZW5ndGg+MSYmZmIudW5pcXVlU29ydChpKX1yZXR1cm4gayYmKHc9dixqPXQpLHJ9O3JldHVybiBjP2hiKGYpOmZ9cmV0dXJuIGg9ZmIuY29tcGlsZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYSsiICJdO2lmKCFmKXtifHwoYj1nKGEpKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlmPXdiKGJbY10pLGZbdV0/ZC5wdXNoKGYpOmUucHVzaChmKTtmPUEoYSx4YihlLGQpKSxmLnNlbGVjdG9yPWF9cmV0dXJuIGZ9LGk9ZmIuc2VsZWN0PWZ1bmN0aW9uKGEsYixlLGYpe3ZhciBpLGosayxsLG0sbj0iZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxvPSFmJiZnKGE9bi5zZWxlY3Rvcnx8YSk7aWYoZT1lfHxbXSwxPT09by5sZW5ndGgpe2lmKGo9b1swXT1vWzBdLnNsaWNlKDApLGoubGVuZ3RoPjImJiJJRCI9PT0oaz1qWzBdKS50eXBlJiZjLmdldEJ5SWQmJjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2pbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChrLm1hdGNoZXNbMF0ucmVwbGFjZShjYixkYiksYil8fFtdKVswXSwhYilyZXR1cm4gZTtuJiYoYj1iLnBhcmVudE5vZGUpLGE9YS5zbGljZShqLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPVgubmVlZHNDb250ZXh0LnRlc3QoYSk/MDpqLmxlbmd0aDt3aGlsZShpLS0pe2lmKGs9altpXSxkLnJlbGF0aXZlW2w9ay50eXBlXSlicmVhaztpZigobT1kLmZpbmRbbF0pJiYoZj1tKGsubWF0Y2hlc1swXS5yZXBsYWNlKGNiLGRiKSxhYi50ZXN0KGpbMF0udHlwZSkmJm9iKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoai5zcGxpY2UoaSwxKSxhPWYubGVuZ3RoJiZxYihqKSwhYSlyZXR1cm4gSS5hcHBseShlLGYpLGU7YnJlYWt9fX1yZXR1cm4obnx8aChhLG8pKShmLGIsIXAsZSxhYi50ZXN0KGEpJiZvYihiLnBhcmVudE5vZGUpfHxiKSxlfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGpiKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGpiKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxqYihMLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxmYn0oYSk7bS5maW5kPXMsbS5leHByPXMuc2VsZWN0b3JzLG0uZXhwclsiOiJdPW0uZXhwci5wc2V1ZG9zLG0udW5pcXVlPXMudW5pcXVlU29ydCxtLnRleHQ9cy5nZXRUZXh0LG0uaXNYTUxEb2M9cy5pc1hNTCxtLmNvbnRhaW5zPXMuY29udGFpbnM7dmFyIHQ9bS5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx1PS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sdj0vXi5bXjojXFtcLixdKiQvO2Z1bmN0aW9uIHcoYSxiLGMpe2lmKG0uaXNGdW5jdGlvbihiKSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10eXBlb2YgYil7aWYodi50ZXN0KGIpKXJldHVybiBtLmZpbHRlcihiLGEsYyk7Yj1tLmZpbHRlcihiLGEpfXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gbS5pbkFycmF5KGEsYik+PTAhPT1jfSl9bS5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bS5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpbXTptLmZpbmQubWF0Y2hlcyhhLG0uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sbS5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIHRoaXMucHVzaFN0YWNrKG0oYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtlPmI7YisrKWlmKG0uY29udGFpbnMoZFtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYj0wO2U+YjtiKyspbS5maW5kKGEsZFtiXSxjKTtyZXR1cm4gYz10aGlzLnB1c2hTdGFjayhlPjE/bS51bmlxdWUoYyk6YyksYy5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2E6YSxjfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIXcodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJnQudGVzdChhKT9tKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHgseT1hLmRvY3VtZW50LHo9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxBPW0uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoIWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWEuY2hhckF0KDApJiYiPiI9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxsXTp6LmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8eCkuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoY1sxXSl7aWYoYj1iIGluc3RhbmNlb2YgbT9iWzBdOmIsbS5tZXJnZSh0aGlzLG0ucGFyc2VIVE1MKGNbMV0sYiYmYi5ub2RlVHlwZT9iLm93bmVyRG9jdW1lbnR8fGI6eSwhMCkpLHUudGVzdChjWzFdKSYmbS5pc1BsYWluT2JqZWN0KGIpKWZvcihjIGluIGIpbS5pc0Z1bmN0aW9uKHRoaXNbY10pP3RoaXNbY10oYltjXSk6dGhpcy5hdHRyKGMsYltjXSk7cmV0dXJuIHRoaXN9aWYoZD15LmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFyZW50Tm9kZSl7aWYoZC5pZCE9PWNbMl0pcmV0dXJuIHguZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09ZH1yZXR1cm4gdGhpcy5jb250ZXh0PXksdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTptLmlzRnVuY3Rpb24oYSk/InVuZGVmaW5lZCIhPXR5cGVvZiB4LnJlYWR5P3gucmVhZHkoYSk6YShtKToodm9pZCAwIT09YS5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KSxtLm1ha2VBcnJheShhLHRoaXMpKX07QS5wcm90b3R5cGU9bS5mbix4PW0oeSk7dmFyIEI9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sQz17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTttLmV4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPWFbYl07d2hpbGUoZSYmOSE9PWUubm9kZVR5cGUmJih2b2lkIDA9PT1jfHwxIT09ZS5ub2RlVHlwZXx8IW0oZSkuaXMoYykpKTE9PT1lLm5vZGVUeXBlJiZkLnB1c2goZSksZT1lW2JdO3JldHVybiBkfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0pLG0uZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1tKGEsdGhpcyksZD1jLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobS5jb250YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPXQudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBhP20oYSxifHx0aGlzLmNvbnRleHQpOjA7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJm0uZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9tLnVuaXF1ZShmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP20uaW5BcnJheSh0aGlzWzBdLG0oYSkpOm0uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS51bmlxdWUobS5tZXJnZSh0aGlzLmdldCgpLG0oYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRChhLGIpe2RvIGE9YVtiXTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bS5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBtLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEQoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBtLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDptLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe20uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1tLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihlPW0uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihDW2FdfHwoZT1tLnVuaXF1ZShlKSksQi50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBFPS9cUysvZyxGPXt9O2Z1bmN0aW9uIEcoYSl7dmFyIGI9RlthXT17fTtyZXR1cm4gbS5lYWNoKGEubWF0Y2goRSl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bS5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/RlthXXx8RyhhKTptLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxmLGcsaD1bXSxpPSFhLm9uY2UmJltdLGo9ZnVuY3Rpb24obCl7Zm9yKGM9YS5tZW1vcnkmJmwsZD0hMCxmPWd8fDAsZz0wLGU9aC5sZW5ndGgsYj0hMDtoJiZlPmY7ZisrKWlmKGhbZl0uYXBwbHkobFswXSxsWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtjPSExO2JyZWFrfWI9ITEsaCYmKGk/aS5sZW5ndGgmJmooaS5zaGlmdCgpKTpjP2g9W106ay5kaXNhYmxlKCkpfSxrPXthZGQ6ZnVuY3Rpb24oKXtpZihoKXt2YXIgZD1oLmxlbmd0aDshZnVuY3Rpb24gZihiKXttLmVhY2goYixmdW5jdGlvbihiLGMpe3ZhciBkPW0udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmay5oYXMoYyl8fGgucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksYj9lPWgubGVuZ3RoOmMmJihnPWQsaihjKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBoJiZtLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYyl7dmFyIGQ7d2hpbGUoKGQ9bS5pbkFycmF5KGMsaCxkKSk+LTEpaC5zcGxpY2UoZCwxKSxiJiYoZT49ZCYmZS0tLGY+PWQmJmYtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bS5pbkFycmF5KGEsaCk+LTE6ISghaHx8IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxlPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWk9Yz12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPXZvaWQgMCxjfHxrLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sZmlyZVdpdGg6ZnVuY3Rpb24oYSxjKXtyZXR1cm4haHx8ZCYmIWl8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sYj9pLnB1c2goYyk6aihjKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBrLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBrfSxtLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLG0uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsbS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbS5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBtLkRlZmVycmVkKGZ1bmN0aW9uKGMpe20uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bS5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZtLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5kb25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZlswXSsiV2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP20uZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbS5lYWNoKGIsZnVuY3Rpb24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1kLmNhbGwoYXJndW1lbnRzKSxlPWMubGVuZ3RoLGY9MSE9PWV8fGEmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxnPTE9PT1mP2E6bS5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihlKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVudHMubGVuZ3RoPjE/ZC5jYWxsKGFyZ3VtZW50cyk6ZSxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGU+MSlmb3IoaT1uZXcgQXJyYXkoZSksaj1uZXcgQXJyYXkoZSksaz1uZXcgQXJyYXkoZSk7ZT5iO2IrKyljW2JdJiZtLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5kb25lKGgoYixrLGMpKS5mYWlsKGcucmVqZWN0KS5wcm9ncmVzcyhoKGIsaixpKSk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEg7bS5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbS5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxtLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9tLnJlYWR5V2FpdCsrOm0ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITA/IS0tbS5yZWFkeVdhaXQ6IW0uaXNSZWFkeSl7aWYoIXkuYm9keSlyZXR1cm4gc2V0VGltZW91dChtLnJlYWR5KTttLmlzUmVhZHk9ITAsYSE9PSEwJiYtLW0ucmVhZHlXYWl0PjB8fChILnJlc29sdmVXaXRoKHksW21dKSxtLmZuLnRyaWdnZXJIYW5kbGVyJiYobSh5KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxtKHkpLm9mZigicmVhZHkiKSkpfX19KTtmdW5jdGlvbiBJKCl7eS5hZGRFdmVudExpc3RlbmVyPyh5LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEosITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwhMSkpOih5LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuZGV0YWNoRXZlbnQoIm9ubG9hZCIsSikpfWZ1bmN0aW9uIEooKXsoeS5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1ldmVudC50eXBlfHwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKSYmKEkoKSxtLnJlYWR5KCkpfW0ucmVhZHkucHJvbWlzZT1mdW5jdGlvbihiKXtpZighSClpZihIPW0uRGVmZXJyZWQoKSwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKXNldFRpbWVvdXQobS5yZWFkeSk7ZWxzZSBpZih5LmFkZEV2ZW50TGlzdGVuZXIpeS5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixKLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEosITEpO2Vsc2V7eS5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixKKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEopO3ZhciBjPSExO3RyeXtjPW51bGw9PWEuZnJhbWVFbGVtZW50JiZ5LmRvY3VtZW50RWxlbWVudH1jYXRjaChkKXt9YyYmYy5kb1Njcm9sbCYmIWZ1bmN0aW9uIGUoKXtpZighbS5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGUsNTApfUkoKSxtLnJlYWR5KCl9fSgpfXJldHVybiBILnByb21pc2UoYil9O3ZhciBLPSJ1bmRlZmluZWQiLEw7Zm9yKEwgaW4gbShrKSlicmVhaztrLm93bkxhc3Q9IjAiIT09TCxrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsbShmdW5jdGlvbigpe3ZhciBhLGIsYyxkO2M9eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGMmJmMuc3R5bGUmJihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6aW5saW5lO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGsuaW5saW5lQmxvY2tOZWVkc0xheW91dD1hPTM9PT1iLm9mZnNldFdpZHRoLGEmJihjLnN0eWxlLnpvb209MSkpLGMucmVtb3ZlQ2hpbGQoZCkpfSksZnVuY3Rpb24oKXt2YXIgYT15LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKG51bGw9PWsuZGVsZXRlRXhwYW5kbyl7ay5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgYS50ZXN0fWNhdGNoKGIpe2suZGVsZXRlRXhwYW5kbz0hMX19YT1udWxsfSgpLG0uYWNjZXB0RGF0YT1mdW5jdGlvbihhKXt2YXIgYj1tLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNlKCldLGM9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1jJiY5IT09Yz8hMTohYnx8YiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn07dmFyIE09L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxOPS8oW0EtWl0pL2c7ZnVuY3Rpb24gTyhhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE4sIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpNLnRlc3QoYyk/bS5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bS5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwfXJldHVybiBjfWZ1bmN0aW9uIFAoYSl7dmFyIGI7Zm9yKGIgaW4gYSlpZigoImRhdGEiIT09Ynx8IW0uaXNFbXB0eU9iamVjdChhW2JdKSkmJiJ0b0pTT04iIT09YilyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBRKGEsYixkLGUpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGYsZyxoPW0uZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP20uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoOwppZihrJiZqW2tdJiYoZXx8altrXS5kYXRhKXx8dm9pZCAwIT09ZHx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBrfHwoaz1pP2FbaF09Yy5wb3AoKXx8bS5ndWlkKys6aCksaltrXXx8KGpba109aT97fTp7dG9KU09OOm0ubm9vcH0pLCgib2JqZWN0Ij09dHlwZW9mIGJ8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGU/altrXT1tLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1tLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbS5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbS5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFIoYSxiLGMpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP20uY2FjaGU6YSxoPWY/YVttLmV4cGFuZG9dOm0uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bS5pc0FycmF5KGIpP2I9Yi5jb25jYXQobS5tYXAoYixtLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1tLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFQKGQpOiFtLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxQKGdbaF0pKSkmJihmP20uY2xlYW5EYXRhKFthXSwhMCk6ay5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP20uY2FjaGVbYVttLmV4cGFuZG9dXTphW20uZXhwYW5kb10sISFhJiYhUChhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFIoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUihhLGIsITApfX0pLG0uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bS5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbS5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW0uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLE8oZixkLGVbZF0pKSk7bS5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhLGIpfSk6Zj9PKGYsYSxtLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG0uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1tLl9kYXRhKGEsYiksYyYmKCFkfHxtLmlzQXJyYXkoYyk/ZD1tLl9kYXRhKGEsYixtLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW0ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bS5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXttLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbS5fZGF0YShhLGMpfHxtLl9kYXRhKGEsYyx7ZW1wdHk6bS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bS5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbS5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxtLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/bS5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1tLnF1ZXVlKHRoaXMsYSxiKTttLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1tLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW0uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIFM9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PW0uY3NzKGEsImRpc3BsYXkiKXx8IW0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxWPW0uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1tLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyltLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxtLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobShhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxXPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixrLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsay50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsay5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxrLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09eS5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxhLnR5cGU9ImNoZWNrYm94IixhLmNoZWNrZWQ9ITAsYy5hcHBlbmRDaGlsZChhKSxrLmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixrLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYy5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixrLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsay5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7ay5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7ay5kZWxldGVFeHBhbmRvPSExfX19KCksZnVuY3Rpb24oKXt2YXIgYixjLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoYiBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWM9Im9uIitiLChrW2IrIkJ1YmJsZXMiXT1jIGluIGEpfHwoZC5zZXRBdHRyaWJ1dGUoYywidCIpLGtbYisiQnViYmxlcyJdPWQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09ITEpO2Q9bnVsbH0oKTt2YXIgWD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksWT0vXmtleS8sWj0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLywkPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxfPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYWIoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYigpe3JldHVybiExfWZ1bmN0aW9uIGNiKCl7dHJ5e3JldHVybiB5LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1tLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW0uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgbT09PUt8fGEmJm0uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDptLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9Xy5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW0uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm0uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChuPWdbb10pfHwobj1nW29dPVtdLG4uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP24uc3BsaWNlKG4uZGVsZWdhdGVDb3VudCsrLDAsbCk6bi5wdXNoKGwpLG0uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLG8scCxxLHI9bS5oYXNEYXRhKGEpJiZtLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9Xy5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1tLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbj1rW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksaT1mPW4ubGVuZ3RoO3doaWxlKGYtLSlnPW5bZl0sIWUmJnEhPT1nLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHxkJiZkIT09Zy5zZWxlY3RvciYmKCIqKiIhPT1kfHwhZy5zZWxlY3Rvcil8fChuLnNwbGljZShmLDEpLGcuc2VsZWN0b3ImJm4uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsZykpO2kmJiFuLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG0ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUga1tvXSl9ZWxzZSBmb3IobyBpbiBrKW0uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bS5pc0VtcHR5T2JqZWN0KGspJiYoZGVsZXRlIHIuaGFuZGxlLG0uX3JlbW92ZURhdGEoYSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihiLGMsZCxlKXt2YXIgZixnLGgsaSxrLGwsbixvPVtkfHx5XSxwPWouY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1qLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWw9ZD1kfHx5LDMhPT1kLm5vZGVUeXBlJiY4IT09ZC5ub2RlVHlwZSYmISQudGVzdChwK20uZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPj0wJiYocT1wLnNwbGl0KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGc9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YlttLmV4cGFuZG9dP2I6bmV3IG0uRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWU/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIubmFtZXNwYWNlX3JlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1kKSxjPW51bGw9PWM/W2JdOm0ubWFrZUFycmF5KGMsW2JdKSxrPW0uZXZlbnQuc3BlY2lhbFtwXXx8e30sZXx8IWsudHJpZ2dlcnx8ay50cmlnZ2VyLmFwcGx5KGQsYykhPT0hMSkpe2lmKCFlJiYhay5ub0J1YmJsZSYmIW0uaXNXaW5kb3coZCkpe2ZvcihpPWsuZGVsZWdhdGVUeXBlfHxwLCQudGVzdChpK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGw9aDtsPT09KGQub3duZXJEb2N1bWVudHx8eSkmJm8ucHVzaChsLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvd3x8YSl9bj0wO3doaWxlKChoPW9bbisrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPW4+MT9pOmsuYmluZFR5cGV8fHAsZj0obS5fZGF0YShoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJm0uX2RhdGEoaCwiaGFuZGxlIiksZiYmZi5hcHBseShoLGMpLGY9ZyYmaFtnXSxmJiZmLmFwcGx5JiZtLmFjY2VwdERhdGEoaCkmJihiLnJlc3VsdD1mLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtpZihiLnR5cGU9cCwhZSYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJighay5fZGVmYXVsdHx8ay5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpPT09ITEpJiZtLmFjY2VwdERhdGEoZCkmJmcmJmRbcF0mJiFtLmlzV2luZG93KGQpKXtsPWRbZ10sbCYmKGRbZ109bnVsbCksbS5ldmVudC50cmlnZ2VyZWQ9cDt0cnl7ZFtwXSgpfWNhdGNoKHIpe31tLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbCYmKGRbZ109bCl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1tLmV2ZW50LmZpeChhKTt2YXIgYixjLGUsZixnLGg9W10saT1kLmNhbGwoYXJndW1lbnRzKSxqPShtLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1tLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1tLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGc9MDt3aGlsZSgoZT1mLmhhbmRsZXJzW2crK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZS5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWUsYS5kYXRhPWUuZGF0YSxjPSgobS5ldmVudC5zcGVjaWFsW2Uub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxlLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1jJiYoYS5yZXN1bHQ9Yyk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZT1bXSxmPTA7aD5mO2YrKylkPWJbZl0sYz1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1lW2NdJiYoZVtjXT1kLm5lZWRzQ29udGV4dD9tKGMsdGhpcykuaW5kZXgoaSk+PTA6bS5maW5kKGMsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxlW2NdJiZlLnB1c2goZCk7ZS5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmV9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW20uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Z3x8KHRoaXMuZml4SG9va3NbZV09Zz1aLnRlc3QoZSk/dGhpcy5tb3VzZUhvb2tzOlkudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBtLkV2ZW50KGYpLGI9ZC5sZW5ndGg7d2hpbGUoYi0tKWM9ZFtiXSxhW2NdPWZbY107cmV0dXJuIGEudGFyZ2V0fHwoYS50YXJnZXQ9Zi5zcmNFbGVtZW50fHx5KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksZy5maWx0ZXI/Zy5maWx0ZXIoYSxmKTphfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b24sZz1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihkPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fHksZT1kLmRvY3VtZW50RWxlbWVudCxjPWQuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZSYmZS5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShlJiZlLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGUmJmUuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGUmJmUuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmcmJihhLnJlbGF0ZWRUYXJnZXQ9Zz09PWEudGFyZ2V0P2IudG9FbGVtZW50OmcpLGEud2hpY2h8fHZvaWQgMD09PWZ8fChhLndoaWNoPTEmZj8xOjImZj8zOjQmZj8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09Y2IoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1jYigpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5leHRlbmQobmV3IG0uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP20uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bS5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbS5yZW1vdmVFdmVudD15LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09SyYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbS5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbS5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/YWI6YmIpOnRoaXMudHlwZT1hLGImJm0uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG0ubm93KCksdm9pZCh0aGlzW20uZXhwYW5kb109ITApKTpuZXcgbS5FdmVudChhLGIpfSxtLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmJiLGlzUHJvcGFnYXRpb25TdG9wcGVkOmJiLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmJiLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFiLGEmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWIsYSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWIsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG0uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXttLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybighZXx8ZSE9PWQmJiFtLmNvbnRhaW5zKGQsZSkpJiYoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxrLnN1Ym1pdEJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1tLm5vZGVOYW1lKGIsImlucHV0Iil8fG0ubm9kZU5hbWUoYiwiYnV0dG9uIik/Yi5mb3JtOnZvaWQgMDtjJiYhbS5fZGF0YShjLCJzdWJtaXRCdWJibGVzIikmJihtLmV2ZW50LmFkZChjLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLG0uX2RhdGEoYywic3VibWl0QnViYmxlcyIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZtLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbS5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxrLmNoYW5nZUJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBYLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKG0uZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyJjaGVja2VkIj09PWEub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksbS5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLG0uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKX0pKSwhMSk6dm9pZCBtLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtYLnRlc3QoYi5ub2RlTmFtZSkmJiFtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiKSYmKG0uZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8bS5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFYLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksay5mb2N1c2luQnViYmxlc3x8bS5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe20uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxtLmV2ZW50LmZpeChhKSwhMCl9O20uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbS5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW0uX2RhdGEoZCxiKS0xO2U/bS5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG0uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG0uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWN8fGIsYj12b2lkIDApO2ZvcihmIGluIGEpdGhpcy5vbihmLGIsYyxhW2ZdLGUpO3JldHVybiB0aGlzfWlmKG51bGw9PWMmJm51bGw9PWQ/KGQ9YixjPWI9dm9pZCAwKTpudWxsPT1kJiYoInN0cmluZyI9PXR5cGVvZiBiPyhkPWMsYz12b2lkIDApOihkPWMsYz1iLGI9dm9pZCAwKSksZD09PSExKWQ9YmI7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihnPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gbSgpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1tLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixtKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWJiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXttLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP20uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO2Z1bmN0aW9uIGRiKGEpe3ZhciBiPWViLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfXZhciBlYj0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZmI9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxnYj1uZXcgUmVnRXhwKCI8KD86IitlYisiKVtcXHMvPl0iLCJpIiksaGI9L15ccysvLGliPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksamI9LzwoW1x3Ol0rKS8sa2I9Lzx0Ym9keS9pLGxiPS88fCYjP1x3KzsvLG1iPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksbmI9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksb2I9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLHBiPS9edHJ1ZVwvKC4qKS8scWI9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLHJiPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDprLmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYPGRpdj4iLCI8L2Rpdj4iXX0sc2I9ZGIoeSksdGI9c2IuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7cmIub3B0Z3JvdXA9cmIub3B0aW9uLHJiLnRib2R5PXJiLnRmb290PXJiLmNvbGdyb3VwPXJiLmNhcHRpb249cmIudGhlYWQscmIudGg9cmIudGQ7ZnVuY3Rpb24gdWIoYSxiKXt2YXIgYyxkLGU9MCxmPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Sz9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PUs/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6dm9pZCAwO2lmKCFmKWZvcihmPVtdLGM9YS5jaGlsZE5vZGVzfHxhO251bGwhPShkPWNbZV0pO2UrKykhYnx8bS5ub2RlTmFtZShkLGIpP2YucHVzaChkKTptLm1lcmdlKGYsdWIoZCxiKSk7cmV0dXJuIHZvaWQgMD09PWJ8fGImJm0ubm9kZU5hbWUoYSxiKT9tLm1lcmdlKFthXSxmKTpmfWZ1bmN0aW9uIHZiKGEpe1cudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIHdiKGEsYil7cmV0dXJuIG0ubm9kZU5hbWUoYSwidGFibGUiKSYmbS5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsInRyIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiB4YihhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bS5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24geWIoYSl7dmFyIGI9cGIuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiB6YihhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW0uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG0uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBBYihhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZtLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW0uX2RhdGEoYSksZz1tLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyltLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW0uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBCYihhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWsubm9DbG9uZUV2ZW50JiZiW20uZXhwYW5kb10pe2U9bS5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyltLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobS5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oeGIoYikudGV4dD1hLnRleHQseWIoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGsuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFtLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmVy50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09Y3x8InRleHRhcmVhIj09PWMpJiYoYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWUpfX1tLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1tLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihrLmh0bWw1Q2xvbmV8fG0uaXNYTUxEb2MoYSl8fCFnYi50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zj1hLmNsb25lTm9kZSghMCk6KHRiLmlubmVySFRNTD1hLm91dGVySFRNTCx0Yi5yZW1vdmVDaGlsZChmPXRiLmZpcnN0Q2hpbGQpKSwhKGsubm9DbG9uZUV2ZW50JiZrLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxtLmlzWE1MRG9jKGEpKSlmb3IoZD11YihmKSxoPXViKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmQmIoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8dWIoYSksZD1kfHx1YihmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUFiKGUsZFtnXSk7ZWxzZSBBYihhLGYpO3JldHVybiBkPXViKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJnpiKGQsIWkmJnViKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixsLG49YS5sZW5ndGgsbz1kYihiKSxwPVtdLHE9MDtuPnE7cSsrKWlmKGY9YVtxXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PW0udHlwZShmKSltLm1lcmdlKHAsZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihsYi50ZXN0KGYpKXtoPWh8fG8uYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaT0oamIuZXhlYyhmKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXJiW2ldfHxyYi5fZGVmYXVsdCxoLmlubmVySFRNTD1sWzFdK2YucmVwbGFjZShpYiwiPCQxPjwvJDI+IikrbFsyXSxlPWxbMF07d2hpbGUoZS0tKWg9aC5sYXN0Q2hpbGQ7aWYoIWsubGVhZGluZ1doaXRlc3BhY2UmJmhiLnRlc3QoZikmJnAucHVzaChiLmNyZWF0ZVRleHROb2RlKGhiLmV4ZWMoZilbMF0pKSwhay50Ym9keSl7Zj0idGFibGUiIT09aXx8a2IudGVzdChmKT8iPHRhYmxlPiIhPT1sWzFdfHxrYi50ZXN0KGYpPzA6aDpoLmZpcnN0Q2hpbGQsZT1mJiZmLmNoaWxkTm9kZXMubGVuZ3RoO3doaWxlKGUtLSltLm5vZGVOYW1lKGo9Zi5jaGlsZE5vZGVzW2VdLCJ0Ym9keSIpJiYhai5jaGlsZE5vZGVzLmxlbmd0aCYmZi5yZW1vdmVDaGlsZChqKX1tLm1lcmdlKHAsaC5jaGlsZE5vZGVzKSxoLnRleHRDb250ZW50PSIiO3doaWxlKGguZmlyc3RDaGlsZCloLnJlbW92ZUNoaWxkKGguZmlyc3RDaGlsZCk7aD1vLmxhc3RDaGlsZH1lbHNlIHAucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTtoJiZvLnJlbW92ZUNoaWxkKGgpLGsuYXBwZW5kQ2hlY2tlZHx8bS5ncmVwKHViKHAsImlucHV0IiksdmIpLHE9MDt3aGlsZShmPXBbcSsrXSlpZigoIWR8fC0xPT09bS5pbkFycmF5KGYsZCkpJiYoZz1tLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxoPXViKG8uYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGcmJnpiKGgpLGMpKXtlPTA7d2hpbGUoZj1oW2UrK10pb2IudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNoKGYpfXJldHVybiBoPW51bGwsb30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkLGUsZixnLGg9MCxpPW0uZXhwYW5kbyxqPW0uY2FjaGUsbD1rLmRlbGV0ZUV4cGFuZG8sbj1tLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGQ9YVtoXSk7aCsrKWlmKChifHxtLmFjY2VwdERhdGEoZCkpJiYoZj1kW2ldLGc9ZiYmaltmXSkpe2lmKGcuZXZlbnRzKWZvcihlIGluIGcuZXZlbnRzKW5bZV0/bS5ldmVudC5yZW1vdmUoZCxlKTptLnJlbW92ZUV2ZW50KGQsZSxnLmhhbmRsZSk7altmXSYmKGRlbGV0ZSBqW2ZdLGw/ZGVsZXRlIGRbaV06dHlwZW9mIGQucmVtb3ZlQXR0cmlidXRlIT09Sz9kLnJlbW92ZUF0dHJpYnV0ZShpKTpkW2ldPW51bGwsYy5wdXNoKGYpKX19fSksbS5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9tLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHx5KS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj13Yih0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPXdiKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9tLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bS5jbGVhbkRhdGEodWIoYykpLGMucGFyZW50Tm9kZSYmKGImJm0uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZ6Yih1YihjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm0uY2xlYW5EYXRhKHViKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbS5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbS5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UoZmIsIiIpOnZvaWQgMDtpZighKCJzdHJpbmciIT10eXBlb2YgYXx8bWIudGVzdChhKXx8IWsuaHRtbFNlcmlhbGl6ZSYmZ2IudGVzdChhKXx8IWsubGVhZGluZ1doaXRlc3BhY2UmJmhiLnRlc3QoYSl8fHJiWyhqYi5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKGliLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihtLmNsZWFuRGF0YSh1YihiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbS5jbGVhbkRhdGEodWIodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG49dGhpcyxvPWwtMSxwPWFbMF0scT1tLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJm5iLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1uLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoaT1tLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksYz1pLmZpcnN0Q2hpbGQsMT09PWkuY2hpbGROb2Rlcy5sZW5ndGgmJihpPWMpLGMpKXtmb3IoZz1tLm1hcCh1YihpLCJzY3JpcHQiKSx4YiksZj1nLmxlbmd0aDtsPmo7aisrKWQ9aSxqIT09byYmKGQ9bS5jbG9uZShkLCEwLCEwKSxmJiZtLm1lcmdlKGcsdWIoZCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxkLGopO2lmKGYpZm9yKGg9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG0ubWFwKGcseWIpLGo9MDtmPmo7aisrKWQ9Z1tqXSxvYi50ZXN0KGQudHlwZXx8IiIpJiYhbS5fZGF0YShkLCJnbG9iYWxFdmFsIikmJm0uY29udGFpbnMoaCxkKSYmKGQuc3JjP20uX2V2YWxVcmwmJm0uX2V2YWxVcmwoZC5zcmMpOm0uZ2xvYmFsRXZhbCgoZC50ZXh0fHxkLnRleHRDb250ZW50fHxkLmlubmVySFRNTHx8IiIpLnJlcGxhY2UocWIsIiIpKSk7aT1jPW51bGx9cmV0dXJuIHRoaXN9fSksbS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkPTAsZT1bXSxnPW0oYSksaD1nLmxlbmd0aC0xO2g+PWQ7ZCsrKWM9ZD09PWg/dGhpczp0aGlzLmNsb25lKCEwKSxtKGdbZF0pW2JdKGMpLGYuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIENiLERiPXt9O2Z1bmN0aW9uIEViKGIsYyl7dmFyIGQsZT1tKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTptLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiBGYihhKXt2YXIgYj15LGM9RGJbYV07cmV0dXJuIGN8fChjPUViKGEsYiksIm5vbmUiIT09YyYmY3x8KENiPShDYnx8bSgiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPiIpKS5hcHBlbmRUbyhiLmRvY3VtZW50RWxlbWVudCksYj0oQ2JbMF0uY29udGVudFdpbmRvd3x8Q2JbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxiLndyaXRlKCksYi5jbG9zZSgpLGM9RWIoYSxiKSxDYi5kZXRhY2goKSksRGJbYV09YyksY30hZnVuY3Rpb24oKXt2YXIgYTtrLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxkO3JldHVybiBjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChkKSxhKTp2b2lkIDB9fSgpO3ZhciBHYj0vXm1hcmdpbi8sSGI9bmV3IFJlZ0V4cCgiXigiK1MrIikoPyFweClbYS16JV0rJCIsImkiKSxJYixKYixLYj0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhJYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKX0sSmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxJYihhKSxnPWM/Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdOnZvaWQgMCxjJiYoIiIhPT1nfHxtLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9bS5zdHlsZShhLGIpKSxIYi50ZXN0KGcpJiZHYi50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDA9PT1nP2c6ZysiIn0pOnkuZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKEliPWZ1bmN0aW9uKGEpe3JldHVybiBhLmN1cnJlbnRTdHlsZX0sSmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxJYihhKSxnPWM/Y1tiXTp2b2lkIDAsbnVsbD09ZyYmaCYmaFtiXSYmKGc9aFtiXSksSGIudGVzdChnKSYmIUtiLnRlc3QoYikmJihkPWgubGVmdCxlPWEucnVudGltZVN0eWxlLGY9ZSYmZS5sZWZ0LGYmJihlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksaC5sZWZ0PSJmb250U2l6ZSI9PT1iPyIxZW0iOmcsZz1oLnBpeGVsTGVmdCsicHgiLGgubGVmdD1kLGYmJihlLmxlZnQ9ZikpLHZvaWQgMD09PWc/ZzpnKyIifHwiYXV0byJ9KTtmdW5jdGlvbiBMYihhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXt2YXIgYz1hKCk7aWYobnVsbCE9YylyZXR1cm4gYz92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19IWZ1bmN0aW9uKCl7dmFyIGIsYyxkLGUsZixnLGg7aWYoYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGIuaW5uZXJIVE1MPSIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGQ9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGM9ZCYmZC5zdHlsZSl7Yy5jc3NUZXh0PSJmbG9hdDpsZWZ0O29wYWNpdHk6LjUiLGsub3BhY2l0eT0iMC41Ij09PWMub3BhY2l0eSxrLmNzc0Zsb2F0PSEhYy5jc3NGbG9hdCxiLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsYi5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLGsuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1iLnN0eWxlLmJhY2tncm91bmRDbGlwLGsuYm94U2l6aW5nPSIiPT09Yy5ib3hTaXppbmd8fCIiPT09Yy5Nb3pCb3hTaXppbmd8fCIiPT09Yy5XZWJraXRCb3hTaXppbmcsbS5leHRlbmQoayx7cmVsaWFibGVIaWRkZW5PZmZzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWcmJmkoKSxnfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1mJiZpKCksZn0scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBudWxsPT1lJiZpKCksZX0scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1oJiZpKCksaH19KTtmdW5jdGlvbiBpKCl7dmFyIGIsYyxkLGk7Yz15LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChkKS5hcHBlbmRDaGlsZChiKSxiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlIixlPWY9ITEsaD0hMCxhLmdldENvbXB1dGVkU3R5bGUmJihlPSIxJSIhPT0oYS5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCl8fHt9KS50b3AsZj0iNHB4Ij09PShhLmdldENvbXB1dGVkU3R5bGUoYixudWxsKXx8e3dpZHRoOiI0cHgifSkud2lkdGgsaT1iLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgiZGl2IikpLGkuc3R5bGUuY3NzVGV4dD1iLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MCIsaS5zdHlsZS5tYXJnaW5SaWdodD1pLnN0eWxlLndpZHRoPSIwIixiLnN0eWxlLndpZHRoPSIxcHgiLGg9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShpLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpKSxiLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsaT1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGlbMF0uc3R5bGUuY3NzVGV4dD0ibWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowO2Rpc3BsYXk6bm9uZSIsZz0wPT09aVswXS5vZmZzZXRIZWlnaHQsZyYmKGlbMF0uc3R5bGUuZGlzcGxheT0iIixpWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0KSxjLnJlbW92ZUNoaWxkKGQpKX19fSgpLG0uc3dhcD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGc9e307Zm9yKGYgaW4gYilnW2ZdPWEuc3R5bGVbZl0sYS5zdHlsZVtmXT1iW2ZdO2U9Yy5hcHBseShhLGR8fFtdKTtmb3IoZiBpbiBiKWEuc3R5bGVbZl09Z1tmXTtyZXR1cm4gZX07dmFyIE1iPS9hbHBoYVwoW14pXSpcKS9pLE5iPS9vcGFjaXR5XHMqPVxzKihbXildKikvLE9iPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxQYj1uZXcgUmVnRXhwKCJeKCIrUysiKSguKikkIiwiaSIpLFFiPW5ldyBSZWdFeHAoIl4oWystXSk9KCIrUysiKSIsImkiKSxSYj17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sU2I9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LFRiPVsiV2Via2l0IiwiTyIsIk1veiIsIm1zIl07ZnVuY3Rpb24gVWIoYSxiKXtpZihiIGluIGEpcmV0dXJuIGI7dmFyIGM9Yi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStiLnNsaWNlKDEpLGQ9YixlPVRiLmxlbmd0aDt3aGlsZShlLS0paWYoYj1UYltlXStjLGIgaW4gYSlyZXR1cm4gYjtyZXR1cm4gZH1mdW5jdGlvbiBWYihhLGIpe2Zvcih2YXIgYyxkLGUsZj1bXSxnPTAsaD1hLmxlbmd0aDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoZltnXT1tLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSxjPWQuc3R5bGUuZGlzcGxheSxiPyhmW2ddfHwibm9uZSIhPT1jfHwoZC5zdHlsZS5kaXNwbGF5PSIiKSwiIj09PWQuc3R5bGUuZGlzcGxheSYmVShkKSYmKGZbZ109bS5fZGF0YShkLCJvbGRkaXNwbGF5IixGYihkLm5vZGVOYW1lKSkpKTooZT1VKGQpLChjJiYibm9uZSIhPT1jfHwhZSkmJm0uX2RhdGEoZCwib2xkZGlzcGxheSIsZT9jOm0uY3NzKGQsImRpc3BsYXkiKSkpKTtmb3IoZz0wO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihiJiYibm9uZSIhPT1kLnN0eWxlLmRpc3BsYXkmJiIiIT09ZC5zdHlsZS5kaXNwbGF5fHwoZC5zdHlsZS5kaXNwbGF5PWI/ZltnXXx8IiI6Im5vbmUiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gV2IoYSxiLGMpe3ZhciBkPVBiLmV4ZWMoYik7cmV0dXJuIGQ/TWF0aC5tYXgoMCxkWzFdLShjfHwwKSkrKGRbMl18fCJweCIpOmJ9ZnVuY3Rpb24gWGIoYSxiLGMsZCxlKXtmb3IodmFyIGY9Yz09PShkPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjAsZz0wOzQ+ZjtmKz0yKSJtYXJnaW4iPT09YyYmKGcrPW0uY3NzKGEsYytUW2ZdLCEwLGUpKSxkPygiY29udGVudCI9PT1jJiYoZy09bS5jc3MoYSwicGFkZGluZyIrVFtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09bS5jc3MoYSwiYm9yZGVyIitUW2ZdKyJXaWR0aCIsITAsZSkpKTooZys9bS5jc3MoYSwicGFkZGluZyIrVFtmXSwhMCxlKSwicGFkZGluZyIhPT1jJiYoZys9bS5jc3MoYSwiYm9yZGVyIitUW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiBZYihhLGIsYyl7dmFyIGQ9ITAsZT0id2lkdGgiPT09Yj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGY9SWIoYSksZz1rLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZigwPj1lfHxudWxsPT1lKXtpZihlPUpiKGEsYixmKSwoMD5lfHxudWxsPT1lKSYmKGU9YS5zdHlsZVtiXSksSGIudGVzdChlKSlyZXR1cm4gZTtkPWcmJihrLmJveFNpemluZ1JlbGlhYmxlKCl8fGU9PT1hLnN0eWxlW2JdKSxlPXBhcnNlRmxvYXQoZSl8fDB9cmV0dXJuIGUrWGIoYSxiLGN8fChnPyJib3JkZXIiOiJjb250ZW50IiksZCxmKSsicHgifW0uZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9SmIoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjprLmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpLGk9YS5zdHlsZTtpZihiPW0uY3NzUHJvcHNbaF18fChtLmNzc1Byb3BzW2hdPVViKGksaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29rc1toXSx2b2lkIDA9PT1jKXJldHVybiBnJiYiZ2V0ImluIGcmJnZvaWQgMCE9PShlPWcuZ2V0KGEsITEsZCkpP2U6aVtiXTtpZihmPXR5cGVvZiBjLCJzdHJpbmciPT09ZiYmKGU9UWIuZXhlYyhjKSkmJihjPShlWzFdKzEpKmVbMl0rcGFyc2VGbG9hdChtLmNzcyhhLGIpKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiIT09Znx8bS5jc3NOdW1iZXJbaF18fChjKz0icHgiKSxrLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1jfHwwIT09Yi5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChpW2JdPSJpbmhlcml0IiksIShnJiYic2V0ImluIGcmJnZvaWQgMD09PShjPWcuc2V0KGEsYyxkKSkpKSl0cnl7aVtiXT1jfWNhdGNoKGope319fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9bS5jYW1lbENhc2UoYik7cmV0dXJuIGI9bS5jc3NQcm9wc1toXXx8KG0uY3NzUHJvcHNbaF09VWIoYS5zdHlsZSxoKSksZz1tLmNzc0hvb2tzW2JdfHxtLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGY9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZiYmKGY9SmIoYSxiLGQpKSwibm9ybWFsIj09PWYmJmIgaW4gU2ImJihmPVNiW2JdKSwiIj09PWN8fGM/KGU9cGFyc2VGbG9hdChmKSxjPT09ITB8fG0uaXNOdW1lcmljKGUpP2V8fDA6Zik6Zn19KSxtLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gYz9PYi50ZXN0KG0uY3NzKGEsImRpc3BsYXkiKSkmJjA9PT1hLm9mZnNldFdpZHRoP20uc3dhcChhLFJiLGZ1bmN0aW9uKCl7cmV0dXJuIFliKGEsYixkKX0pOlliKGEsYixkKTp2b2lkIDB9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9ZCYmSWIoYSk7cmV0dXJuIFdiKGEsYyxkP1hiKGEsYixkLGsuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1tLmNzcyhhLCJib3hTaXppbmciLCExLGUpLGUpOjApfX19KSxrLm9wYWNpdHl8fChtLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBOYi50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/LjAxKnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9bS5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IisxMDAqYisiKSI6IiIsZj1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xLChiPj0xfHwiIj09PWIpJiYiIj09PW0udHJpbShmLnJlcGxhY2UoTWIsIiIpKSYmYy5yZW1vdmVBdHRyaWJ1dGUmJihjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksIiI9PT1ifHxkJiYhZC5maWx0ZXIpfHwoYy5maWx0ZXI9TWIudGVzdChmKT9mLnJlcGxhY2UoTWIsZSk6ZisiICIrZSl9fSksbS5jc3NIb29rcy5tYXJnaW5SaWdodD1MYihrLnJlbGlhYmxlTWFyZ2luUmlnaHQsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9tLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sSmIsW2EsIm1hcmdpblJpZ2h0Il0pOnZvaWQgMH0pLG0uZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPTAsZT17fSxmPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIgIik6W2NdOzQ+ZDtkKyspZVthK1RbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sR2IudGVzdChhKXx8KG0uY3NzSG9va3NbYStiXS5zZXQ9V2IpfSksbS5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBWKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYobS5pc0FycmF5KGIpKXtmb3IoZD1JYihhKSxlPWIubGVuZ3RoO2U+ZztnKyspZltiW2ddXT1tLmNzcyhhLGJbZ10sITEsZCk7cmV0dXJuIGZ9cmV0dXJuIHZvaWQgMCE9PWM/bS5zdHlsZShhLGIsYyk6bS5jc3MoYSxiKX0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gVmIodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gVmIodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7VSh0aGlzKT9tKHRoaXMpLnNob3coKTptKHRoaXMpLmhpZGUoKX0pfX0pO2Z1bmN0aW9uIFpiKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBaYi5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfW0uVHdlZW49WmIsWmIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpaYixpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwobS5jc3NOdW1iZXJbY10/IiI6InB4IikKfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1aYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9WmIucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMucG9zPWI9dGhpcy5vcHRpb25zLmR1cmF0aW9uP20uZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOmEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sWmIucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVpiLnByb3RvdHlwZSxaYi5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPW0uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe20uZnguc3RlcFthLnByb3BdP20uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVttLmNzc1Byb3BzW2EucHJvcF1dfHxtLmNzc0hvb2tzW2EucHJvcF0pP20uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LFpiLnByb3BIb29rcy5zY3JvbGxUb3A9WmIucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0sbS5meD1aYi5wcm90b3R5cGUuaW5pdCxtLmZ4LnN0ZXA9e307dmFyICRiLF9iLGFjPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxiYz1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrUysiKShbYS16JV0qKSQiLCJpIiksY2M9L3F1ZXVlSG9va3MkLyxkYz1baWNdLGVjPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPWJjLmV4ZWMoYiksZj1lJiZlWzNdfHwobS5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0obS5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJmJjLmV4ZWMobS5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxtLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBmYygpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JGI9dm9pZCAwfSksJGI9bS5ub3coKX1mdW5jdGlvbiBnYyhhLGIpe3ZhciBjLGQ9e2hlaWdodDphfSxlPTA7Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYiljPVRbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBoYyhhLGIsYyl7Zm9yKHZhciBkLGU9KGVjW2JdfHxbXSkuY29uY2F0KGVjWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGljKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixsLG49dGhpcyxvPXt9LHA9YS5zdHlsZSxxPWEubm9kZVR5cGUmJlUoYSkscj1tLl9kYXRhKGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW0uX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxuLmFsd2F5cyhmdW5jdGlvbigpe24uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG0ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bS5jc3MoYSwiZGlzcGxheSIpLGw9Im5vbmUiPT09aj9tLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8RmIoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWwmJiJub25lIj09PW0uY3NzKGEsImZsb2F0IikmJihrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09RmIoYS5ub2RlTmFtZSk/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsay5zaHJpbmtXcmFwQmxvY2tzKCl8fG4uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxhYy5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHE/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFyfHx2b2lkIDA9PT1yW2RdKWNvbnRpbnVlO3E9ITB9b1tkXT1yJiZyW2RdfHxtLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZihtLmlzRW1wdHlPYmplY3QobykpImlubGluZSI9PT0oIm5vbmUiPT09aj9GYihhLm5vZGVOYW1lKTpqKSYmKHAuZGlzcGxheT1qKTtlbHNle3I/ImhpZGRlbiJpbiByJiYocT1yLmhpZGRlbik6cj1tLl9kYXRhKGEsImZ4c2hvdyIse30pLGYmJihyLmhpZGRlbj0hcSkscT9tKGEpLnNob3coKTpuLmRvbmUoZnVuY3Rpb24oKXttKGEpLmhpZGUoKX0pLG4uZG9uZShmdW5jdGlvbigpe3ZhciBiO20uX3JlbW92ZURhdGEoYSwiZnhzaG93Iik7Zm9yKGIgaW4gbyltLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGluIG8pZz1oYyhxP3JbZF06MCxkLG4pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIGpjKGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9bS5jYW1lbENhc2UoYyksZT1iW2RdLGY9YVtjXSxtLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1mLGRlbGV0ZSBhW2NdKSxnPW0uY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24ga2MoYSxiLGMpe3ZhciBkLGUsZj0wLGc9ZGMubGVuZ3RoLGg9bS5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9JGJ8fGZjKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOm0uZXh0ZW5kKHt9LGIpLG9wdHM6bS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTokYnx8ZmMoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPW0uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/aC5yZXNvbHZlV2l0aChhLFtqLGJdKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGpjKGssai5vcHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1kY1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIGQ7cmV0dXJuIG0ubWFwKGssaGMsaiksbS5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaiksbS5meC50aW1lcihtLmV4dGVuZChpLHtlbGVtOmEsYW5pbTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1tLkFuaW1hdGlvbj1tLmV4dGVuZChrYyx7dHdlZW5lcjpmdW5jdGlvbihhLGIpe20uaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtlPmQ7ZCsrKWM9YVtkXSxlY1tjXT1lY1tjXXx8W10sZWNbY10udW5zaGlmdChiKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9kYy51bnNoaWZ0KGEpOmRjLnB1c2goYSl9fSksbS5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBhP20uZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8bS5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFtLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiBkLmR1cmF0aW9uPW0uZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBtLmZ4LnNwZWVkcz9tLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTptLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ZC5xdWV1ZXx8ZC5xdWV1ZT09PSEwKSYmKGQucXVldWU9ImZ4IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bS5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZtLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0sZH0sbS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoVSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5pc0VtcHR5T2JqZWN0KGEpLGY9bS5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtjKHRoaXMsbS5leHRlbmQoe30sYSksZik7KGV8fG0uX2RhdGEodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1tLnRpbWVycyxnPW0uX2RhdGEodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmY2MudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZtLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1tLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1tLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbS5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxtLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bS5mbltiXTttLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2MoYiwhMCksYSxkLGUpfX0pLG0uZWFjaCh7c2xpZGVEb3duOmdjKCJzaG93Iiksc2xpZGVVcDpnYygiaGlkZSIpLHNsaWRlVG9nZ2xlOmdjKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxtLnRpbWVycz1bXSxtLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW0udGltZXJzLGM9MDtmb3IoJGI9bS5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxtLmZ4LnN0b3AoKSwkYj12b2lkIDB9LG0uZngudGltZXI9ZnVuY3Rpb24oYSl7bS50aW1lcnMucHVzaChhKSxhKCk/bS5meC5zdGFydCgpOm0udGltZXJzLnBvcCgpfSxtLmZ4LmludGVydmFsPTEzLG0uZnguc3RhcnQ9ZnVuY3Rpb24oKXtfYnx8KF9iPXNldEludGVydmFsKG0uZngudGljayxtLmZ4LmludGVydmFsKSl9LG0uZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoX2IpLF9iPW51bGx9LG0uZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG0uZm4uZGVsYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1tLmZ4P20uZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxjPXkuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZT1jLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxkLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGsuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWIuY2xhc3NOYW1lLGsuc3R5bGU9L3RvcC8udGVzdChkLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksay5ocmVmTm9ybWFsaXplZD0iL2EiPT09ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSxrLmNoZWNrT249ISFhLnZhbHVlLGsub3B0U2VsZWN0ZWQ9ZS5zZWxlY3RlZCxrLmVuY3R5cGU9ISF5LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGMuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hZS5kaXNhYmxlZCxhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxrLmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSgpO3ZhciBsYz0vXHIvZzttLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9bS5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLG0odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjptLmlzQXJyYXkoZSkmJihlPW0ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPW0udmFsSG9va3NbdGhpcy50eXBlXXx8bS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPW0udmFsSG9va3NbZS50eXBlXXx8bS52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UobGMsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLG0uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm0udHJpbShtLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChrLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZtLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bShjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW0ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxtLmluQXJyYXkobS52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uaXNBcnJheShiKT9hLmNoZWNrZWQ9bS5pbkFycmF5KG0oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBtYyxuYyxvYz1tLmV4cHIuYXR0ckhhbmRsZSxwYz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHFjPWsuZ2V0U2V0QXR0cmlidXRlLHJjPWsuaW5wdXQ7bS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Sz9tLnByb3AoYSxiLGMpOigxPT09ZiYmbS5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bS5hdHRySG9va3NbYl18fChtLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP25jOm1jKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW0uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBtLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRSk7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1tLnByb3BGaXhbY118fGMsbS5leHByLm1hdGNoLmJvb2wudGVzdChjKT9yYyYmcWN8fCFwYy50ZXN0KGMpP2FbZF09ITE6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm0uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHFjP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm0ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksbmM9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9tLnJlbW92ZUF0dHIoYSxjKTpyYyYmcWN8fCFwYy50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFxYyYmbS5wcm9wRml4W2NdfHxjLGMpOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbS5lYWNoKG0uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9b2NbYl18fG0uZmluZC5hdHRyO29jW2JdPXJjJiZxY3x8IXBjLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPW9jW2JdLG9jW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxvY1tiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSkscmMmJnFjfHwobS5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm1jJiZtYy5zZXQoYSxiLGMpfX0pLHFjfHwobWM9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxvYy5pZD1vYy5uYW1lPW9jLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG0udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bWMuc2V0fSxtLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bWMuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxtLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bS5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGsuc3R5bGV8fChtLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciBzYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx0Yz0vXig/OmF8YXJlYSkkL2k7bS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1tLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxtLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW0uaXNYTUxEb2MoYSksZiYmKGI9bS5wcm9wRml4W2JdfHxiLGU9bS5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW0uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6c2MudGVzdChhLm5vZGVOYW1lKXx8dGMudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxrLmhyZWZOb3JtYWxpemVkfHxtLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXttLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxrLm9wdFNlbGVjdGVkfHwobS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxtLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe20ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxrLmVuY3R5cGV8fChtLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdWM9L1tcdFxyXG5cZl0vZzttLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW0udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChFKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHVjLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP20udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXttKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1tKHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09S3x8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbS5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjptLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG0uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG0uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHZjPW0ubm93KCksd2M9L1w/Lyx4Yz0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO20ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bS50cmltKGIrIiIpO3JldHVybiBlJiYhbS50cmltKGUucmVwbGFjZSh4YyxmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTptLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG0ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHljLHpjLEFjPS8jLiokLyxCYz0vKFs/Jl0pXz1bXiZdKi8sQ2M9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxEYz0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxFYz0vXig/OkdFVHxIRUFEKSQvLEZjPS9eXC9cLy8sR2M9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSGM9e30sSWM9e30sSmM9IiovIi5jb25jYXQoIioiKTt0cnl7emM9bG9jYXRpb24uaHJlZn1jYXRjaChLYyl7emM9eS5jcmVhdGVFbGVtZW50KCJhIiksemMuaHJlZj0iIix6Yz16Yy5ocmVmfXljPUdjLmV4ZWMoemMudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIExjKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihtLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTWMoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SWM7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxtLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBOYyhhLGIpe3ZhciBjLGQsZT1tLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZtLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gT2MoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUGMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1tLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6emMsdHlwZToiR0VUIixpc0xvY2FsOkRjLnRlc3QoeWNbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SmMsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjptLnBhcnNlSlNPTiwidGV4dCB4bWwiOm0ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP05jKE5jKGEsbS5hamF4U2V0dGluZ3MpLGIpOk5jKG0uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOkxjKEhjKSxhamF4VHJhbnNwb3J0OkxjKEljKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1tLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxuPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9tKGwpOm0uZXZlbnQsbz1tLkRlZmVycmVkKCkscD1tLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPUNjLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fHpjKSsiIikucmVwbGFjZShBYywiIikucmVwbGFjZShGYyx5Y1sxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1tLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUdjLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09eWNbMV0mJmNbMl09PT15Y1syXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oeWNbM118fCgiaHR0cDoiPT09eWNbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1tLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTWMoSGMsayxiLHYpLDI9PT10KXJldHVybiB2O2g9ay5nbG9iYWwsaCYmMD09PW0uYWN0aXZlKysmJm0uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRWMudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHdjLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUJjLnRlc3QoZSk/ZS5yZXBsYWNlKEJjLCIkMV89Iit2YysrKTplKyh3Yy50ZXN0KGUpPyImIjoiPyIpKyJfPSIrdmMrKykpLGsuaWZNb2RpZmllZCYmKG0ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixtLmxhc3RNb2RpZmllZFtlXSksbS5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG0uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0pjKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1NYyhJYyxrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PU9jKGssdixjKSksdT1QYyhrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobS5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG0uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZuLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbS5hY3RpdmV8fG0uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG0uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe21bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG0uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG0uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG0uZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGEsYil7bS5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLG0uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG0uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbS5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bSh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW0oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXttKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bSh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1tLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXttKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bS5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG0odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG0uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFrLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxtLmNzcyhhLCJkaXNwbGF5IikpfSxtLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFtLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBRYz0vJTIwL2csUmM9L1xbXF0kLyxTYz0vXHI/XG4vZyxUYz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVWM9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFZjKGEsYixjLGQpe3ZhciBlO2lmKG0uaXNBcnJheShiKSltLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFJjLnRlc3QoYSk/ZChhLGUpOlZjKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1tLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilWYyhhKyJbIitlKyJdIixiW2VdLGMsZCl9bS5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bS5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW0uYWpheFNldHRpbmdzJiZtLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW0uaXNQbGFpbk9iamVjdChhKSltLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVZjKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFFjLCIrIil9LG0uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW0ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP20ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW0odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZVYy50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVGMudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVcudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1tKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bS5pc0FycmF5KGMpP20ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShTYywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoU2MsIlxyXG4iKX19KS5nZXQoKX19KSxtLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmWmMoKXx8JGMoKX06WmM7dmFyIFdjPTAsWGM9e30sWWM9bS5hamF4U2V0dGluZ3MueGhyKCk7YS5BY3RpdmVYT2JqZWN0JiZtKGEpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFhjKVhjW2FdKHZvaWQgMCwhMCl9KSxrLmNvcnM9ISFZYyYmIndpdGhDcmVkZW50aWFscyJpbiBZYyxZYz1rLmFqYXg9ISFZYyxZYyYmbS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxrLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytXYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFhjW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW0ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WGNbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gWmMoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gJGMoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1tLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBtLmdsb2JhbEV2YWwoYSksYX19fSksbS5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG0uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXkuaGVhZHx8bSgiaGVhZCIpWzBdfHx5LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9eS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgX2M9W10sYWQ9Lyg9KVw/KD89JnwkKXxcP1w/LzttLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9X2MucG9wKCl8fG0uZXhwYW5kbysiXyIrdmMrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG0uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGFkLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYWQudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW0uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGFkLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh3Yy50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bS5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssX2MucHVzaChlKSksZyYmbS5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbS5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHk7dmFyIGQ9dS5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW0uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbShlKS5yZW1vdmUoKSxtLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgYmQ9bS5mbi5sb2FkO20uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZiZClyZXR1cm4gYmQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bS50cmltKGEuc2xpY2UoaCxhLmxlbmd0aCkpLGE9YS5zbGljZSgwLGgpKSxtLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZj0iUE9TVCIpLGcubGVuZ3RoPjAmJm0uYWpheCh7dXJsOmEsdHlwZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2U9YXJndW1lbnRzLGcuaHRtbChkP20oIjxkaXY+IikuYXBwZW5kKG0ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxlfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxtLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbS5ncmVwKG0udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgY2Q9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gZGQoYSl7cmV0dXJuIG0uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1tLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW0uY3NzKGEsInBvc2l0aW9uIiksbD1tKGEpLG49e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1tLmNzcyhhLCJ0b3AiKSxpPW0uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZtLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbS5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGgpKSxudWxsIT1iLnRvcCYmKG4udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG4ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG4pOmwuY3NzKG4pfX0sbS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20ub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9e3RvcDowLGxlZnQ6MH0sZT10aGlzWzBdLGY9ZSYmZS5vd25lckRvY3VtZW50O2lmKGYpcmV0dXJuIGI9Zi5kb2N1bWVudEVsZW1lbnQsbS5jb250YWlucyhiLGUpPyh0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1LJiYoZD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxjPWRkKGYpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1tLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxtLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPW0uY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1tLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpiLnRvcC1jLnRvcC1tLmNzcyhkLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1jLmxlZnQtbS5jc3MoZCwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjZDt3aGlsZShhJiYhbS5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bS5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxjZH0pfX0pLG0uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO20uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9ZGQoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bShmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bShmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbS5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT1MYihrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1KYihhLGIpLEhiLnRlc3QoYyk/bShhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxtLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe20uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXttLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbS5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9tLmNzcyhiLGMsZyk6bS5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxtLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG0uZm4uYW5kU2VsZj1tLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG19KTt2YXIgZWQ9YS5qUXVlcnksZmQ9YS4kO3JldHVybiBtLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW0mJihhLiQ9ZmQpLGImJmEualF1ZXJ5PT09bSYmKGEualF1ZXJ5PWVkKSxtfSx0eXBlb2YgYj09PUsmJihhLmpRdWVyeT1hLiQ9bSksbX0pOwo="}},"time_used":57,"timings":{"blocked":-1,"dns":3,"connect":9,"send":0,"wait":9,"receive":9,"ssl":24},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/mail.svg","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.098Z","timestamp":1785130090098,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/mail.svg HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/svg+xml\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=R0uTqb1oQY58nhvehkVpKKTV4oYs0jiKsQ7z%2FkECY4ctn0SceEhwmSf0QPrkVBn7yGvn6Kro1uR6xyruyk75FpSyUfczDh0K1JosLGMAyXN1EnHXTQSQtMmvRsMDvsY1lnssvHyIkA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d371e6d120a-OSL\r\ncontent-length: 258\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":496,"size_decoded":1067,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"6672116a0a2a732bb97a5ef9cfbf89a5","sha1":"8fda549ff534a903618c8b1ac356728df06c6ca1","sha256":"f97bc0a3bad5ffcd3e057498bf85298791b355f8b20a1f787859a8fb345c7eb8","sha512":"198bd9050ef95cc54d516435d98db0640dd88b25a837e80f805a6605d3cc5b7c9dc43931b2f52f1681aed2335a72e14170678effdb4d21a63103b06121f771d0","ssdeep":"","tlshash":"27f05952e1f8fe0cab0497146f94f80012be30ac3f45498878cdb110204ddafe827a89","first_seen":"2026-07-27T03:56:42.559769Z","last_seen":"2026-07-27T05:30:59.808092Z","times_seen":6,"resource_available":false,"data":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgaWQ9IkxheWVyXzIiIGRhdGEtbmFtZT0iTGF5ZXIgMiI+PGcgaWQ9Il8wMS5tYWlsIiBkYXRhLW5hbWU9IjAxLm1haWwiPjxjaXJjbGUgaWQ9ImJhY2tncm91bmQiIGN4PSIyNTYiIGN5PSIyNTYiIGZpbGw9IiMyMTk2ZjMiIHI9IjI1NiIvPjxnIGZpbGw9IiNmZmYiPjxwYXRoIGQ9Im0yNTUuOTQgMjY4LjY0LTEzNC45NC02Ny4zMnYxMzMuNzZhMjUuNjYgMjUuNjYgMCAwIDAgMjUuNTkgMjUuNTloMjE4LjgyYTI1LjY2IDI1LjY2IDAgMCAwIDI1LjU5LTI1LjU5di0xMzIuMzV6Ii8+PHBhdGggZD0ibTI1Ni4wNiAyNDMuMzYgMTM0Ljk0LTY1Ljg2di0uNThhMjUuNjYgMjUuNjYgMCAwIDAgLTI1LjU5LTI1LjU5aC0yMTguODJhMjUuNjYgMjUuNjYgMCAwIDAgLTI1LjU5IDI0LjY3eiIvPjwvZz48L2c+PC9nPjwvc3ZnPg=="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/_/translate_http/_/ss/k=translate_http.tr.B7Dih9Jyjnw.L.F4.O/am=BIAABw/d=0/rs=AN8SPfpC04vrrzQXgs_TCM5EtruwfPzNtQ/m=el_main_css","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.262Z","timestamp":1785130090262,"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":"*.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 /_/translate_http/_/ss/k=translate_http.tr.B7Dih9Jyjnw.L.F4.O/am=BIAABw/d=0/rs=AN8SPfpC04vrrzQXgs_TCM5EtruwfPzNtQ/m=el_main_css HTTP/1.1\r\nHost: www.gstatic.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://dreamspinfluence.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\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/rosetta\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"rosetta\"\r\nreport-to: {\"group\":\"rosetta\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/rosetta\"}]}\r\ncontent-length: 3967\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:44 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:44 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 09 Apr 2026 01:12:55 GMT\r\ncontent-type: text/css; charset=UTF-8\r\nvary: Accept-Encoding\r\nage: 404246\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":null,"data":{"size":20284,"size_decoded":4819,"mime_type":"text/css; charset=UTF-8","magic":"ASCII text, with very long lines (20284), with no line terminators","md5":"fde4f72b90fe807270db3c332dd058df","sha1":"7ef4d70af01c38a7f80a7650be25f63aff4ba751","sha256":"ab31c9be358d2107fc1158434c7aeaaf15f82e3e405ed67ab236b5ac232ed159","sha512":"9bef39350af557afeb10cb71068426ab28befaf5295359954787be06a5ce0993d69e8f5018a5a17c44311d294dd1a87a6f82edd0f5743df0149b8e4e53061695","ssdeep":"192:nvqx/EhZINcrXsfg0SgG8CqA3uku9SJFzvQVMbnUIfIxIVVpTrecfzPtcmt4v78l:gMF8Sb3i0JFzourUqWMVpTrdfzPtcBG","tlshash":"c492872057aed01967efa82364d36dff71d444db90123eeaaf5a7352cd821f231ea214","first_seen":"2026-04-13T20:43:22.641436Z","last_seen":"2026-08-02T16:42:24.418748Z","times_seen":19077,"resource_available":false,"data":"LlZJcGdKZC1aVmk5b2QtT1JIYi1PRVZtY2R7bGVmdDowO3RvcDowO2hlaWdodDozOXB4O3dpZHRoOjEwMCU7ei1pbmRleDoxMDAwMDAwMTtwb3NpdGlvbjpmaXhlZDtib3JkZXI6bm9uZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNkI5MERBO21hcmdpbjowO2JveC1zaGFkb3c6MCAwIDhweCAxcHggIzk5OX0uVklwZ0pkLVpWaTlvZC14bDA3T2ItT0VWbWNke3otaW5kZXg6MTAwMDAwMDI7Ym9yZGVyOm5vbmU7cG9zaXRpb246Zml4ZWQ7Ym94LXNoYWRvdzowIDNweCA4cHggMnB4ICM5OTl9LlZJcGdKZC1aVmk5b2QtU21mWi1PRVZtY2R7ei1pbmRleDoxMDAwMDAwMDtib3JkZXI6bm9uZTttYXJnaW46MH0uZ29vZy10ZS1nYWRnZXR7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjExcHg7Y29sb3I6IzY2Njt3aGl0ZS1zcGFjZTpub3dyYXB9Lmdvb2ctdGUtZ2FkZ2V0IGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOm5vbmV9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNENUQ1RDU7Ym9yZGVyLXRvcDoxcHggc29saWQgIzlCOUI5Qjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRThFOEU4O2JvcmRlci1yaWdodDoxcHggc29saWQgI0Q1RDVENTtmb250LXNpemU6MTBwdDtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MnB4O2N1cnNvcjpwb2ludGVyfS5nb29nLXRlLWdhZGdldC1pY29ue21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4O3dpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7Ym9yZGVyOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWNvbWJve21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5nb29nLXRlLWdhZGdldCAuZ29vZy10ZS1jb21ib3ttYXJnaW46NHB4IDB9LlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDphY3RpdmUsLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkOmhvdmVyLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDpsaW5rLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDp2aXNpdGVke2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojNDQ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLU9SSGIgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkLC5WSXBnSmQtWlZpOW9kLVR2RDlQYy1oU1JHUGR7ZGlzcGxheTpibG9jazttYXJnaW46MCAxMHB4fS5WSXBnSmQtWlZpOW9kLU9SSGIgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1Bke3BhZGRpbmctdG9wOjJweDtwYWRkaW5nLWxlZnQ6NHB4fS5WSXBnSmQtWlZpOW9kLU9SSGIgKiwuVklwZ0pkLVpWaTlvZC1TbWZaICosLlZJcGdKZC1aVmk5b2QtbDl4a3RmICosLlZJcGdKZC1aVmk5b2QtdkgxR21mICosLlZJcGdKZC1aVmk5b2QteGwwN09iICosLmdvb2ctdGUtY29tYm97Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjEwcHR9LlZJcGdKZC1aVmk5b2QtT1JIYnttYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9yOiNFNEVGRkI7b3ZlcmZsb3c6aGlkZGVufS5WSXBnSmQtWlZpOW9kLU9SSGIgaW1ne2JvcmRlcjpub25lfS5WSXBnSmQtWlZpOW9kLU9SSGItYk45N1Bje2NvbG9yOiMwMDB9LlZJcGdKZC1aVmk5b2QtT1JIYi1iTjk3UGMgaW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uVklwZ0pkLVpWaTlvZC1PUkhiLVRzd3YxYntjb2xvcjojNjY2O3ZlcnRpY2FsLWFsaWduOnRvcDttYXJnaW4tdG9wOjA7Zm9udC1zaXplOjdwdH0uVklwZ0pkLVpWaTlvZC1PUkhiLUtFNnZxZXt3aWR0aDo4cHh9LlZJcGdKZC1aVmk5b2QtTGdic1Nle2JvcmRlci1jb2xvcjojRTdFN0U3O2JvcmRlci1zdHlsZTpub25lIHNvbGlkIHNvbGlkIG5vbmU7Ym9yZGVyLXdpZHRoOjAgMXB4IDFweCAwfS5WSXBnSmQtWlZpOW9kLUxnYnNTZSBkaXZ7Ym9yZGVyLWNvbG9yOiNDQ0MgIzk5OSAjOTk5ICNDQ0M7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjOTk5O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2hlaWdodDoyMHB4fS5WSXBnSmQtWlZpOW9kLUxnYnNTZSBidXR0b257YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MjBweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luOjA7dmVydGljYWwtYWxpZ246dG9wO3doaXRlLXNwYWNlOm5vd3JhcH0uVklwZ0pkLVpWaTlvZC1MZ2JzU2UgYnV0dG9uOmFjdGl2ZXtiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgI0NDQ30uVklwZ0pkLVpWaTlvZC1TbWZae21hcmdpbjowO2JhY2tncm91bmQtY29sb3I6I0ZGRjt3aGl0ZS1zcGFjZTpub3dyYXB9LlZJcGdKZC1aVmk5b2QtU21mWi1oU1JHUGR7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMHB0O2JvcmRlcjoxcHggb3V0c2V0ICM4ODg7cGFkZGluZzo2cHggMTBweDt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowfS5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1BkIGltZ3ttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweDt3aWR0aDoxOXB4O2hlaWdodDoxOXB4O2JvcmRlcjpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uVklwZ0pkLVpWaTlvZC1TbWZaLWhTUkdQZCBzcGFue3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7bWFyZ2luLWxlZnQ6MnB4O21hcmdpbi1yaWdodDoycHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWZsb2F0LXRvcCAuVklwZ0pkLVpWaTlvZC1TbWZaLWhTUkdQZHtwYWRkaW5nOjJweDtib3JkZXItdG9wLXdpZHRoOjB9Lmdvb2ctdGUtZmxvYXQtYm90dG9tIC5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1Bke3BhZGRpbmc6MnB4O2JvcmRlci1ib3R0b20td2lkdGg6MH0uVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVke3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMwMEM7d2hpdGUtc3BhY2U6bm93cmFwO21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4fS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWQgc3Bhbnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWQgaW1ne21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4fS5nb29nLXRlLWdhZGdldC1zaW1wbGUgLlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZHtjb2xvcjojMDAwfS5nb29nLXRlLWdhZGdldC1zaW1wbGUgLlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZCBzcGFue3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYntiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjJweCBzb2xpZCAjQzNEOUZGO292ZXJmbG93LXk6c2Nyb2xsO292ZXJmbG93LXg6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MH0uVklwZ0pkLVpWaTlvZC14bDA3T2ItaWJuQzZie3BhZGRpbmc6M3B4O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmIsLlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2YjpsaW5re2NvbG9yOiMwMEM7YmFja2dyb3VuZDojRkZGfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6dmlzaXRlZHtjb2xvcjojNTUxQThCfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6aG92ZXJ7YmFja2dyb3VuZDojQzNEOUZGfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6YWN0aXZle2NvbG9yOiMwMEN9LlZJcGdKZC1aVmk5b2QtdkgxR21me2JhY2tncm91bmQtY29sb3I6I0ZGRjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNvbGlkICM2QjkwREE7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6NHB4fS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1LcmhQTmJ7d2lkdGg6MTZweH0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaGdEVXdle21hcmdpbjo2cHggMDtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6I2FhYTtvdmVyZmxvdzpoaWRkZW59LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YiBkaXYsLlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQgZGl2e3BhZGRpbmc6NHB4fS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmIgLnVERUZnZXtkaXNwbGF5Om5vbmV9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQgLmZtY21Te3BhZGRpbmctbGVmdDo0cHg7cGFkZGluZy1yaWdodDo0cHh9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZHt0ZXh0LWRlY29yYXRpb246bm9uZX0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiOmFjdGl2ZSBkaXYsLlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YjpsaW5rIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiOnZpc2l0ZWQgZGl2e2NvbG9yOiMwMEM7YmFja2dyb3VuZDojRkZGfS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmI6aG92ZXIgZGl2e2NvbG9yOiNGRkY7YmFja2dyb3VuZDojMzZDfS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDphY3RpdmUgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kOmhvdmVyIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDpsaW5rIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDp2aXNpdGVkIGRpdntjb2xvcjojMDAwO2ZvbnQtd2VpZ2h0OjcwMH0uVklwZ0pkLVpWaTlvZC1sOXhrdGZ7YmFja2dyb3VuZC1jb2xvcjojRkZGO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjhweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjEwcHh9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLU9FVm1jZHtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjNkI5MERBO2JveC1zaGFkb3c6MCAzcHggOHB4IDJweCAjOTk5O2JvcmRlci1yYWRpdXM6OHB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0ZiBpbWd7Ym9yZGVyOm5vbmV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLWZtY21Te21hcmdpbi10b3A6NnB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGN7bWFyZ2luLXRvcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwfS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGMgKnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuRFVHSmlle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X21pbnVzX3NtLmdpZil9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuVGR5VERle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X3BsdXNfc20uZ2lmKX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtVmd3SmxjIHNwYW57Y29sb3I6IzAwQzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyO21hcmdpbjowIDRweH0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtSTlHTHB7bWFyZ2luOjZweCAwIDB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm17bWFyZ2luOjB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm0gdGV4dGFyZWF7bWFyZ2luLWJvdHRvbTo0cHg7d2lkdGg6MTAwJX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYteWVQZTVje21hcmdpbjo2cHggMCA0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLXdPSE15Znt6LWluZGV4OjEwMDA7cG9zaXRpb246Zml4ZWQ7dHJhbnNpdGlvbi1kZWxheTouNnM7bGVmdDotMTAwMHB4O3RvcDotMTAwMHB4fS5WSXBnSmQtWlZpOW9kLWFaMndFZS13T0hNeWYtdGk2aEdje3RyYW5zaXRpb24tZGVsYXk6MHM7bGVmdDotMTRweDt0b3A6LTE0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPe2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxMDRweDtoZWlnaHQ6MTA0cHg7Ym9yZGVyLXJhZGl1czo1MHB4O2JhY2tncm91bmQ6I0ZGRiB1cmwoaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL3Byb2R1Y3QvMngvdHJhbnNsYXRlXzI0ZHAucG5nKSA1MCUgNTAlIG5vLXJlcGVhdDt0cmFuc2l0aW9uOmFsbCAuNnMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKC40KTtvcGFjaXR5OjB9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPLXRpNmhHY3t0cmFuc2Zvcm06c2NhbGUoLjUpO29wYWNpdHk6MX0uVklwZ0pkLVpWaTlvZC1hWjJ3RWV7bWFyZ2luOjJweCAwIDAgMnB4O2FuaW1hdGlvbjpzcGlubmVyLXJvdGF0b3IgMS40cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyBzcGlubmVyLXJvdGF0b3J7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3t0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9fS5WSXBnSmQtWlZpOW9kLWFaMndFZS1KdDVjS3tzdHJva2UtZGFzaGFycmF5OjE4NztzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZTojNDI4NUY0O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO2FuaW1hdGlvbjpzcGlubmVyLWRhc2ggMS40cyBlYXNlLWluLW91dCBpbmZpbml0ZX1Aa2V5ZnJhbWVzIHNwaW5uZXItZGFzaHswJXtzdHJva2UtZGFzaG9mZnNldDoxODd9NTAle3N0cm9rZS1kYXNob2Zmc2V0OjQ2Ljc1O3RyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKX10b3tzdHJva2UtZGFzaG9mZnNldDoxODc7dHJhbnNmb3JtOnJvdGF0ZSg0NTBkZWcpfX0uVklwZ0pkLXlBV05FYi1MN2xia2IgYSwuVklwZ0pkLXlBV05FYi1MN2xia2IgYm9keSwuVklwZ0pkLXlBV05FYi1MN2xia2IgZGl2LC5WSXBnSmQteUFXTkViLUw3bGJrYiBmb3JtLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoMSwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDIsLlZJcGdKZC15QVdORWItTDdsYmtiIGgzLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoNCwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDUsLlZJcGdKZC15QVdORWItTDdsYmtiIGg2LC5WSXBnSmQteUFXTkViLUw3bGJrYiBodG1sLC5WSXBnSmQteUFXTkViLUw3bGJrYiBpZnJhbWUsLlZJcGdKZC15QVdORWItTDdsYmtiIGltZywuVklwZ0pkLXlBV05FYi1MN2xia2IgbGksLlZJcGdKZC15QVdORWItTDdsYmtiIG9sLC5WSXBnSmQteUFXTkViLUw3bGJrYiBwLC5WSXBnSmQteUFXTkViLUw3bGJrYiBzcGFuLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0YWJsZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgdGJvZHksLlZJcGdKZC15QVdORWItTDdsYmtiIHRkLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0ciwuVklwZ0pkLXlBV05FYi1MN2xia2IgdWx7YWxsOnVuc2V0O2ZvbnQtc2l6ZToxMDAlO2xpbmUtaGVpZ2h0Om5vcm1hbH0uVklwZ0pkLXlBV05FYi1MN2xia2Igb2wsLlZJcGdKZC15QVdORWItTDdsYmtiIHVse2xpc3Qtc3R5bGU6bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjB9LlZJcGdKZC15QVdORWItTDdsYmtiIGNhcHRpb24sLlZJcGdKZC15QVdORWItTDdsYmtiIHRkLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0aHt0ZXh0LWFsaWduOmxlZnQ7Zm9udC13ZWlnaHQ6NDAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiBpbnB1dDo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH1kaXY+LlZJcGdKZC15QVdORWItTDdsYmtie3BhZGRpbmc6MTBweCAxNHB4fS5WSXBnSmQteUFXTkViLUw3bGJrYntjb2xvcjojMjIyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlZWU7Ym94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpOy1tb3otYm94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpOy13ZWJraXQtYm94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpO2Rpc3BsYXk6bm9uZTtmb250LWZhbWlseTphcmlhbDtmb250LXNpemU6MTBwdDt3aWR0aDo0MjBweDtwYWRkaW5nOjEycHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwMH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItblZNZmNkLWZtY21TLC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtcGJUVFlle2NsZWFyOmJvdGg7Zm9udC1zaXplOjEwcHQ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpqdXN0aWZ5O3dpZHRoOjEwMCV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXI0bmtle2NvbG9yOiM5OTk7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjttYXJnaW46NHB4IDA7dGV4dC1hbGlnbjpsZWZ0fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UdkQ5UGMtTGdic1Nle2Rpc3BsYXk6bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItbDRlSFh7ZmxvYXQ6bGVmdDttYXJnaW46MH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItWjBBcnFmLVBMRGJiZntkaXNwbGF5OmlubGluZS1ibG9ja30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItZnc0MlplLVowQXJxZi1oYUFjbGZ7ZGlzcGxheTpub25lO3dpZHRoOjEwMCV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1IOXREdHttYXJnaW4tdG9wOjIwcHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUxLNXl1e2Zsb2F0OmxlZnR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXF3VThNZXtmbG9hdDpyaWdodH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItY0dNSTJie21pbi1oZWlnaHQ6MTVweDtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MSV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLWpPZmtNYi1OZTNzRmZ7YmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjMjk5MTBkIDAsIzIwYWYwZSAxMDAlKTtiYWNrZ3JvdW5kOiMyOTkxMGQ7Ym9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6aW5zZXQgMCAycHggMnB4ICMxZTY2MDk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMnB4IDJweCAjMWU2NjA5Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDJweCAycHggIzFlNjYwOTtjb2xvcjp3aGl0ZTtmb250LXNpemU6OXB0O2ZvbnQtd2VpZ2h0OmJvbGRlcjttYXJnaW4tdG9wOjEycHg7cGFkZGluZzo2cHg7dGV4dC1zaGFkb3c6MXB4IDFweCAxcHggIzFlNjYwOX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItWjBBcnFmLWhTUkdQZHtjb2xvcjojMTVjO2N1cnNvcjpwb2ludGVyO2ZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQtc2l6ZToxMXB4O21hcmdpbi1yaWdodDoxNXB4O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYj50ZXh0YXJlYXtmb250LWZhbWlseTphcmlhbDtyZXNpemU6dmVydGljYWw7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjEwcHg7Ym9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O2JvcmRlci10b3A6MXB4IHNvbGlkIHNpbHZlcjtmb250LXNpemU6MTNweDtoZWlnaHQ6YXV0bztvdmVyZmxvdy15OmF1dG87cGFkZGluZzoxcHh9LlZJcGdKZC15QVdORWItTDdsYmtiIHRleHRhcmVhOmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjMpO2JvcmRlcjoxcHggc29saWQgIzRkOTBmZTtvdXRsaW5lOm5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1JYkUwU3ttYXJnaW4tcmlnaHQ6MTBweH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwe21pbi1oZWlnaHQ6MjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZy10b3A6OHB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwe21hcmdpbi1ib3R0b206NXB4O21hcmdpbi1ib3R0b206MH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dHtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6NTRweDsqbWluLXdpZHRoOjcwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZGNkY2RjO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzQ0NDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7aGVpZ2h0OjI3cHg7b3V0bGluZTowO3BhZGRpbmc6MCA4cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjI3cHg7bWFyZ2luOjAgMTZweCAwIDA7Ym94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMSk7LW1vei1ib3gtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpO2JvcmRlci1yYWRpdXM6MnB4O3RyYW5zaXRpb246YWxsIC4yMThzO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2Y1ZjVmNSwjZjFmMWYxKTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmhvdmVye2JvcmRlcjoxcHggc29saWQgI2M2YzZjNjtjb2xvcjojMjIyO3RyYW5zaXRpb246YWxsIDBzO2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDphY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjYzZjNmM2O2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZjZmNmY2O2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmZvY3VzIC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LkFIbXV3ZSAuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDphY3RpdmUsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6Zm9jdXM6YWN0aXZle2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC41KX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dC5BSG11d2UsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlcjoxcHggc29saWQgIzRkOTBmZTt6LWluZGV4OjQhaW1wb3J0YW50fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LmdrNlNNZHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCNlZWUsI2UwZTBlMCk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwuMSk7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2NvbG9yOiMzMzN9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZntjb2xvcjp3aGl0ZTtib3JkZXItY29sb3I6IzMwNzllZDtiYWNrZ3JvdW5kLWNvbG9yOiM0ZDkwZmU7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzQ3ODdlZCl9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZi5BSG11d2UgLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjphY3RpdmUsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjpob3ZlciAuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmZvY3Vze2JvcmRlci1jb2xvcjojMzA3OWVkO2JhY2tncm91bmQtY29sb3I6IzM1N2FlODtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjMzU3YWU4KX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmhvdmVye2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmYsMCAxcHggMXB4IHJnYmEoMCwwLDAsLjEpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZiwwIDFweCAxcHggcmdiYSgwLDAsMCwuMSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmLDAgMXB4IDFweCByZ2JhKDAsMCwwLC4xKX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmLkFIbXV3ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmZvY3VzLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0IC5WSXBnSmQteUFXTkViLVowQXJxZi1zRmVCcWY6aG92ZXIsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQuQUhtdXdlLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDpmb2N1cywuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDpob3Zlcntib3JkZXItY29sb3I6IzMwNzllZH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItbXJ4UGdle2NvbG9yOiM5OTk7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZn0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLVcwdkpvLWZtY21Te2NvbG9yOiM5OTk7Zm9udC1zaXplOjExcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjttYXJnaW46MTVweCAwIDVweH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXUwcGpvZS1mbWNtU3tjb2xvcjojODAwO2Rpc3BsYXk6bm9uZTtmb250LXNpemU6OXB0fS5WSXBnSmQteUFXTkViLVZJcGdKZC1mbWNtUy1zbjU0UXtiYWNrZ3JvdW5kLWNvbG9yOiNjOWQ3ZjE7Ym94LXNoYWRvdzoycHggMnB4IDRweCAjOTlhO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQteGwwN09ie2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym94LXNoYWRvdzowIDJweCA0cHggIzk5YTttaW4td2lkdGg6MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MjAwMH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQtajdMRmxie2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MnB4IDVweCA1cHg7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLXN0eWxlOm5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC14bDA3T2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYjpob3ZlcntiYWNrZ3JvdW5kOiNkZGR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC14bDA3T2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYiBoMXtmb250LXNpemU6MTAwJTtmb250LXdlaWdodDo3MDA7bWFyZ2luOjRweCAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQteGwwN09iIC5WSXBnSmQteUFXTkViLVZJcGdKZC1qN0xGbGIgc3Ryb25ne2NvbG9yOiMzNDVhYWR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVZJcGdKZC1lS201RmMtaEZzYm97dGV4dC1hbGlnbjpyaWdodDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6YXV0b30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYi1TSXNyVGQgLlZJcGdKZC15QVdORWItVklwZ0pkLWVLbTVGYy1oRnNib3t0ZXh0LWFsaWduOmxlZnQ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OmF1dG99LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVRWTHc5Yy1wcEhscmYtc241NFEsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtZm1jbVN7YmFja2dyb3VuZC1jb2xvcjojZjFlYTAwO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93OjNweCAzcHggNHB4IHJnYmEoMCwwLDAsLjUpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZjFlYTAwO2N1cnNvcjpwb2ludGVyO21hcmdpbjotMnB4IC0ycHggLTJweCAtM3B4O3BhZGRpbmc6MnB4IDJweCAycHggM3B4O3Bvc2l0aW9uOnJlbGF0aXZlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2NvbG9yOiMyMjJ9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtcGJUVFlle2NvbG9yOndoaXRlO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2JhY2tncm91bmQtY29sb3I6I2M5ZDdmMTtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDstbW96LWJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7Ym94LXNoYWRvdzozcHggM3B4IDRweCByZ2JhKDAsMCwwLC41KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOi0ycHggLTJweCAtMnB4IC0zcHg7cGFkZGluZzoycHggMnB4IDNweCAzcHg7cG9zaXRpb246cmVsYXRpdmV9LlZJcGdKZC15QVdORWItTDdsYmtiIHNwYW46Zm9jdXN7b3V0bGluZTpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtRHlWREF7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmU7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO21hcmdpbjotMnB4O3BhZGRpbmc6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi15QVdORWItVFZMdzljLXNuNTRRLUx6WDNlZntib3JkZXItbGVmdDoycHggc29saWQgcmVkO21hcmdpbi1sZWZ0Oi0ycHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1UVkx3OWMtc241NFEtWUlBaUlie2JvcmRlci1yaWdodDoycHggc29saWQgcmVkO21hcmdpbi1yaWdodDotMnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJme3BhZGRpbmc6MnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21Te2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDJweCAzcHg7bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMzMzM7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O2JvcmRlci10b3A6MXB4IHNvbGlkICNjMGMwYzA7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wO2hlaWdodDoyMXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJvcmRlci1yYWRpdXM6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmhvdmVye2JvcmRlcjoxcHggc29saWQgI2I5YjliOTtib3JkZXItdG9wOjFweCBzb2xpZCAjYTBhMGEwO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjMpO291dGxpbmU6bm9uZTtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC1ZUHFqYmYtc0ZlQnFme2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDZweCAzcHg7bWFyZ2luOjAgMCAwIDJweDtoZWlnaHQ6MjFweH0uVklwZ0pkLXlBV05FYi1MN2xia2I+ZGl2e2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LWZhbWlseTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtVWQ3ZnJ7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtYWxpZ246ZW5kO2FsaWduLWl0ZW1zOmVuZDttYXJnaW46MTRweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLUl1aXpXYy1TSXNyVGR7bWFyZ2luLXJpZ2h0OjE0cHg7Y29sb3I6Izc0Nzc3NTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1JdWl6V2MtaTNqTThje21hcmdpbi1sZWZ0OjE0cHg7Y29sb3I6Izc0Nzc3NTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1rNzdJaWZ7bWFyZ2luOjAgMTZweCAxNnB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYXhBVjF7d2lkdGg6YXV0bztjb2xvcjojMWYxZjFmO2ZvbnQtc2l6ZToxNnB4O3RleHQtYWxpZ246aW5pdGlhbH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWF4QVYxIC5WSXBnSmQteUFXTkViLVNJc3JUZHt0ZXh0LWFsaWduOnJpZ2h0fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlke2JvcmRlci1yYWRpdXM6MCAwIDEycHggMTJweDttYXJnaW46MDtiYWNrZ3JvdW5kOiNmMWY0Zjk7cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDo1MHB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkIC5WSXBnSmQteUFXTkViLVNJc3JUZHt0ZXh0LWFsaWduOnJpZ2h0fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkLUI3STRPZHtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1vcmllbnQ6dmVydGljYWw7LW1vei1ib3gtZGlyZWN0aW9uOm5vcm1hbDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6NzclO3BhZGRpbmc6MTJweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLU43RXFpZC1CN0k0T2QgLlZJcGdKZC15QVdORWItU0lzclRke3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1VVHVqQ2J7Y29sb3I6IzFmMWYxZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9kIC5WSXBnSmQteUFXTkViLVNJc3JUZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtVVR1akNie3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1lTzltS2V7Y29sb3I6IzQ0NDc0Njtmb250LXNpemU6MTJweDtwYWRkaW5nLXRvcDo0cHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9kIC5WSXBnSmQteUFXTkViLVNJc3JUZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtZU85bUtle3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC14Z292NXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTBweDtyaWdodDo1cHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC14Z292NSAuVklwZ0pkLXlBV05FYi1TSXNyVGR7bGVmdDo1cHg7cmlnaHQ6YXV0b30uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLVRISTZWYntmaWxsOiMwYjU3ZDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1iZ202c2Z7bWFyZ2luOi00cHggMnB4IDAgMDtwYWRkaW5nOjJweCAwIDA7d2lkdGg6NDhweDtoZWlnaHQ6NDhweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjI0cHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDpub25lfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYmdtNnNmOmhvdmVye2JhY2tncm91bmQ6I2U4ZWJlY30uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWFYWVRjZXtkaXNwbGF5Om5vbmV9c2VudGluZWx7fQ=="}},"time_used":65,"timings":{"blocked":-1,"dns":3,"connect":16,"send":0,"wait":16,"receive":0,"ssl":30},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/_/translate_http/_/js/k=translate_http.tr.no.scrnY6Q2_yw.O/am=BIAABw/d=1/exm=el_conf/ed=1/rs=AN8SPfq1KlUFqeiFvBMudduzGtb39QWXuw/m=el_main","fqdn":"translate.googleapis.com","domain":"translate.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":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.263Z","timestamp":1785130090263,"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 /_/translate_http/_/js/k=translate_http.tr.no.scrnY6Q2_yw.O/am=BIAABw/d=1/exm=el_conf/ed=1/rs=AN8SPfq1KlUFqeiFvBMudduzGtb39QWXuw/m=el_main HTTP/1.1\r\nHost: translate.googleapis.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://dreamspinfluence.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\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/rosetta\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"rosetta\"\r\nreport-to: {\"group\":\"rosetta\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/rosetta\"}]}\r\ncontent-length: 67956\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 18:00:05 GMT\r\nexpires: Thu, 22 Jul 2027 18:00:05 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 21 Jul 2026 20:35:41 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding\r\nage: 386886\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":null,"data":{"size":194344,"size_decoded":68816,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (2519)","md5":"cdf9309b56a4ff330627409baead2538","sha1":"e98eac16441e99c9512052eb0087f535b9a609b9","sha256":"310629c4e47d7960e5a89cbd6a9c1d24a4e4d7c5e18346a69a67d92355cf2cd4","sha512":"cafd13a201e26b9f94f9a636ca1f7c191ec3a9fc3f297d35ee51b1304962383e7147509932a759bd903e27e53fb251600ad6942739e472161f5a09367c3776c1","ssdeep":"3072:kjsNxt45eITHt28KRu9gKavNuBDHK0QppB0/I:osb0muBzg","tlshash":"dd14e8d9b26270679263f4a5403f004eb53b68a5f9484dacb28de8e26df4d19017bf7c","first_seen":"2026-07-22T18:30:16.180779Z","last_seen":"2026-07-27T19:37:31.609707Z","times_seen":2601,"resource_available":true,"data":"InVzZSBzdHJpY3QiO3RoaXMuZGVmYXVsdF90cj10aGlzLmRlZmF1bHRfdHJ8fHt9OyhmdW5jdGlvbihfKXt2YXIgd2luZG93PXRoaXM7CnRyeXsKdmFyIEdnLEhnLElnLFhnLGNoLGloLGpoLGxoLG1oLG9oLHNoLHVoLHRoLEFoLEJoLEZoLERoLEVoLERnO18uRWc9ZnVuY3Rpb24oYSl7aWYoRGcudGVzdChhKSlyZXR1cm4gYX07Xy5GZz1mdW5jdGlvbihhLGIpe2EuX19jbG9zdXJlX19lcnJvcl9fY29udGV4dF9fOTg0MzgyfHwoYS5fX2Nsb3N1cmVfX2Vycm9yX19jb250ZXh0X185ODQzODI9e30pO2EuX19jbG9zdXJlX19lcnJvcl9fY29udGV4dF9fOTg0MzgyLnNldmVyaXR5PWJ9O0dnPWZ1bmN0aW9uKGEpe2lmKCFfLlVhfHwhXy5WYSlyZXR1cm4hMTtmb3IodmFyIGI9MDtiPF8uVmEuYnJhbmRzLmxlbmd0aDtiKyspe3ZhciBjPV8uVmEuYnJhbmRzW2JdLmJyYW5kO2lmKGMmJmMuaW5kZXhPZihhKSE9LTEpcmV0dXJuITB9cmV0dXJuITF9O0hnPWZ1bmN0aW9uKCl7cmV0dXJuIF8udygiRmlyZWZveCIpfHxfLncoIkZ4aU9TIil9OwpJZz1mdW5jdGlvbigpe3JldHVybiBfLldhKCk/R2coIkNocm9taXVtIik6KF8udygiQ2hyb21lIil8fF8udygiQ3JpT1MiKSkmJiEoXy5XYSgpPzA6Xy53KCJFZGdlIikpfHxfLncoIlNpbGsiKX07Xy5KZz1mdW5jdGlvbigpe3JldHVybiBfLncoIlNhZmFyaSIpJiYhKElnKCl8fChfLldhKCk/MDpfLncoIkNvYXN0IikpfHxfLlhhKCl8fChfLldhKCk/MDpfLncoIkVkZ2UiKSl8fChfLldhKCk/R2coIk1pY3Jvc29mdCBFZGdlIik6Xy53KCJFZGcvIikpfHwoXy5XYSgpP0dnKCJPcGVyYSIpOl8udygiT1BSIikpfHxIZygpfHxfLncoIlNpbGsiKXx8Xy53KCJBbmRyb2lkIikpfTtfLktnPWZ1bmN0aW9uKCl7cmV0dXJuIF8udygiQW5kcm9pZCIpJiYhKElnKCl8fEhnKCl8fF8uWGEoKXx8Xy53KCJTaWxrIikpfTsKXy5NZz1mdW5jdGlvbihhLGIpe2lmKGEhPW51bGwpe3ZhciBjO3ZhciBkPShjPUxnKSE9bnVsbD9jOkxnPXt9O2M9ZFthXXx8MDtjPj1ifHwoZFthXT1jKzEsYT1FcnJvcigpLF8uRmcoYSwiaW5jaWRlbnQiKSxfLnJiKGEpKX19O18uTmc9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbCgpPT09InN5bWJvbCI/KGM9PT12b2lkIDA/MDpjKSYmU3ltYm9sLmZvciYmYT9TeW1ib2wuZm9yKGEpOmEhPW51bGw/U3ltYm9sKGEpOlN5bWJvbCgpOmJ9O18uUmc9ZnVuY3Rpb24oYSxiKXtfLk9nfHxfLkggaW4gYXx8UGcoYSxRZyk7YVtfLkhdfD1ifTtfLlNnPWZ1bmN0aW9uKGEsYil7Xy5PZ3x8Xy5IIGluIGF8fFBnKGEsUWcpO2FbXy5IXT1ifTtfLlRnPWZ1bmN0aW9uKGEpe18uUmcoYSwzNCk7cmV0dXJuIGF9O18uVWc9ZnVuY3Rpb24oYSl7Xy5SZyhhLDgxOTIpO3JldHVybiBhfTsKXy5XZz1mdW5jdGlvbihhLGIpe3JldHVybiBiPT09dm9pZCAwP2EuZyE9PV8uVmcmJiEhKDImKGEuSltfLkhdfDApKTohISgyJmIpJiZhLmchPT1fLlZnfTtYZz1mdW5jdGlvbihhKXthLlRsPSEwO3JldHVybiBhfTtfLmJoPWZ1bmN0aW9uKGEpe3ZhciBiPWE7aWYoWWcoYikpe2lmKCEvXlxzKig/Oi0/WzEtOV1cZCp8MCk/XHMqJC8udGVzdChiKSl0aHJvdyBFcnJvcihTdHJpbmcoYikpO31lbHNlIGlmKFpnKGIpJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoYikpdGhyb3cgRXJyb3IoU3RyaW5nKGIpKTtyZXR1cm4gJGc/QmlnSW50KGEpOmE9YWgoYSk/YT8iMSI6IjAiOllnKGEpP2EudHJpbSgpfHwiMCI6U3RyaW5nKGEpfTsKY2g9ZnVuY3Rpb24oYSxiKXtpZihhLmxlbmd0aD5iLmxlbmd0aClyZXR1cm4hMTtpZihhLmxlbmd0aDxiLmxlbmd0aHx8YT09PWIpcmV0dXJuITA7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY10sZT1iW2NdO2lmKGQ+ZSlyZXR1cm4hMTtpZihkPGUpcmV0dXJuITB9fTtfLmhoPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGEhPW51bGwmJmFbZGhdPT09ZWgpcmV0dXJuIGE7aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIGM/ZCYyP2JbXy5maF18fChiW18uZmhdPV8uZ2goYikpOm5ldyBiOnZvaWQgMDtjPWFbXy5IXXwwO2Q9Y3xkJjMyfGQmMjtkIT09YyYmXy5TZyhhLGQpO3JldHVybiBuZXcgYihhKX07Xy5naD1mdW5jdGlvbihhKXthPW5ldyBhO18uVGcoYS5KKTtyZXR1cm4gYX07aWg9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O2poPWZ1bmN0aW9uKGEpe3JldHVybiBhfTsKbGg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9Xy5oaChhLGQsYyxmKTtlJiYoYT1fLmtoKGEpKTtyZXR1cm4gYX07bWg9ZnVuY3Rpb24oYSl7cmV0dXJuW2EsdGhpcy5nZXQoYSldfTtvaD1mdW5jdGlvbihhLGIpe2I8MTAwfHxfLk1nKG5oLDEpfTsKc2g9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZCE9PXZvaWQgMDtkPSEhZDt2YXIgZj1fLnBoKF8ucWgpLGc7IWUmJl8uT2cmJmYmJihnPWFbZl0pJiZnLlRrKG9oKTtmPVtdO3ZhciBoPWEubGVuZ3RoO2c9NDI5NDk2NzI5NTt2YXIgaz0hMSxsPSEhKGImNjQpLG49bD9iJjEyOD8wOi0xOnZvaWQgMDtpZighKGImMSkpe3ZhciBxPWgmJmFbaC0xXTtxIT1udWxsJiZ0eXBlb2YgcT09PSJvYmplY3QiJiZxLmNvbnN0cnVjdG9yPT09T2JqZWN0PyhoLS0sZz1oKTpxPXZvaWQgMDtpZihsJiYhKGImMTI4KSYmIWUpe2s9ITA7dmFyIHA7Zz0oKHA9cmgpIT1udWxsP3A6aWgpKGctbixuLGEscSx2b2lkIDApK259fWI9dm9pZCAwO2ZvcihlPTA7ZTxoO2UrKylpZihwPWFbZV0scCE9bnVsbCYmKHA9YyhwLGQpKSE9bnVsbClpZihsJiZlPj1nKXt2YXIgcj1lLW4sdD12b2lkIDA7KCh0PWIpIT1udWxsP3Q6Yj17fSlbcl09cH1lbHNlIGZbZV09cDtpZihxKWZvcih2YXIgQSBpbiBxKWE9cVtBXSxhIT0KbnVsbCYmKGE9YyhhLGQpKSE9bnVsbCYmKGg9K0EsZT12b2lkIDAsbCYmIU51bWJlci5pc05hTihoKSYmKGU9aCtuKTxnP2ZbZV09YTooaD12b2lkIDAsKChoPWIpIT1udWxsP2g6Yj17fSlbQV09YSkpO2ImJihrP2YucHVzaChiKTpmW2ddPWIpO3JldHVybiBmfTt1aD1mdW5jdGlvbihhKXthWzBdPXRoKGFbMF0pO2FbMV09dGgoYVsxXSk7cmV0dXJuIGF9Owp0aD1mdW5jdGlvbihhKXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgIm51bWJlciI6cmV0dXJuIE51bWJlci5pc0Zpbml0ZShhKT9hOiIiK2E7Y2FzZSAiYmlnaW50IjpyZXR1cm4oMCxfLnZoKShhKT9OdW1iZXIoYSk6IiIrYTtjYXNlICJib29sZWFuIjpyZXR1cm4gYT8xOjA7Y2FzZSAib2JqZWN0IjppZihBcnJheS5pc0FycmF5KGEpKXt2YXIgYj1hW18uSF18MDtyZXR1cm4gYS5sZW5ndGg9PT0wJiZiJjE/dm9pZCAwOnNoKGEsYix0aCl9aWYoYSE9bnVsbCYmYVtkaF09PT1laClyZXR1cm4gXy53aChhKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgXy54aCYmYSBpbnN0YW5jZW9mIF8ueGgpcmV0dXJuIGEuZygpO2lmKGEgaW5zdGFuY2VvZiBfLnloKXJldHVybiBhPWEuc2l6ZSE9PTA/Xy56aChhLHVoKTp2b2lkIDAsYTtyZXR1cm59cmV0dXJuIGF9O18ud2g9ZnVuY3Rpb24oYSl7YT1hLko7cmV0dXJuIHNoKGEsYVtfLkhdfDAsdGgpfTsKXy5JPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gQWgoYSxiLGMsMjA0OCl9OwpBaD1mdW5jdGlvbihhLGIsYyxkKXtkPWQ9PT12b2lkIDA/MDpkO2lmKGE9PW51bGwpe3ZhciBlPTMyO2M/KGE9W2NdLGV8PTEyOCk6YT1bXTtiJiYoZT1lJi0xNjc2MDgzM3woYiYxMDIzKTw8MTQpfWVsc2V7aWYoIUFycmF5LmlzQXJyYXkoYSkpdGhyb3cgRXJyb3IoImJhIik7ZT1hW18uSF18MDtpZihfLk1jJiYxJmUpdGhyb3cgRXJyb3IoImNhIik7MjA0OCZlJiYhKDImZSkmJkJoKCk7aWYoZSYyNTYpdGhyb3cgRXJyb3IoImRhIik7aWYoZSY2NClyZXR1cm4oZXxkKSE9PWUmJl8uU2coYSxlfGQpLGE7aWYoYyYmKGV8PTEyOCxjIT09YVswXSkpdGhyb3cgRXJyb3IoImVhIik7YTp7Yz1hO2V8PTY0O3ZhciBmPWMubGVuZ3RoO2lmKGYpe3ZhciBnPWYtMSxoPWNbZ107aWYoaCE9bnVsbCYmdHlwZW9mIGg9PT0ib2JqZWN0IiYmaC5jb25zdHJ1Y3Rvcj09PU9iamVjdCl7Yj1lJjEyOD8wOi0xO2ctPWI7aWYoZz49MTAyNCl0aHJvdyBFcnJvcigiZ2EiKTtmb3IodmFyIGsgaW4gaClmPStrLApmPGcmJihjW2YrYl09aFtrXSxkZWxldGUgaFtrXSk7ZT1lJi0xNjc2MDgzM3woZyYxMDIzKTw8MTQ7YnJlYWsgYX19aWYoYil7az1NYXRoLm1heChiLGYtKGUmMTI4PzA6LTEpKTtpZihrPjEwMjQpdGhyb3cgRXJyb3IoImhhIik7ZT1lJi0xNjc2MDgzM3woayYxMDIzKTw8MTR9fX1fLlNnKGEsZXw2NHxkKTtyZXR1cm4gYX07Qmg9ZnVuY3Rpb24oKXtpZihfLk1jKXRocm93IEVycm9yKCJmYSIpO18uTWcoQ2gsNSl9OwpGaD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhIT09Im9iamVjdCIpcmV0dXJuIGE7aWYoQXJyYXkuaXNBcnJheShhKSl7dmFyIGM9YVtfLkhdfDA7cmV0dXJuIGEubGVuZ3RoPT09MCYmYyYxP3ZvaWQgMDpEaChhLGMsYil9aWYoYSE9bnVsbCYmYVtkaF09PT1laClyZXR1cm4gRWgoYSk7aWYoYSBpbnN0YW5jZW9mIF8ueWgpe2I9YS5LYjtpZihiJjIpcmV0dXJuIGE7aWYoIWEuc2l6ZSlyZXR1cm47Yz1fLlRnKF8uemgoYSkpO2lmKGEuR2IpZm9yKGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGQ9Y1thXSxlPWRbMV07ZT09bnVsbHx8dHlwZW9mIGUhPT0ib2JqZWN0Ij9lPXZvaWQgMDplIT1udWxsJiZlW2RoXT09PWVoP2U9RWgoZSk6QXJyYXkuaXNBcnJheShlKT9lPURoKGUsZVtfLkhdfDAsISEoYiYzMikpOmU9dm9pZCAwO2RbMV09ZX1yZXR1cm4gY31pZigiZnVuY3Rpb24iPT10eXBlb2YgXy54aCYmYSBpbnN0YW5jZW9mIF8ueGgpcmV0dXJuIGF9OwpEaD1mdW5jdGlvbihhLGIsYyl7aWYoYiYyKXJldHVybiBhOyFjfHw0MDk2JmJ8fDE2JmI/YT1fLkdoKGEsYiwhMSxjJiYhKGImMTYpKTooXy5SZyhhLDM0KSxiJjQmJk9iamVjdC5mcmVlemUoYSkpO3JldHVybiBhfTtfLkhoPWZ1bmN0aW9uKGEsYixjKXthPW5ldyBhLmNvbnN0cnVjdG9yKGIpO2MmJihhLmc9Xy5WZyk7YS5oPV8uVmc7cmV0dXJuIGF9O0VoPWZ1bmN0aW9uKGEpe3ZhciBiPWEuSixjPWJbXy5IXXwwO3JldHVybiBfLldnKGEsYyk/YTpfLkloKGEsYixjKT9fLkhoKGEsYik6Xy5HaChiLGMpfTtfLkdoPWZ1bmN0aW9uKGEsYixjLGQpe2QhPW51bGx8fChkPSEhKDM0JmIpKTthPXNoKGEsYixGaCxkKTtkPTMyO2MmJihkfD0yKTtiPWImMTY3NjkyMTd8ZDtfLlNnKGEsYik7cmV0dXJuIGF9OwpfLmtoPWZ1bmN0aW9uKGEpe3ZhciBiPWEuSixjPWJbXy5IXXwwO3JldHVybiBfLldnKGEsYyk/Xy5JaChhLGIsYyk/Xy5IaChhLGIsITApOm5ldyBhLmNvbnN0cnVjdG9yKF8uR2goYixjLCExKSk6YX07Xy5JaD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGMmMj8hMDpjJjMyJiYhKGMmNDA5Nik/KF8uU2coYixjfDIpLGEuZz1fLlZnLCEwKTohMX07Xy5waD1mdW5jdGlvbihhKXtyZXR1cm4gYX07RGc9L15ccyooPyFqYXZhc2NyaXB0OikoPzpbXHcrLi1dKzp8W146Lz8jXSooPzpbLz8jXXwkKSkvaTtfLkpoPUhnKCk7Xy5LaD1fLlphKCl8fF8udygiaVBvZCIpO18uTGg9Xy53KCJpUGFkIik7Xy5NaD1fLktnKCk7Xy5OaD1JZygpO18uT2g9Xy5KZygpJiYhXy4kYSgpO18uUGg9IV8uU2MmJnR5cGVvZiBidG9hPT09ImZ1bmN0aW9uIjt2YXIgTGc9dm9pZCAwO3ZhciBRaCxuaCxDaCxkaDtfLk9nPXR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sKCk9PT0ic3ltYm9sIjtRaD1fLk5nKCJqYXMiLHZvaWQgMCwhMCk7Xy5maD1fLk5nKHZvaWQgMCwiMGRpIik7Xy5xaD1fLk5nKHZvaWQgMCxTeW1ib2woKSk7Xy5SaD1fLk5nKHZvaWQgMCwiMHViIik7bmg9Xy5OZyh2b2lkIDAsIjB1YnMiKTtDaD1fLk5nKHZvaWQgMCwiMGFjdGsiKTtkaD1fLk5nKCJtX20iLCJYbCIsITApO18uU2g9Xy5OZygpO3ZhciBRZyxQZyxVaDtRZz17ZWk6e3ZhbHVlOjAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITF9fTtQZz1PYmplY3QuZGVmaW5lUHJvcGVydGllcztfLkg9Xy5PZz9RaDoiZWkiO1VoPVtdO18uU2coVWgsNyk7Xy5UaD1PYmplY3QuZnJlZXplKFVoKTt2YXIgZWgsVmg7ZWg9e307Xy5WZz17fTtWaD1mdW5jdGlvbihhLGIsYyl7dGhpcy5nPWE7dGhpcy5oPWI7dGhpcy5qPWN9O1ZoLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nLm5leHQoKTthLmRvbmV8fChhLnZhbHVlPXRoaXMuaC5jYWxsKHRoaXMuaixhLnZhbHVlKSk7cmV0dXJuIGF9O1ZoLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O18uV2g9T2JqZWN0LmZyZWV6ZSh7fSk7Xy5YaD1PYmplY3QuZnJlZXplKHt9KTt2YXIgWmc9WGcoZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciJ9KSxZZz1YZyhmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIn0pLGFoPVhnKGZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09PSJib29sZWFuIn0pO3ZhciAkZz10eXBlb2YgXy52LkJpZ0ludD09PSJmdW5jdGlvbiImJnR5cGVvZiBfLnYuQmlnSW50KDApPT09ImJpZ2ludCI7dmFyICRoLFloLGFpLFpoO18udmg9WGcoZnVuY3Rpb24oYSl7cmV0dXJuICRnP2E+PVloJiZhPD1aaDphWzBdPT09Ii0iP2NoKGEsJGgpOmNoKGEsYWkpfSk7JGg9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIudG9TdHJpbmcoKTtZaD0kZz9CaWdJbnQoTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpOnZvaWQgMDthaT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUi50b1N0cmluZygpO1poPSRnP0JpZ0ludChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik6dm9pZCAwO18uYmk9dHlwZW9mIEJpZ0ludD09PSJmdW5jdGlvbiI/QmlnSW50LmFzSW50Tjp2b2lkIDA7Xy5jaT1OdW1iZXIuaXNTYWZlSW50ZWdlcjtfLmRpPU51bWJlci5pc0Zpbml0ZTtfLmVpPU1hdGgudHJ1bmM7dmFyIGZpPWZ1bmN0aW9uKCl7dHJ5e3ZhciBhPWZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5UYikoTWFwLFtdLHRoaXMuY29uc3RydWN0b3IpfTtfLkIoYSxNYXApO18uUWMobmV3IGEpO3JldHVybiExfWNhdGNoKGIpe3JldHVybiEwfX0oKSxnaT1mdW5jdGlvbigpe3RoaXMuZz1uZXcgTWFwfSxoaSxpaTtfLm09Z2kucHJvdG90eXBlO18ubS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZy5nZXQoYSl9O18ubS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmcuc2V0KGEsYik7dGhpcy5zaXplPXRoaXMuZy5zaXplO3JldHVybiB0aGlzfTtfLm0uZGVsZXRlPWZ1bmN0aW9uKGEpe2E9dGhpcy5nLmRlbGV0ZShhKTt0aGlzLnNpemU9dGhpcy5nLnNpemU7cmV0dXJuIGF9O18ubS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuZy5jbGVhcigpO3RoaXMuc2l6ZT10aGlzLmcuc2l6ZX07Xy5tLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nLmhhcyhhKX07Xy5tLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLmVudHJpZXMoKX07Cl8ubS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZy5rZXlzKCl9O18ubS52YWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLnZhbHVlcygpfTtfLm0uZm9yRWFjaD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmcuZm9yRWFjaChhLGIpfTtnaS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVudHJpZXMoKX07aGk9ZnVuY3Rpb24oKXtpZihmaSlyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKGdpLnByb3RvdHlwZSxNYXAucHJvdG90eXBlKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhnaS5wcm90b3R5cGUse3NpemU6e3ZhbHVlOjAsY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITB9fSksZ2k7dmFyIGE9ZnVuY3Rpb24oKXtyZXR1cm4oMCxfLlRiKShNYXAsW10sdGhpcy5jb25zdHJ1Y3Rvcil9O18uQihhLE1hcCk7cmV0dXJuIGF9KCk7Cl8ueWg9ZnVuY3Rpb24oYSxiLGMsZCl7Yz1jPT09dm9pZCAwP2poOmM7ZD1kPT09dm9pZCAwP2poOmQ7dmFyIGU9aGkuY2FsbCh0aGlzKXx8dGhpcztlLktiPWFbXy5IXXwwO2UuR2I9YjtlLmFkPWM7ZS5rZz1lLkdiP2xoOmQ7Zm9yKHZhciBmPTA7ZjxhLmxlbmd0aDtmKyspe3ZhciBnPWFbZl0saD1jKGdbMF0sITEsITApLGs9Z1sxXTtiP2s9PT12b2lkIDAmJihrPW51bGwpOms9ZChnWzFdLCExLCEwLHZvaWQgMCx2b2lkIDAsZS5LYik7aGkucHJvdG90eXBlLnNldC5jYWxsKGUsaCxrKX1yZXR1cm4gZX07Xy5CKF8ueWgsaGkpO2lpPWZ1bmN0aW9uKGEpe2lmKGEuS2ImMil0aHJvdyBFcnJvcigiYWEiKTt9O18uemg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5VZyhBcnJheS5mcm9tKGhpLnByb3RvdHlwZS5lbnRyaWVzLmNhbGwoYSksYikpfTtfLm09Xy55aC5wcm90b3R5cGU7Xy5tLmNsZWFyPWZ1bmN0aW9uKCl7aWkodGhpcyk7aGkucHJvdG90eXBlLmNsZWFyLmNhbGwodGhpcyl9OwpfLm0uZGVsZXRlPWZ1bmN0aW9uKGEpe2lpKHRoaXMpO3JldHVybiBoaS5wcm90b3R5cGUuZGVsZXRlLmNhbGwodGhpcyx0aGlzLmFkKGEsITAsITEpKX07Xy5tLmVudHJpZXM9ZnVuY3Rpb24oKXtpZih0aGlzLkdiKXt2YXIgYT1oaS5wcm90b3R5cGUua2V5cy5jYWxsKHRoaXMpO2E9bmV3IFZoKGEsbWgsdGhpcyl9ZWxzZSBhPWhpLnByb3RvdHlwZS5lbnRyaWVzLmNhbGwodGhpcyk7cmV0dXJuIGF9O18ubS52YWx1ZXM9ZnVuY3Rpb24oKXtpZih0aGlzLkdiKXt2YXIgYT1oaS5wcm90b3R5cGUua2V5cy5jYWxsKHRoaXMpO2E9bmV3IFZoKGEsXy55aC5wcm90b3R5cGUuZ2V0LHRoaXMpfWVsc2UgYT1oaS5wcm90b3R5cGUudmFsdWVzLmNhbGwodGhpcyk7cmV0dXJuIGF9OwpfLm0uZm9yRWFjaD1mdW5jdGlvbihhLGIpe3RoaXMuR2I/aGkucHJvdG90eXBlLmZvckVhY2guY2FsbCh0aGlzLGZ1bmN0aW9uKGMsZCxlKXthLmNhbGwoYixlLmdldChkKSxkLGUpfSk6aGkucHJvdG90eXBlLmZvckVhY2guY2FsbCh0aGlzLGEsYil9O18ubS5zZXQ9ZnVuY3Rpb24oYSxiKXtpaSh0aGlzKTthPXRoaXMuYWQoYSwhMCwhMSk7cmV0dXJuIGE9PW51bGw/dGhpczpiPT1udWxsPyhoaS5wcm90b3R5cGUuZGVsZXRlLmNhbGwodGhpcyxhKSx0aGlzKTpoaS5wcm90b3R5cGUuc2V0LmNhbGwodGhpcyxhLHRoaXMua2coYiwhMCwhMCx0aGlzLkdiLCExLHRoaXMuS2IpKX07Xy5tLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gaGkucHJvdG90eXBlLmhhcy5jYWxsKHRoaXMsdGhpcy5hZChhLCExLCExKSl9OwpfLm0uZ2V0PWZ1bmN0aW9uKGEpe2E9dGhpcy5hZChhLCExLCExKTt2YXIgYj1oaS5wcm90b3R5cGUuZ2V0LmNhbGwodGhpcyxhKTtpZihiIT09dm9pZCAwKXt2YXIgYz10aGlzLkdiO3JldHVybiBjPyhjPXRoaXMua2coYiwhMSwhMCxjLHRoaXMuTmssdGhpcy5LYiksYyE9PWImJmhpLnByb3RvdHlwZS5zZXQuY2FsbCh0aGlzLGEsYyksYyk6Yn19O18ueWgucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbnRyaWVzKCl9O18ueWgucHJvdG90eXBlLnRvSlNPTj12b2lkIDA7dmFyIHJoO18uamk9Xy5iaCgwKTtfLko9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuSj1fLkkoYSxiLGMpfTtfLkoucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiBfLndoKHRoaXMpfTtfLkoucHJvdG90eXBlW2RoXT1laDtfLkoucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSi50b1N0cmluZygpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIExpLE1pLE5pLE9pLFJpLFBpLFFpLFNpLFVpLFdpLFhpO18ua2k9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5lYy5hcHBseSgxLGFyZ3VtZW50cyk7aWYoYi5sZW5ndGg9PT0wKXJldHVybiBfLk1hKGFbMF0pO2Zvcih2YXIgYz1hWzBdLGQ9MDtkPGIubGVuZ3RoO2QrKyljKz1lbmNvZGVVUklDb21wb25lbnQoYltkXSkrYVtkKzFdO3JldHVybiBfLk1hKGMpfTtfLmxpPWZ1bmN0aW9uKGEpe18uUmcoYSwzMik7cmV0dXJuIGF9O18ubWk9ZnVuY3Rpb24oYSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEpfTtfLm5pPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT09ImJvb2xlYW4iKXRocm93IEVycm9yKCIkYCIrXy5vYyhhKSsiYCIrYSk7cmV0dXJuIGF9O18ub2k9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbHx8dHlwZW9mIGE9PT0iYm9vbGVhbiIpcmV0dXJuIGE7aWYodHlwZW9mIGE9PT0ibnVtYmVyIilyZXR1cm4hIWF9OwpfLnBpPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsfHx0eXBlb2YgYT09PSJzdHJpbmciP2E6dm9pZCAwfTtfLnFpPWZ1bmN0aW9uKGEpe2lmKGEuZyE9PV8uVmcpcmV0dXJuITE7dmFyIGI9YS5KO2I9Xy5HaChiLGJbXy5IXXwwKTtfLlJnKGIsMjA0OCk7YS5KPWI7YS5nPXZvaWQgMDthLmg9dm9pZCAwO3JldHVybiEwfTtfLnJpPWZ1bmN0aW9uKGEpe2lmKCFfLnFpKGEpJiZfLldnKGEsYS5KW18uSF18MCkpdGhyb3cgRXJyb3IoKTt9O18uc2k9ZnVuY3Rpb24oYSxiKXtiPT09dm9pZCAwJiYoYj1hW18uSF18MCk7YiYzMiYmIShiJjQwOTYpJiZfLlNnKGEsYnw0MDk2KX07Cl8udGk9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1jKyhlPzA6LTEpLGc9YS5sZW5ndGgtMTtpZihnPj0xKyhlPzA6LTEpJiZmPj1nKXt2YXIgaD1hW2ddO2lmKGghPW51bGwmJnR5cGVvZiBoPT09Im9iamVjdCImJmguY29uc3RydWN0b3I9PT1PYmplY3QpcmV0dXJuIGhbY109ZCxifWlmKGY8PWcpcmV0dXJuIGFbZl09ZCxiO2lmKGQhPT12b2lkIDApe3ZhciBrO2c9KChrPWIpIT1udWxsP2s6Yj1hW18uSF18MCk+PjE0JjEwMjN8fDUzNjg3MDkxMjtjPj1nP2QhPW51bGwmJihmPXt9LGFbZysoZT8wOi0xKV09KGZbY109ZCxmKSk6YVtmXT1kfXJldHVybiBifTtfLkJpPWZ1bmN0aW9uKGEsYil7YT1fLnVpKGEsYix2b2lkIDApO3JldHVybiBBcnJheS5pc0FycmF5KGEpP2E6Xy5UaH07Xy5DaT1mdW5jdGlvbihhLGIpezImYiYmKGF8PTIpO3JldHVybiBhfDF9O18uRGk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT0oMiZiP2F8MjphJi0zKSYtMjczfTsKXy5FaT1mdW5jdGlvbihhKXtyZXR1cm4hISgyJmEpJiYhISg0JmEpfHwhISgyNTYmYSl9O18uRmk9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXt2YXIgaz1iO2Y9PT0xfHwoZiE9PTQ/MDoyJmJ8fCEoMTYmYikmJjMyJmQpP18uRWkoYil8fChifD0hYS5sZW5ndGh8fGcmJiEoNDA5NiZiKXx8MzImZCYmISg0MDk2JmJ8fDE2JmIpPzI6MjU2LGIhPT1rJiZfLlNnKGEsYiksT2JqZWN0LmZyZWV6ZShhKSk6KGY9PT0yJiZfLkVpKGIpJiYoYT1fLm1pKGEpLGs9MCxiPV8uRGkoYixkKSxkPV8udGkoYyxkLGUsYSkpLF8uRWkoYil8fChofHwoYnw9MTYpLGIhPT1rJiZfLlNnKGEsYikpKTsyJmJ8fCEoNDA5NiZifHwxNiZiKXx8Xy5zaShjLGQpO3JldHVybiBhfTtfLkdpPWZ1bmN0aW9uKGEsYixjLGQpe18ucmkoYSk7dmFyIGU9YS5KO18udGkoZSxlW18uSF18MCxiLChkPT09IjAiP051bWJlcihjKT09PTA6Yz09PWQpP3ZvaWQgMDpjKTtyZXR1cm4gYX07Cl8uSGk9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0hMTtkPV8udWkoYSxkLGUsZnVuY3Rpb24oZyl7dmFyIGg9Xy5oaChnLGMsITEsYik7Zj1oIT09ZyYmaCE9bnVsbDtyZXR1cm4gaH0pO2lmKGQhPW51bGwpcmV0dXJuIGYmJiFfLldnKGQpJiZfLnNpKGEsYiksZH07Cl8uSWk9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXt2YXIgaz1fLldnKGEsYyk7Zj1rPzE6ZjtnPSEhZ3x8Zj09PTM7az1oJiYhazsoZj09PTJ8fGspJiZfLnFpKGEpJiYoYj1hLkosYz1iW18uSF18MCk7YT1fLkJpKGIsZSk7dmFyIGw9YT09PV8uVGg/NzphW18uSF18MCxuPV8uQ2kobCxjKTtpZihoPSEoNCZuKSl7dmFyIHE9YSxwPWMscj0hISgyJm4pO3ImJihwfD0yKTtmb3IodmFyIHQ9IXIsQT0hMCxEPTAsRT0wO0Q8cS5sZW5ndGg7RCsrKXt2YXIgYmE9Xy5oaChxW0RdLGQsITEscCk7aWYoYmEgaW5zdGFuY2VvZiBkKXtpZighcil7dmFyIFo9Xy5XZyhiYSk7dCYmKHQ9IVopO0EmJihBPVopfXFbRSsrXT1iYX19RTxEJiYocS5sZW5ndGg9RSk7bnw9NDtuPUE/biYtNDA5NzpufDQwOTY7bj10P258ODpuJi05fW4hPT1sJiYoXy5TZyhhLG4pLDImbiYmT2JqZWN0LmZyZWV6ZShhKSk7aWYoayYmISg4Jm58fCFhLmxlbmd0aCYmKGY9PT0xfHwoZiE9PTQ/MDoyJm58fCEoMTYmbikmJgozMiZjKSkpKXtfLkVpKG4pJiYoYT1fLm1pKGEpLG49Xy5EaShuLGMpLGM9Xy50aShiLGMsZSxhKSk7ZD1hO2s9bjtmb3IobD0wO2w8ZC5sZW5ndGg7bCsrKXE9ZFtsXSxuPV8ua2gocSkscSE9PW4mJihkW2xdPW4pO2t8PTg7bj1rPWQubGVuZ3RoP2t8NDA5NjprJi00MDk3O18uU2coYSxuKX1yZXR1cm4gYT1fLkZpKGEsbixiLGMsZSxmLGgsZyl9O18uSmk9ZnVuY3Rpb24oYSl7YT09bnVsbCYmKGE9dm9pZCAwKTtyZXR1cm4gYX07Xy5LaT1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7Yj1KU09OLnBhcnNlKGIpO2lmKCFBcnJheS5pc0FycmF5KGIpKXRocm93IEVycm9yKCJpYWAiK18ub2MoYikrImAiK2IpO18uVGcoYik7cmV0dXJuIG5ldyBhKGIpfX07TGk9ZnVuY3Rpb24oYSl7aWYoYS5HKXRocm93IG5ldyBUeXBlRXJyb3IoImYiKTthLkc9ITB9O01pPWZ1bmN0aW9uKGEsYil7YS5sPXtiZjpiLENmOiEwfTthLmc9YS5DfHxhLm99OwpOaT1mdW5jdGlvbihhLGIpe2EucmF3PWI7T2JqZWN0LmZyZWV6ZSYmKE9iamVjdC5mcmVlemUoYSksT2JqZWN0LmZyZWV6ZShiKSk7cmV0dXJuIGF9O18uSz1mdW5jdGlvbihhKXtyZXR1cm4gTmkoYSxhKX07T2k9ZnVuY3Rpb24oYSl7dGhpcy5nPW5ldyBfLkY7dGhpcy5oPWF9O1JpPWZ1bmN0aW9uKGEsYil7TGkoYS5nKTt2YXIgYz1hLmcuQTtpZihjKXJldHVybiBQaShhLCJyZXR1cm4iaW4gYz9jWyJyZXR1cm4iXTpmdW5jdGlvbihkKXtyZXR1cm57dmFsdWU6ZCxkb25lOiEwfX0sYixhLmcucmV0dXJuKTthLmcucmV0dXJuKGIpO3JldHVybiBRaShhKX07UGk9ZnVuY3Rpb24oYSxiLGMsZCl7dHJ5e3ZhciBlPWIuY2FsbChhLmcuQSxjKTtfLmNjKGUpO2lmKCFlLmRvbmUpcmV0dXJuIGEuZy5HPSExLGU7dmFyIGY9ZS52YWx1ZX1jYXRjaChnKXtyZXR1cm4gYS5nLkE9bnVsbCxNaShhLmcsZyksUWkoYSl9YS5nLkE9bnVsbDtkLmNhbGwoYS5nLGYpO3JldHVybiBRaShhKX07ClFpPWZ1bmN0aW9uKGEpe2Zvcig7YS5nLmc7KXRyeXt2YXIgYj1hLmgoYS5nKTtpZihiKXJldHVybiBhLmcuRz0hMSx7dmFsdWU6Yi52YWx1ZSxkb25lOiExfX1jYXRjaChjKXthLmcuaj12b2lkIDAsTWkoYS5nLGMpfWEuZy5HPSExO2lmKGEuZy5sKXtiPWEuZy5sO2EuZy5sPW51bGw7aWYoYi5DZil0aHJvdyBiLmJmO3JldHVybnt2YWx1ZTpiLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKU2k9ZnVuY3Rpb24oYSl7dGhpcy5uZXh0PWZ1bmN0aW9uKGIpe0xpKGEuZyk7YS5nLkE/Yj1QaShhLGEuZy5BLm5leHQsYixhLmcuSSk6KGEuZy5JKGIpLGI9UWkoYSkpO3JldHVybiBifTt0aGlzLnRocm93PWZ1bmN0aW9uKGIpe0xpKGEuZyk7YS5nLkE/Yj1QaShhLGEuZy5BWyJ0aHJvdyJdLGIsYS5nLkkpOihNaShhLmcsYiksYj1RaShhKSk7cmV0dXJuIGJ9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGIpe3JldHVybiBSaShhLGIpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319O1VpPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCl7cmV0dXJuIGEubmV4dChkKX1mdW5jdGlvbiBjKGQpe3JldHVybiBhLnRocm93KGQpfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihkLGUpe2Z1bmN0aW9uIGYoZyl7Zy5kb25lP2QoZy52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKGcudmFsdWUpLnRoZW4oYixjKS50aGVuKGYsZSl9ZihhLm5leHQoKSl9KX07Xy5WaT1mdW5jdGlvbihhKXtyZXR1cm4gVWkobmV3IFNpKG5ldyBPaShhKSkpfTsKV2k9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC9cLShbYS16XSkvZyxmdW5jdGlvbihiLGMpe3JldHVybiBjLnRvVXBwZXJDYXNlKCl9KX07WGk9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShSZWdFeHAoIihefFtcXHNdKykoW2Etel0pIiwiZyIpLGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYytkLnRvVXBwZXJDYXNlKCl9KX07Xy5ZaT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5vZSlyZXR1cm4gYTt2YXIgYj1uZXcgXy5vZShfLmxlKTtfLm5lKGIsMixhKTtyZXR1cm4gYn07Cl8udWk9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYj09PS0xKXJldHVybiBudWxsO3ZhciBlPWIrKGM/MDotMSksZj1hLmxlbmd0aC0xO2lmKCEoZjwxKyhjPzA6LTEpKSl7aWYoZT49Zil7dmFyIGc9YVtmXTtpZihnIT1udWxsJiZ0eXBlb2YgZz09PSJvYmplY3QiJiZnLmNvbnN0cnVjdG9yPT09T2JqZWN0KXtjPWdbYl07dmFyIGg9ITB9ZWxzZSBpZihlPT09ZiljPWc7ZWxzZSByZXR1cm59ZWxzZSBjPWFbZV07aWYoZCYmYyE9bnVsbCl7ZD1kKGMpO2lmKGQ9PW51bGwpcmV0dXJuIGQ7aWYoIU9iamVjdC5pcyhkLGMpKXJldHVybiBoP2dbYl09ZDphW2VdPWQsZH1yZXR1cm4gY319O18uWmk9ZnVuY3Rpb24oYSxiLGMsZCxlKXtiPV8udWkoYS5KLGIsYyxlKTtpZihiIT09bnVsbHx8ZCYmYS5oIT09Xy5WZylyZXR1cm4gYn07Xy4kaT1mdW5jdGlvbihhLGIsYyl7Xy5yaShhKTt2YXIgZD1hLko7Xy50aShkLGRbXy5IXXwwLGIsYyk7cmV0dXJuIGF9OwpfLmFqPWZ1bmN0aW9uKGEpe3JldHVybiBhPT09Xy5XaD8yOjR9O18uYmo9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5KLGY9ZVtfLkhdfDA7Yj1fLkhpKGUsZixiLGMsZCk7aWYoYj09bnVsbClyZXR1cm4gYjtmPWVbXy5IXXwwO2lmKCFfLldnKGEsZikpe3ZhciBnPV8ua2goYik7ZyE9PWImJihfLnFpKGEpJiYoZT1hLkosZj1lW18uSF18MCksYj1nLGY9Xy50aShlLGYsYyxiLGQpLF8uc2koZSxmKSl9cmV0dXJuIGJ9O18uY2o9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuSjtyZXR1cm4gXy5JaShhLGQsZFtfLkhdfDAsYixjLF8uYWooKSwhMSwhMCl9O18uTD1mdW5jdGlvbihhLGIsYyl7Yz1fLkppKGMpO18uJGkoYSxiLGMpO2MmJiFfLldnKGMpJiZfLnNpKGEuSik7cmV0dXJuIGF9O18uTT1mdW5jdGlvbihhLGIpe3ZhciBjPWM9PT12b2lkIDA/ITE6YzthPV8ub2koXy5aaShhLGIpKTtyZXR1cm4gYSE9bnVsbD9hOmN9OwpfLk49ZnVuY3Rpb24oYSxiKXt2YXIgYz1jPT09dm9pZCAwPyIiOmM7dmFyIGQ7cmV0dXJuKGQ9Xy5waShfLlppKGEsYikpKSE9bnVsbD9kOmN9O18uZGo9ZnVuY3Rpb24oYSxiKXt2YXIgYz1jPT09dm9pZCAwPzA6YzthPV8uWmkoYSxiKTthPWE9PW51bGw/YTooMCxfLmRpKShhKT9hfDA6dm9pZCAwO3JldHVybiBhIT1udWxsP2E6Y307Xy5laj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uR2koYSxiLGM9PW51bGw/YzpfLm5pKGMpLCExKX07Xy5maj1mdW5jdGlvbihhLGIpe2lmKGI9PW51bGx8fGI9PSIiKXJldHVybiBuZXcgYTtiPUpTT04ucGFyc2UoYik7aWYoIUFycmF5LmlzQXJyYXkoYikpdGhyb3cgRXJyb3IoImphIik7cmV0dXJuIG5ldyBhKF8ubGkoYikpfTt2YXIgaWosZ2osamo7Xy5oaj1mdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGI9PT0ic3RyaW5nIilnaihhLGMsYik7ZWxzZSBmb3IodmFyIGQgaW4gYilnaihhLGJbZF0sZCl9O2lqPS9eLS0uKy87Z2o9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWpqW2NdO2lmKCFkKXt2YXIgZT1XaShjKTtkPWU7YS5zdHlsZVtlXT09PXZvaWQgMCYmKGU9KF8uVmM/IldlYmtpdCI6Xy5VYz8iTW96IjpudWxsKStYaShlKSxhLnN0eWxlW2VdIT09dm9pZCAwJiYoZD1lKSk7ampbY109ZH0oYz1kKSYmKGlqLnRlc3QoYyk/YS5zdHlsZS5zZXRQcm9wZXJ0eShjLGIpOmEuc3R5bGVbY109Yil9O2pqPXt9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgbGosb2oscGoscWosdGosdWosdmosd2oseGoseWosQWosQ2osRGosRWosRmosR2osSGosSWosS2osTmosT2osWGosWWosYmssbmosbWosY2ssZWsscmosc2osemosbms7Xy5raj1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5EYylyZXR1cm4gYS5nO3Rocm93IEVycm9yKCJ0Iik7fTtsaj1mdW5jdGlvbihhKXt2YXIgYj1hLkosYz1iW18uSF18MDtyZXR1cm4gXy5JaChhLGIsYyk/Xy5IaChhLGIsITApOm5ldyBhLmNvbnN0cnVjdG9yKF8uR2goYixjLCExKSl9Owpvaj1mdW5jdGlvbihhLGIpe2I9PT12b2lkIDAmJihiPTApO2lmKCFtail7bWo9e307Zm9yKHZhciBjPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSIuc3BsaXQoIiIpLGQ9WyIrLz0iLCIrLyIsIi1fPSIsIi1fLiIsIi1fIl0sZT0wO2U8NTtlKyspe3ZhciBmPWMuY29uY2F0KGRbZV0uc3BsaXQoIiIpKTtualtlXT1mO2Zvcih2YXIgZz0wO2c8Zi5sZW5ndGg7ZysrKXt2YXIgaD1mW2ddO21qW2hdPT09dm9pZCAwJiYobWpbaF09Zyl9fX1iPW5qW2JdO2M9QXJyYXkoTWF0aC5mbG9vcihhLmxlbmd0aC8zKSk7ZD1iWzY0XXx8IiI7Zm9yKGU9Zj0wO2Y8YS5sZW5ndGgtMjtmKz0zKXt2YXIgaz1hW2ZdLGw9YVtmKzFdO2g9YVtmKzJdO2c9YltrPj4yXTtrPWJbKGsmMyk8PDR8bD4+NF07bD1iWyhsJjE1KTw8MnxoPj42XTtoPWJbaCY2M107Y1tlKytdPWcraytsK2h9Zz0wO2g9ZDtzd2l0Y2goYS5sZW5ndGgtZil7Y2FzZSAyOmc9CmFbZisxXSxoPWJbKGcmMTUpPDwyXXx8ZDtjYXNlIDE6YT1hW2ZdLGNbZV09YlthPj4yXStiWyhhJjMpPDw0fGc+PjRdK2grZH1yZXR1cm4gYy5qb2luKCIiKX07cGo9ZnVuY3Rpb24oYSl7YT1FcnJvcihhKTtfLkZnKGEsIndhcm5pbmciKTtyZXR1cm4gYX07cWo9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEJpZ0ludD09PSJmdW5jdGlvbiJ9O3RqPWZ1bmN0aW9uKGEpe3ZhciBiPWE+Pj4wO3JqPWI7c2o9KGEtYikvNDI5NDk2NzI5Nj4+PjB9O3VqPWZ1bmN0aW9uKGEsYil7Yj1+YjthP2E9fmErMTpiKz0xO3JldHVyblthLGJdfTt2aj1mdW5jdGlvbihhKXtpZihhPDApe3RqKC1hKTt2YXIgYj1fLkModWoocmosc2opKTthPWIubmV4dCgpLnZhbHVlO2I9Yi5uZXh0KCkudmFsdWU7cmo9YT4+PjA7c2o9Yj4+PjB9ZWxzZSB0aihhKX07d2o9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7cmV0dXJuIjAwMDAwMDAiLnNsaWNlKGEubGVuZ3RoKSthfTsKeGo9ZnVuY3Rpb24oYSxiKXtiPj4+PTA7YT4+Pj0wO2lmKGI8PTIwOTcxNTEpdmFyIGM9IiIrKDQyOTQ5NjcyOTYqYithKTtlbHNlIHFqKCk/Yz0iIisoQmlnSW50KGIpPDxCaWdJbnQoMzIpfEJpZ0ludChhKSk6KGM9KGE+Pj4yNHxiPDw4KSYxNjc3NzIxNSxiPWI+PjE2JjY1NTM1LGE9KGEmMTY3NzcyMTUpK2MqNjc3NzIxNitiKjY3MTA2NTYsYys9Yio4MTQ3NDk3LGIqPTIsYT49MUU3JiYoYys9YS8xRTc+Pj4wLGElPTFFNyksYz49MUU3JiYoYis9Yy8xRTc+Pj4wLGMlPTFFNyksYz1iK3dqKGMpK3dqKGEpKTtyZXR1cm4gY307eWo9ZnVuY3Rpb24oKXt2YXIgYT1yaixiPXNqO2ImMjE0NzQ4MzY0OD9xaigpP2E9IiIrKEJpZ0ludChifDApPDxCaWdJbnQoMzIpfEJpZ0ludChhPj4+MCkpOihiPV8uQyh1aihhLGIpKSxhPWIubmV4dCgpLnZhbHVlLGI9Yi5uZXh0KCkudmFsdWUsYT0iLSIreGooYSxiKSk6YT14aihhLGIpO3JldHVybiBhfTsKQWo9ZnVuY3Rpb24oYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJiaWdpbnQiOnJldHVybiEwO2Nhc2UgIm51bWJlciI6cmV0dXJuKDAsXy5kaSkoYSk7Y2FzZSAic3RyaW5nIjpyZXR1cm4gemoudGVzdChhKTtkZWZhdWx0OnJldHVybiExfX07Xy5Caj1mdW5jdGlvbihhKXtpZih0eXBlb2YgYSE9PSJudW1iZXIiKXRocm93IHBqKCJpbnQzMiIpO2lmKCEoMCxfLmRpKShhKSl0aHJvdyBwaigiaW50MzIiKTtyZXR1cm4gYXwwfTtDaj1mdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBhO2lmKHR5cGVvZiBhPT09InN0cmluZyImJmEpYT0rYTtlbHNlIGlmKHR5cGVvZiBhIT09Im51bWJlciIpcmV0dXJuO3JldHVybigwLF8uZGkpKGEpP2F8MDp2b2lkIDB9OwpEaj1mdW5jdGlvbihhKXt2YXIgYj1hLmxlbmd0aDtpZihhWzBdPT09Ii0iP2I8MjB8fGI9PT0yMCYmYTw9Ii05MjIzMzcyMDM2ODU0Nzc1ODA4IjpiPDE5fHxiPT09MTkmJmE8PSI5MjIzMzcyMDM2ODU0Nzc1ODA3IilyZXR1cm4gYTtpZihhLmxlbmd0aDwxNil2aihOdW1iZXIoYSkpO2Vsc2UgaWYocWooKSlhPUJpZ0ludChhKSxyaj1OdW1iZXIoYSZCaWdJbnQoNDI5NDk2NzI5NSkpPj4+MCxzaj1OdW1iZXIoYT4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO2Vsc2V7Yj0rKGFbMF09PT0iLSIpO3NqPXJqPTA7Zm9yKHZhciBjPWEubGVuZ3RoLGQ9YixlPShjLWIpJTYrYjtlPD1jO2Q9ZSxlKz02KWQ9TnVtYmVyKGEuc2xpY2UoZCxlKSksc2oqPTFFNixyaj1yaioxRTYrZCxyaj49NDI5NDk2NzI5NiYmKHNqKz1NYXRoLnRydW5jKHJqLzQyOTQ5NjcyOTYpLHNqPj4+PTAscmo+Pj49MCk7YiYmKGI9Xy5DKHVqKHJqLHNqKSksYT1iLm5leHQoKS52YWx1ZSxiPWIubmV4dCgpLnZhbHVlLApyaj1hLHNqPWIpfXJldHVybiB5aigpfTtFaj1mdW5jdGlvbihhKXt2YXIgYj0oMCxfLmVpKShOdW1iZXIoYSkpO2lmKCgwLF8uY2kpKGIpKXJldHVybiBfLmJoKGIpO2I9YS5pbmRleE9mKCIuIik7YiE9PS0xJiYoYT1hLnN1YnN0cmluZygwLGIpKTtyZXR1cm4gcWooKT9fLmJoKCgwLF8uYmkpKDY0LEJpZ0ludChhKSkpOl8uYmgoRGooYSkpfTtGaj1mdW5jdGlvbihhKXt2YXIgYj0oMCxfLmVpKShOdW1iZXIoYSkpO2lmKCgwLF8uY2kpKGIpKXJldHVybiBTdHJpbmcoYik7Yj1hLmluZGV4T2YoIi4iKTtiIT09LTEmJihhPWEuc3Vic3RyaW5nKDAsYikpO3JldHVybiBEaihhKX07CkdqPWZ1bmN0aW9uKGEpe2E9KDAsXy5laSkoYSk7aWYoISgwLF8uY2kpKGEpKXt2aihhKTt2YXIgYj1yaixjPXNqO2lmKGE9YyYyMTQ3NDgzNjQ4KWI9fmIrMT4+PjAsYz1+Yz4+PjAsYj09MCYmKGM9YysxPj4+MCk7dmFyIGQ9Yyo0Mjk0OTY3Mjk2KyhiPj4+MCk7Yj1OdW1iZXIuaXNTYWZlSW50ZWdlcihkKT9kOnhqKGIsYyk7YT10eXBlb2YgYj09PSJudW1iZXIiP2E/LWI6YjphPyItIitiOmJ9cmV0dXJuIGF9O0hqPWZ1bmN0aW9uKGEpe2E9KDAsXy5laSkoYSk7KDAsXy5jaSkoYSk/YT1TdHJpbmcoYSk6KHZqKGEpLGE9eWooKSk7cmV0dXJuIGF9O0lqPWZ1bmN0aW9uKGEpe3JldHVybigwLF8uY2kpKGEpP18uYmgoR2ooYSkpOl8uYmgoSGooYSkpfTsKXy5Kaj1mdW5jdGlvbihhKXt2YXIgYj12b2lkIDA7YiE9bnVsbHx8KGI9MTAyNCk7aWYoIUFqKGEpKXRocm93IHBqKCJpbnQ2NCIpO3ZhciBjPXR5cGVvZiBhO3N3aXRjaChiKXtjYXNlIDUxMjpzd2l0Y2goYyl7Y2FzZSAic3RyaW5nIjpyZXR1cm4gRmooYSk7Y2FzZSAiYmlnaW50IjpyZXR1cm4gU3RyaW5nKCgwLF8uYmkpKDY0LGEpKTtkZWZhdWx0OnJldHVybiBIaihhKX1jYXNlIDEwMjQ6c3dpdGNoKGMpe2Nhc2UgInN0cmluZyI6cmV0dXJuIEVqKGEpO2Nhc2UgImJpZ2ludCI6cmV0dXJuIF8uYmgoKDAsXy5iaSkoNjQsYSkpO2RlZmF1bHQ6cmV0dXJuIElqKGEpfWNhc2UgMDpzd2l0Y2goYyl7Y2FzZSAic3RyaW5nIjpyZXR1cm4gRmooYSk7Y2FzZSAiYmlnaW50IjpyZXR1cm4gXy5iaCgoMCxfLmJpKSg2NCxhKSk7ZGVmYXVsdDpyZXR1cm4gR2ooYSl9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5rbm93biBmb3JtYXQgcmVxdWVzdGVkIHR5cGUgZm9yIGludDY0Iik7fX07CktqPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO2lmKGE9PW51bGwpcmV0dXJuIGE7aWYoYj09PSJiaWdpbnQiKXJldHVybiBfLmJoKCgwLF8uYmkpKDY0LGEpKTtpZihBaihhKSlyZXR1cm4gYj09PSJzdHJpbmciP0VqKGEpOklqKGEpfTtfLkxqPWZ1bmN0aW9uKGEpe2lmKGEhPW51bGwmJnR5cGVvZiBhIT09InN0cmluZyIpdGhyb3cgRXJyb3IoKTtyZXR1cm4gYX07Xy5Naj1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIF8uZmooYSxiKX19OwpOaj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtlWzBdPTE3MzI1ODQxOTM7ZVsxXT00MDIzMjMzNDE3O2VbMl09MjU2MjM4MzEwMjtlWzNdPTI3MTczMzg3ODtlWzRdPTMyODUzNzc1MjA7bj1sPTB9ZnVuY3Rpb24gYihxKXtmb3IodmFyIHA9ZyxyPTA7cjw2NDtyKz00KXBbci80XT1xW3JdPDwyNHxxW3IrMV08PDE2fHFbcisyXTw8OHxxW3IrM107Zm9yKHI9MTY7cjw4MDtyKyspcT1wW3ItM11ecFtyLThdXnBbci0xNF1ecFtyLTE2XSxwW3JdPShxPDwxfHE+Pj4zMSkmNDI5NDk2NzI5NTtxPWVbMF07dmFyIHQ9ZVsxXSxBPWVbMl0sRD1lWzNdLEU9ZVs0XTtmb3Iocj0wO3I8ODA7cisrKXtpZihyPDQwKWlmKHI8MjApe3ZhciBiYT1EXnQmKEFeRCk7dmFyIFo9MTUxODUwMDI0OX1lbHNlIGJhPXReQV5ELFo9MTg1OTc3NTM5MztlbHNlIHI8NjA/KGJhPXQmQXxEJih0fEEpLFo9MjQwMDk1OTcwOCk6KGJhPXReQV5ELFo9MzM5NTQ2OTc4Mik7YmE9KChxPDw1fHE+Pj4yNykmNDI5NDk2NzI5NSkrCmJhK0UrWitwW3JdJjQyOTQ5NjcyOTU7RT1EO0Q9QTtBPSh0PDwzMHx0Pj4+MikmNDI5NDk2NzI5NTt0PXE7cT1iYX1lWzBdPWVbMF0rcSY0Mjk0OTY3Mjk1O2VbMV09ZVsxXSt0JjQyOTQ5NjcyOTU7ZVsyXT1lWzJdK0EmNDI5NDk2NzI5NTtlWzNdPWVbM10rRCY0Mjk0OTY3Mjk1O2VbNF09ZVs0XStFJjQyOTQ5NjcyOTV9ZnVuY3Rpb24gYyhxLHApe2lmKHR5cGVvZiBxPT09InN0cmluZyIpe3E9dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHEpKTtmb3IodmFyIHI9W10sdD0wLEE9cS5sZW5ndGg7dDxBOysrdClyLnB1c2gocS5jaGFyQ29kZUF0KHQpKTtxPXJ9cHx8KHA9cS5sZW5ndGgpO3I9MDtpZihsPT0wKWZvcig7cis2NDxwOyliKHEuc2xpY2UocixyKzY0KSkscis9NjQsbis9NjQ7Zm9yKDtyPHA7KWlmKGZbbCsrXT1xW3IrK10sbisrLGw9PTY0KWZvcihsPTAsYihmKTtyKzY0PHA7KWIocS5zbGljZShyLHIrNjQpKSxyKz02NCxuKz02NH1mdW5jdGlvbiBkKCl7dmFyIHE9W10sCnA9bio4O2w8NTY/YyhoLDU2LWwpOmMoaCw2NC0obC01NikpO2Zvcih2YXIgcj02MztyPj01NjtyLS0pZltyXT1wJjI1NSxwPj4+PTg7YihmKTtmb3Iocj1wPTA7cjw1O3IrKylmb3IodmFyIHQ9MjQ7dD49MDt0LT04KXFbcCsrXT1lW3JdPj50JjI1NTtyZXR1cm4gcX1mb3IodmFyIGU9W10sZj1bXSxnPVtdLGg9WzEyOF0saz0xO2s8NjQ7KytrKWhba109MDt2YXIgbCxuO2EoKTtyZXR1cm57cmVzZXQ6YSx1cGRhdGU6YyxkaWdlc3Q6ZCxmaDpmdW5jdGlvbigpe2Zvcih2YXIgcT1kKCkscD0iIixyPTA7cjxxLmxlbmd0aDtyKyspcCs9IjAxMjM0NTY3ODlBQkNERUYiLmNoYXJBdChNYXRoLmZsb29yKHFbcl0vMTYpKSsiMDEyMzQ1Njc4OUFCQ0RFRiIuY2hhckF0KHFbcl0lMTYpO3JldHVybiBwfX19O09qPWZ1bmN0aW9uKCl7dGhpcy5nPWRvY3VtZW50fHx7Y29va2llOiIifX07ClhqPWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwP1BqOmI7aWYoIVFqKXt2YXIgYzthPShjPWEubmF2aWdhdG9yKT09bnVsbD92b2lkIDA6Yy51c2VyQWdlbnREYXRhO2lmKCFhfHx0eXBlb2YgYS5nZXRIaWdoRW50cm9weVZhbHVlcyE9PSJmdW5jdGlvbiJ8fGEuYnJhbmRzJiZ0eXBlb2YgYS5icmFuZHMubWFwIT09ImZ1bmN0aW9uIilyZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3IoIm9hIikpO1JqKChhLmJyYW5kc3x8W10pLm1hcChmdW5jdGlvbihlKXt2YXIgZj1uZXcgU2o7Zj1fLlRqKGYsMSxlLmJyYW5kKTtyZXR1cm4gXy5UaihmLDIsZS52ZXJzaW9uKX0pKTt0eXBlb2YgYS5tb2JpbGU9PT0iYm9vbGVhbiImJl8uVWooVmosMixhLm1vYmlsZSk7UWo9YS5nZXRIaWdoRW50cm9weVZhbHVlcyhiKX12YXIgZD1uZXcgU2V0KGIpO3JldHVybiBRai50aGVuKGZ1bmN0aW9uKGUpe3ZhciBmPWxqKFZqKTtkLmhhcygicGxhdGZvcm0iKSYmXy5UaihmLDMsZS5wbGF0Zm9ybSk7ZC5oYXMoInBsYXRmb3JtVmVyc2lvbiIpJiYKXy5UaihmLDQsZS5wbGF0Zm9ybVZlcnNpb24pO2QuaGFzKCJhcmNoaXRlY3R1cmUiKSYmXy5UaihmLDUsZS5hcmNoaXRlY3R1cmUpO2QuaGFzKCJtb2RlbCIpJiZfLlRqKGYsNixlLm1vZGVsKTtkLmhhcygidWFGdWxsVmVyc2lvbiIpJiZfLlRqKGYsNyxlLnVhRnVsbFZlcnNpb24pO3JldHVybiBfLldqKGYpfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gXy5XaihWail9KX07WWo9ZnVuY3Rpb24oYSl7dGhpcy5nPXRoaXMuaD10aGlzLmo9YX07Xy5aaj1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Xy5haz1mdW5jdGlvbihhLGIpe2EucWE/YigpOihhLld8fChhLlc9W10pLGEuVy5wdXNoKGIpKX07Yms9e1psOiEwfTtfLldqPWZ1bmN0aW9uKGEpe3JldHVybiBKU09OLnN0cmluZ2lmeShfLndoKGEpKX07Cm5qPXt9O21qPW51bGw7Y2s9e307Xy54aD1mdW5jdGlvbihhLGIpe2lmKGIhPT1jayl0aHJvdyBFcnJvcigiWiIpO3RoaXMubz1hO2lmKGEhPW51bGwmJmEubGVuZ3RoPT09MCl0aHJvdyBFcnJvcigiWSIpO307Xy54aC5wcm90b3R5cGUuZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMubztpZihhPT1udWxsKWE9IiI7ZWxzZSBpZih0eXBlb2YgYSE9PSJzdHJpbmciKXtpZihfLlBoKXtmb3IodmFyIGI9IiIsYz0wLGQ9YS5sZW5ndGgtMTAyNDA7YzxkOyliKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYS5zdWJhcnJheShjLGMrPTEwMjQwKSk7Yis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGM/YS5zdWJhcnJheShjKTphKTthPWJ0b2EoYil9ZWxzZSBhPW9qKGEpO2E9dGhpcy5vPWF9cmV0dXJuIGF9O18uZGs9Xy5OZyh2b2lkIDAsIjFvYSIpO2VrPXt9O3JqPTA7c2o9MDt6aj0vXi0/KFsxLTldWzAtOV0qfDApKFwuWzAtOV0rKT8kLzsKXy5maz1mdW5jdGlvbihhLGIsYyl7Xy5yaShhKTt2YXIgZD1hLkosZT1kW18uSF18MDtpZihjPT1udWxsKXJldHVybiBfLnRpKGQsZSxiKSxhO2Zvcih2YXIgZj1jPT09Xy5UaD83OmNbXy5IXXwwLGc9ZixoPV8uRWkoZiksaz1ofHxPYmplY3QuaXNGcm96ZW4oYyksbD0hMCxuPSEwLHE9MDtxPGMubGVuZ3RoO3ErKyl7dmFyIHA9Y1txXTtofHwocD1fLldnKHApLGwmJihsPSFwKSxuJiYobj1wKSl9aHx8KGY9bD8xMzo1LGY9bj9mJi00MDk3OmZ8NDA5Nik7ayYmZj09PWd8fChjPV8ubWkoYyksZz0wLGY9Xy5EaShmLGUpKTtmIT09ZyYmXy5TZyhjLGYpO2U9Xy50aShkLGUsYixjKTsyJmZ8fCEoNDA5NiZmfHwxNiZmKXx8Xy5zaShkLGUpO3JldHVybiBhfTtfLmdrPWZ1bmN0aW9uKGEsYixjKXtjPWM9PT12b2lkIDA/MDpjO2E9Q2ooXy5aaShhLGIpKTtyZXR1cm4gYSE9bnVsbD9hOmN9OwpfLmhrPWZ1bmN0aW9uKGEsYixjKXtjPWM9PT12b2lkIDA/Xy5qaTpjO2E9Xy5aaShhLGIsdm9pZCAwLHZvaWQgMCxLaik7cmV0dXJuIGEhPW51bGw/YTpjfTtfLlVqPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy4kaShhLGIsYz09bnVsbD9jOl8ubmkoYykpfTtfLmlrPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy4kaShhLGIsYz09bnVsbD9jOl8uQmooYykpfTtfLmprPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy4kaShhLGIsYz09bnVsbD9jOl8uSmooYykpfTtfLlRqPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy4kaShhLGIsXy5MaihjKSl9O18ua2s9ZnVuY3Rpb24oYSxiLGMpe2lmKGMhPW51bGwpe2lmKCEoMCxfLmRpKShjKSl0aHJvdyBwaigiZW51bSIpO2N8PTB9cmV0dXJuIF8uJGkoYSxiLGMpfTsKbms9ZnVuY3Rpb24oKXt2YXIgYT1sayxiPW1rO3RoaXMuZz0xNzUyMzczNzU7dGhpcy5MYj1iO3RoaXMuaD1fLmJqO3RoaXMuZGVmYXVsdFZhbHVlPXZvaWQgMDt0aGlzLmo9YS5XbCE9bnVsbD9lazp2b2lkIDB9O25rLnByb3RvdHlwZS5yZWdpc3Rlcj1mdW5jdGlvbigpe18uUWModGhpcyl9O3ZhciBvaz1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIob2ssXy5KKTt2YXIgcGs9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIiI7aWYoL15hYm91dDooPzpibGFua3xzcmNkb2MpJC8udGVzdChhKSlyZXR1cm4gd2luZG93Lm9yaWdpbnx8IiI7YS5pbmRleE9mKCJibG9iOiIpPT09MCYmKGE9YS5zdWJzdHJpbmcoNSkpO2E9YS5zcGxpdCgiIyIpWzBdLnNwbGl0KCI/IilbMF07YT1hLnRvTG93ZXJDYXNlKCk7YS5pbmRleE9mKCIvLyIpPT0wJiYoYT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wrYSk7L15bXHdcLV0qOlwvXC8vLnRlc3QoYSl8fChhPXdpbmRvdy5sb2NhdGlvbi5ocmVmKTt2YXIgYj1hLnN1YnN0cmluZyhhLmluZGV4T2YoIjovLyIpKzMpLGM9Yi5pbmRleE9mKCIvIik7YyE9LTEmJihiPWIuc3Vic3RyaW5nKDAsYykpO2M9YS5zdWJzdHJpbmcoMCxhLmluZGV4T2YoIjovLyIpKTtpZighYyl0aHJvdyBFcnJvcigia2FgIithKTtpZihjIT09Imh0dHAiJiZjIT09Imh0dHBzIiYmYyE9PSJjaHJvbWUtZXh0ZW5zaW9uIiYmYyE9PSJtb3otZXh0ZW5zaW9uIiYmCmMhPT0iZmlsZSImJmMhPT0iYW5kcm9pZC1hcHAiJiZjIT09ImNocm9tZS1zZWFyY2giJiZjIT09ImNocm9tZS11bnRydXN0ZWQiJiZjIT09ImNocm9tZSImJmMhPT0iYXBwIiYmYyE9PSJkZXZ0b29scyIpdGhyb3cgRXJyb3IoImxhYCIrYyk7YT0iIjt2YXIgZD1iLmluZGV4T2YoIjoiKTtpZihkIT0tMSl7dmFyIGU9Yi5zdWJzdHJpbmcoZCsxKTtiPWIuc3Vic3RyaW5nKDAsZCk7aWYoYz09PSJodHRwIiYmZSE9PSI4MCJ8fGM9PT0iaHR0cHMiJiZlIT09IjQ0MyIpYT0iOiIrZX1yZXR1cm4gYysiOi8vIitiK2F9O3ZhciByaz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9U3RyaW5nKF8udi5sb2NhdGlvbi5ocmVmKTtyZXR1cm4gZCYmYSYmYj9bYixxayhwayhkKSxhLGN8fG51bGwpXS5qb2luKCIgIik6bnVsbH0scWs9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9W107aWYoKEFycmF5LmlzQXJyYXkoYyk/MjoxKT09MSlyZXR1cm4gZT1bYixhXSxfLnZjKGQsZnVuY3Rpb24oaCl7ZS5wdXNoKGgpfSksc2soZS5qb2luKCIgIikpO3ZhciBmPVtdLGc9W107Xy52YyhjLGZ1bmN0aW9uKGgpe2cucHVzaChoLmtleSk7Zi5wdXNoKGgudmFsdWUpfSk7Yz1NYXRoLmZsb29yKChuZXcgRGF0ZSkuZ2V0VGltZSgpLzFFMyk7ZT1mLmxlbmd0aD09MD9bYyxiLGFdOltmLmpvaW4oIjoiKSxjLGIsYV07Xy52YyhkLGZ1bmN0aW9uKGgpe2UucHVzaChoKX0pO2E9c2soZS5qb2luKCIgIikpO2E9W2MsYV07Zy5sZW5ndGg9PTB8fGEucHVzaChnLmpvaW4oIiIpKTtyZXR1cm4gYS5qb2luKCJfIil9LHNrPWZ1bmN0aW9uKGEpe3ZhciBiPQpOaigpO2IudXBkYXRlKGEpO3JldHVybiBiLmZoKCkudG9Mb3dlckNhc2UoKX07Xy5tPU9qLnByb3RvdHlwZTtfLm0uc2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0hMTtpZih0eXBlb2YgYz09PSJvYmplY3QiKXt2YXIgZT1jLnNhbWVTaXRlO2Q9Yy5zZWN1cmV8fCExO3ZhciBmPWMuZG9tYWlufHx2b2lkIDA7dmFyIGc9Yy5wYXRofHx2b2lkIDA7dmFyIGg9Yy5CaX1pZigvWzs9XHNdLy50ZXN0KGEpKXRocm93IEVycm9yKCJtYWAiK2EpO2lmKC9bO1xyXG5dLy50ZXN0KGIpKXRocm93IEVycm9yKCJuYWAiK2IpO2g9PT12b2lkIDAmJihoPS0xKTt0aGlzLmcuY29va2llPWErIj0iK2IrKGY/Ijtkb21haW49IitmOiIiKSsoZz8iO3BhdGg9IitnOiIiKSsoaDwwPyIiOmg9PTA/IjtleHBpcmVzPSIrKG5ldyBEYXRlKDE5NzAsMSwxKSkudG9VVENTdHJpbmcoKToiO2V4cGlyZXM9IisobmV3IERhdGUoRGF0ZS5ub3coKStoKjFFMykpLnRvVVRDU3RyaW5nKCkpKyhkPyI7c2VjdXJlIjoiIikrKGUhPW51bGw/IjtzYW1lc2l0ZT0iK2U6IiIpfTsKXy5tLmdldD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hKyI9IixkPSh0aGlzLmcuY29va2llfHwiIikuc3BsaXQoIjsiKSxlPTAsZjtlPGQubGVuZ3RoO2UrKyl7Zj1fLkFjKGRbZV0pO2lmKGYubGFzdEluZGV4T2YoYywwKT09MClyZXR1cm4gZi5zbGljZShjLmxlbmd0aCk7aWYoZj09YSlyZXR1cm4iIn1yZXR1cm4gYn07Xy5tLnJlbW92ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5nZXQoYSkhPT12b2lkIDA7dGhpcy5zZXQoYSwiIix7Qmk6MCxwYXRoOmIsZG9tYWluOmN9KTtyZXR1cm4gZH07Xy5tLk9jPWZ1bmN0aW9uKCl7cmV0dXJuIHRrKHRoaXMpLmtleXN9O18ubS5pYj1mdW5jdGlvbigpe3JldHVybiB0ayh0aGlzKS52YWx1ZXN9O18ubS5jbGVhcj1mdW5jdGlvbigpe2Zvcih2YXIgYT10ayh0aGlzKS5rZXlzLGI9YS5sZW5ndGgtMTtiPj0wO2ItLSl0aGlzLnJlbW92ZShhW2JdKX07CnZhciB0az1mdW5jdGlvbihhKXthPShhLmcuY29va2llfHwiIikuc3BsaXQoIjsiKTtmb3IodmFyIGI9W10sYz1bXSxkLGUsZj0wO2Y8YS5sZW5ndGg7ZisrKWU9Xy5BYyhhW2ZdKSxkPWUuaW5kZXhPZigiPSIpLGQ9PS0xPyhiLnB1c2goIiIpLGMucHVzaChlKSk6KGIucHVzaChlLnN1YnN0cmluZygwLGQpKSxjLnB1c2goZS5zdWJzdHJpbmcoZCsxKSkpO3JldHVybntrZXlzOmIsdmFsdWVzOmN9fTt2YXIgdWs9ZnVuY3Rpb24oYSxiLGMsZCl7KGE9Xy52W2FdKXx8dHlwZW9mIGRvY3VtZW50PT09InVuZGVmaW5lZCJ8fChhPShuZXcgT2opLmdldChiKSk7cmV0dXJuIGE/cmsoYSxjLGQpOm51bGx9LHZrPWZ1bmN0aW9uKGEpe3ZhciBiPXBrKF8udj09bnVsbD92b2lkIDA6Xy52LmxvY2F0aW9uLmhyZWYpLGM9W10sZDsoZD1fLnYuX19TQVBJU0lEfHxfLnYuX19BUElTSUR8fF8udi5fXzNQU0FQSVNJRHx8Xy52Ll9fMVBTQVBJU0lEfHxfLnYuX19PVkVSUklERV9TSUQpP2Q9ITA6KHR5cGVvZiBkb2N1bWVudCE9PSJ1bmRlZmluZWQiJiYoZD1uZXcgT2osZD1kLmdldCgiU0FQSVNJRCIpfHxkLmdldCgiQVBJU0lEIil8fGQuZ2V0KCJfX1NlY3VyZS0zUEFQSVNJRCIpfHxkLmdldCgiX19TZWN1cmUtMVBBUElTSUQiKSksZD0hIWQpO2QmJihkPShiPWIuaW5kZXhPZigiaHR0cHM6Iik9PTB8fGIuaW5kZXhPZigiY2hyb21lLWV4dGVuc2lvbjoiKT09MHx8Yi5pbmRleE9mKCJjaHJvbWUtdW50cnVzdGVkOi8vbmV3LXRhYi1wYWdlIik9PQowfHxiLmluZGV4T2YoIm1vei1leHRlbnNpb246Iik9PTApP18udi5fX1NBUElTSUQ6Xy52Ll9fQVBJU0lELGR8fHR5cGVvZiBkb2N1bWVudD09PSJ1bmRlZmluZWQifHwoZD1uZXcgT2osZD1kLmdldChiPyJTQVBJU0lEIjoiQVBJU0lEIil8fGQuZ2V0KCJfX1NlY3VyZS0zUEFQSVNJRCIpKSwoZD1kP3JrKGQsYj8iU0FQSVNJREhBU0giOiJBUElTSURIQVNIIixhKTpudWxsKSYmYy5wdXNoKGQpLGImJigoYj11aygiX18xUFNBUElTSUQiLCJfX1NlY3VyZS0xUEFQSVNJRCIsIlNBUElTSUQxUEhBU0giLGEpKSYmYy5wdXNoKGIpLChhPXVrKCJfXzNQU0FQSVNJRCIsIl9fU2VjdXJlLTNQQVBJU0lEIiwiU0FQSVNJRDNQSEFTSCIsYSkpJiZjLnB1c2goYSkpKTtyZXR1cm4gYy5sZW5ndGg9PTA/bnVsbDpjLmpvaW4oIiAiKX07dmFyIHdrPWZ1bmN0aW9uKCl7fSx4az1mdW5jdGlvbihhKXt2YXIgYixjLGQsZTtyZXR1cm4gXy5WaShmdW5jdGlvbihmKXtzd2l0Y2goZi5nKXtjYXNlIDE6cmV0dXJuIGI9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJnemlwIiksYz0obmV3IFJlc3BvbnNlKGIucmVhZGFibGUpKS5hcnJheUJ1ZmZlcigpLGQ9Yi53cml0YWJsZS5nZXRXcml0ZXIoKSxmLmgoZC53cml0ZSgobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUoYSkpLDIpO2Nhc2UgMjpyZXR1cm4gZi5oKGQuY2xvc2UoKSwzKTtjYXNlIDM6cmV0dXJuIGU9VWludDhBcnJheSxmLmgoYyw0KTtjYXNlIDQ6cmV0dXJuIGYucmV0dXJuKG5ldyBlKGYuaikpfX0pfTt3ay5wcm90b3R5cGUuVGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGE8MTAyND8hMTp0eXBlb2YgQ29tcHJlc3Npb25TdHJlYW0hPT0idW5kZWZpbmVkIn07dmFyIHlrPWZ1bmN0aW9uKGEsYil7dGhpcy5oPWE7dGhpcy5vPWI7dGhpcy5nPSExO3RoaXMuaj1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpfTt0aGlzLmw9dGhpcy5qKCl9LHprPWZ1bmN0aW9uKGEsYil7YS5oPWI7YS50aW1lciYmYS5nPyhhLnN0b3AoKSxhLnN0YXJ0KCkpOmEudGltZXImJmEuc3RvcCgpfTt5ay5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuZz0hMDt0aGlzLnRpbWVyfHwodGhpcy50aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS50aWNrKCl9LHRoaXMuaCksdGhpcy5sPXRoaXMuaigpKX07eWsucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLmc9ITE7dGhpcy50aW1lciYmKGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLnRpbWVyPXZvaWQgMCl9Owp5ay5wcm90b3R5cGUudGljaz1mdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYodGhpcy5nKXt2YXIgYj1NYXRoLm1heCh0aGlzLmooKS10aGlzLmwsMCk7Yjx0aGlzLmgqLjg/dGhpcy50aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS50aWNrKCl9LHRoaXMuaC1iKToodGhpcy50aW1lciYmKGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLnRpbWVyPXZvaWQgMCksdGhpcy5vKCksdGhpcy5nJiYodGhpcy5zdG9wKCksdGhpcy5zdGFydCgpKSl9ZWxzZSB0aGlzLnRpbWVyPXZvaWQgMH07dmFyIEFrPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihBayxfLkopO3ZhciBCaz1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoQmssXy5KKTt2YXIgQ2s9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKENrLF8uSik7Q2sucHJvdG90eXBlLlBkPWZ1bmN0aW9uKCl7cmV0dXJuIF8uZGoodGhpcywxKX07dmFyIFNqPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihTaixfLkopO3ZhciBEaz1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoRGssXy5KKTt2YXIgUmo9ZnVuY3Rpb24oYSl7Xy5mayhWaiwxLGEpfSxFaz1fLk1qKERrKTt2YXIgRms9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKEZrLF8uSik7dmFyIFBqPVsicGxhdGZvcm0iLCJwbGF0Zm9ybVZlcnNpb24iLCJhcmNoaXRlY3R1cmUiLCJtb2RlbCIsInVhRnVsbFZlcnNpb24iXSxWaj1uZXcgRGssUWo9bnVsbDt2YXIgR2s9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKEdrLF8uSik7dmFyIEhrPWZ1bmN0aW9uKGEpe3JldHVybiBfLmtrKGEsMSwxKX07dmFyIElrPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihJayxfLkopO0lrLnByb3RvdHlwZS5NYT1mdW5jdGlvbigpe3JldHVybiBfLk4odGhpcywyKX07SWsucHJvdG90eXBlLmNiPWZ1bmN0aW9uKGEpe18uVGoodGhpcywyLGEpfTt2YXIgSms9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhLDQpfTtfLkIoSmssXy5KKTtfLktrPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSwzNyl9O18uQihfLktrLF8uSik7Xy5Lay5wcm90b3R5cGUuY2I9ZnVuY3Rpb24oYSl7Xy5yaSh0aGlzKTt2YXIgYj10aGlzLkosYz1fLklpKHRoaXMsYixiW18uSF18MCxJaywzLDIsITApO2lmKHR5cGVvZiBhIT09Im51bWJlciJ8fGE8MHx8YT5jLmxlbmd0aCl0aHJvdyBFcnJvcigpO2EhPXZvaWQgMD9jLnNwbGljZShhLDEsdm9pZCAwKTpjLnB1c2godm9pZCAwKTt2YXIgZD1hPWM9PT1fLlRoPzc6Y1tfLkhdfDAsZT1fLldnKCk7ZT8oYSY9LTksYy5sZW5ndGg9PT0xJiYoYSY9LTQwOTcpKTphfD00MDk2O2EhPT1kJiZfLlNnKGMsYSk7ZXx8Xy5zaShiKX07Xy5Maz1mdW5jdGlvbihhLGIpe3JldHVybiBfLlRqKGEsOCxiKX07dmFyIE1rPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSwxOSl9O18uQihNayxfLkopO01rLnByb3RvdHlwZS52Yz1mdW5jdGlvbihhKXtyZXR1cm4gXy5rayh0aGlzLDIsYSl9O3ZhciBPaz1mdW5jdGlvbihhLGIpe3RoaXMuYWI9Yj1iPT09dm9pZCAwPyExOmI7dGhpcy5qPXRoaXMubG9jYWxlPW51bGw7dGhpcy5oPTA7dGhpcy5sPSExO3RoaXMuZz1uZXcgTWs7TnVtYmVyLmlzSW50ZWdlcihhKSYmdGhpcy5nLnZjKGEpO2J8fCh0aGlzLmxvY2FsZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJsYW5nIikpO05rKHRoaXMsbmV3IEdrKX07T2sucHJvdG90eXBlLnZjPWZ1bmN0aW9uKGEpe3RoaXMuZy52YyhhKTtyZXR1cm4gdGhpc307CnZhciBOaz1mdW5jdGlvbihhLGIpe18uTChhLmcsMSxiKTtfLmRqKGIsMSl8fEhrKGIpO2EuYWJ8fChiPVBrKGEpLF8uTihiLDUpfHxfLlRqKGIsNSxhLmxvY2FsZSkpO2EuaiYmKGI9UGsoYSksXy5iaihiLERrLDkpfHxfLkwoYiw5LGEuaikpfSxRaz1mdW5jdGlvbihhLGIpe2EuaD1ifSxSaz1mdW5jdGlvbihhKXt2YXIgYj1iPT09dm9pZCAwP1BqOmI7dmFyIGM9YS5hYj92b2lkIDA6Xy5tYigpO2M/WGooYyxiKS50aGVuKGZ1bmN0aW9uKGQpe2Euaj1FayhkIT1udWxsP2Q6IltdIik7ZD1QayhhKTtfLkwoZCw5LGEuaik7cmV0dXJuITB9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSk6UHJvbWlzZS5yZXNvbHZlKCExKX0sUGs9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5iaihhLmcsR2ssMSk7Ynx8KGI9bmV3IEdrLE5rKGEsYikpO2E9YjtiPV8uYmooYSxGaywxMSk7Ynx8KGI9bmV3IEZrLF8uTChhLDExLGIpKTtyZXR1cm4gYn0sU2s9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7Yz1jPT09CnZvaWQgMD8wOmM7ZD1kPT09dm9pZCAwPzA6ZDtlPWU9PT12b2lkIDA/bnVsbDplO2Y9Zj09PXZvaWQgMD8wOmY7Zz1nPT09dm9pZCAwPzA6ZztpZighYS5hYil7dmFyIGg9UGsoYSk7dmFyIGs9bmV3IENrO2s9Xy5rayhrLDEsYS5oKTtrPV8uVWooaywyLGEubCk7ZD1fLmlrKGssMyxkPjA/ZDp2b2lkIDApO2Q9Xy5payhkLDQsZj4wP2Y6dm9pZCAwKTtkPV8uaWsoZCw1LGc+MD9nOnZvaWQgMCk7Zj1kLko7Zz1mW18uSF18MDtkPV8uV2coZCxnKT9kOl8uSWgoZCxmLGcpP18uSGgoZCxmKTpuZXcgZC5jb25zdHJ1Y3RvcihfLkdoKGYsZywhMCkpO18uTChoLDEwLGQpfWE9bGooYS5nKTtoPURhdGUubm93KCkudG9TdHJpbmcoKTthPV8uJGkoYSw0LGg9PW51bGw/aDpfLkpqKGgpKTtiPV8uZmsoYSwzLGIuc2xpY2UoKSk7ZSYmKGE9bmV3IEFrLGU9Xy5payhhLDEzLGUpLGE9bmV3IEJrLGU9Xy5MKGEsMixlKSxhPW5ldyBKayxlPV8uTChhLDEsZSksZT1fLmtrKGUsMiw5KSxfLkwoYiwxOCwKZSkpO2MmJl8uamsoYiwxNCxjKTtyZXR1cm4gYn07WWoucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5nPXRoaXMuaD10aGlzLmp9O1lqLnByb3RvdHlwZS5NYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmh9O3ZhciBsaz1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEsOCl9O18uQihsayxfLkopO3ZhciBUaz1fLk1qKGxrKTt2YXIgbWs9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKG1rLF8uSik7dmFyIFVrO1VrPW5ldyBuazt2YXIgWWs9ZnVuY3Rpb24oYSl7Xy51LmNhbGwodGhpcyk7dmFyIGI9dGhpczt0aGlzLmc9W107dGhpcy5sYT0iIjt0aGlzLks9dGhpcy5MPSExO3RoaXMucmE9dGhpcy5JPS0xO3RoaXMuUj0hMTt0aGlzLkQ9dGhpcy5leHBlcmltZW50SWRzPW51bGw7dGhpcy5BPXRoaXMubD0wO3RoaXMuQz1udWxsO3RoaXMuRj10aGlzLkc9MDt0aGlzLndhPTE7dGhpcy53Yz0wO3RoaXMuT2I9YS5PYjt0aGlzLnRiPWEudGJ8fGZ1bmN0aW9uKCl7fTt0aGlzLmo9bmV3IE9rKGEuT2IsYS5hYik7dGhpcy56YT1hLnphfHxudWxsO3RoaXMuQ2I9YS5DYnx8bnVsbDt0aGlzLkI9YS5hanx8bnVsbDt0aGlzLm1iPWEubWJ8fG51bGw7dGhpcy5jYz1hLmNjfHwhMTt0aGlzLndpdGhDcmVkZW50aWFscz0hYS5NYzt0aGlzLmFiPWEuYWJ8fCExO3RoaXMuVD0hdGhpcy5hYiYmISFfLm1iKCkmJiEhXy5tYigpLm5hdmlnYXRvciYmXy5tYigpLm5hdmlnYXRvci5zZW5kQmVhY29uIT09dm9pZCAwO3RoaXMuUD10eXBlb2YgVVJMU2VhcmNoUGFyYW1zIT09CiJ1bmRlZmluZWQiJiYhIShuZXcgVVJMKFZrKCkpKS5zZWFyY2hQYXJhbXMmJiEhKG5ldyBVUkwoVmsoKSkpLnNlYXJjaFBhcmFtcy5zZXQ7dmFyIGM9SGsobmV3IEdrKTtOayh0aGlzLmosYyk7dGhpcy5vPW5ldyBZaigxRTQpO2E9V2sodGhpcyxhLk9lKTt0aGlzLmg9bmV3IHlrKHRoaXMuby5NYSgpLGEpO3RoaXMuTz1uZXcgeWsoNkU1LGEpO3RoaXMuY2N8fHRoaXMuTy5zdGFydCgpO2lmKCF0aGlzLmFiKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixmdW5jdGlvbigpe2lmKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJoaWRkZW4iKXtYayhiKTt2YXIgZjsoZj1iLkMpPT1udWxsfHxmLmZsdXNoKCl9fSk7dmFyIGQsZTsoZD1fLm1iKCkpPT1udWxsfHwoZT1kLmFkZEV2ZW50TGlzdGVuZXIpPT1udWxsfHxlLmNhbGwoZCwicGFnZWhpZGUiLGZ1bmN0aW9uKCl7WGsoYik7dmFyIGY7KGY9Yi5DKT09bnVsbHx8Zi5mbHVzaCgpfSl9fSxaayxibCwKJGs7Xy5CKFlrLF8udSk7dmFyIFdrPWZ1bmN0aW9uKGEsYil7aWYoIWEuUClyZXR1cm4gZnVuY3Rpb24oKXt9O3ZhciBjPWZ1bmN0aW9uKCl7YS5mbHVzaCgpfTtyZXR1cm4gYj9mdW5jdGlvbigpe2IoKS50aGVuKGMpfTpjfTtZay5wcm90b3R5cGUuTT1mdW5jdGlvbigpe1hrKHRoaXMpO3RoaXMuaC5zdG9wKCk7dGhpcy5PLnN0b3AoKTtfLnUucHJvdG90eXBlLk0uY2FsbCh0aGlzKX07Wms9ZnVuY3Rpb24oYSl7YS5CfHwoYS5CPVZrKCkpO3RyeXtyZXR1cm4obmV3IFVSTChhLkIpKS50b1N0cmluZygpfWNhdGNoKGIpe3JldHVybihuZXcgVVJMKGEuQixfLm1iKCkubG9jYXRpb24ub3JpZ2luKSkudG9TdHJpbmcoKX19O18uYWw9ZnVuY3Rpb24oYSxiKXtpZihiIGluc3RhbmNlb2YgXy5LaylhLmxvZyhiKTtlbHNlIHRyeXt2YXIgYz1fLkxrKG5ldyBfLktrLF8uV2ooYikpO2EubG9nKGMpfWNhdGNoKGQpeyRrKGEsNCwxKX19OwpibD1mdW5jdGlvbihhLGIpe2Eubz1uZXcgWWooYjwxPzE6Yik7emsoYS5oLGEuby5NYSgpKX07JGs9ZnVuY3Rpb24oYSxiLGMpe2EuQyYmYS5DLlNsKGIsYyl9OwpZay5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKGEpeyRrKHRoaXMsMiwxKTtpZih0aGlzLlApe2E9bGooYSk7dmFyIGI9dGhpcy53YSsrO2I9YT1fLmprKGEsMjEsYik7dmFyIGM9Xy5aaShiLDEpO3ZhciBkPWQ9PT12b2lkIDA/ITE6ZDt2YXIgZT10eXBlb2YgYztkPWM9PW51bGw/YzplPT09ImJpZ2ludCI/U3RyaW5nKCgwLF8uYmkpKDY0LGMpKTpBaihjKT9lPT09InN0cmluZyI/RmooYyk6ZD9IaihjKTpHaihjKTp2b2lkIDA7ZD09bnVsbCYmKGQ9RGF0ZS5ub3coKSxkPU51bWJlci5pc0Zpbml0ZShkKT9kLnRvU3RyaW5nKCk6IjAiLF8uJGkoYiwxLGQ9PW51bGw/ZDpfLkpqKGQpKSk7ZD1fLlppKGIsMTUsdm9pZCAwLHZvaWQgMCxLaik7ZCE9bnVsbCYmKHR5cGVvZiBkPT09ImJpZ2ludCI/KDAsXy52aCkoZCk/ZD1OdW1iZXIoZCk6KGQ9KDAsXy5iaSkoNjQsZCksZD0oMCxfLnZoKShkKT9OdW1iZXIoZCk6U3RyaW5nKGQpKTpkPUFqKGQpP3R5cGVvZiBkPT09Im51bWJlciI/R2ooZCk6CkZqKGQpOnZvaWQgMCk7ZCE9bnVsbHx8Xy5qayhiLDE1LChuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKSo2MCk7dGhpcy5leHBlcmltZW50SWRzJiYoZD1saih0aGlzLmV4cGVyaW1lbnRJZHMpLF8uTChiLDE2LGQpKTskayh0aGlzLDEsMSk7Yj10aGlzLmcubGVuZ3RoLTFFMysxO2I+MCYmKHRoaXMuZy5zcGxpY2UoMCxiKSx0aGlzLmwrPWIsJGsodGhpcywzLGIpKTt0aGlzLmcucHVzaChhKTt0aGlzLmNjfHx0aGlzLmguZ3x8dGhpcy5oLnN0YXJ0KCl9fTsKWWsucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcztpZih0aGlzLmcubGVuZ3RoPT09MClhJiZhKCk7ZWxzZXt2YXIgZD1EYXRlLm5vdygpO2lmKHRoaXMucmE+ZCYmdGhpcy5JPGQpYiYmYigidGhyb3R0bGVkIik7ZWxzZXt0aGlzLnphJiYodHlwZW9mIHRoaXMuemEuUGQ9PT0iZnVuY3Rpb24iP1FrKHRoaXMuaix0aGlzLnphLlBkKCkpOnRoaXMuai5oPTApO3ZhciBlPXRoaXMuZy5sZW5ndGgsZj1Tayh0aGlzLmosdGhpcy5nLHRoaXMubCx0aGlzLkEsdGhpcy5DYix0aGlzLkcsdGhpcy5GKSxnPXRoaXMudGIoKTtpZihnJiZ0aGlzLmxhPT09ZyliJiZiKCJzdGFsZS1hdXRoLXRva2VuIik7ZWxzZXt0aGlzLmc9W107dGhpcy5oLmcmJnRoaXMuaC5zdG9wKCk7dGhpcy5sPTA7ZD1fLldqKGYpO3ZhciBoO3RoaXMuRCYmdGhpcy5ELlRhKGQubGVuZ3RoKSYmKGg9eGsoZCkpO3ZhciBrPWNsKHRoaXMsZCxnKSxsPWZ1bmN0aW9uKHApe2Muby5yZXNldCgpO3prKGMuaCwKYy5vLk1hKCkpO2lmKHApe3ZhciByPW51bGw7dHJ5e3ZhciB0PUpTT04uc3RyaW5naWZ5KEpTT04ucGFyc2UocC5yZXBsYWNlKCIpXX0nXG4iLCIiKSkpO3I9VGsodCl9Y2F0Y2goRSl7fWlmKHIpe3A9TnVtYmVyKF8uaGsociwxLF8uYmgoIi0xIikpKTtwPjAmJihjLkk9RGF0ZS5ub3coKSxjLnJhPWMuSStwKTtwPVVrLmc7dD1fLnBoKF8ucWgpO3ZhciBBO18uT2cmJnQmJigoQT1yLkpbdF0pPT1udWxsP3ZvaWQgMDpBW3BdKSE9bnVsbCYmXy5NZyhfLlJoLDMpO2E6e0E9VWsuZzt2YXIgRD1EPT09dm9pZCAwPyExOkQ7aWYoXy5waChfLlNoKSYmXy5waChfLnFoKSYmdm9pZCAwPT09Xy5TaCl7cD1yLko7dD1wW18ucWhdO2lmKCF0KWJyZWFrIGE7aWYodD10LmJtKXRyeXt0KHAsQSxiayk7YnJlYWsgYX1jYXRjaChFKXtfLnJiKEUpfX1EJiYoRD1yLkosKHA9Xy5waChfLnFoKSkmJnAgaW4gRCYmKEQ9RFtwXSkmJmRlbGV0ZSBEW0FdKX1EPVVrLkxiP1VrLmgocixVay5MYixVay5nLFVrLmopOgpVay5oKHIsVWsuZyxudWxsLFVrLmopO2lmKEQ9RD09PW51bGw/dm9pZCAwOkQpRD1fLmdrKEQsMSwtMSksRCE9PS0xJiYoYy5SfHxibChjLEQpKX19YSYmYSgpO2MuQT0wfSxuPWZ1bmN0aW9uKHAscil7dmFyIHQ9Xy5jaihmLF8uS2ssMyk7dmFyIEE9TnVtYmVyKF8uaGsoZiwxNCkpLEQ9Yy5vO0QuZz1NYXRoLm1pbigzRTUsRC5nKjIpO0QuaD1NYXRoLm1pbigzRTUsRC5nK01hdGgucm91bmQoLjEqKE1hdGgucmFuZG9tKCktLjUpKjIqRC5nKSk7emsoYy5oLGMuby5NYSgpKTtwPT09NDAxJiZnJiYoYy5sYT1nKTtBJiYoYy5sKz1BKTtyPT09dm9pZCAwJiYocj01MDA8PXAmJnA8NjAwfHxwPT09NDAxfHxwPT09MCk7ciYmKGMuZz10LmNvbmNhdChjLmcpLGMuY2N8fGMuaC5nfHxjLmguc3RhcnQoKSk7JGsoYyw3LDEpO2ImJmIoIm5ldC1zZW5kLWZhaWxlZCIscCk7KytjLkF9LHE9ZnVuY3Rpb24oKXtjLnphJiZjLnphLnNlbmQoayxsLG4pfTtoP2gudGhlbihmdW5jdGlvbihwKXskayhjLAo1LGUpO2submVbIkNvbnRlbnQtRW5jb2RpbmciXT0iZ3ppcCI7ay5uZVsiQ29udGVudC1UeXBlIl09ImFwcGxpY2F0aW9uL2JpbmFyeSI7ay5ib2R5PXA7ay5aZz0yO3EoKX0sZnVuY3Rpb24oKXskayhjLDYsZSk7cSgpfSk6cSgpfX19fTsKdmFyIGNsPWZ1bmN0aW9uKGEsYixjKXtjPWM9PT12b2lkIDA/bnVsbDpjO3ZhciBkPWQ9PT12b2lkIDA/YS53aXRoQ3JlZGVudGlhbHM6ZDt2YXIgZT17fSxmPW5ldyBVUkwoWmsoYSkpO2MmJihlLkF1dGhvcml6YXRpb249Yyk7YS5tYiYmKGVbIlgtR29vZy1BdXRoVXNlciJdPWEubWIsZi5zZWFyY2hQYXJhbXMuc2V0KCJhdXRodXNlciIsYS5tYikpO3JldHVybnt1cmw6Zi50b1N0cmluZygpLGJvZHk6YixaZzoxLG5lOmUsTGk6IlBPU1QiLHdpdGhDcmVkZW50aWFsczpkLHdjOmEud2N9fSxYaz1mdW5jdGlvbihhKXthLmoubD0hMDthLkwmJihhLmouaD0zLGRsKGEpKTthLksmJihhLmouaD0yLGVsKGEpKTthLmZsdXNoKCk7YS5qLmw9ITF9LGRsPWZ1bmN0aW9uKGEpe2ZsKGEsMzIsMTAsZnVuY3Rpb24oYixjKXtiPW5ldyBVUkwoYik7Yi5zZWFyY2hQYXJhbXMuc2V0KCJmb3JtYXQiLCJqc29uIik7dmFyIGQ9ITE7dHJ5e2Q9Xy5tYigpLm5hdmlnYXRvci5zZW5kQmVhY29uKGIudG9TdHJpbmcoKSwKXy5XaihjKSl9Y2F0Y2goZSl7fWR8fChhLlQ9ITEpO3JldHVybiBkfSl9LGVsPWZ1bmN0aW9uKGEpe2ZsKGEsNiw1LGZ1bmN0aW9uKGIsYyl7Yj1uZXcgVVJMKGIpO2Iuc2VhcmNoUGFyYW1zLnNldCgiZm9ybWF0IiwiYmFzZTY0anNvbiIpO3ZhciBkPWIuc2VhcmNoUGFyYW1zLGU9ZC5zZXQ7Yz1fLldqKGMpO2Zvcih2YXIgZj1bXSxnPTAsaD0wO2g8Yy5sZW5ndGg7aCsrKXt2YXIgaz1jLmNoYXJDb2RlQXQoaCk7az4yNTUmJihmW2crK109ayYyNTUsaz4+PTgpO2ZbZysrXT1rfWM9b2ooZiwzKTtlLmNhbGwoZCwicCIsYyk7Yj1iLnRvU3RyaW5nKCk7aWYoYi5sZW5ndGg+MTUzNjApcmV0dXJuITE7KG5ldyBJbWFnZSkuc3JjPWI7cmV0dXJuITB9KX0sZmw9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5nLmxlbmd0aCE9PTApe3ZhciBlPW5ldyBVUkwoWmsoYSkpO2Uuc2VhcmNoUGFyYW1zLmRlbGV0ZSgiZm9ybWF0Iik7dmFyIGY9YS50YigpO2YmJmUuc2VhcmNoUGFyYW1zLnNldCgiYXV0aCIsCmYpO2Uuc2VhcmNoUGFyYW1zLnNldCgiYXV0aHVzZXIiLGEubWJ8fCIwIik7Zm9yKGY9MDtmPGMmJmEuZy5sZW5ndGg7KytmKXt2YXIgZz1hLmcuc2xpY2UoMCxiKSxoPVNrKGEuaixnLGEubCxhLkEsYS5DYixhLkcsYS5GKTtpZighZChlLnRvU3RyaW5nKCksaCkpeysrYS5BO2JyZWFrfWEubD0wO2EuQT0wO2EuRz0wO2EuRj0wO2EuZz1hLmcuc2xpY2UoZy5sZW5ndGgpfWEuaC5nJiZhLmguc3RvcCgpfX0sVms9ZnVuY3Rpb24oKXtyZXR1cm4iaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vbG9nP2Zvcm1hdD1qc29uJmhhc2Zhc3Q9dHJ1ZSJ9O3ZhciBnbD1mdW5jdGlvbigpe3RoaXMuVmc9dHlwZW9mIEFib3J0Q29udHJvbGxlciE9PSJ1bmRlZmluZWQifTsKZ2wucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMsZSxmLGcsaCxrLGwsbixxLHAscjtyZXR1cm4gXy5WaShmdW5jdGlvbih0KXtzd2l0Y2godC5nKXtjYXNlIDE6cmV0dXJuIGY9KGU9ZC5WZz9uZXcgQWJvcnRDb250cm9sbGVyOnZvaWQgMCkmJmEud2M+MD9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5hYm9ydCgpfSxhLndjKTp2b2lkIDAsdC5GKDIsMyksZz1PYmplY3QuYXNzaWduKHt9LHttZXRob2Q6YS5MaSxoZWFkZXJzOk9iamVjdC5hc3NpZ24oe30sYS5uZSl9LGEuYm9keSYme2JvZHk6YS5ib2R5fSxhLndpdGhDcmVkZW50aWFscyYme2NyZWRlbnRpYWxzOiJpbmNsdWRlIn0se3NpZ25hbDphLndjJiZlP2Uuc2lnbmFsOm51bGx9KSx0LmgoZmV0Y2goYS51cmwsZyksNSk7Y2FzZSA1Omg9dC5qO2lmKGguc3RhdHVzIT09MjAwKXsoaz1jKT09bnVsbHx8ayhoLnN0YXR1cyk7dC54YSgzKTticmVha31pZigobD1iKT09bnVsbCl7dC54YSg3KTticmVha31yZXR1cm4gdC5oKGgudGV4dCgpLAo4KTtjYXNlIDg6bCh0LmopO2Nhc2UgNzpjYXNlIDM6dC5MKCk7Y2xlYXJUaW1lb3V0KGYpO3QucWEoMCk7YnJlYWs7Y2FzZSAyOm49dC5EKCk7c3dpdGNoKChxPW4pPT1udWxsP3ZvaWQgMDpxLm5hbWUpe2Nhc2UgIkFib3J0RXJyb3IiOihwPWMpPT1udWxsfHxwKDQwOCk7YnJlYWs7ZGVmYXVsdDoocj1jKT09bnVsbHx8cig0MDApfXQueGEoMyl9fSl9O2dsLnByb3RvdHlwZS5QZD1mdW5jdGlvbigpe3JldHVybiA0fTtfLmhsPWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwPyIwIjpiO18udS5jYWxsKHRoaXMpO3RoaXMuT2I9YTt0aGlzLm1iPWI7dGhpcy5BPSJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9sb2c/Zm9ybWF0PWpzb24maGFzZmFzdD10cnVlIjt0aGlzLmc9dGhpcy5DYj10aGlzLnphPXRoaXMuaD1udWxsO3RoaXMubD10aGlzLm89ITE7dGhpcy5qPW51bGx9O18uQihfLmhsLF8udSk7Xy5pbD1mdW5jdGlvbihhLGIpe2EudGI9YjtyZXR1cm4gYX07Xy5qbD1mdW5jdGlvbihhKXthLm89ITA7cmV0dXJuIGF9O18uaGwucHJvdG90eXBlLk1jPWZ1bmN0aW9uKCl7dGhpcy5CPSEwO3JldHVybiB0aGlzfTsKXy5rbD1mdW5jdGlvbihhKXthLnphfHwoYS56YT1uZXcgZ2wpO3ZhciBiPW5ldyBZayh7T2I6YS5PYix0YjphLnRiP2EudGI6dmssbWI6YS5tYixhajphLkEsYWI6ITEsY2M6ITEsTWM6YS5CLE9lOmEuT2UsemE6YS56YX0pO18uYWsoYSxfLlpqKF8ucGEsYikpO2lmKGEuaCl7dmFyIGM9YS5oLGQ9UGsoYi5qKTtfLlRqKGQsNyxjKX1iLkQ9bmV3IHdrO2EuQ2ImJihiLkNiPWEuQ2IpO2EuZyYmKChkPWEuZyk/KGIuZXhwZXJpbWVudElkc3x8KGIuZXhwZXJpbWVudElkcz1uZXcgb2spLGM9Yi5leHBlcmltZW50SWRzLGQ9Xy5XaihkKSxfLlRqKGMsNCxkKSk6Yi5leHBlcmltZW50SWRzJiZfLiRpKGIuZXhwZXJpbWVudElkcyw0KSk7YS5vJiYoYi5MPWEubyYmYi5UKTthLmwmJihiLks9YS5sKTthLmomJihjPWEuaixiLlI9ITAsYmwoYixjKSk7UmsoYi5qKTthLnphLnZjJiZhLnphLnZjKGEuT2IpO2EuemEuUWkmJmEuemEuUWkoYik7cmV0dXJuIGJ9O18ubGw9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKF8ubGwsXy5KKTtfLm09Xy5sbC5wcm90b3R5cGU7Xy5tLkphPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTih0aGlzLDE2KX07Xy5tLk5hPWZ1bmN0aW9uKGEpe3JldHVybiBfLlRqKHRoaXMsMTYsYSl9O18ubS5vYT1mdW5jdGlvbigpe3JldHVybiBfLk4odGhpcywxKX07Xy5tLm5hPWZ1bmN0aW9uKGEpe3JldHVybiBfLlRqKHRoaXMsMSxhKX07Xy5tLk9kPWZ1bmN0aW9uKCl7cmV0dXJuIF8uZGoodGhpcyw1Myl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm1sPWZ1bmN0aW9uKGEpe3ZhciBiPV8uS2EoKTthPWI/Yi5jcmVhdGVIVE1MKGEpOmE7cmV0dXJuIG5ldyBfLkRjKGEpfTtfLm5sPWZ1bmN0aW9uKGEsYil7Yj1fLkVnKGIpO2IhPT12b2lkIDAmJihhLmhyZWY9Yil9O18ub2w9e307Xy5wbD1mdW5jdGlvbihhKXt0aGlzLmc9YX07Xy5wbC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nfTtfLnFsPXt9O18uemY9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiSyIpO307Xy56Zi5wcm90b3R5cGUuSmQ9bnVsbDtfLnpmLnByb3RvdHlwZS5tYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRlbnR9O18uemYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGVudH07Xy56Zi5wcm90b3R5cGUuVGI9ZnVuY3Rpb24oKXtpZih0aGlzLlpiIT09Xy5xbCl0aHJvdyBFcnJvcigiTCIpO3JldHVybiBfLm1sKHRoaXMudG9TdHJpbmcoKSl9O3ZhciBybD1mdW5jdGlvbigpe18uemYuY2FsbCh0aGlzKX07Cl8uRyhybCxfLnpmKTtybC5wcm90b3R5cGUuWmI9Xy5xbDt2YXIgc2w9ZnVuY3Rpb24oKXtfLnpmLmNhbGwodGhpcyl9O18uRyhzbCxfLnpmKTtzbC5wcm90b3R5cGUuWmI9Xy5vbDtzbC5wcm90b3R5cGUuSmQ9MTtzbC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBuZXcgXy5wbCh0aGlzLnRvU3RyaW5nKCkpfTtfLnRsPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYyl7dGhpcy5jb250ZW50PWN9Yi5wcm90b3R5cGU9YS5wcm90b3R5cGU7cmV0dXJuIGZ1bmN0aW9uKGMsZCl7Yz1uZXcgYihTdHJpbmcoYykpO2QhPT12b2lkIDAmJihjLkpkPWQpO3JldHVybiBjfX0ocmwpO18udWw9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihjKXt0aGlzLmNvbnRlbnQ9Y31iLnByb3RvdHlwZT1hLnByb3RvdHlwZTtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIG5ldyBiKFN0cmluZyhjKSl9fShzbCk7Xy52bD1SZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJzdGlja3kiKTtfLndsPW5ldyBSZWdFeHAoKF8udmw/IiI6Il4iKSsiKD86IXwvPyhbYS16QS1aXVthLXpBLVowLTk6LV0qKSkiLF8udmw/Imd5IjoiZyIpO18ueGw9ZnVuY3Rpb24oKXtfLnpmLmNhbGwodGhpcyl9O18uQihfLnhsLHJsKTsKXy54bC5wcm90b3R5cGUubWE9ZnVuY3Rpb24oKXtpZih0aGlzLmNvbnRlbnQhPT12b2lkIDApcmV0dXJuIHRoaXMuY29udGVudDtmb3IodmFyIGE9IiIsYj1fLkModGhpcy5VKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSlhKz1jLnZhbHVlO3JldHVybiBhfTtfLnhsLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hKCl9O18ueWw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dGhpcy5jb250ZW50PSIifWEucHJvdG90eXBlPV8ueGwucHJvdG90eXBlO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgYX19KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubGEoImVsX21haW5fY3NzIik7CgpfLm1hKCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubGEoImVsX21haW4iKTsKLyoKIENvcHlyaWdodCBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAoqLwp2YXIgemw9ZnVuY3Rpb24oYSxiKXt0aGlzLng9YSE9PXZvaWQgMD9hOjA7dGhpcy55PWIhPT12b2lkIDA/YjowfSxBbD1mdW5jdGlvbihhLGIpe3ZhciBjPXt9LGQ7Zm9yKGQgaW4gYSljW2RdPWIuY2FsbCh2b2lkIDAsYVtkXSxkLGEpO3JldHVybiBjfSxCbD1mdW5jdGlvbihhLGIpe3ZhciBjPWIuY3JlYXRlUmFuZ2UoKTtjLnNlbGVjdE5vZGUoYi5ib2R5KTthPV8ubWwoYSk7cmV0dXJuIGMuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KF8ua2ooYSkpfSxDbD1mdW5jdGlvbihhKXthPWEubm9kZU5hbWU7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyI/YToiRk9STSJ9LERsPWZ1bmN0aW9uKGEpe2E9YS5ub2RlVHlwZTtyZXR1cm4gYT09PTF8fHR5cGVvZiBhIT09Im51bWJlciJ9LEVsPWZ1bmN0aW9uKGEsYixjKXthLnNldEF0dHJpYnV0ZShiLGMpfSxGbD1mdW5jdGlvbihhKXtyZXR1cm4gXy5NYShhKX0sR2w9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5yaShhKTt2YXIgZT1hLkosZj1lW18uSF18CjA7aWYoYz09bnVsbClyZXR1cm4gXy50aShlLGYsYiksYTt2YXIgZz1jPT09Xy5UaD83OmNbXy5IXXwwLGg9ZyxrPV8uRWkoZyksbD1rfHxPYmplY3QuaXNGcm96ZW4oYyk7a3x8KGc9MCk7bHx8KGM9Xy5taShjKSxoPTAsZz1fLkRpKGcsZiksbD0hMSk7Z3w9NTtrPTQmZz81MTImZz81MTI6MTAyNCZnPzEwMjQ6MDp2b2lkIDA7az1rIT1udWxsP2s6MTAyNDtnfD1rO2Zvcih2YXIgbj0wO248Yy5sZW5ndGg7bisrKXt2YXIgcT1jW25dLHA9ZChxLGspO09iamVjdC5pcyhxLHApfHwobCYmKGM9Xy5taShjKSxoPTAsZz1fLkRpKGcsZiksbD0hMSksY1tuXT1wKX1nIT09aCYmKGwmJihjPV8ubWkoYyksZz1fLkRpKGcsZikpLF8uU2coYyxnKSk7Xy50aShlLGYsYixjKTtyZXR1cm4gYX0sSGw9ZnVuY3Rpb24oYSl7aWYoXy5PZyl7dmFyIGI7cmV0dXJuKGI9YVtfLmRrXSkhPW51bGw/YjphW18uZGtdPW5ldyBNYXB9aWYoXy5kayBpbiBhKXJldHVybiBhW18uZGtdO2I9bmV3IE1hcDtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwKXy5kayx7dmFsdWU6Yn0pO3JldHVybiBifSxJbD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLmdldChkKTtpZihlIT1udWxsKXJldHVybiBlO2Zvcih2YXIgZj1lPTA7ZjxkLmxlbmd0aDtmKyspe3ZhciBnPWRbZl07Xy51aShiLGcpIT1udWxsJiYoZSE9PTAmJihjPV8udGkoYixjLGUpKSxlPWcpfWEuc2V0KGQsZSk7cmV0dXJuIGV9LEpsPWZ1bmN0aW9uKGEpe3ZhciBiPXt9LGM7Zm9yKGMgaW4gYSliW2NdPWFbY107cmV0dXJuIGJ9LEtsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8Yj8tMTphPmI/MTowfSxMbD1mdW5jdGlvbihhLGIpe3ZhciBjPTA7YT0oMCxfLkFjKShTdHJpbmcoYSkpLnNwbGl0KCIuIik7Yj0oMCxfLkFjKShTdHJpbmcoYikpLnNwbGl0KCIuIik7Zm9yKHZhciBkPU1hdGgubWF4KGEubGVuZ3RoLGIubGVuZ3RoKSxlPTA7Yz09MCYmZTxkO2UrKyl7dmFyIGY9YVtlXXx8IiIsZz1iW2VdfHwiIjtkb3tmPS8oXGQqKShcRCopKC4qKS8uZXhlYyhmKXx8WyIiLCIiLCIiLAoiIl07Zz0vKFxkKikoXEQqKSguKikvLmV4ZWMoZyl8fFsiIiwiIiwiIiwiIl07aWYoZlswXS5sZW5ndGg9PTAmJmdbMF0ubGVuZ3RoPT0wKWJyZWFrO2M9S2woZlsxXS5sZW5ndGg9PTA/MDpwYXJzZUludChmWzFdLDEwKSxnWzFdLmxlbmd0aD09MD8wOnBhcnNlSW50KGdbMV0sMTApKXx8S2woZlsyXS5sZW5ndGg9PTAsZ1syXS5sZW5ndGg9PTApfHxLbChmWzJdLGdbMl0pO2Y9ZlszXTtnPWdbM119d2hpbGUoYz09MCl9cmV0dXJuIGN9LE1sPWZ1bmN0aW9uKGEpe2lmKC9eKHNjcmlwdHxzdHlsZSkkL2kudGVzdChhLnRhZ05hbWUpKXRocm93IEVycm9yKCJ0Iik7fSxObD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5wbClyZXR1cm4gYS5nO3Rocm93IEVycm9yKCJ0Iik7fSxPbD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csCiImYXBvczsiKX0sUGw9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBfLkRjP2E6Xy5tbChPbChTdHJpbmcoYSkpKX0sUWw9ZnVuY3Rpb24oYSl7dmFyIGI9e25vbmNlOl8uT2EoInNjcmlwdCIsZG9jdW1lbnQpfTthPV8uUmEoYSkudG9TdHJpbmcoKTt2YXIgYz0iPHNjcmlwdCI7aWYoYj09bnVsbD8wOmIuaWQpYys9JyBpZD0iJytPbChiLmlkKSsnIic7aWYoYj09bnVsbD8wOmIubm9uY2UpYys9JyBub25jZT0iJytPbChiLm5vbmNlKSsnIic7aWYoYj09bnVsbD8wOmIudHlwZSljKz0nIHR5cGU9IicrT2woYi50eXBlKSsnIic7aWYoYj09bnVsbD8wOmIuZGVmZXIpYys9IiBkZWZlciI7cmV0dXJuIF8ubWwoYysoIj4iK2ErIlx4M2Mvc2NyaXB0PiIpKX0sUmw9ZnVuY3Rpb24oYSl7dmFyIGI9UGwoIiIpO3JldHVybiBfLm1sKGEubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBfLmtqKFBsKGMpKX0pLmpvaW4oXy5raihiKS50b1N0cmluZygpKSl9LFNsPWZ1bmN0aW9uKGEpe3JldHVybiBSbChhKX0sClZsPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iIixjPU9iamVjdC5rZXlzKGEpLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXSxmPWFbZV07aWYoIVRsLnRlc3QoZSkpdGhyb3cgRXJyb3IoInQiKTtpZihmIT09dm9pZCAwJiZmIT09bnVsbCl7aWYoL15vbi4vaS50ZXN0KGUpKXRocm93IEVycm9yKCJ0Iik7VWwuaW5kZXhPZihlLnRvTG93ZXJDYXNlKCkpIT09LTEmJihmPV8uRWcoU3RyaW5nKGYpKXx8ImFib3V0OmludmFsaWQjekNsb3N1cmV6Iik7Zj1lKyc9IicrUGwoU3RyaW5nKGYpKSsnIic7Yis9IiAiK2Z9fXJldHVybiBifSxZbD1mdW5jdGlvbihhKXt2YXIgYj17fTtpZighVGwudGVzdCgiYm9keSIpKXRocm93IEVycm9yKCJ0Iik7aWYoV2wuaW5kZXhPZigiQk9EWSIpIT09LTEpdGhyb3cgRXJyb3IoInQiKTt2YXIgYz0iPGJvZHkiO2ImJihjKz1WbChiKSk7QXJyYXkuaXNBcnJheShhKXx8KGE9YT09PXZvaWQgMD9bXTpbYV0pO1hsLmluZGV4T2YoIkJPRFkiKSE9PS0xPwpjKz0iPiI6KGE9U2woYS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQgaW5zdGFuY2VvZiBfLkRjP2Q6UGwoU3RyaW5nKGQpKX0pKSxjKz0iPiIrYS50b1N0cmluZygpKyI8L2JvZHk+Iik7cmV0dXJuIF8ubWwoYyl9LFpsPWZ1bmN0aW9uKGEpe3RoaXMuaD10aGlzLkI9dGhpcy5sPSIiO3RoaXMuQz1udWxsO3RoaXMuQT10aGlzLmo9IiI7dGhpcy5vPSExO3ZhciBiO2EgaW5zdGFuY2VvZiBabD8odGhpcy5vPWEubywkbCh0aGlzLGEubCksdGhpcy5CPWEuQixhbSh0aGlzLGEuaCksYm0odGhpcyxhLkMpLGNtKHRoaXMsYS5qKSxkbSh0aGlzLGVtKGEuZykpLHRoaXMuQT1hLkEpOmEmJihiPVN0cmluZyhhKS5tYXRjaChfLnJmKSk/KHRoaXMubz0hMSwkbCh0aGlzLGJbMV18fCIiLCEwKSx0aGlzLkI9Zm0oYlsyXXx8IiIpLGFtKHRoaXMsYlszXXx8IiIsITApLGJtKHRoaXMsYls0XSksY20odGhpcyxiWzVdfHwiIiwhMCksZG0odGhpcyxiWzZdfHwiIiwhMCksdGhpcy5BPWZtKGJbN118fCIiKSk6Cih0aGlzLm89ITEsdGhpcy5nPW5ldyBnbShudWxsLHRoaXMubykpfSxobT1mdW5jdGlvbihhKXtyZXR1cm4gXy55YShhKT9hLlRiJiYoYT1hLlRiKCksYSBpbnN0YW5jZW9mIF8uRGMpP2E6UGwoInpTb3l6Iik6UGwoU3RyaW5nKGEpKX0saW09ZnVuY3Rpb24oYSxiKXtiJiZiLmg/Yi5oKGEpOihiPWhtKGIpLGEuaW5uZXJIVE1MPV8ua2ooYikpfSxrbT1mdW5jdGlvbihhLGIpe2E6aWYoYj1hKGJ8fGptLHZvaWQgMCksYT1fLmxiKCksYiYmYi5nP2E9Yi5nKCk6KGE9YS5jcmVhdGVFbGVtZW50KCJESVYiKSxiPWhtKGIpLGEuaW5uZXJIVE1MPV8ua2ooYikpLGEuY2hpbGROb2Rlcy5sZW5ndGg9PTEmJihiPWEuZmlyc3RDaGlsZCxiLm5vZGVUeXBlPT0xKSl7YT1iO2JyZWFrIGF9cmV0dXJuIGF9LG1tPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIik7YT1sbShhLGIpO2I9Yi5ib2R5O2IuYXBwZW5kQ2hpbGQoYSk7Yj0obmV3IFhNTFNlcmlhbGl6ZXIpLnNlcmlhbGl6ZVRvU3RyaW5nKGIpOwpiPWIuc2xpY2UoYi5pbmRleE9mKCI+IikrMSxiLmxhc3RJbmRleE9mKCI8LyIpKTtyZXR1cm4gXy5tbChiKX0sbm09ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEhPT0ic3RyaW5nIil0aHJvdyBFcnJvcigpO3JldHVybiBhfSxvbT1mdW5jdGlvbihhLGIsYyl7aWYoYilyZXR1cm4gbm0oYSk7dmFyIGQ7cmV0dXJuKGQ9Xy5waShhKSkhPW51bGw/ZDpjPyIiOnZvaWQgMH0scm09ZnVuY3Rpb24oKXtyZXR1cm4gcG18fChwbT1uZXcgXy55aChfLlRnKFtdKSx2b2lkIDAsdm9pZCAwLHZvaWQgMCxxbSkpfSxzbT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLkosZj1lW18uSF18MDtjPV8uV2coYSxmKT8xOmM7ZD0hIWR8fGM9PT0zO2M9PT0yJiZfLnFpKGEpJiYoZT1hLkosZj1lW18uSF18MCk7YT1fLkJpKGUsYik7dmFyIGc9YT09PV8uVGg/NzphW18uSF18MCxoPV8uQ2koZyxmKTt2YXIgaz00Jmg/ITE6ITA7aWYoayl7NCZoJiYoYT1fLm1pKGEpLGc9MCxoPV8uRGkoaCxmKSxmPV8udGkoZSwKZixiLGEpKTtmb3IodmFyIGw9MCxuPTA7bDxhLmxlbmd0aDtsKyspe3ZhciBxPV8ucGkoYVtsXSk7cSE9bnVsbCYmKGFbbisrXT1xKX1uPGwmJihhLmxlbmd0aD1uKTtoPShofDQpJi01MTM7aCY9LTEwMjU7aCY9LTQwOTd9aCE9PWcmJihfLlNnKGEsaCksMiZoJiZPYmplY3QuZnJlZXplKGEpKTtyZXR1cm4gYT1fLkZpKGEsaCxlLGYsYixjLGssZCl9LHVtPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRtOyFkJiZfLnFpKGEpJiYoYj1hLkosYz1iW18uSF18MCk7dmFyIGY9Xy51aShiLDEpO2E9ITE7aWYoZj09bnVsbCl7aWYoZClyZXR1cm4gcm0oKTtmPVtdfWVsc2UgaWYoZi5jb25zdHJ1Y3Rvcj09PV8ueWgpaWYoZi5LYiYyJiYhZClmPV8uemgoZik7ZWxzZSByZXR1cm4gZjtlbHNlIEFycmF5LmlzQXJyYXkoZik/YT0hISgoZltfLkhdfDApJjIpOmY9W107aWYoZCl7aWYoIWYubGVuZ3RoKXJldHVybiBybSgpO2F8fChhPSEwLF8uVGcoZikpfWVsc2UgaWYoYSl7YT0hMTtfLlVnKGYpOwpkPV8ubWkoZik7Zm9yKGY9MDtmPGQubGVuZ3RoO2YrKyl7dmFyIGc9ZFtmXT1fLm1pKGRbZl0pO0FycmF5LmlzQXJyYXkoZ1sxXSkmJihnWzFdPV8uVGcoZ1sxXSkpfWY9Xy5VZyhkKX0hYSYmYyYzMiYmXy5saShmKTtlPW5ldyBfLnloKGYsZSxvbSx2b2lkIDApO2M9Xy50aShiLGMsMSxlKTthfHxfLnNpKGIsYyk7cmV0dXJuIGV9LHZtPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMudG9wPWE7dGhpcy5yaWdodD1iO3RoaXMuYm90dG9tPWM7dGhpcy5sZWZ0PWR9LHdtPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMubGVmdD1hO3RoaXMudG9wPWI7dGhpcy53aWR0aD1jO3RoaXMuaGVpZ2h0PWR9LHhtPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9YS5sZW5ndGgsZT0wLGY9W10sZyxoLGs9MDtrPGQ7KXtzd2l0Y2goZSl7Y2FzZSAwOnZhciBsPWEuaW5kZXhPZigiPCIsayk7aWYobDwwKXtpZihjLmxlbmd0aD09PTApcmV0dXJuIGE7Yy5wdXNoKGEuc3Vic3RyaW5nKGspKTtrPWR9ZWxzZSBjLnB1c2goYS5zdWJzdHJpbmcoaywKbCkpLGg9bCxrPWwrMSxfLnZsPyhfLndsLmxhc3RJbmRleD1rLGw9Xy53bC5leGVjKGEpKTooXy53bC5sYXN0SW5kZXg9MCxsPV8ud2wuZXhlYyhhLnN1YnN0cmluZyhrKSkpLGw/KGY9WyI8IixsWzBdXSxnPWxbMV0sZT0xLGsrPWxbMF0ubGVuZ3RoKTpjLnB1c2goIjwiKTticmVhaztjYXNlIDE6bD1hLmNoYXJBdChrKyspO3N3aXRjaChsKXtjYXNlICInIjpjYXNlICciJzp2YXIgbj1hLmluZGV4T2YobCxrKTtuPDA/az1kOihmLnB1c2gobCxhLnN1YnN0cmluZyhrLG4rMSkpLGs9bisxKTticmVhaztjYXNlICI+IjpmLnB1c2gobCk7Yy5wdXNoKGIoZi5qb2luKCIiKSxnKSk7ZT0wO2Y9W107aD1nPW51bGw7YnJlYWs7ZGVmYXVsdDpmLnB1c2gobCl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigpO31lPT09MSYmaz49ZCYmKGs9aCsxLGMucHVzaCgiPCIpLGU9MCxmPVtdLGg9Zz1udWxsKX1yZXR1cm4gYy5qb2luKCIiKX0sRG09ZnVuY3Rpb24oKXt2YXIgYT15bShfLmpsKF8uaWwoem0oKSwKZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pLk1jKCkpKSxiPUFtKCkubWFwKGZ1bmN0aW9uKGMpe3ZhciBkO2E6e3ZhciBlPWMubztpZihlPT1udWxsKWM9bnVsbDtlbHNlIGlmKHR5cGVvZiBlPT09Im51bWJlciIpYz1lO2Vsc2V7aWYodHlwZW9mIGU9PT0ic3RyaW5nIil7dmFyIGY9TnVtYmVyKGUpO2lmKCFpc05hTihmKSYmKGYhPT0wfHxlLnRyaW0oKS5sZW5ndGghPT0wKSl7Yz1mO2JyZWFrIGF9fXRocm93IEJtKGMsIm51bWJlciIpO319cmV0dXJuKGQ9YykhPW51bGw/ZDowfSkuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBjPjB9KTtiLmxlbmd0aD4wJiYoYj1DbShiKSxhLmc9Yik7cmV0dXJuIF8ua2woYSl9LEVtPWZ1bmN0aW9uKGEpe3JldHVybiJ0cmFuc2xhdGU6IithfSxLbT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgRm07Yj1fLlRqKGIsMSxhLm5hbWUpO3ZhciBjPUdtKGEuc3RhcnRUaW1lKTtiPV8uTChiLDIsYyk7YT1IbShhLmR1cmF0aW9uKTthPV8uTChiLDMsYSk7Yj1uZXcgSW07CnJldHVybiBKbShhLDUsYil9LEdtPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBMbTtiLnNldFNlY29uZHMoTWF0aC5mbG9vcihhLzFFMykpO2E9TWF0aC5yb3VuZChhJTFFMyoxRTYpO18uR2koYiwyLGE9PW51bGw/YTpfLkJqKGEpLDApO3JldHVybiBifSxIbT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgTW07Yi5zZXRTZWNvbmRzKE1hdGguZmxvb3IoYS8xRTMpKTthPU1hdGgucm91bmQoYSUxRTMqMUU2KTtfLkdpKGIsMixhPT1udWxsP2E6Xy5CaihhKSwwKTtyZXR1cm4gYn0sTm09ZnVuY3Rpb24oYSl7cmV0dXJuIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5tYXJrJiYoYT1wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKGEsIm1hcmsiKSxhLmxlbmd0aD09MSk/YVswXTpudWxsfSxPbT1mdW5jdGlvbihhLGIpe3JldHVybiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2UubWVhc3VyZT9wZXJmb3JtYW5jZS5tZWFzdXJlKGEsYil8fG51bGw6bnVsbH0sUm09ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPQpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO2Quc3BsaWNlKDAsMik7ZD0ibCIrYS50b1N0cmluZygxNikrImkiK2IudG9TdHJpbmcoMTYpKyhkLmxlbmd0aD8iLSIrZC5qb2luKCJfIik6IiIpO1BtP1BtLnB1c2goZCk6UW0oZCl9LFZtPWZ1bmN0aW9uKCl7dmFyIGE9U218fChTbT1UbSgnW251bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiKGZ1bmN0aW9uKCl7XCd1c2Ugc3RyaWN0XCc7dmFyIGZcXHUwMDNkdHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzXFx1MDAzZFxcdTAwM2RcXCJmdW5jdGlvblxcIj9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxjLGIpe2lmKGFcXHUwMDNkXFx1MDAzZEFycmF5LnByb3RvdHlwZXx8YVxcdTAwM2RcXHUwMDNkT2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2NdXFx1MDAzZGIudmFsdWU7cmV0dXJuIGF9O2Z1bmN0aW9uIGcoYSl7YVxcdTAwM2RbXFwib2JqZWN0XFwiXFx1MDAzZFxcdTAwM2R0eXBlb2YgZ2xvYmFsVGhpc1xcdTAwMjZcXHUwMDI2Z2xvYmFsVGhpcyxhLFxcIm9iamVjdFxcIlxcdTAwM2RcXHUwMDNkdHlwZW9mIHdpbmRvd1xcdTAwMjZcXHUwMDI2d2luZG93LFxcIm9iamVjdFxcIlxcdTAwM2RcXHUwMDNkdHlwZW9mIHNlbGZcXHUwMDI2XFx1MDAyNnNlbGYsXFwib2JqZWN0XFwiXFx1MDAzZFxcdTAwM2R0eXBlb2YgZ2xvYmFsXFx1MDAyNlxcdTAwMjZnbG9iYWxdO2Zvcih2YXIgY1xcdTAwM2QwO2NcXHUwMDNjYS5sZW5ndGg7KytjKXt2YXIgYlxcdTAwM2RhW2NdO2lmKGJcXHUwMDI2XFx1MDAyNmIuTWF0aFxcdTAwM2RcXHUwMDNkTWF0aClyZXR1cm4gYn10aHJvdyBFcnJvcihcXCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0XFwiKTt9dmFyIGhcXHUwMDNkZyh0aGlzKTtcXG5mdW5jdGlvbiBrKGEsYyl7aWYoYylhOnt2YXIgYlxcdTAwM2RoO2FcXHUwMDNkYS5zcGxpdChcXCIuXFwiKTtmb3IodmFyIGRcXHUwMDNkMDtkXFx1MDAzY2EubGVuZ3RoLTE7ZCsrKXt2YXIgZVxcdTAwM2RhW2RdO2lmKCEoZSBpbiBiKSlicmVhayBhO2JcXHUwMDNkYltlXX1hXFx1MDAzZGFbYS5sZW5ndGgtMV07ZFxcdTAwM2RiW2FdO2NcXHUwMDNkYyhkKTtjIVxcdTAwM2RkXFx1MDAyNlxcdTAwMjZjIVxcdTAwM2RudWxsXFx1MDAyNlxcdTAwMjZmKGIsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmN9KX19ayhcXCJnbG9iYWxUaGlzXFwiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxofSk7LypcXG5cXG4gQ29weXJpZ2h0IEdvb2dsZSBMTENcXG4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcXG4qL1xcbnZhciBsXFx1MDAzZGdsb2JhbFRoaXMudHJ1c3RlZFR5cGVzLG07ZnVuY3Rpb24gbigpe3ZhciBhXFx1MDAzZG51bGw7aWYoIWwpcmV0dXJuIGE7dHJ5e3ZhciBjXFx1MDAzZGZ1bmN0aW9uKGIpe3JldHVybiBifTthXFx1MDAzZGwuY3JlYXRlUG9saWN5KFxcImdvb2cjaHRtbFxcIix7Y3JlYXRlSFRNTDpjLGNyZWF0ZVNjcmlwdDpjLGNyZWF0ZVNjcmlwdFVSTDpjfSl9Y2F0Y2goYil7fXJldHVybiBhfTtmdW5jdGlvbiBwKGEpe3RoaXMuZ1xcdTAwM2RhfXAucHJvdG90eXBlLnRvU3RyaW5nXFx1MDAzZGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZytcXCJcXCJ9O2Z1bmN0aW9uIHEoYSl7bVxcdTAwM2RcXHUwMDNkXFx1MDAzZHZvaWQgMFxcdTAwMjZcXHUwMDI2KG1cXHUwMDNkbigpKTthXFx1MDAzZG0/bS5jcmVhdGVTY3JpcHRVUkwoYSk6YTtyZXR1cm4gbmV3IHAoYSl9O2lmKCFmdW5jdGlvbigpe2lmKHNlbGYub3JpZ2luKXJldHVybiBzZWxmLm9yaWdpblxcdTAwM2RcXHUwMDNkXFx1MDAzZFxcIm51bGxcXCI7aWYobG9jYXRpb24uaG9zdCFcXHUwMDNkXFx1MDAzZFxcIlxcIilyZXR1cm4hMTt0cnl7cmV0dXJuIHdpbmRvdy5wYXJlbnQuZXNjYXBlKFxcIlxcIiksITF9Y2F0Y2goYSl7cmV0dXJuITB9fSgpKXRocm93IEVycm9yKFxcInNhbmRib3hpbmcgZXJyb3JcXCIpO1xcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxcIm1lc3NhZ2VcXCIsZnVuY3Rpb24oYSl7dmFyIGNcXHUwMDNkYS5wb3J0c1swXTthXFx1MDAzZGEuZGF0YTt2YXIgYlxcdTAwM2RhLmNhbGxiYWNrTmFtZS5zcGxpdChcXCIuXFwiKSxkXFx1MDAzZHdpbmRvdztiWzBdXFx1MDAzZFxcdTAwM2RcXHUwMDNkXFwid2luZG93XFwiXFx1MDAyNlxcdTAwMjZiLnNoaWZ0KCk7Zm9yKHZhciBlXFx1MDAzZDA7ZVxcdTAwM2NiLmxlbmd0aC0xO2UrKylkW2JbZV1dXFx1MDAzZHt9LGRcXHUwMDNkZFtiW2VdXTtkW2JbYi5sZW5ndGgtMV1dXFx1MDAzZGZ1bmN0aW9uKHIpe2MucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkocikpfTtiXFx1MDAzZGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXFwic2NyaXB0XFwiKTthXFx1MDAzZHEoYS51cmwpO2lmKGEgaW5zdGFuY2VvZiBwKWFcXHUwMDNkYS5nO2Vsc2UgdGhyb3cgRXJyb3IoXFwiXFwiKTtiLnNyY1xcdTAwM2RhO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYil9LCEwKTt9KS5jYWxsKHRoaXMpO1xcbiJdJykpOwppZighYSlyZXR1cm4gbnVsbDthPV8ucGkoXy5aaShhLDYsdm9pZCAwLFVtKSk7dmFyIGI7YT09PW51bGx8fGE9PT12b2lkIDA/Yj1udWxsOmI9Xy5RYShhKTtyZXR1cm4gYn0sV209ZnVuY3Rpb24oYSl7dmFyIGI9e307YT1fLkMoYSk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSljPWMudmFsdWUsYltjLmxhbmd1YWdlXT1jLm5hbWU7cmV0dXJuIGJ9LFhtPWZ1bmN0aW9uKCl7fSxZbT1mdW5jdGlvbihhLGIpe18uaGIuY2FsbCh0aGlzKTt0aGlzLmw9bmV3IF8uSGIodGhpcyk7dGhpcy5RYihhfHxudWxsKTtiJiYodGhpcy5VYj1iKX0sYm49ZnVuY3Rpb24oYSl7Xy5oYi5jYWxsKHRoaXMpO3RoaXMuZz1hO3RoaXMuaD1fLngodGhpcy5nLCJmb2N1cyIsdGhpcywhMCk7dGhpcy5qPV8ueCh0aGlzLmcsImJsdXIiLHRoaXMsITApfSxjbj1mdW5jdGlvbigpe30sZG49ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZWxlbWVudD1hO3RoaXMuaj1iO3RoaXMubD1jfSxlbj1mdW5jdGlvbihhLApiKXt0aGlzLmc9YSBpbnN0YW5jZW9mIHpsP2E6bmV3IHpsKGEsYil9LGZuPWZ1bmN0aW9uKGEsYil7dGhpcy5vPWJ8fHZvaWQgMDtZbS5jYWxsKHRoaXMsYSl9LE89ZnVuY3Rpb24oYSxiLGMpe3RoaXMuRz1jfHwoYT9fLmxiKGduKGEpKTpfLmxiKCkpO2ZuLmNhbGwodGhpcyx0aGlzLkcuUygiRElWIix7c3R5bGU6InBvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6bm9uZTsifSkpO3RoaXMucmE9bmV3IHpsKDEsMSk7dGhpcy5BPW5ldyBTZXQ7dGhpcy5DPW51bGw7YSYmdGhpcy5hdHRhY2goYSk7YiE9bnVsbCYmdGhpcy5LYShiKX0saG49ZnVuY3Rpb24oYSl7YT1hLmNsYXNzTmFtZTtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIiYmYS5tYXRjaCgvXFMrL2cpfHxbXX0sa249ZnVuY3Rpb24oYSxiKXt2YXIgYz1obihhKSxkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxlPWMubGVuZ3RoK2QubGVuZ3RoO2puKGMsZCk7YS5jbGFzc05hbWU9Yy5qb2luKCIgIik7CnJldHVybiBjLmxlbmd0aD09ZX0sbW49ZnVuY3Rpb24oYSxiKXt2YXIgYz1obihhKSxkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxlPWxuKGMsZCk7YS5jbGFzc05hbWU9ZS5qb2luKCIgIik7cmV0dXJuIGUubGVuZ3RoPT1jLmxlbmd0aC1kLmxlbmd0aH0sam49ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKylfLnRhKGEsYltjXSl8fGEucHVzaChiW2NdKX0sbG49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIV8udGEoYixjKX0pfSxubj1mdW5jdGlvbihhLGIpe3JldHVybiBfLnRhKGhuKGEpLGIpfSxvbj1mdW5jdGlvbihhLGIsYyl7Yz9rbihhLGIpOm1uKGEsYil9LHRuPWZ1bmN0aW9uKGEpe3JldHVybiBwbihuZXcgcW4sc20oYSwxLF8uYWooKSkubWFwKGZ1bmN0aW9uKGIsYyl7dmFyIGQ9bmV3IHJuO2I9c24oZCwxLGIpO2lmKHNtKGEsMixfLmFqKCkpLmxlbmd0aD5jKXtkPXNtKGEsMiwKMywhMCk7aWYodHlwZW9mIGMhPT0ibnVtYmVyInx8YzwwfHxjPj1kLmxlbmd0aCl0aHJvdyBFcnJvcigpO3NuKGIsMyxkW2NdKX1yZXR1cm4gYn0pKX0sdW49ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHJuO2I9c24oYiwxLGFbMF0pO2EubGVuZ3RoPT09MyYmc24oYiwzLGFbMl0pO3JldHVybiBifSx2bj1mdW5jdGlvbihhKXtyZXR1cm4gXy5jaihhLHJuLDEpLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gXy5OKGIsMyk/W18uTihiLDEpLDIwMCxfLk4oYiwzKV06W18uTihiLDEpLDIwMF19KX0sd249ZnVuY3Rpb24oKXt9LHhuPWZ1bmN0aW9uKGEpe18uaGIuY2FsbCh0aGlzKTt0aGlzLmg9YXx8Xy5sYigpO3RoaXMubGE9bnVsbDt0aGlzLmpiPSExO3RoaXMuQz1udWxsO3RoaXMuTz12b2lkIDA7dGhpcy5SPXRoaXMuRj10aGlzLks9bnVsbDt0aGlzLndhPSExfSx5bj1mdW5jdGlvbihhKXt2YXIgYj1fLmxiKCksYz1iLmcsZD1iLmNyZWF0ZUVsZW1lbnQoIlNUWUxFIiksZT1fLk9hKCJzdHlsZSIsCmMpO2UmJmQuc2V0QXR0cmlidXRlKCJub25jZSIsZSk7ZC50eXBlPSJ0ZXh0L2NzcyI7Yj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJIRUFEIilbMF07ZC5zdHlsZVNoZWV0P2Quc3R5bGVTaGVldC5jc3NUZXh0PWE6ZC5hcHBlbmRDaGlsZChjLmNyZWF0ZVRleHROb2RlKGEpKTtiLmFwcGVuZENoaWxkKGQpO3JldHVybiBkfSxDbj1mdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBPYmplY3QucHJvdG90eXBlKXtfLnpjPWZ1bmN0aW9uKGQsZSxmKXtmb3IodmFyIGcgaW4gZClkW2ddIT09T2JqZWN0LnByb3RvdHlwZVtnXSYmZS5jYWxsKGYsZFtnXSxnLGQpfTticmVha312YXIgYj1EYXRlLm5vdygpLGM9em4oQW4pO2MmJnR5cGVvZiBjPT0iZnVuY3Rpb24iJiYoQm49PTE/YygpOmZ1bmN0aW9uIGUoKXt2YXIgZj1kb2N1bWVudC5yZWFkeVN0YXRlO18ub2MoZik9PSJ1bmRlZmluZWQifHxmPT0iY29tcGxldGUifHxmPT0iaW50ZXJhY3RpdmUifHxEYXRlLm5vdygpLWI+PTJFND9jKCk6d2luZG93LnNldFRpbWVvdXQoZSwKNTAwKX0oKSl9O18ubT16bC5wcm90b3R5cGU7Xy5tLmVxdWFscz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIHpsJiYodGhpcz09YT8hMDp0aGlzJiZhP3RoaXMueD09YS54JiZ0aGlzLnk9PWEueTohMSl9O18ubS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGguY2VpbCh0aGlzLngpO3RoaXMueT1NYXRoLmNlaWwodGhpcy55KTtyZXR1cm4gdGhpc307Xy5tLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGguZmxvb3IodGhpcy54KTt0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpO3JldHVybiB0aGlzfTtfLm0ucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpO3RoaXMueT1NYXRoLnJvdW5kKHRoaXMueSk7cmV0dXJuIHRoaXN9OwpfLm0udHJhbnNsYXRlPWZ1bmN0aW9uKGEsYil7YSBpbnN0YW5jZW9mIHpsPyh0aGlzLngrPWEueCx0aGlzLnkrPWEueSk6KHRoaXMueCs9TnVtYmVyKGEpLHR5cGVvZiBiPT09Im51bWJlciImJih0aGlzLnkrPWIpKTtyZXR1cm4gdGhpc307CnZhciBEbj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHpsKGEueCxhLnkpfSxFbj1bImRhdGE6IiwiaHR0cDoiLCJodHRwczoiLCJtYWlsdG86IiwiZnRwOiJdLEZuPWZ1bmN0aW9uKGEpe3ZhciBiPTE7YT1hLnNwbGl0KCI6Iik7Zm9yKHZhciBjPVtdO2I+MCYmYS5sZW5ndGg7KWMucHVzaChhLnNoaWZ0KCkpLGItLTthLmxlbmd0aCYmYy5wdXNoKGEuam9pbigiOiIpKTtyZXR1cm4gY30sR249ZnVuY3Rpb24oYSxiLGMpe2M9YS5nLmdldChjKTtyZXR1cm4oYz09bnVsbD8wOmMuaGFzKGIpKT9jLmdldChiKTphLmwuaGFzKGIpP3t1YToxfTooYz1hLm8uZ2V0KGIpKT9jOmEuaCYmW10uY29uY2F0KF8uJGIoYS5oKSkuc29tZShmdW5jdGlvbihkKXtyZXR1cm4gYi5pbmRleE9mKGQpPT09MH0pP3t1YToxfTp7dWE6MH19LEhuPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1DbChiKTtjPWMuY3JlYXRlRWxlbWVudChkKTtiPWIuYXR0cmlidXRlcztmb3IodmFyIGU9Xy5DKGIpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPQplLm5leHQoKSl7dmFyIGc9Zi52YWx1ZTtmPWcubmFtZTtnPWcudmFsdWU7dmFyIGg9R24oYS5nLGYsZCksazthOntpZihrPWguY29uZGl0aW9ucyl7az1fLkMoayk7Zm9yKHZhciBsPWsubmV4dCgpOyFsLmRvbmU7bD1rLm5leHQoKSl7dmFyIG49Xy5DKGwudmFsdWUpO2w9bi5uZXh0KCkudmFsdWU7bj1uLm5leHQoKS52YWx1ZTt2YXIgcT12b2lkIDA7aWYoKGw9KHE9Yi5nZXROYW1lZEl0ZW0obCkpPT1udWxsP3ZvaWQgMDpxLnZhbHVlKSYmIW4uaGFzKGwpKXtrPSExO2JyZWFrIGF9fX1rPSEwfWlmKGspc3dpdGNoKGgudWEpe2Nhc2UgMTpFbChjLGYsZyk7YnJlYWs7Y2FzZSAyOnRocm93IEVycm9yKCk7Y2FzZSAzOkVsKGMsZixnLnRvTG93ZXJDYXNlKCkpO2JyZWFrO2Nhc2UgNDpFbChjLGYsZyk7YnJlYWs7Y2FzZSA1OkVsKGMsZixnKTticmVhaztjYXNlIDY6RWwoYyxmLGcpO2JyZWFrO2Nhc2UgNzphOmlmKGg9dm9pZCAwLGs9ZyxfLkNjKXt0cnl7aD1uZXcgVVJMKGspfWNhdGNoKHApe2g9CiJodHRwczoiO2JyZWFrIGF9aD1oLnByb3RvY29sfWVsc2UgYjp7aD1rO2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXtrLmhyZWY9aH1jYXRjaChwKXtoPXZvaWQgMDticmVhayBifWg9ay5wcm90b2NvbDtoPWg9PT0iOiJ8fGg9PT0iIj8iaHR0cHM6IjpofWc9aCE9PXZvaWQgMCYmRW4uaW5kZXhPZihoLnRvTG93ZXJDYXNlKCkpIT09LTE/ZzoiYWJvdXQ6aW52YWxpZCN6Q2xvc3VyZXoiO0VsKGMsZixnKX19cmV0dXJuIGN9LGxtPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5xZDthPUJsKGEsYik7YT1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGEsNSxmdW5jdGlvbihoKXtpZihoLm5vZGVUeXBlPT09MyloPTE7ZWxzZSBpZihEbChoKSlpZihoPUNsKGgpLGg9PT1udWxsKWg9MjtlbHNle3ZhciBrPWMuZztoPWghPT0iRk9STSImJihrLmouaGFzKGgpfHxrLmcuaGFzKGgpKT8xOjJ9ZWxzZSBoPTI7cmV0dXJuIGh9KTtmb3IodmFyIGQ9YS5uZXh0Tm9kZSgpLGU9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCmY9ZTtkIT09bnVsbDspe3ZhciBnPXZvaWQgMDtpZihkLm5vZGVUeXBlPT09MylnPWMuY3JlYXRlVGV4dE5vZGUoZC5kYXRhKTtlbHNlIGlmKERsKGQpKWc9SG4oYyxkLGIpO2Vsc2UgdGhyb3cgRXJyb3IoInQiKTtmLmFwcGVuZENoaWxkKGcpO2lmKGQ9YS5maXJzdENoaWxkKCkpZj1nO2Vsc2UgZm9yKDshKGQ9YS5uZXh0U2libGluZygpKSYmKGQ9YS5wYXJlbnROb2RlKCkpOylmPWYucGFyZW50Tm9kZX1yZXR1cm4gZX0sSW49ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYj1iJiZiIT0iKiI/U3RyaW5nKGIpLnRvVXBwZXJDYXNlKCk6IiIpP2EucXVlcnlTZWxlY3RvckFsbChiKTphLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9LEpuPWZ1bmN0aW9uKGEpe3JldHVybiBhLnNjcm9sbGluZ0VsZW1lbnQ/YS5zY3JvbGxpbmdFbGVtZW50Ol8uVmN8fGEuY29tcGF0TW9kZSE9IkNTUzFDb21wYXQiP2EuYm9keXx8YS5kb2N1bWVudEVsZW1lbnQ6YS5kb2N1bWVudEVsZW1lbnR9LEtuPWZ1bmN0aW9uKGEpe3ZhciBiPQpKbihhKTthPWEuZGVmYXVsdFZpZXc7cmV0dXJuIG5ldyB6bCgoYT09bnVsbD92b2lkIDA6YS5wYWdlWE9mZnNldCl8fGIuc2Nyb2xsTGVmdCwoYT09bnVsbD92b2lkIDA6YS5wYWdlWU9mZnNldCl8fGIuc2Nyb2xsVG9wKX0sTG49ZnVuY3Rpb24oYSl7dmFyIGI9e307YT0oYS5nJiYoYS5nP2EuZy5yZWFkeVN0YXRlOjApPj0yP2EuZy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKXx8IiI6IiIpLnNwbGl0KCJcclxuIik7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoIS9eW1xzXHhhMF0qJC8udGVzdChhW2NdKSl7dmFyIGQ9Rm4oYVtjXSksZT1kWzBdO2Q9ZFsxXTtpZih0eXBlb2YgZD09PSJzdHJpbmciKXtkPWQudHJpbSgpO3ZhciBmPWJbZV18fFtdO2JbZV09ZjtmLnB1c2goZCl9fXJldHVybiBBbChiLGZ1bmN0aW9uKGcpe3JldHVybiBnLmpvaW4oIiwgIil9KX0sTW49WzQsNSw2XSxKbT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9TW47Yz1fLkppKGMpO2E6e3ZhciBlPWM7Xy5yaShhKTsKdmFyIGY9YS5KLGc9ZltfLkhdfDA7aWYoZT09bnVsbCl7dmFyIGg9SGwoZik7aWYoSWwoaCxmLGcsZCk9PT1iKWguc2V0KGQsMCk7ZWxzZSBicmVhayBhfWVsc2V7aD1IbChmKTt2YXIgaz1JbChoLGYsZyxkKTtrIT09YiYmKGsmJihnPV8udGkoZixnLGspKSxoLnNldChkLGIpKX1fLnRpKGYsZyxiLGUpfWMmJiFfLldnKGMpJiZfLnNpKGEuSik7cmV0dXJuIGF9LExtPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihMbSxfLkopO0xtLnByb3RvdHlwZS5nZXRTZWNvbmRzPWZ1bmN0aW9uKCl7cmV0dXJuIF8uaGsodGhpcywxKX07TG0ucHJvdG90eXBlLnNldFNlY29uZHM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uR2kodGhpcywxLGE9PW51bGw/YTpfLkpqKGEpLCIwIil9O3ZhciBNbT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoTW0sXy5KKTtNbS5wcm90b3R5cGUuZ2V0U2Vjb25kcz1mdW5jdGlvbigpe3JldHVybiBfLmhrKHRoaXMsMSl9OwpNbS5wcm90b3R5cGUuc2V0U2Vjb25kcz1mdW5jdGlvbihhKXtyZXR1cm4gXy5HaSh0aGlzLDEsYT09bnVsbD9hOl8uSmooYSksIjAiKX07dmFyIE5uPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLktrO3JldHVybiBfLmlrKGIsMTEsYSl9LHptPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IF8uaGwoMTg3MSwiMCIpO2EuQT0iaHR0cHM6Ly90cmFuc2xhdGUuZ29vZ2xlYXBpcy5jb20vZWxlbWVudC9sb2c/Zm9ybWF0PWpzb24maGFzZmFzdD10cnVlIjtyZXR1cm4gYX0seW09ZnVuY3Rpb24oYSl7YS5oPU9uO3JldHVybiBhfSxJbT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoSW0sXy5KKTt2YXIgUG49ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKFBuLF8uSik7dmFyIEZtPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihGbSxfLkopO3ZhciBRbj1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoUW4sXy5KKTt2YXIgUm49ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Cl8uQihSbixfLkopO3ZhciBTbj1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoU24sXy5KKTt2YXIgVG49ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKFRuLF8uSik7CnZhciBVbj1mdW5jdGlvbihhKXtfLnJpKGEpO2E9YS5KO3ZhciBiPWFbXy5IXXwwLGM9Xy51aShhLDExMiksZD12b2lkIDA9PT1fLlhoLGU9Xy5oaChjLFRuLCFkLGIpOyFkfHxlPyhlPV8ua2goZSksYyE9PWUmJihiPV8udGkoYSxiLDExMixlKSxfLnNpKGEsYikpLGE9ZSk6YT12b2lkIDA7cmV0dXJuIGF9LFZuPWZ1bmN0aW9uKGEsYil7YS5VIT09dm9pZCAwP2EuVS5wdXNoKGIpOmEuY29udGVudCs9YjtyZXR1cm4gYX0sV249ZnVuY3Rpb24oYSxiKXthLlUhPT12b2lkIDA/YS5VLnB1c2goYik6YiBpbnN0YW5jZW9mIF8ueGw/Yi5jb250ZW50IT09dm9pZCAwP2EuY29udGVudCs9Yi5tYSgpOihhLlU9W2EuY29udGVudCxiXSxhLmNvbnRlbnQ9dm9pZCAwKTphLmNvbnRlbnQrPWI7cmV0dXJuIGF9LFhuPWZ1bmN0aW9uKGEpe3ZhciBiO2E9Xy5DKChiPWEuVSkhPW51bGw/YjpbXSk7Zm9yKGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKWlmKGI9Yi52YWx1ZSxiIGluc3RhbmNlb2YKXy54bCYmWG4oYikpcmV0dXJuITA7cmV0dXJuITF9LFpuPWZ1bmN0aW9uKGEsYil7Yj1ZbihifHx7fSxhLmg/YS5oLmdldERhdGEoKTp7fSk7YS5nKG51bGwsYi5aYik7cmV0dXJuIGIuaigpfSwkbj17fSxhbz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgemwoYS54LWIueCxhLnktYi55KX0sYm89LyYvZyxjbz0vPC9nLGVvPS8+L2csZm89LyIvZyxnbz0vJy9nLGhvPS9ceDAwL2csaW89L1tceDAwJjw+IiddLyxqbz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9ceGEwfFsgXHRdKy9nLCIgIil9LGtvPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1tcc1x4YTBdKyQvLCIiKX0sbG89ZnVuY3Rpb24oYSl7aW8udGVzdChhKSYmKGEuaW5kZXhPZigiJiIpIT0tMSYmKGE9YS5yZXBsYWNlKGJvLCImYW1wOyIpKSxhLmluZGV4T2YoIjwiKSE9LTEmJihhPWEucmVwbGFjZShjbywiJmx0OyIpKSxhLmluZGV4T2YoIj4iKSE9LTEmJihhPWEucmVwbGFjZShlbywiJmd0OyIpKSxhLmluZGV4T2YoJyInKSE9Ci0xJiYoYT1hLnJlcGxhY2UoZm8sIiZxdW90OyIpKSxhLmluZGV4T2YoIiciKSE9LTEmJihhPWEucmVwbGFjZShnbywiJiMzOTsiKSksYS5pbmRleE9mKCJceDAwIikhPS0xJiYoYT1hLnJlcGxhY2UoaG8sIiYjMDsiKSkpO3JldHVybiBhfSxtbz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8mKFteO10rKTsvZyxmdW5jdGlvbihiLGMpe3N3aXRjaChjKXtjYXNlICJhbXAiOnJldHVybiImIjtjYXNlICJsdCI6cmV0dXJuIjwiO2Nhc2UgImd0IjpyZXR1cm4iPiI7Y2FzZSAicXVvdCI6cmV0dXJuJyInO2RlZmF1bHQ6cmV0dXJuIGMuY2hhckF0KDApIT0iIyJ8fChjPU51bWJlcigiMCIrYy5zbGljZSgxKSksaXNOYU4oYykpP2I6U3RyaW5nLmZyb21DaGFyQ29kZShjKX19KX0sbm89LyYoW147XHM8Jl0rKTs/L2csb289ZnVuY3Rpb24oYSl7dmFyIGI9eyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIid9O3ZhciBjPV8udi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKcmV0dXJuIGEucmVwbGFjZShubyxmdW5jdGlvbihkLGUpe3ZhciBmPWJbZF07aWYoZilyZXR1cm4gZjtlLmNoYXJBdCgwKT09IiMiJiYoZT1OdW1iZXIoIjAiK2Uuc2xpY2UoMSkpLGlzTmFOKGUpfHwoZj1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpKSk7Znx8KGY9Xy5tbChkKyIgIiksYy5ub2RlVHlwZT09PTEmJk1sKGMpLGMuaW5uZXJIVE1MPV8ua2ooZiksZj1jLmZpcnN0Q2hpbGQubm9kZVZhbHVlLnNsaWNlKDAsLTEpKTtyZXR1cm4gYltkXT1mfSl9LHBvPWZ1bmN0aW9uKGEpe3JldHVybiBhLmluZGV4T2YoIiYiKSE9LTE/ImRvY3VtZW50ImluIF8udj9vbyhhKTptbyhhKTphfSxybz1mdW5jdGlvbihhKXt2YXIgYj1xbztyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIjcuMCIpP2JbIjcuMCJdOmJbIjcuMCJdPWEoIjcuMCIpfSxxbz17fSxzbz1mdW5jdGlvbigpe3JldHVybiBybyhmdW5jdGlvbigpe3JldHVybiBMbChfLmpkLCI3LjAiKT49MH0pfSwKVGw9L15bYS16XVthLXpcZC1dKiQvaSxXbD0iQVBQTEVUIEJBU0UgRU1CRUQgSUZSQU1FIExJTksgTUFUSCBNRVRBIE9CSkVDVCBTQ1JJUFQgU1RZTEUgU1ZHIFRFTVBMQVRFIi5zcGxpdCgiICIpLFhsPSJBUkVBIEJSIENPTCBDT01NQU5EIEhSIElNRyBJTlBVVCBLRVlHRU4gUEFSQU0gU09VUkNFIFRSQUNLIFdCUiIuc3BsaXQoIiAiKSxVbD1bImFjdGlvbiIsImZvcm1hY3Rpb24iLCJocmVmIl0sdG89ZnVuY3Rpb24oKXt0aGlzLmc9bmV3IE1hcH07CnRvLnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPVBsKCJfc2FmZXZhbHVlc19mb3JtYXRfbWFya2VyXzoiKS50b1N0cmluZygpO2E9UGwoYSkudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoIlxceyIrYysiW1xcdyYjO10rXFx9IiwiZyIpLGZ1bmN0aW9uKGQpe3ZhciBlO2lmKGU9Yi5nLmdldChkKSl7ZD0iIjtzd2l0Y2goZS50eXBlKXtjYXNlICJodG1sIjpkPWUueGY7YnJlYWs7Y2FzZSAic3RhcnRUYWciOmQ9IjwiK2UudGFnTmFtZStlLmF0dHJpYnV0ZXMrIj4iO2JyZWFrO2Nhc2UgImVuZFRhZyI6ZD0iPC8iK2UudGFnTmFtZSsiPiJ9ZT1kfWVsc2UgZT1kO3JldHVybiBlfSk7cmV0dXJuIF8ubWwoYSl9O3RvLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKGEpe3JldHVybiB1byh0aGlzLHt0eXBlOiJodG1sIix4ZjpQbChhKS50b1N0cmluZygpfSl9Owp2YXIgdW89ZnVuY3Rpb24oYSxiKXt2YXIgYz0ie19zYWZldmFsdWVzX2Zvcm1hdF9tYXJrZXJfOiIrYS5nLnNpemUrIl8iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpKyJ9IjthLmcuc2V0KFBsKGMpLnRvU3RyaW5nKCksYik7cmV0dXJuIGN9LGduPWZ1bmN0aW9uKGEpe3JldHVybiBfLnRkKGRvY3VtZW50LGEpfSx2bz1mdW5jdGlvbihhKXt2YXIgYj1hfHxkb2N1bWVudDtiLmdldEVsZW1lbnRzQnlDbGFzc05hbWU/YT1iLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIlZJcGdKZC15QVdORWItblZNZmNkLWZtY21TIilbMF06KGI9ZG9jdW1lbnQsYT0oYXx8YikucXVlcnlTZWxlY3RvcigiLlZJcGdKZC15QVdORWItblZNZmNkLWZtY21TIikpO3JldHVybiBhfHxudWxsfSx3bz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8ueWQoZG9jdW1lbnQsYXJndW1lbnRzKX0seG89ZnVuY3Rpb24oYSxiKXtiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwKYi5uZXh0U2libGluZyl9LHlvPWZ1bmN0aW9uKGEpe3JldHVybiBfLnlhKGEpJiZhLm5vZGVUeXBlPT0xfSx6bz1mdW5jdGlvbihhKXtyZXR1cm4gYS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudH0sQW89ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBhLmNvbnRlbnRXaW5kb3d8fChhLmNvbnRlbnREb2N1bWVudD9fLm1iKGEuY29udGVudERvY3VtZW50KTpudWxsKX1jYXRjaChiKXt9cmV0dXJuIG51bGx9LEJvPXtTQ1JJUFQ6MSxTVFlMRToxLEhFQUQ6MSxJRlJBTUU6MSxPQkpFQ1Q6MX0sQ289e0lNRzoiICIsQlI6IlxuIn0sRG89ZnVuY3Rpb24oYSxiLGMpe2lmKCEoYS5ub2RlTmFtZSBpbiBCbykpaWYoYS5ub2RlVHlwZT09MyljP2IucHVzaChTdHJpbmcoYS5ub2RlVmFsdWUpLnJlcGxhY2UoLyhcclxufFxyfFxuKS9nLCIiKSk6Yi5wdXNoKGEubm9kZVZhbHVlKTtlbHNlIGlmKGEubm9kZU5hbWUgaW4gQ28pYi5wdXNoKENvW2Eubm9kZU5hbWVdKTtlbHNlIGZvcihhPQphLmZpcnN0Q2hpbGQ7YTspRG8oYSxiLGMpLGE9YS5uZXh0U2libGluZ30sRW89ZnVuY3Rpb24oYSl7dmFyIGI9W107RG8oYSxiLCEwKTthPWIuam9pbigiIik7YT1hLnJlcGxhY2UoLyBceEFEIC9nLCIgIikucmVwbGFjZSgvXHhBRC9nLCIiKTthPWEucmVwbGFjZSgvXHUyMDBCL2csIiIpO2E9YS5yZXBsYWNlKC8gKy9nLCIgIik7YSE9IiAiJiYoYT1hLnJlcGxhY2UoL15ccyovLCIiKSk7cmV0dXJuIGF9LEZvPWZ1bmN0aW9uKGEsYixjKXt0aGlzLnByb21pc2U9YTt0aGlzLnJlc29sdmU9Yjt0aGlzLnJlamVjdD1jfSxHbz1mdW5jdGlvbigpe3ZhciBhLGIsYz1uZXcgXy5vZShmdW5jdGlvbihkLGUpe2E9ZDtiPWV9KTtyZXR1cm4gbmV3IEZvKGMsYSxiKX0sSG89ZnVuY3Rpb24oYSl7aWYoYS5pYiYmdHlwZW9mIGEuaWI9PSJmdW5jdGlvbiIpcmV0dXJuIGEuaWIoKTtpZih0eXBlb2YgTWFwIT09InVuZGVmaW5lZCImJmEgaW5zdGFuY2VvZiBNYXB8fHR5cGVvZiBTZXQhPT0idW5kZWZpbmVkIiYmCmEgaW5zdGFuY2VvZiBTZXQpcmV0dXJuIEFycmF5LmZyb20oYS52YWx1ZXMoKSk7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilyZXR1cm4gYS5zcGxpdCgiIik7aWYoXy5xYShhKSl7Zm9yKHZhciBiPVtdLGM9YS5sZW5ndGgsZD0wO2Q8YztkKyspYi5wdXNoKGFbZF0pO3JldHVybiBifWI9W107Yz0wO2ZvcihkIGluIGEpYltjKytdPWFbZF07cmV0dXJuIGJ9LElvPWZ1bmN0aW9uKGEpe2lmKGEuT2MmJnR5cGVvZiBhLk9jPT0iZnVuY3Rpb24iKXJldHVybiBhLk9jKCk7aWYoIWEuaWJ8fHR5cGVvZiBhLmliIT0iZnVuY3Rpb24iKXtpZih0eXBlb2YgTWFwIT09InVuZGVmaW5lZCImJmEgaW5zdGFuY2VvZiBNYXApcmV0dXJuIEFycmF5LmZyb20oYS5rZXlzKCkpO2lmKCEodHlwZW9mIFNldCE9PSJ1bmRlZmluZWQiJiZhIGluc3RhbmNlb2YgU2V0KSl7aWYoXy5xYShhKXx8dHlwZW9mIGE9PT0ic3RyaW5nIil7dmFyIGI9W107YT1hLmxlbmd0aDtmb3IodmFyIGM9MDtjPGE7YysrKWIucHVzaChjKTsKcmV0dXJuIGJ9Yj1bXTtjPTA7Zm9yKHZhciBkIGluIGEpYltjKytdPWQ7cmV0dXJuIGJ9fX0sSm89ZnVuY3Rpb24oYSxiLGMpe2lmKGEuZm9yRWFjaCYmdHlwZW9mIGEuZm9yRWFjaD09ImZ1bmN0aW9uIilhLmZvckVhY2goYixjKTtlbHNlIGlmKF8ucWEoYSl8fHR5cGVvZiBhPT09InN0cmluZyIpQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLGIsYyk7ZWxzZSBmb3IodmFyIGQ9SW8oYSksZT1IbyhhKSxmPWUubGVuZ3RoLGc9MDtnPGY7ZysrKWIuY2FsbChjLGVbZ10sZCYmZFtnXSxhKX0sZ209ZnVuY3Rpb24oYSxiKXt0aGlzLmg9dGhpcy5nPW51bGw7dGhpcy5qPWF8fG51bGw7dGhpcy5sPSEhYn0sS289ZnVuY3Rpb24oYSl7YS5nfHwoYS5nPW5ldyBNYXAsYS5oPTAsYS5qJiZfLkViKGEuaixmdW5jdGlvbihiLGMpe2EuYWRkKF8uRGIoYiksYyl9KSl9OwpnbS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYil7S28odGhpcyk7dGhpcy5qPW51bGw7YT1Mbyh0aGlzLGEpO3ZhciBjPXRoaXMuZy5nZXQoYSk7Y3x8dGhpcy5nLnNldChhLGM9W10pO2MucHVzaChiKTt0aGlzLmgrPTE7cmV0dXJuIHRoaXN9O2dtLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oYSl7S28odGhpcyk7YT1Mbyh0aGlzLGEpO3JldHVybiB0aGlzLmcuaGFzKGEpPyh0aGlzLmo9bnVsbCx0aGlzLmgtPXRoaXMuZy5nZXQoYSkubGVuZ3RoLHRoaXMuZy5kZWxldGUoYSkpOiExfTtnbS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmc9dGhpcy5qPW51bGw7dGhpcy5oPTB9O3ZhciBNbz1mdW5jdGlvbihhLGIpe0tvKGEpO2I9TG8oYSxiKTtyZXR1cm4gYS5nLmhhcyhiKX07Xy5tPWdtLnByb3RvdHlwZTsKXy5tLmZvckVhY2g9ZnVuY3Rpb24oYSxiKXtLbyh0aGlzKTt0aGlzLmcuZm9yRWFjaChmdW5jdGlvbihjLGQpe2MuZm9yRWFjaChmdW5jdGlvbihlKXthLmNhbGwoYixlLGQsdGhpcyl9LHRoaXMpfSx0aGlzKX07Xy5tLk9jPWZ1bmN0aW9uKCl7S28odGhpcyk7Zm9yKHZhciBhPUFycmF5LmZyb20odGhpcy5nLnZhbHVlcygpKSxiPUFycmF5LmZyb20odGhpcy5nLmtleXMoKSksYz1bXSxkPTA7ZDxiLmxlbmd0aDtkKyspZm9yKHZhciBlPWFbZF0sZj0wO2Y8ZS5sZW5ndGg7ZisrKWMucHVzaChiW2RdKTtyZXR1cm4gY307Xy5tLmliPWZ1bmN0aW9uKGEpe0tvKHRoaXMpO3ZhciBiPVtdO2lmKHR5cGVvZiBhPT09InN0cmluZyIpTW8odGhpcyxhKSYmKGI9Yi5jb25jYXQodGhpcy5nLmdldChMbyh0aGlzLGEpKSkpO2Vsc2V7YT1BcnJheS5mcm9tKHRoaXMuZy52YWx1ZXMoKSk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYj1iLmNvbmNhdChhW2NdKX1yZXR1cm4gYn07Cl8ubS5zZXQ9ZnVuY3Rpb24oYSxiKXtLbyh0aGlzKTt0aGlzLmo9bnVsbDthPUxvKHRoaXMsYSk7TW8odGhpcyxhKSYmKHRoaXMuaC09dGhpcy5nLmdldChhKS5sZW5ndGgpO3RoaXMuZy5zZXQoYSxbYl0pO3RoaXMuaCs9MTtyZXR1cm4gdGhpc307Xy5tLmdldD1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybiBiO2E9dGhpcy5pYihhKTtyZXR1cm4gYS5sZW5ndGg+MD9TdHJpbmcoYVswXSk6Yn07dmFyIE5vPWZ1bmN0aW9uKGEsYixjKXthLnJlbW92ZShiKTtjLmxlbmd0aD4wJiYoYS5qPW51bGwsYS5nLnNldChMbyhhLGIpLF8ud2EoYykpLGEuaCs9Yy5sZW5ndGgpfTsKZ20ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7aWYodGhpcy5qKXJldHVybiB0aGlzLmo7aWYoIXRoaXMuZylyZXR1cm4iIjtmb3IodmFyIGE9W10sYj1BcnJheS5mcm9tKHRoaXMuZy5rZXlzKCkpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXSxlPV8uR2IoZCk7ZD10aGlzLmliKGQpO2Zvcih2YXIgZj0wO2Y8ZC5sZW5ndGg7ZisrKXt2YXIgZz1lO2RbZl0hPT0iIiYmKGcrPSI9IitfLkdiKGRbZl0pKTthLnB1c2goZyl9fXJldHVybiB0aGlzLmo9YS5qb2luKCImIil9Owp2YXIgZW09ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGdtO2Iuaj1hLmo7YS5nJiYoYi5nPW5ldyBNYXAoYS5nKSxiLmg9YS5oKTtyZXR1cm4gYn0sTG89ZnVuY3Rpb24oYSxiKXtiPVN0cmluZyhiKTthLmwmJihiPWIudG9Mb3dlckNhc2UoKSk7cmV0dXJuIGJ9LE9vPWZ1bmN0aW9uKGEsYil7YiYmIWEubCYmKEtvKGEpLGEuaj1udWxsLGEuZy5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7dmFyIGU9ZC50b0xvd2VyQ2FzZSgpO2QhPWUmJih0aGlzLnJlbW92ZShkKSxObyh0aGlzLGUsYykpfSxhKSk7YS5sPWJ9O2dtLnByb3RvdHlwZS5leHRlbmQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylKbyhhcmd1bWVudHNbYl0sZnVuY3Rpb24oYyxkKXt0aGlzLmFkZChkLGMpfSx0aGlzKX07CnZhciBQbz0vWyNcL1w/QF0vZyxRbz0vWyNcP10vZyxSbz0vWyNcPzpdL2csU289LyMvZyxmbT1mdW5jdGlvbihhLGIpe3JldHVybiBhP2I/ZGVjb2RlVVJJKGEucmVwbGFjZSgvJTI1L2csIiUyNTI1IikpOmRlY29kZVVSSUNvbXBvbmVudChhKToiIn0sVG89L1sjXD9AXS9nLFVvPWZ1bmN0aW9uKGEpe2E9YS5jaGFyQ29kZUF0KDApO3JldHVybiIlIisoYT4+NCYxNSkudG9TdHJpbmcoMTYpKyhhJjE1KS50b1N0cmluZygxNil9LFZvPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIj8oYT1lbmNvZGVVUkkoYSkucmVwbGFjZShiLFVvKSxjJiYoYT1hLnJlcGxhY2UoLyUyNShbMC05YS1mQS1GXXsyfSkvZywiJSQxIikpLGEpOm51bGx9OwpabC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPXRoaXMubDtiJiZhLnB1c2goVm8oYixQbywhMCksIjoiKTt2YXIgYz10aGlzLmg7aWYoY3x8Yj09ImZpbGUiKWEucHVzaCgiLy8iKSwoYj10aGlzLkIpJiZhLnB1c2goVm8oYixQbywhMCksIkAiKSxhLnB1c2goXy5HYihjKS5yZXBsYWNlKC8lMjUoWzAtOWEtZkEtRl17Mn0pL2csIiUkMSIpKSxjPXRoaXMuQyxjIT1udWxsJiZhLnB1c2goIjoiLFN0cmluZyhjKSk7aWYoYz10aGlzLmopdGhpcy5oJiZjLmNoYXJBdCgwKSE9Ii8iJiZhLnB1c2goIi8iKSxhLnB1c2goVm8oYyxjLmNoYXJBdCgwKT09Ii8iP1FvOlJvLCEwKSk7KGM9dGhpcy5nLnRvU3RyaW5nKCkpJiZhLnB1c2goIj8iLGMpOyhjPXRoaXMuQSkmJmEucHVzaCgiIyIsVm8oYyxTbykpO3JldHVybiBhLmpvaW4oIiIpfTsKWmwucHJvdG90eXBlLnJlc29sdmU9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IFpsKHRoaXMpLGM9ISFhLmw7Yz8kbChiLGEubCk6Yz0hIWEuQjtjP2IuQj1hLkI6Yz0hIWEuaDtjP2FtKGIsYS5oKTpjPWEuQyE9bnVsbDt2YXIgZD1hLmo7aWYoYylibShiLGEuQyk7ZWxzZSBpZihjPSEhYS5qKXtpZihkLmNoYXJBdCgwKSE9Ii8iKWlmKHRoaXMuaCYmIXRoaXMuailkPSIvIitkO2Vsc2V7dmFyIGU9Yi5qLmxhc3RJbmRleE9mKCIvIik7ZSE9LTEmJihkPWIuai5zbGljZSgwLGUrMSkrZCl9ZT1kO2lmKGU9PSIuLiJ8fGU9PSIuIilkPSIiO2Vsc2UgaWYoZS5pbmRleE9mKCIuLyIpIT0tMXx8ZS5pbmRleE9mKCIvLiIpIT0tMSl7ZD1lLmxhc3RJbmRleE9mKCIvIiwwKT09MDtlPWUuc3BsaXQoIi8iKTtmb3IodmFyIGY9W10sZz0wO2c8ZS5sZW5ndGg7KXt2YXIgaD1lW2crK107aD09Ii4iP2QmJmc9PWUubGVuZ3RoJiZmLnB1c2goIiIpOmg9PSIuLiI/KChmLmxlbmd0aD4xfHxmLmxlbmd0aD09CjEmJmZbMF0hPSIiKSYmZi5wb3AoKSxkJiZnPT1lLmxlbmd0aCYmZi5wdXNoKCIiKSk6KGYucHVzaChoKSxkPSEwKX1kPWYuam9pbigiLyIpfWVsc2UgZD1lfWM/Y20oYixkKTpjPWEuZy50b1N0cmluZygpIT09IiI7Yz9kbShiLGVtKGEuZykpOmM9ISFhLkE7YyYmKGIuQT1hLkEpO3JldHVybiBifTsKdmFyICRsPWZ1bmN0aW9uKGEsYixjKXthLmw9Yz9mbShiLCEwKTpiO2EubCYmKGEubD1hLmwucmVwbGFjZSgvOiQvLCIiKSk7cmV0dXJuIGF9LGFtPWZ1bmN0aW9uKGEsYixjKXthLmg9Yz9mbShiLCEwKTpiO3JldHVybiBhfSxibT1mdW5jdGlvbihhLGIpe2lmKGIpe2I9TnVtYmVyKGIpO2lmKGlzTmFOKGIpfHxiPDApdGhyb3cgRXJyb3IoIkhgIitiKTthLkM9Yn1lbHNlIGEuQz1udWxsfSxjbT1mdW5jdGlvbihhLGIsYyl7YS5qPWM/Zm0oYiwhMCk6YjtyZXR1cm4gYX0sZG09ZnVuY3Rpb24oYSxiLGMpe2IgaW5zdGFuY2VvZiBnbT8oYS5nPWIsT28oYS5nLGEubykpOihjfHwoYj1WbyhiLFRvKSksYS5nPW5ldyBnbShiLGEubykpfSxXbz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIFpsP25ldyBabChhKTpuZXcgWmwoYSl9LFhvPWZ1bmN0aW9uKGEpe3ZhciBiPUlvKGEpO2lmKHR5cGVvZiBiPT0idW5kZWZpbmVkIil0aHJvdyBFcnJvcigiSiIpO3ZhciBjPW5ldyBnbShudWxsKTsKYT1IbyhhKTtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXSxmPWFbZF07QXJyYXkuaXNBcnJheShmKT9ObyhjLGUsZik6Yy5hZGQoZSxmKX1yZXR1cm4gY30sWW89e30sWm89e30sJG89e30sYXA9e30sam09e30scW09e30scG0sVW09e30sYnA9ZnVuY3Rpb24oYSxiLGMpe2E9YS5KO3JldHVybiBfLkhpKGEsYVtfLkhdfDAsYixjKXx8YltfLmZoXXx8KGJbXy5maF09Xy5naChiKSl9LHNuPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5HaShhLGIsXy5MaihjKSwiIil9O18ubT12bS5wcm90b3R5cGU7Xy5tLmNvbnRhaW5zPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzJiZhP2EgaW5zdGFuY2VvZiB2bT9hLmxlZnQ+PXRoaXMubGVmdCYmYS5yaWdodDw9dGhpcy5yaWdodCYmYS50b3A+PXRoaXMudG9wJiZhLmJvdHRvbTw9dGhpcy5ib3R0b206YS54Pj10aGlzLmxlZnQmJmEueDw9dGhpcy5yaWdodCYmYS55Pj10aGlzLnRvcCYmYS55PD10aGlzLmJvdHRvbTohMX07Cl8ubS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5jZWlsKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGguY2VpbCh0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLmNlaWwodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLmNlaWwodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307Xy5tLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5mbG9vcih0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLmZsb29yKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGguZmxvb3IodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLmZsb29yKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O18ubS5yb3VuZD1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGgucm91bmQodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5yb3VuZCh0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLnJvdW5kKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5yb3VuZCh0aGlzLmxlZnQpO3JldHVybiB0aGlzfTsKXy5tLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiB6bD8odGhpcy5sZWZ0Kz1hLngsdGhpcy5yaWdodCs9YS54LHRoaXMudG9wKz1hLnksdGhpcy5ib3R0b20rPWEueSk6KHRoaXMubGVmdCs9YSx0aGlzLnJpZ2h0Kz1hLHR5cGVvZiBiPT09Im51bWJlciImJih0aGlzLnRvcCs9Yix0aGlzLmJvdHRvbSs9YikpO3JldHVybiB0aGlzfTtfLm09d20ucHJvdG90eXBlO18ubS5jb250YWlucz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIHpsP2EueD49dGhpcy5sZWZ0JiZhLng8PXRoaXMubGVmdCt0aGlzLndpZHRoJiZhLnk+PXRoaXMudG9wJiZhLnk8PXRoaXMudG9wK3RoaXMuaGVpZ2h0OnRoaXMubGVmdDw9YS5sZWZ0JiZ0aGlzLmxlZnQrdGhpcy53aWR0aD49YS5sZWZ0K2Eud2lkdGgmJnRoaXMudG9wPD1hLnRvcCYmdGhpcy50b3ArdGhpcy5oZWlnaHQ+PWEudG9wK2EuaGVpZ2h0fTsKXy5tLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLmxlZnQ9TWF0aC5jZWlsKHRoaXMubGVmdCk7dGhpcy50b3A9TWF0aC5jZWlsKHRoaXMudG9wKTt0aGlzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLm0uZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLmxlZnQ9TWF0aC5mbG9vcih0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGguZmxvb3IodGhpcy50b3ApO3RoaXMud2lkdGg9TWF0aC5mbG9vcih0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Xy5tLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGgucm91bmQodGhpcy5sZWZ0KTt0aGlzLnRvcD1NYXRoLnJvdW5kKHRoaXMudG9wKTt0aGlzLndpZHRoPU1hdGgucm91bmQodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9OwpfLm0udHJhbnNsYXRlPWZ1bmN0aW9uKGEsYil7YSBpbnN0YW5jZW9mIHpsPyh0aGlzLmxlZnQrPWEueCx0aGlzLnRvcCs9YS55KToodGhpcy5sZWZ0Kz1hLHR5cGVvZiBiPT09Im51bWJlciImJih0aGlzLnRvcCs9YikpO3JldHVybiB0aGlzfTsKdmFyIGNwPWZ1bmN0aW9uKGEsYil7YTp7dmFyIGM9Xy5zZChhKTtpZihjLmRlZmF1bHRWaWV3JiZjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihjPWMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpKSl7Yz1jW2JdfHxjLmdldFByb3BlcnR5VmFsdWUoYil8fCIiO2JyZWFrIGF9Yz0iIn1yZXR1cm4gY3x8KGEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlW2JdOm51bGwpfHxhLnN0eWxlJiZhLnN0eWxlW2JdfSxkcD1mdW5jdGlvbihhKXt0eXBlb2YgYT09Im51bWJlciImJihhKz0icHgiKTtyZXR1cm4gYX0sZXA9ZnVuY3Rpb24oYSxiKXtpZihiIGluc3RhbmNlb2Ygemwpe3ZhciBjPWIueDtiPWIueX1lbHNlIGM9YixiPXZvaWQgMDthLnN0eWxlLmxlZnQ9ZHAoYyk7YS5zdHlsZS50b3A9ZHAoYil9LGZwPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChiKXtyZXR1cm57bGVmdDowLHRvcDowLHJpZ2h0OjAsCmJvdHRvbTowfX19LGdwPWZ1bmN0aW9uKGEpe3ZhciBiPV8uc2QoYSksYz1jcChhLCJwb3NpdGlvbiIpLGQ9Yz09ImZpeGVkInx8Yz09ImFic29sdXRlIjtmb3IoYT1hLnBhcmVudE5vZGU7YSYmYSE9YjthPWEucGFyZW50Tm9kZSlpZihhLm5vZGVUeXBlPT0xMSYmYS5ob3N0JiYoYT1hLmhvc3QpLGM9Y3AoYSwicG9zaXRpb24iKSxkPWQmJmM9PSJzdGF0aWMiJiZhIT1iLmRvY3VtZW50RWxlbWVudCYmYSE9Yi5ib2R5LCFkJiYoYS5zY3JvbGxXaWR0aD5hLmNsaWVudFdpZHRofHxhLnNjcm9sbEhlaWdodD5hLmNsaWVudEhlaWdodHx8Yz09ImZpeGVkInx8Yz09ImFic29sdXRlInx8Yz09InJlbGF0aXZlIikpcmV0dXJuIGE7cmV0dXJuIG51bGx9LGhwPWZ1bmN0aW9uKGEpe3ZhciBiPV8uc2QoYSksYz1uZXcgemwoMCwwKTtpZihhPT0oYj9fLnNkKGIpOmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQpcmV0dXJuIGM7YT1mcChhKTtiPV8ubGIoYik7Yj1LbihiLmcpO2MueD1hLmxlZnQrYi54OwpjLnk9YS50b3ArYi55O3JldHVybiBjfSxpcD1mdW5jdGlvbihhKXtmb3IodmFyIGI9bmV3IHZtKDAsSW5maW5pdHksSW5maW5pdHksMCksYz1fLmxiKGEpLGQ9Yy5nLmJvZHksZT1jLmcuZG9jdW1lbnRFbGVtZW50LGY9Sm4oYy5nKTthPWdwKGEpOylpZigoIV8uVmN8fGEuY2xpZW50SGVpZ2h0IT0wfHxhIT1kKSYmYSE9ZCYmYSE9ZSYmY3AoYSwib3ZlcmZsb3ciKSE9InZpc2libGUiKXt2YXIgZz1ocChhKSxoPW5ldyB6bChhLmNsaWVudExlZnQsYS5jbGllbnRUb3ApO2cueCs9aC54O2cueSs9aC55O2IudG9wPU1hdGgubWF4KGIudG9wLGcueSk7Yi5yaWdodD1NYXRoLm1pbihiLnJpZ2h0LGcueCthLmNsaWVudFdpZHRoKTtiLmJvdHRvbT1NYXRoLm1pbihiLmJvdHRvbSxnLnkrYS5jbGllbnRIZWlnaHQpO2IubGVmdD1NYXRoLm1heChiLmxlZnQsZy54KX1kPWYuc2Nyb2xsTGVmdDtmPWYuc2Nyb2xsVG9wO2IubGVmdD1NYXRoLm1heChiLmxlZnQsZCk7Yi50b3A9TWF0aC5tYXgoYi50b3AsCmYpO2M9Xy5pYihjLmcuZGVmYXVsdFZpZXd8fHdpbmRvdyk7Yi5yaWdodD1NYXRoLm1pbihiLnJpZ2h0LGQrYy53aWR0aCk7Yi5ib3R0b209TWF0aC5taW4oYi5ib3R0b20sZitjLmhlaWdodCk7cmV0dXJuIGIudG9wPj0wJiZiLmxlZnQ+PTAmJmIuYm90dG9tPmIudG9wJiZiLnJpZ2h0PmIubGVmdD9iOm51bGx9LGpwPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IHpsKDAsMCksZD1fLm1iKF8uc2QoYSkpO2E6e3RyeXtfLlFjKGQucGFyZW50KTt2YXIgZT0hMDticmVhayBhfWNhdGNoKGYpe31lPSExfWlmKCFlKXJldHVybiBjO2RvIGQ9PWI/ZT1ocChhKTooZT1mcChhKSxlPW5ldyB6bChlLmxlZnQsZS50b3ApKSxjLngrPWUueCxjLnkrPWUueTt3aGlsZShkJiZkIT1iJiZkIT1kLnBhcmVudCYmKGE9ZC5mcmFtZUVsZW1lbnQpJiYoZD1kLnBhcmVudCkpO3JldHVybiBjfSxscD1mdW5jdGlvbihhKXt2YXIgYj1rcDtpZihjcChhLCJkaXNwbGF5IikhPSJub25lIilyZXR1cm4gYihhKTt2YXIgYz0KYS5zdHlsZSxkPWMuZGlzcGxheSxlPWMudmlzaWJpbGl0eSxmPWMucG9zaXRpb247Yy52aXNpYmlsaXR5PSJoaWRkZW4iO2MucG9zaXRpb249ImFic29sdXRlIjtjLmRpc3BsYXk9ImlubGluZSI7YT1iKGEpO2MuZGlzcGxheT1kO2MucG9zaXRpb249ZjtjLnZpc2liaWxpdHk9ZTtyZXR1cm4gYX0sa3A9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0LGQ9Xy5WYyYmIWImJiFjO3JldHVybihiPT09dm9pZCAwfHxkKSYmYS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q/KGE9ZnAoYSksbmV3IF8uQ2EoYS5yaWdodC1hLmxlZnQsYS5ib3R0b20tYS50b3ApKTpuZXcgXy5DYShiLGMpfSxtcD1mdW5jdGlvbihhLGIpe2Euc3R5bGUuZGlzcGxheT1iPyIiOiJub25lIn0sbnA9ZnVuY3Rpb24oYSxiKXtiPV8ubGIoYik7dmFyIGM9SW4oYi5nLCJIRUFEIilbMF07aWYoIWMpe3ZhciBkPUluKGIuZywiQk9EWSIpWzBdO2M9Yi5TKCJIRUFEIik7ZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLApkKX1kPWIuUygiU1RZTEUiKTt2YXIgZT1fLk9hKCJzdHlsZSIsZG9jdW1lbnQpO2UmJmQuc2V0QXR0cmlidXRlKCJub25jZSIsZSk7YT1ObChhKTtfLnYudHJ1c3RlZFR5cGVzP18uQ2QoZCxhKTpkLmlubmVySFRNTD1hO2IuYXBwZW5kQ2hpbGQoYyxkKX0sb3A9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLkNhKGEub2Zmc2V0V2lkdGgsYS5vZmZzZXRIZWlnaHQpfSxwcD1mdW5jdGlvbihhLGIsYyl7YT1hLnN0eWxlO18uVWM/YS5Nb3pCb3hTaXppbmc9YzpfLlZjP2EuV2Via2l0Qm94U2l6aW5nPWM6YS5ib3hTaXppbmc9YzthLndpZHRoPU1hdGgubWF4KGIud2lkdGgsMCkrInB4IjthLmhlaWdodD1NYXRoLm1heChiLmhlaWdodCwwKSsicHgifSxxcD1mdW5jdGlvbihhLGIpe3BwKGEsYiwiY29udGVudC1ib3giKX0scnA9ZnVuY3Rpb24oYSl7aWYoYSE9bnVsbClzd2l0Y2goYS5KZCl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgLTE6cmV0dXJuLTE7Y2FzZSAwOnJldHVybiAwfXJldHVybiBudWxsfSwKc3A9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBfLnhsP1huKGEpPyEwOiEhYS5tYSgpOmEgaW5zdGFuY2VvZiBfLnpmPyEhYS5tYSgpOiEhYX0sdHA9LzwvZyx1cD1mdW5jdGlvbihhLGIpe2E9YS5yZXBsYWNlKC88XC8vZywiPFxcLyIpLnJlcGxhY2UoL1xdXF0+L2csIl1dXFw+Iik7cmV0dXJuIGI/YS5yZXBsYWNlKC97L2csIiBcXHsiKS5yZXBsYWNlKC99L2csIiBcXH0iKS5yZXBsYWNlKC9cL1wqL2csIi8gKiIpLnJlcGxhY2UoL1xcJC8sIlxcICIpOmF9LHZwPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO2Zvcih2YXIgYj1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPU1hdGgubWluKGUubGVuZ3RoLWYsZC5sZW5ndGgpLGg9MDtoPGc7aCsrKXt2YXIgaz1lW2YraF07aWYoZFtoXSE9PSgiQSI8PWsmJms8PSJaIj9rLnRvTG93ZXJDYXNlKCk6aykpcmV0dXJuITF9cmV0dXJuITB9LGM9MDsoYz1hLmluZGV4T2YoIjwiLGMpKSE9LTE7KXtpZihiKCJceDNjL3NjcmlwdCIsCmEsYyl8fGIoIlx4M2MhLS0iLGEsYykpcmV0dXJuInpTb3l6IjtjKz0xfXJldHVybiBhfSx3cD1mdW5jdGlvbihhLGIpe3JldHVybiBhIT1udWxsJiZhLlpiPT09Yn0seHA9ZnVuY3Rpb24oYSl7cmV0dXJuIHdwKGEsJG8pP2EubWEoKTphIGluc3RhbmNlb2YgXy5MYT9fLk5hKGEpLnRvU3RyaW5nKCk6ImFib3V0OmludmFsaWQjelNveXoifSx6cD1mdW5jdGlvbigpe3ZhciBhO3dwKCIiLGFwKT9hPSIiLm1hKCk6YT15cC50ZXN0KCIiKT8iIjoielNveXoiO3dwKGEsYXApJiYoYT1hLm1hKCkpO3JldHVybihhJiYhYS5zdGFydHNXaXRoKCIgIik/IiAiOiIiKSthfSxBcD1mdW5jdGlvbihhKXtyZXR1cm4gd3AoYSxfLm9sKT91cChhLm1hKCksITEpOmE9PW51bGw/IiI6YSBpbnN0YW5jZW9mIF8ucGw/dXAoTmwoYSksITEpOnVwKFN0cmluZyhhKSwhMCl9LEJwPXsiXHgwMCI6IiYjMDsiLCJcdCI6IiYjOTsiLCJcbiI6IiYjMTA7IiwiXHYiOiImIzExOyIsIlxmIjoiJiMxMjsiLCJcciI6IiYjMTM7IiwKIiAiOiImIzMyOyIsJyInOiImcXVvdDsiLCImIjoiJmFtcDsiLCInIjoiJiMzOTsiLCItIjoiJiM0NTsiLCIvIjoiJiM0NzsiLCI8IjoiJmx0OyIsIj0iOiImIzYxOyIsIj4iOiImZ3Q7IiwiYCI6IiYjOTY7IiwiXHUwMDg1IjoiJiMxMzM7IiwiXHUwMGEwIjoiJiMxNjA7IiwiXHUyMDI4IjoiJiM4MjMyOyIsIlx1MjAyOSI6IiYjODIzMzsifSxDcD1mdW5jdGlvbihhKXtyZXR1cm4gQnBbYV19LERwPXsiXHgwMCI6IlxceDAwIiwiXGIiOiJcXHgwOCIsIlx0IjoiXFx0IiwiXG4iOiJcXG4iLCJcdiI6IlxceDBiIiwiXGYiOiJcXGYiLCJcciI6IlxcciIsJyInOiJcXHgyMiIsJDoiXFx4MjQiLCImIjoiXFx4MjYiLCInIjoiXFx4MjciLCIoIjoiXFx4MjgiLCIpIjoiXFx4MjkiLCIqIjoiXFx4MmEiLCIrIjoiXFx4MmIiLCIsIjoiXFx4MmMiLCItIjoiXFx4MmQiLCIuIjoiXFx4MmUiLCIvIjoiXFwvIiwiOiI6IlxceDNhIiwiPCI6IlxceDNjIiwiPSI6IlxceDNkIiwiPiI6IlxceDNlIiwiPyI6IlxceDNmIiwKIlsiOiJcXHg1YiIsIlxcIjoiXFxcXCIsIl0iOiJcXHg1ZCIsIl4iOiJcXHg1ZSIsInsiOiJcXHg3YiIsInwiOiJcXHg3YyIsIn0iOiJcXHg3ZCIsIlx1MDA4NSI6IlxceDg1IiwiXHUyMDI4IjoiXFx1MjAyOCIsIlx1MjAyOSI6IlxcdTIwMjkifSxFcD1mdW5jdGlvbihhKXtyZXR1cm4gRHBbYV19LEZwPXsiXHgwMCI6IlxcMCAiLCJcYiI6IlxcOCAiLCJcdCI6IlxcOSAiLCJcbiI6IlxcYSAiLCJcdiI6IlxcYiAiLCJcZiI6IlxcYyAiLCJcciI6IlxcZCAiLCciJzoiXFwyMiAiLCImIjoiXFwyNiAiLCInIjoiXFwyNyAiLCIoIjoiXFwyOCAiLCIpIjoiXFwyOSAiLCIqIjoiXFwyYSAiLCIvIjoiXFwyZiAiLCI6IjoiXFwzYSAiLCI7IjoiXFwzYiAiLCI8IjoiXFwzYyAiLCI9IjoiXFwzZCAiLCI+IjoiXFwzZSAiLCJAIjoiXFw0MCAiLCJcXCI6IlxcNWMgIiwieyI6IlxcN2IgIiwifSI6IlxcN2QgIiwiXHUwMDg1IjoiXFw4NSAiLCJcdTAwYTAiOiJcXGEwICIsIlx1MjAyOCI6IlxcMjAyOCAiLAoiXHUyMDI5IjoiXFwyMDI5ICJ9LEdwPWZ1bmN0aW9uKGEpe3JldHVybiBGcFthXX0sSHA9eyJceDAwIjoiJTAwIiwiXHUwMDAxIjoiJTAxIiwiXHUwMDAyIjoiJTAyIiwiXHUwMDAzIjoiJTAzIiwiXHUwMDA0IjoiJTA0IiwiXHUwMDA1IjoiJTA1IiwiXHUwMDA2IjoiJTA2IiwiXHUwMDA3IjoiJTA3IiwiXGIiOiIlMDgiLCJcdCI6IiUwOSIsIlxuIjoiJTBBIiwiXHYiOiIlMEIiLCJcZiI6IiUwQyIsIlxyIjoiJTBEIiwiXHUwMDBlIjoiJTBFIiwiXHUwMDBmIjoiJTBGIiwiXHUwMDEwIjoiJTEwIiwiXHUwMDExIjoiJTExIiwiXHUwMDEyIjoiJTEyIiwiXHUwMDEzIjoiJTEzIiwiXHUwMDE0IjoiJTE0IiwiXHUwMDE1IjoiJTE1IiwiXHUwMDE2IjoiJTE2IiwiXHUwMDE3IjoiJTE3IiwiXHUwMDE4IjoiJTE4IiwiXHUwMDE5IjoiJTE5IiwiXHUwMDFhIjoiJTFBIiwiXHUwMDFiIjoiJTFCIiwiXHUwMDFjIjoiJTFDIiwiXHUwMDFkIjoiJTFEIiwiXHUwMDFlIjoiJTFFIiwiXHUwMDFmIjoiJTFGIiwKIiAiOiIlMjAiLCciJzoiJTIyIiwiJyI6IiUyNyIsIigiOiIlMjgiLCIpIjoiJTI5IiwiPCI6IiUzQyIsIj4iOiIlM0UiLCJcXCI6IiU1QyIsInsiOiIlN0IiLCJ9IjoiJTdEIiwiXHUwMDdmIjoiJTdGIiwiXHUwMDg1IjoiJUMyJTg1IiwiXHUwMGEwIjoiJUMyJUEwIiwiXHUyMDI4IjoiJUUyJTgwJUE4IiwiXHUyMDI5IjoiJUUyJTgwJUE5IiwiXHVmZjAxIjoiJUVGJUJDJTgxIiwiXHVmZjAzIjoiJUVGJUJDJTgzIiwiXHVmZjA0IjoiJUVGJUJDJTg0IiwiXHVmZjA2IjoiJUVGJUJDJTg2IiwiXHVmZjA3IjoiJUVGJUJDJTg3IiwiXHVmZjA4IjoiJUVGJUJDJTg4IiwiXHVmZjA5IjoiJUVGJUJDJTg5IiwiXHVmZjBhIjoiJUVGJUJDJThBIiwiXHVmZjBiIjoiJUVGJUJDJThCIiwiXHVmZjBjIjoiJUVGJUJDJThDIiwiXHVmZjBmIjoiJUVGJUJDJThGIiwiXHVmZjFhIjoiJUVGJUJDJTlBIiwiXHVmZjFiIjoiJUVGJUJDJTlCIiwiXHVmZjFkIjoiJUVGJUJDJTlEIiwiXHVmZjFmIjoiJUVGJUJDJTlGIiwKIlx1ZmYyMCI6IiVFRiVCQyVBMCIsIlx1ZmYzYiI6IiVFRiVCQyVCQiIsIlx1ZmYzZCI6IiVFRiVCQyVCRCJ9LElwPWZ1bmN0aW9uKGEpe3JldHVybiBIcFthXX0sSnA9L1tceDAwXHgyMlx4MjZceDI3XHgzY1x4M2VdL2csS3A9ZnVuY3Rpb24oYSl7cmV0dXJuIHdwKGEsXy5xbCk/YTphIGluc3RhbmNlb2YgXy5EYz8oMCxfLnRsKShfLmtqKGEpLnRvU3RyaW5nKCkpOigwLF8udGwpKFN0cmluZyhTdHJpbmcoYSkpLnJlcGxhY2UoSnAsQ3ApLHJwKGEpKX0sTHA9L1tceDAwXHgyMlx4MjdceDNjXHgzZV0vZyxNcD1mdW5jdGlvbihhKXtyZXR1cm4geG0oU3RyaW5nKGEpLGZ1bmN0aW9uKCl7cmV0dXJuIiJ9KS5yZXBsYWNlKHRwLCImbHQ7Iil9LFA9ZnVuY3Rpb24oYSl7d3AoYSxfLnFsKT8oYT1NcChhLm1hKCkpLGE9U3RyaW5nKGEpLnJlcGxhY2UoTHAsQ3ApKTphPVN0cmluZyhhKS5yZXBsYWNlKEpwLENwKTtyZXR1cm4gYX0sTnA9L1tceDAwXHgwOS1ceDBkIFx4MjJceDI2XHgyN1x4MmRcL1x4M2MtXHgzZWBceDg1XHhhMFx1MjAyOFx1MjAyOV0vZywKT3A9L1tceDAwXHgwOS1ceDBkIFx4MjJceDI3XHgyZFwvXHgzYy1ceDNlYFx4ODVceGEwXHUyMDI4XHUyMDI5XS9nLFBwPS9bXHgwMFx4MDgtXHgwZFx4MjJceDI2XHgyN1wvXHgzYy1ceDNlXHg1Yi1ceDVkXHg3Ylx4N2RceDg1XHUyMDI4XHUyMDI5XS9nLFFwPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIiBudWxsICI7aWYod3AoYSxZbykpcmV0dXJuIGEubWEoKTtpZihhIGluc3RhbmNlb2YgXy5QYSlyZXR1cm4gXy5SYShhKS50b1N0cmluZygpO3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAiYm9vbGVhbiI6Y2FzZSAibnVtYmVyIjpyZXR1cm4iICIrYSsiICI7ZGVmYXVsdDpyZXR1cm4iJyIrU3RyaW5nKFN0cmluZyhhKSkucmVwbGFjZShQcCxFcCkrIicifX0sUnA9L1tceDAwXHgwOC1ceDBkXHgyMlx4MjYtXHgyYVwvXHgzYS1ceDNlQFxcXHg3Ylx4N2RceDg1XHhhMFx1MjAyOFx1MjAyOV0vZyxTcD0vW1x4MDAtIFx4MjJceDI3LVx4MjlceDNjXHgzZVxcXHg3Ylx4N2RceDdmXHg4NVx4YTBcdTIwMjhcdTIwMjlcdWZmMDFcdWZmMDNcdWZmMDRcdWZmMDYtXHVmZjBjXHVmZjBmXHVmZjFhXHVmZjFiXHVmZjFkXHVmZjFmXHVmZjIwXHVmZjNiXHVmZjNkXS9nLApUcD0vXig/IWphdmFzY3JpcHQ6KSg/OlthLXowLTkrLi1dKzp8W14mOlwvPyNdKig/OltcLz8jXXwkKSkvaSxVcD1mdW5jdGlvbihhKXt3cChhLFpvKXx8d3AoYSwkbyk/YT1TdHJpbmcoYSkucmVwbGFjZShTcCxJcCk6YSBpbnN0YW5jZW9mIF8uTGE/KGE9Xy5OYShhKS50b1N0cmluZygpLGE9U3RyaW5nKGEpLnJlcGxhY2UoU3AsSXApKTooYT1TdHJpbmcoYSksYT1UcC50ZXN0KGEpP2EucmVwbGFjZShTcCxJcCk6ImFib3V0OmludmFsaWQjelNveXoiKTtyZXR1cm4gYX0sVnA9L15bXiY6XC8/I10qKD86W1wvPyNdfCQpfF5odHRwcz86fF5maWxlc3lzdGVtOmh0dHBzPzp8XmZ0cDp8XmRhdGE6aW1hZ2VcL1thLXowLTkrLV0rO2Jhc2U2NCxbYS16MC05K1wvXSs9KiR8XmJsb2I6L2ksV3A9ZnVuY3Rpb24oYSl7d3AoYSxabyl8fHdwKGEsJG8pP2E9U3RyaW5nKGEpLnJlcGxhY2UoU3AsSXApOmEgaW5zdGFuY2VvZiBfLkxhPyhhPV8uTmEoYSkudG9TdHJpbmcoKSxhPVN0cmluZyhhKS5yZXBsYWNlKFNwLApJcCkpOihhPVN0cmluZyhhKSxhPVZwLnRlc3QoYSk/YS5yZXBsYWNlKFNwLElwKToiYWJvdXQ6aW52YWxpZCN6U295eiIpO3JldHVybiBhfSx5cD0vXig/IW9ufHNyY3woPzphY3Rpb258YXJjaGl2ZXxiYWNrZ3JvdW5kfGNpdGV8Y2xhc3NpZHxjb2RlYmFzZXxjb250ZW50fGRhdGF8ZHN5bmN8aHJlZnxodHRwLWVxdWl2fGxvbmdkZXNjfHN0eWxlfHVzZW1hcClccyokKSg/OlthLXowLTlfJDotXSopJC9pLFhwPS9eW2EtekEtWjAtOStcL18tXSs9ezAsMn0kLyxZcD1mdW5jdGlvbihhKXthPVN0cmluZyhhKTtyZXR1cm4gWHAudGVzdChhKT9hOiJ6U295eiJ9LFpwPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihacCxfLkopO3ZhciBDbT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgWnA7cmV0dXJuIEdsKGIsMyxhLF8uQmopfTt2YXIgJHA9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKCRwLF8uSik7JHAucHJvdG90eXBlLkphPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTih0aGlzLDIpfTskcC5wcm90b3R5cGUuTmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHNuKHRoaXMsMixhKX07JHAucHJvdG90eXBlLm9hPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTih0aGlzLDMpfTskcC5wcm90b3R5cGUubmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHNuKHRoaXMsMyxhKX07dmFyIGFxPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihhcSxfLkopO3ZhciBicT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoYnEsXy5KKTt2YXIgY3E9Xy5NaihicSk7dmFyIGRxPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhfX0sZXE9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoLTI7Yys9Myl7dmFyIGQ9Yi5jaGFyQXQoYysyKTtkPWQ+PSJhIj9kLmNoYXJDb2RlQXQoMCktODc6TnVtYmVyKGQpO2Q9Yi5jaGFyQXQoYysxKT09IisiP2E+Pj5kOmE8PGQ7YT1iLmNoYXJBdChjKT09IisiP2ErZCY0Mjk0OTY3Mjk1OmFeZH1yZXR1cm4gYX0sZ3E9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWZxLnNwbGl0KCIuIiksYz1OdW1iZXIoYlswXSl8fDAsZD1bXSxlPTAsZj0wO2Y8YS5sZW5ndGg7ZisrKXt2YXIgZz1hLmNoYXJDb2RlQXQoZik7ZzwxMjg/ZFtlKytdPWc6KGc8MjA0OD9kW2UrK109Zz4+NnwxOTI6KChnJjY0NTEyKT09NTUyOTYmJmYrMTxhLmxlbmd0aCYmKGEuY2hhckNvZGVBdChmKzEpJjY0NTEyKT09NTYzMjA/KGc9NjU1MzYrKChnJjEwMjMpPDwxMCkrKGEuY2hhckNvZGVBdCgrK2YpJjEwMjMpLGRbZSsrXT0KZz4+MTh8MjQwLGRbZSsrXT1nPj4xMiY2M3wxMjgpOmRbZSsrXT1nPj4xMnwyMjQsZFtlKytdPWc+PjYmNjN8MTI4KSxkW2UrK109ZyY2M3wxMjgpfWE9Yztmb3IoZT0wO2U8ZC5sZW5ndGg7ZSsrKWErPWRbZV0sYT1lcShhLCIrLWFeKzYiKTthPWVxKGEsIistM14rYistZiIpO2FePU51bWJlcihiWzFdKXx8MDthPDAmJihhPShhJjIxNDc0ODM2NDcpKzIxNDc0ODM2NDgpO2I9YSUxRTY7cmV0dXJuIGIudG9TdHJpbmcoKSsiLiIrKGJeYyl9LGhxPWZ1bmN0aW9uKCl7dmFyIGE9ZHEoU3RyaW5nLmZyb21DaGFyQ29kZSgxMTYpKSxiPWRxKFN0cmluZy5mcm9tQ2hhckNvZGUoMTA3KSk7YT1bYSgpLGEoKV07YVsxXT1iKCk7cmV0dXJuIGEuam9pbigiIil9O3ZhciBpcT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoaXEsXy5KKTt2YXIganE9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKGpxLF8uSik7dmFyIGtxPV8uTWooanEpO3ZhciBscT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIobHEsXy5KKTt2YXIgT249IiIsbXE9InByb2QiLG5xPSIiLG9xPSJlbiIsQW49IiIscHE9bmV3IGpxLHFxPSExLHJxPW5ldyBEYXRlLHNxPXt9LEJuPTAsdHE9InRlIixmcT0iIix1cT0iIix2cT0iaHR0cHM6Ly8iLHdxPSIiLHhxPSIiLHlxPSIiLHpxPSIiLEFxPSIiLEJxPSIiLENxPSJodHRwczovL3d3dy5nb29nbGUuY29tL2ltYWdlcy9jbGVhcmRvdC5naWYiLERxPSJodHRwczovL3d3dy5nc3RhdGljLmNvbS9pbWFnZXMvYnJhbmRpbmcvZ29vZ2xlbG9nby8xeC9nb29nbGVsb2dvX2NvbG9yXzY4eDI4ZHAucG5nIixFcT0iaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL3Byb2R1Y3QvMXgvdHJhbnNsYXRlXzI0ZHAucG5nIixGcT0iaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL2dvb2dsZWxvZ28vMXgvZ29vZ2xlbG9nb19jb2xvcl80MngxNmRwLnBuZyIsR3E9Imh0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZS5jb20iLEhxPSIiLElxPSIiLEpxPSIiLEtxPQpmdW5jdGlvbigpe0hxPSIvLyIrQnErIi90cmFuc2xhdGVfc3VnZ2VzdGlvbj9jbGllbnQ9Iit0cTtJcT0iLy8iK3VxKyIvdHJhbnNsYXRlX3ZvdGluZz9jbGllbnQ9Iit0cTtKcT0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zdXBwb3J0L3RyYW5zbGF0ZSIrKG9xPT0iZW4iPyIiOiIjZ29vZ3RyYW5zL2VuLyIrb3EpfSxMcT1mdW5jdGlvbihhKXtPbj13aW5kb3cuZ29vZ2xlJiZ3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZSYmd2luZG93Lmdvb2dsZS50cmFuc2xhdGUudnx8IiI7bXE9YS5fY2Vudnx8InByb2QiO25xPWEuVWd8fCIiO29xPWEuX2NsfHwiZW4iO0FuPWEuX2N1YztwcT1hLl9jZWY/a3EoYS5fY2VmKTpuZXcganE7cXE9YS5fY25hZDtycT1hLl9jZXN0fHxuZXcgRGF0ZTtzcT1hLl9jbmFsfHx7fTtCbj1hLl9jYW09PSJsaWIiPzE6MDt0cT0oYS5fY2FjfHwidGUiKSsoQm49PTE/Il9saWIiOiIiKTtmcT1mdW5jdGlvbigpe2Z1bmN0aW9uIGIoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fQp2YXIgYz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEwNyksZD1iKFN0cmluZy5mcm9tQ2hhckNvZGUoMTE2KSk7Yz1iKGMpO2Q9W2QoKSxkKCldO2RbMV09YygpO3JldHVybiBhWyJfYyIrZC5qb2luKGMoKSldfHwiIn0oKTt1cT1hLl9wYWh8fCIiO3ZxPWEuX3Bhc3x8Imh0dHBzOi8vIjt3cT1hLl9wYml8fCIiO3hxPWEuX3BjaXx8IiI7eXE9YS5fcGxsYXx8IiI7enE9YS5fcGxpfHwiIjtBcT1hLl9wc3x8IiI7QnE9YS5fcHVofHwiIjtDcT0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbWFnZXMvY2xlYXJkb3QuZ2lmIjtEcT0iaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL2dvb2dsZWxvZ28vMXgvZ29vZ2xlbG9nb19jb2xvcl82OHgyOGRwLnBuZyI7RXE9Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9wcm9kdWN0LzF4L3RyYW5zbGF0ZV8yNGRwLnBuZyI7RnE9Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9nb29nbGVsb2dvLzF4L2dvb2dsZWxvZ29fY29sb3JfNDJ4MTZkcC5wbmciOwpHcT0iaHR0cHM6Ly90cmFuc2xhdGUuZ29vZ2xlLmNvbSI7S3EoKX07d2luZG93Lmdvb2dsZSYmd2luZG93Lmdvb2dsZS50cmFuc2xhdGUmJndpbmRvdy5nb29nbGUudHJhbnNsYXRlLl9jb25zdD9McSh3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZS5fY29uc3QpOkxxKHtfY2FjOiIiLF9jYW06IiIsX2NlZjoiIixfY2VzdDpuZXcgRGF0ZSxfY2VudjoiIixVZzoiIixfY2dhazoiIixfY2psYzoiIixfY2w6IiIsX2NsbDoiIixfY3VjOiIiLF9jbmFkOiExLF9jbmFsOnt9LENrOiIiLF9wYWg6IiIsX3BhczoiIixfcGJpOiIiLF9wY2k6IiIsX3BoZjoiIixfcGxpOiIiLF9wbGxhOiIiLF9wbWk6IiIsX3BzOiIiLF9wdGE6IiIsX3B1aDoiIn0pO3ZhciBNcT1mdW5jdGlvbihhLGIpe3RoaXMuZz1hO3RoaXMubz1ifSxCbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgVHlwZUVycm9yKCJxYWAiK2IrImAiK2EuZysiYCIrYS5vKyJgIit0eXBlb2YgYS5vKX07TXEucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vO2lmKGE9PW51bGwpYT1udWxsO2Vsc2UgaWYodHlwZW9mIGEhPT0ic3RyaW5nIil0aHJvdyBCbSh0aGlzLCJzdHJpbmciKTtpZihhPT09bnVsbCl0aHJvdyBFcnJvcigicGFgIit0aGlzLmcpO3JldHVybiBhfTsKdmFyIEFtPWZ1bmN0aW9uKCl7dmFyIGE9YT09PXZvaWQgMD93aW5kb3c6YTthPWE9PT12b2lkIDA/d2luZG93OmE7YT1hPT09dm9pZCAwP3dpbmRvdzphO2E9YS5XSVpfZ2xvYmFsX2RhdGE7YT1uZXcgTXEoInhXdXVHYyIsYSYmInhXdXVHYyJpbiBhP2EueFd1dUdjOm51bGwpO3ZhciBiPVtdLGM9TnEoYSk7cmV0dXJuIGM9PT1udWxsP09xKGEsYik6Y30sTnE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vO2lmKGI9PW51bGwpcmV0dXJuIG51bGw7QXJyYXkuaXNBcnJheShiKXx8KHR5cGVvZiBiIT09InN0cmluZyI/Yj1bYl06KGI9Yi50cmltKCksYj1iPT0iIj9bXTpiLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBjLnRyaW0oKX0pKSk7cmV0dXJuIE9xKGEsYil9LE9xPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nKyJbIjtyZXR1cm4gQXJyYXkuZnJvbShiLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIG5ldyBNcShjK2UrIl0iLGQpfSl9OwpNcS5wcm90b3R5cGUub2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubztpZihiPT1udWxsKXtpZihhPT09dm9pZCAwKXRocm93IEVycm9yKCJwYWAiK3RoaXMuZyk7cmV0dXJuIGF9aWYodHlwZW9mIGI9PT0ib2JqZWN0IiYmYi5jb25zdHJ1Y3Rvcj09PU9iamVjdCl7YT17fTt2YXIgYz10aGlzLmcrIi4iLGQ7Zm9yKGQgaW4gYilhW2RdPW5ldyBNcShjK2QsYltkXSk7cmV0dXJuIGF9dGhyb3cgQm0odGhpcywib2JqZWN0Iik7fTt2YXIgUHE9ZnVuY3Rpb24oKXt2YXIgYTt0aGlzLmc9YT1hPT09dm9pZCAwP0RtKCk6YX07UHEucHJvdG90eXBlLmxvZz1mdW5jdGlvbihhKXtfLmFsKHRoaXMuZyxhKX07dmFyIFFxPW5ldyBQcTt2YXIgUnE9RW0oImluaXRpYWxpemVkIiksU3E9RW0oImluaXRpYXRlZCIpLFRxPUVtKCJyZXN0b3JlZCIpLFVxPUVtKCJwYWdlX2xvYWRfdG9faW5pdGlhbGl6ZWQiKSxWcT1FbSgiaW5pdGlhbGl6YXRpb25fdG9fdHJhbnNsYXRpb25fdHJpZ2dlcmVkIik7dmFyIFdxPWZ1bmN0aW9uKGEpe3ZhciBiPSJ4YiI7aWYoYS54YiYmYS5oYXNPd25Qcm9wZXJ0eShiKSlyZXR1cm4gYS54YjtiPW5ldyBhO3JldHVybiBhLnhiPWJ9Oy8qCgpNYXRoLnV1aWQuanMgKHYxLjQpCmh0dHA6Ly93d3cuYnJvb2ZhLmNvbQptYWlsdG86cm9iZXJ0QGJyb29mYS5jb20KQ29weXJpZ2h0IChjKSAyMDEwIFJvYmVydCBLaWVmZmVyCkR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgoqLwp2YXIgWHE9IjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Ii5zcGxpdCgiIik7Zm9yKHZhciBZcSxacT1BcnJheSgzNiksJHE9MCxhcixicj0wO2JyPDM2O2JyKyspYnI9PTh8fGJyPT0xM3x8YnI9PTE4fHxicj09MjM/WnFbYnJdPSItIjpicj09MTQ/WnFbYnJdPSI0IjooJHE8PTImJigkcT0zMzU1NDQzMitNYXRoLnJhbmRvbSgpKjE2Nzc3MjE2fDApLGFyPSRxJjE1LCRxPj49NCxacVticl09WHFbYnI9PTE5P2FyJjN8ODphcl0pO1lxPVpxLmpvaW4oIiIpOwp2YXIgY3I9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZz1hPWE9PT12b2lkIDA/WXE6YTt0aGlzLkViPWI9PT12b2lkIDA/IiI6Yjt0aGlzLkZiPWM9PT12b2lkIDA/IiI6Y30sZ3I9ZnVuY3Rpb24oYSl7dmFyIGI9ZHIoYSw3KTtlcihhLGIpO2ZyKGIsNyl9LGhyPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5sYj09PXZvaWQgMD8wOmIubGI7dmFyIGQ9Yi5NZj09PXZvaWQgMD8wOmIuTWY7dmFyIGU9Yi5nZz09PXZvaWQgMD8wOmIuZ2c7dmFyIGY9Yi5MZj09PXZvaWQgMD8wOmIuTGY7Yj1kcihhLDgpO2VyKGEsYik7YT1uZXcgUm47Yz1fLmlrKGEsMSxjKTtkPV8uaWsoYywzLGQpO2U9Xy5payhkLDIsZSk7ZT1fLmlrKGUsNCxmKTtmPVVuKGIpO18uTChmLDYsZSk7TWF0aC5yYW5kb20oKT49LjAwNXx8KGI9Xy5MayhObig4KSxfLldqKGIpKSxRcS5sb2coYikpfSxkcj1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBfLmxsO2M9Xy5UaihjLDUwLG9xKTt2YXIgZD1uZXcgVG47Yj1fLmtrKGQsMSxiKTsKYj1fLlRqKGIsMix0cSk7YT1fLlRqKGIsMyxhLmcpO3JldHVybiBfLkwoYywxMTIsYSl9LGZyPWZ1bmN0aW9uKGEsYil7YT1fLkxrKE5uKGIpLF8uV2ooYSkpO1FxLmxvZyhhKX0sZXI9ZnVuY3Rpb24oYSxiKXtiLk5hKGEuRWIpO2IubmEoYS5GYil9O3ZhciBpcj1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz0wO2M8YS5sZW5ndGg7KytjKWJbYVtjXV09ITA7cmV0dXJuIGJ9LGpyPWZ1bmN0aW9uKGEpe3RoaXMuaD1hP1thXTpbXTt0aGlzLmc9WzBdO3RoaXMuaj0hMX07anIucHJvdG90eXBlLnBhc3NlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmp9O2pyLnByb3RvdHlwZS5yZWdpc3Rlcj1mdW5jdGlvbihhKXtpZih0aGlzLmopcmV0dXJuIGF8fGZ1bmN0aW9uKCl7fTt0aGlzLmcucHVzaCgwKTt2YXIgYj10aGlzLmcubGVuZ3RoLTE7cmV0dXJuKDAsXy55KShmdW5jdGlvbigpe3RoaXMuZ1tiXSsrO2EmJmEuYXBwbHkobnVsbCxhcmd1bWVudHMpO2tyKHRoaXMpfSx0aGlzKX07CmpyLnByb3RvdHlwZS5kZWxheT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5qP2E6KDAsXy55KShmdW5jdGlvbigpe2lmKHRoaXMuailhLmFwcGx5KG51bGwsYXJndW1lbnRzKTtlbHNle3ZhciBiPWFyZ3VtZW50czt0aGlzLmgucHVzaChmdW5jdGlvbigpe2EuYXBwbHkobnVsbCxiKX0pfX0sdGhpcyl9O2pyLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLmdbMF09MTtrcih0aGlzKX07CnZhciBrcj1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEuZy5sZW5ndGg7KytiKWlmKGEuZ1tiXT09MClyZXR1cm47YS5qPSEwO2ZvcihiPTA7YjxhLmgubGVuZ3RoOysrYil7dmFyIGM9YS5oW2JdO2EuaFtiXT1udWxsO2MuY2FsbCgpfWEuaD1bXTthLmc9W119LGxyPWZ1bmN0aW9uKGEpe3RoaXMuaj1hO3RoaXMuaD10aGlzLmc9ITF9LG1yPWZ1bmN0aW9uKGEsYil7cmV0dXJuKDAsXy55KShmdW5jdGlvbigpe2ImJmIuYXBwbHkobnVsbCxhcmd1bWVudHMpO3RoaXMuaD90aGlzLmd8fCh0aGlzLmouY2FsbCgpLHRoaXMuZz0hMCk6dGhpcy5nPSEwfSxhKX07bHIucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbigpe3RoaXMuaHx8KHRoaXMuaD0hMCx0aGlzLmcmJnRoaXMuai5jYWxsKCkpfTt2YXIgbnI9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZz1iO3RoaXMuQj1hO3RoaXMuQT1jfHwwO3RoaXMuaj10aGlzLmg9ITF9LG9yPWZ1bmN0aW9uKGEpe2EuaHx8YS5vKCl9Owpuci5wcm90b3R5cGUubz1mdW5jdGlvbigpeyh0aGlzLmg9KHRoaXMuaj0hIXRoaXMuQi5jYWxsKCkpfHwtLXRoaXMuQTw9MCk/KHRoaXMuZy5jYWxsKG51bGwsdGhpcy5qKSx0aGlzLmw9MCk6dGhpcy5sPXdpbmRvdy5zZXRUaW1lb3V0KCgwLF8ueSkodGhpcy5vLHRoaXMpLDMwKX07bnIucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbigpe3RoaXMubCYmd2luZG93LmNsZWFyVGltZW91dCh0aGlzLmwpO3RoaXMuaD0hMDt0aGlzLmcuY2FsbChudWxsLHRoaXMuail9Owp2YXIgcHI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXthLmRpc3BhdGNoRXZlbnQoYil9fSxxcj1mdW5jdGlvbihhKXthPV8uQWMoYSkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCJfIiwiLSIpO2lmKGE9PSJ6aC1jbiIpcmV0dXJuInpoLUNOIjtpZihhPT0iemgtdHciKXJldHVybiJ6aC1UVyI7dmFyIGI9YS5pbmRleE9mKCItIik7YT1iPj0wP2Euc3Vic3RyaW5nKDAsYik6YTtyZXR1cm4gYT09InpoIj8iemgtQ04iOmF9LHJyPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM7Zm9yKGMgaW4gYSlpZihhW2NdIT09T2JqZWN0LnByb3RvdHlwZVtjXSl7dmFyIGQ9Xy5HYihjKTtpZihfLm9jKGFbY10pPT0iYXJyYXkiKWZvcih2YXIgZT0wO2U8YVtjXS5sZW5ndGg7KytlKWIucHVzaChkKyI9IitfLkdiKGFbY11bZV0pKTtlbHNlIGIucHVzaChkKyI9IitfLkdiKGFbY10pKX1yZXR1cm4gYi5qb2luKCImIil9LFFtPWZ1bmN0aW9uKGEsYil7Yj1ifHx7fTtiLm5jYT1hO2IuY2xpZW50PXRxOwpPbiYmKGIubG9nbGQ9InYiK09uKTt2YXIgYz1uZXcgSW1hZ2U7Yy5zcmM9Ii8vIitCcSsiL2dlbjIwND8iK3JyKGIpO2Mub25sb2FkPWZ1bmN0aW9uKCl7Yy5vbmxvYWQ9bnVsbH19LHRyPWZ1bmN0aW9uKGEsYil7aWYoKF8uU2N8fF8uUmMpJiZ3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUhPWRvY3VtZW50LmRvbWFpbil7c3I9c3I/c3IrMToxO3ZhciBjPSJmIitzcisiXyIrRGF0ZS5ub3coKS50b1N0cmluZygzNik7d2luZG93W2NdPWZ1bmN0aW9uKCl7d2luZG93W2NdPXZvaWQgMDthLnNyYz0iIyI7YiYmd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtiKCl9LDApfTthLnNyYz0iamF2YXNjcmlwdDp2b2lkKGRvY3VtZW50LndyaXRlKFwiPHNjcmlwdD5kb2N1bWVudC5kb21haW49JyIrZG9jdW1lbnQuZG9tYWluKyInO3BhcmVudFsnIitjKyInXSgpO1x4M2Mvc2NyaXB0PlwiKSkifWVsc2UgYiYmYigpfSxzcix1cj1mdW5jdGlvbigpe3ZhciBhPXt9O3RyeXtmb3IodmFyIGIgaW4gT2JqZWN0LnByb3RvdHlwZSl7dmFyIGM9Ck9iamVjdC5wcm90b3R5cGVbYl07ZGVsZXRlIE9iamVjdC5wcm90b3R5cGVbYl07YVtiXT1jfX1jYXRjaChkKXtyZXR1cm57fX1yZXR1cm4gYX0sdnI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpT2JqZWN0LnByb3RvdHlwZVtiXT1hW2JdfSx3cj1mdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlpZihhW2JdIT09T2JqZWN0LnByb3RvdHlwZVtiXSlyZXR1cm4hMTtyZXR1cm4hMH0seHI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSE9ImF1dG8iJiZhIT0iemgtQ04iJiZhPT1ifSx5cj1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5oYXNoLm1hdGNoKC9nb29nbGVcLnRyYW5zbGF0ZVwuZWxlbWVudFwuc3A9KFteJl0rKS8pO3JldHVybiBhJiZhWzFdP2FbMV06bnVsbH07dmFyIFBtPW51bGwsenI9bnVsbCxBcj1mdW5jdGlvbigpe307QXIucHJvdG90eXBlLmF0dGFjaD1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkIGluIGMpY1tkXSE9PU9iamVjdC5wcm90b3R5cGVbZF0mJihiW2RdPXR5cGVvZiBjW2RdPT09ImZ1bmN0aW9uIj9jW2RdOl8uWmooUm0sYSxOdW1iZXIoY1tkXSkpKX07dmFyIENyPWZ1bmN0aW9uKCl7UG0mJkJyKCk7UG09W107enI9Xy54KHdpbmRvdywicGFnZWhpZGUiLGZ1bmN0aW9uKCl7QnIoKX0pfSxCcj1mdW5jdGlvbigpe3pyJiYoXy5WZCh6ciksenI9bnVsbCk7UG0mJlBtLmxlbmd0aCYmUW0oUG0uam9pbigiIikpO1BtPW51bGx9LERyPW5ldyBBcjt2YXIgRXI9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKEVyLF8uSik7dmFyIFRtPV8uS2koRXIpO3ZhciBTbTt2YXIgRnI9ZnVuY3Rpb24oYSl7dGhpcy51cmw9YTt0aGlzLnRpbWVvdXQ9LTE7dGhpcy5qPXRoaXMuaD0iY2FsbGJhY2siO3RoaXMuZz10aGlzLndiPW51bGx9LEpyPWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwP3t9OmI7YS5nPUdvKCk7dmFyIGM9bmV3IFpsKGEudXJsKSxkPW5ldyBNYXA7YS5qJiZkLnNldChhLmosYS5oKTtjLmcuZXh0ZW5kKFhvKGIpLGQpO0dyKGEpLnRoZW4oZnVuY3Rpb24oKXtIcihhLGMudG9TdHJpbmcoKSl9KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGEuZy5wcm9taXNlfSkudGhlbihmdW5jdGlvbigpe0lyKGEpfSxmdW5jdGlvbigpe0lyKGEpfSk7YS50aW1lb3V0PjAmJihhLmw9c2V0VGltZW91dChmdW5jdGlvbigpe2EuZy5yZWplY3QoRXJyb3IoInJhIikpfSxhLnRpbWVvdXQpKTtyZXR1cm4gYS5nLnByb21pc2V9LEhyPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IE1lc3NhZ2VDaGFubmVsO2Eud2IuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh7dXJsOmIsCmNhbGxiYWNrTmFtZTphLmh9LCIqIixbYy5wb3J0Ml0pO2MucG9ydDEub25tZXNzYWdlPWZ1bmN0aW9uKGQpe3ZhciBlPXt9O2EubCE9PXZvaWQgMCYmKGNsZWFyVGltZW91dChhLmwpLGEubD12b2lkIDApO2QuZGF0YT09PXZvaWQgMCYmYS5nLnJlamVjdChFcnJvcigic2EiKSk7dHlwZW9mIGQuZGF0YSE9PSJzdHJpbmciJiZhLmcucmVqZWN0KEVycm9yKCJ0YSIpKTt0cnl7ZT1KU09OLnBhcnNlKGQuZGF0YSl9Y2F0Y2goZil7YS5nLnJlamVjdChFcnJvcigidWFgIitmLm1lc3NhZ2UpKX1hLmcucmVzb2x2ZShlKX19LEdyPWZ1bmN0aW9uKGEpe3ZhciBiPUdvKCksYz1fLndkKGRvY3VtZW50LCJJRlJBTUUiKTtpZighYy5zYW5kYm94KXRocm93IEVycm9yKCJ2YSIpO2Muc2FuZGJveC52YWx1ZT0iYWxsb3ctc2NyaXB0cyI7Yy5zdHlsZS5kaXNwbGF5PSJub25lIjthLndiPWM7YT1WbSgpO2E9U2woW18ubWwoIjwhRE9DVFlQRSBodG1sPiIpLFlsKFFsKGEpKV0pO2Muc3JjZG9jPV8ua2ooYSk7CmE9RmwoImRhdGE6dGV4dC9odG1sO2NoYXJzZXQ9VVRGLTg7YmFzZTY0LCIrYnRvYShfLmtqKGEpLnRvU3RyaW5nKCkpKTtjLnNyYz1fLk5hKGEpLnRvU3RyaW5nKCk7Yy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe3JldHVybiBiLnJlc29sdmUoYyl9LCExKTtjLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixmdW5jdGlvbihkKXtiLnJlamVjdChkIGluc3RhbmNlb2YgRXJyb3I/ZDpFcnJvcihTdHJpbmcoZCkpKX0sITEpO2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChjKTtyZXR1cm4gYi5wcm9taXNlfSxJcj1mdW5jdGlvbihhKXthLndiIT09bnVsbCYmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZChhLndiKSxhLndiPW51bGwpfTt2YXIgS3I9ZnVuY3Rpb24oYSxiKXtfLnUuY2FsbCh0aGlzKTt0aGlzLmc9bmV3IFpsKGEpO2lmKGIpZm9yKHZhciBjIGluIGIpYltjXSE9PU9iamVjdC5wcm90b3R5cGVbY10mJnRoaXMuZy5nLnNldChjLGJbY10pfTtfLkIoS3IsXy51KTtLci5wcm90b3R5cGUuVGE9ZnVuY3Rpb24oKXtyZXR1cm4hMH07S3IucHJvdG90eXBlLlNhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGEoKX07S3IucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gXy5ZaShudWxsKX07S3IucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbigpe307dmFyIExyPWZ1bmN0aW9uKGEsYixjKXtLci5jYWxsKHRoaXMsYSxiKTthPXRoaXMuaD1uZXcgRnIodGhpcy5nKTthLmg9ImNhbGxiYWNrIjthLmo9Yz09PXZvaWQgMD8iY2FsbGJhY2siOmN9O18uQihMcixLcik7THIucHJvdG90eXBlLlRhPWZ1bmN0aW9uKCl7cmV0dXJuITB9OwpMci5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihhKXtyZXR1cm4gSnIodGhpcy5oLGEpfTtMci5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKGEpe2EuY2FuY2VsKCl9O3ZhciBNcj1mdW5jdGlvbihhLGIpe0tyLmNhbGwodGhpcyxhLGIpO3RoaXMuaD17fTt0aGlzLmo9MH07Xy5CKE1yLEtyKTtNci5wcm90b3R5cGUuVGE9ZnVuY3Rpb24oKXtyZXR1cm4hMH07Ck1yLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz11cigpLGQ9Kyt0aGlzLmosZT17fSxmPXt9OyJxImluIGEmJihmLnE9YS5xLGRlbGV0ZSBhLnEpO2UuaGE9bmV3IF8uV2Y7dGhpcy5nLmguZW5kc1dpdGgoIi5jb3JwLmdvb2dsZS5jb20iKSYmKGUuaGEuQz0hMCk7dmFyIGc9bmV3IF8ub2UoZnVuY3Rpb24oaCxrKXtfLngoZS5oYSwiY29tcGxldGUiLGZ1bmN0aW9uKCl7aWYoIWUuUmUpe2lmKF8uZ2coZS5oYSkpe3ZhciBsPV8uaWcoZS5oYSk7TnIoYixkKTtyZXR1cm4gaChsKX1iLnhpKCk7bD1fLmlnKGUuaGEpO05yKGIsZCk7cmV0dXJuIGsobCl9fSk7Xy54KGUuaGEsInRpbWVvdXQiLGZ1bmN0aW9uKCl7aWYoIWUuUmUpcmV0dXJuIGIuemkoKSxOcihiLGQpLGsoKX0pfSk7ZS5oYS5zZW5kKHRoaXMuZy50b1N0cmluZygpKyImIitycihhKSwiUE9TVCIscnIoZikseyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSk7CnRoaXMuaFtkXT1lO3ZyKGMpO3JldHVybiBnfTtNci5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuaFthXTtiJiYoYi5SZT0hMCxOcih0aGlzLGEpKX07dmFyIE5yPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5oW2JdO2MmJihjLmhhJiYoYy5oYS5kaXNwb3NlKCksYy5oYT1udWxsKSxkZWxldGUgYS5oW2JdKX07TXIucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtLci5wcm90b3R5cGUuTS5jYWxsKHRoaXMpO2Zvcih2YXIgYSBpbiB0aGlzLmgpdGhpcy5jYW5jZWwoYSl9O0RyLmF0dGFjaCgxNzE3MCxNci5wcm90b3R5cGUse3ppOjEseGk6Mn0pO3ZhciBPcj1mdW5jdGlvbihhLGIsYyl7S3IuY2FsbCh0aGlzLGEsYyk7dGhpcy5oPWIucHJveHlJc1N1cHBvcnRlZDt0aGlzLmo9ZnVuY3Rpb24oZCxlLGYpe3JldHVybiBfLllpKGIucHJveHlTZW5kKGQsZSxmKSl9O3RoaXMubD1iLnByb3h5Q2FuY2VsfTtfLkIoT3IsS3IpO09yLnByb3RvdHlwZS5UYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmgoKX07Ck9yLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaih0aGlzLmcudG9TdHJpbmcoKSxhLGIpfTtPci5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKGEpe3RoaXMubChhKX07dmFyIFByPWZ1bmN0aW9uKGEsYil7Xy51LmNhbGwodGhpcyk7dGhpcy5oPWE7dGhpcy5nPWI/YjpudWxsfTtfLkIoUHIsXy51KTtQci5wcm90b3R5cGUuTT1mdW5jdGlvbigpe18udS5wcm90b3R5cGUuTS5jYWxsKHRoaXMpfTt2YXIgUnI9ZnVuY3Rpb24oYSxiLGMsZCl7Xy51LmNhbGwodGhpcyk7dmFyIGU7Yj9lPXtjbGllbnQ6Yn06ZT17YW5ubzozLGNsaWVudDp0cSxmb3JtYXQ6Imh0bWwiLHY6IjEuMCJ9O2MmJihlLnNwPWMpO2Uua2V5PWE7T24mJihlLmxvZ2xkPSJ2IitPbik7dGhpcy5nPW51bGw7dGhpcy5oPXtIZjozMDB9O2E9dGhpcy5BPW5ldyBQcihlLGQpO2I9dnEreXE7dGhpcy5vPWEuZz9uZXcgT3IoYixhLmcse2NsaWVudDp0cX0pOm5ldyBMcihiLHtjbGllbnQ6dHF9KTthPXRoaXMuQTtpZihhLmcpe2lmKCFhLmcpdGhyb3cgRXJyb3IoIndhIik7YT1be3ZhOm5ldyBPcih2cSt1cSsiL3RyYW5zbGF0ZV9hL3QiLGEuZyxhLmgpLGNlOjE5MDAsSWY6NDI5NDk2NzI5NSxHZjotMSxXZjowLEtkOiExfV19ZWxzZSBhPVt7dmE6bmV3IE1yKHZxK3VxKyIvdHJhbnNsYXRlX2EvdCIsYS5oKSxjZTozMDcyMCxJZjo0Mjk0OTY3Mjk1LEdmOi0xLFdmOjAsS2Q6ITF9XTt0aGlzLkI9bmV3IFFyKGEpO3RoaXMuaj0KITE7Zm9yKGI9MDtiPGEubGVuZ3RoOysrYil0aGlzLmo9dGhpcy5qfHxhW2JdLnZhLlRhKCk7dGhpcy5qfHx0aGlzLm5pKCl9O18uQihScixfLnUpO1JyLnByb3RvdHlwZS5pbml0aWFsaXplPWZ1bmN0aW9uKGEpe3RoaXMuQ3x8KHRoaXMuQz0hMCx0aGlzLkIuc3RhcnQoKDAsXy55KShmdW5jdGlvbihiKXtiJiYodGhpcy5nPWIsdGhpcy5oLnZhPWIudmEpO2EoKX0sdGhpcykpKX07UnIucHJvdG90eXBlLlRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07UnIucHJvdG90eXBlLlNhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZyE9PW51bGwmJnRoaXMuZy52YSE9PW51bGwmJnRoaXMuZy52YS5TYSgpfTsKdmFyIFNyPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD17cTpjLnN1YnN0cmluZygwLGEuaC5IZiksc2w6ImF1dG8iLHRsOiJlbiJ9O3JldHVybiBuZXcgXy5vZShmdW5jdGlvbihlLGYpe2EuaC52YS5zZW5kKGQsYikudGhlbihmdW5jdGlvbihnKXt0cnl7dmFyIGg9SlNPTi5wYXJzZShnKTtlKGgmJmhbMV18fG51bGwpfWNhdGNoKGspe2UobnVsbCl9fSxmdW5jdGlvbihnKXtyZXR1cm4gZihnfHxudWxsKX0pfSl9OwpSci5wcm90b3R5cGUudHJhbnNsYXRlPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dmFyIGs9dGhpcyxsPXtxOmIsc2w6Yyx0bDpkfTtsLnRjPWU7ZiYmKGwuY3R0PTEpO2cmJihsLmRvbT0xKTtoJiYobC5zcj0xKTtsW2hxKCldPWdxKGIuam9pbigiIikpO3JldHVybiBuZXcgXy5vZShmdW5jdGlvbihuLHEpe2suZy52YS5zZW5kKGwsYSkudGhlbihmdW5jdGlvbihwKXtpZihwKXtpZih0eXBlb2YgcCE9PSJvYmplY3QiKXRyeXtwPUpTT04ucGFyc2UocCl9Y2F0Y2goQSl7ay5taSgpO3EoKTtyZXR1cm59aWYoXy5vYyhwKSE9ImFycmF5Iil2YXIgcj1bW3AsMjAwXV07ZWxzZSBpZihwLmxlbmd0aD09MiYmXy5vYyhwWzBdKSE9ImFycmF5IiYmXy5vYyhwWzFdKSE9ImFycmF5IilyPVtbcFswXSwyMDAscFsxXV0sW3BbMV0sMjAwLHBbMV1dXTtlbHNle3I9W107Zm9yKHZhciB0PTA7dDxwLmxlbmd0aDsrK3Qpclt0XT1fLm9jKHBbdF0pIT0iYXJyYXkiP1twW3RdLDIwMF06W3BbdF1bMF0sCjIwMCxwW3RdWzFdXX1uKHIpfWVsc2UgcSgpfSl9KX07dmFyIFRyPWZ1bmN0aW9uKGEsYil7YiBpbnN0YW5jZW9mIF8ub2U/Yi50aGVuKGZ1bmN0aW9uKGMpe2EuZy52YS5jYW5jZWwoYyl9KTphLmcudmEuY2FuY2VsKGIpfTtSci5wcm90b3R5cGUubD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcuS2Q/dGhpcy5nLmNlLShuZXcgWmwodGhpcy5nLnZhLmcpKS50b1N0cmluZygpLmxlbmd0aDp0aGlzLmcuY2V9O1JyLnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7Xy51LnByb3RvdHlwZS5NLmNhbGwodGhpcyk7dGhpcy5nJiYodGhpcy5nLnZhLmRpc3Bvc2UoKSx0aGlzLmcudmE9bnVsbCk7dGhpcy5oLnZhPW51bGw7dGhpcy5vLmRpc3Bvc2UoKTt0aGlzLm89bnVsbH07RHIuYXR0YWNoKDczNjEsUnIucHJvdG90eXBlLHtuaTpmdW5jdGlvbigpe1FtKCJ0ZV9hdSIpfX0pO0RyLmF0dGFjaCg0NzUwNCxSci5wcm90b3R5cGUse21pOmZ1bmN0aW9uKCl7UW0oInRlX2FmYnIiKX19KTsKdmFyIFFyPWZ1bmN0aW9uKGEpe3RoaXMuaD1hfTtRci5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oYSl7dGhpcy5nPWE7dGhpcy5qPTA7VXIodGhpcyl9O3ZhciBVcj1mdW5jdGlvbihhKXtpZihhLmo+PWEuaC5sZW5ndGgpYS5nKG51bGwpO2Vsc2V7dmFyIGI9YS5oW2EuaisrXTtiLklpP29yKG5ldyBucigoMCxfLnkpKGIudmEuU2EsYi52YSksKDAsXy55KShmdW5jdGlvbihjKXtjP3RoaXMuZyhiKTpVcih0aGlzKX0sYSksYi5JaSkpOmIudmEuU2EoKT9hLmcoYik6VXIoYSl9fTt2YXIgVnI9aXIoIkEgQUJCUiBBQ1JPTllNIEIgQkFTRUZPTlQgQkRPIEJJRyBDSVRFIERGTiBFTSBGT05UIEkgSU5QVVQgTk9CUiBMQUJFTCBRIFJUIFMgU01BTEwgU1BBTiBTVFJJS0UgU1RST05HIFNVQiBTVVAgVEVYVEFSRUEgVFQgVSBWQVIiLnNwbGl0KCIgIikpLFdyPWlyKCJBUFBMRVQgQVJFQSBCQVNFIEZSQU1FIEZSQU1FU0VUIEhSIExJTksgTUVUQSBOT0ZSQU1FUyBOT1NDUklQVCBJTlBVVCBURVhUQVJFQSBUSVRMRSIuc3BsaXQoIiAiKSksWHI9aXIoIkJSIENPREUgSU1HIEtCRCBNQVAgT0JKRUNUIFBBUkFNIFJQIFNDUklQVCBTVFlMRSBXQlIgc3ZnIi5zcGxpdCgiICIpKSxZcj1pcihbInN1Ym1pdCIsImJ1dHRvbiJdKTtYbS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3JldHVybiBacn07dmFyIFpyPXtkb25lOiEwLHZhbHVlOnZvaWQgMH07WG0ucHJvdG90eXBlLm89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dmFyIGFzPWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy5oPSEhYjt0aGlzLm5vZGU9bnVsbDt0aGlzLmc9MDt0aGlzLmo9ITE7dGhpcy5sPSFjO2EmJiRyKHRoaXMsYSxkKTt0aGlzLmRlcHRoPWUhPXZvaWQgMD9lOnRoaXMuZ3x8MDt0aGlzLmgmJih0aGlzLmRlcHRoKj0tMSl9O18uRyhhcyxYbSk7dmFyICRyPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGEubm9kZT1iKWEuZz10eXBlb2YgYz09PSJudW1iZXIiP2M6YS5ub2RlLm5vZGVUeXBlIT0xPzA6YS5oPy0xOjE7dHlwZW9mIGQ9PT0ibnVtYmVyIiYmKGEuZGVwdGg9ZCl9LGJzPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaD8tMToxO2EuZz09YiYmKGEuZz1iKi0xLGEuZGVwdGgrPWEuZyooYS5oPy0xOjEpKX07CmFzLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7aWYodGhpcy5qKXtpZighdGhpcy5ub2RlfHx0aGlzLmwmJnRoaXMuZGVwdGg9PTApcmV0dXJuIFpyO3ZhciBhPXRoaXMubm9kZTt2YXIgYj10aGlzLmg/LTE6MTtpZih0aGlzLmc9PWIpe3ZhciBjPXRoaXMuaD9hLmxhc3RDaGlsZDphLmZpcnN0Q2hpbGQ7Yz8kcih0aGlzLGMpOiRyKHRoaXMsYSxiKi0xKX1lbHNlKGM9dGhpcy5oP2EucHJldmlvdXNTaWJsaW5nOmEubmV4dFNpYmxpbmcpPyRyKHRoaXMsYyk6JHIodGhpcyxhLnBhcmVudE5vZGUsYiotMSk7dGhpcy5kZXB0aCs9dGhpcy5nKih0aGlzLmg/LTE6MSl9ZWxzZSB0aGlzLmo9ITA7cmV0dXJuKGE9dGhpcy5ub2RlKT97dmFsdWU6YSxkb25lOiExfTpacn07YXMucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlPT10aGlzLm5vZGUmJighdGhpcy5ub2RlfHxhLmc9PXRoaXMuZyl9Owphcy5wcm90b3R5cGUuc3BsaWNlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubm9kZSxjPXRoaXMuaD8xOi0xO3RoaXMuZz09YyYmKHRoaXMuZz1jKi0xLHRoaXMuZGVwdGgrPXRoaXMuZyoodGhpcy5oPy0xOjEpKTt0aGlzLmg9IXRoaXMuaDthcy5wcm90b3R5cGUubmV4dC5jYWxsKHRoaXMpO3RoaXMuaD0hdGhpcy5oO2M9Xy5xYShhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7Zm9yKHZhciBkPWMubGVuZ3RoLTE7ZD49MDtkLS0peG8oY1tkXSxiKTtfLkFkKGIpfTt2YXIgZHM9ZnVuY3Rpb24oYSxiKXt0aGlzLmw9ITE7dGhpcy5qPV8uU2M/W106bnVsbDt0aGlzLmg9W107dGhpcy5kb25lPSExO2Zvcih0aGlzLmc9bmV3IGFzKGEsITEsYixhLm5vZGVUeXBlPT09Mz8wOjEsMSk7YT1hLnBhcmVudE5vZGU7KWNzKHRoaXMsYSwhMCk7dGhpcy5oLnB1c2goITEpO3RoaXMuaC5yZXZlcnNlKCk7Zm9yKGE9MTthPHRoaXMuaC5sZW5ndGg7KythKXRoaXMuaFthXT09bnVsbCYmKHRoaXMuaFthXT10aGlzLmhbYS0xXSl9LGNzPWZ1bmN0aW9uKGEsYixjKXtjPWM9PT12b2lkIDA/ITE6Yzt2YXIgZD0oYi5zdHlsZSYmYi5zdHlsZS53aGl0ZVNwYWNlfHwiIikuc3Vic3RyaW5nKDAsMyk7ZD09PSJwcmUifHwhZCYmYi50YWdOYW1lPT09IlBSRSI/YS5oLnB1c2goITApOmQmJmQhPT0icHJlIj9hLmgucHVzaCghMSk6Yz9hLmgucHVzaChudWxsKTphLmgucHVzaChhLmhbYS5oLmxlbmd0aC0xXSl9LGVzPWZ1bmN0aW9uKGEpe3JldHVybiEhYS5oW2EuaC5sZW5ndGgtCjFdfTtkcy5wcm90b3R5cGUubm9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcubm9kZX07ZHMucHJvdG90eXBlLmRlcHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZy5kZXB0aH07CmRzLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dHJ5e3RoaXMuaiYmdGhpcy5qLmxlbmd0aD4wJiZ0aGlzLmcuZz09PS0xJiZ0aGlzLmoubGVuZ3RoLS07dGhpcy5nLmc9PT0tMSYmdGhpcy5oLmxlbmd0aC0tO2lmKHRoaXMuaiYmdGhpcy5qLmxlbmd0aD4wJiZ0aGlzLmcuZyE9PTEmJiF0aGlzLmcubm9kZS5uZXh0U2libGluZykkcih0aGlzLmcsdGhpcy5qW3RoaXMuai5sZW5ndGgtMV0sLTEsdGhpcy5nLmRlcHRoLTEpO2Vsc2V7dmFyIGE9dGhpcy5nLm5leHQoKTt0aGlzLmw9ITA7aWYoYS5kb25lKXt0aGlzLmRvbmU9ITA7cmV0dXJufXRoaXMuaiYmdGhpcy5nLmc9PT0xJiZ0aGlzLmoucHVzaCh0aGlzLmcubm9kZSl9dGhpcy5nLmc9PT0xJiZ0aGlzLmwmJmNzKHRoaXMsdGhpcy5nLm5vZGUpfWNhdGNoKGIpe3RoaXMud2koYiksdGhpcy5kb25lPSEwfX07RHIuYXR0YWNoKDUyNzU0LGRzLnByb3RvdHlwZSx7d2k6MX0pO3ZhciBRPXt9LGZzPWZ1bmN0aW9uKCl7UVswXT0iT3ZlcnNldHQiO1FbMV09IkF2YnJ5dCI7UVsyXT0iTHVrayI7UVszXT1mdW5jdGlvbihhKXtyZXR1cm4iR29vZ2xlIGhhciBvdmVyc2F0dCBkZW5uZSBzaWRlbiB0aWwgIithKyIgYXV0b21hdGlzayJ9O1FbNF09ZnVuY3Rpb24oYSl7cmV0dXJuIk92ZXJzYXR0IHRpbDogIithfTtRWzVdPSJGZWlsOiBUamVuZXJlbiBrdW5uZSBpa2tlIGZ1bGxmXHUwMGY4cmUgZm9yZXNwXHUwMGY4cnNlbGVuLiBQclx1MDBmOHYgcFx1MDBlNSBueXR0IHNlbmVyZS4iO1FbNl09IkxlcyBtZXIiO1FbN109ZnVuY3Rpb24oYSl7cmV0dXJuIkRyZXZldCBhdiAiK2F9O1FbOF09Ik92ZXJzZXR0ZXIiO1FbOV09Ik92ZXJzZXR0ZWxzZSBwXHUwMGU1Z1x1MDBlNXIiO1FbMTBdPWZ1bmN0aW9uKGEpe3JldHVybiJWaWwgZHUgb3ZlcnNldHRlIGRlbm5lIHNpZGVuIHRpbCAiK2ErIiBtZWQgR29vZ2xlIE92ZXJzZXR0ZXI/In07UVsxMV09ZnVuY3Rpb24oYSl7cmV0dXJuIlZpcyBkZW5uZSBzaWRlbiBwXHUwMGU1OiAiKwphfTtRWzEyXT0iVmlzIG9yaWdpbmFsIjtRWzEzXT0iSW5uaG9sZGV0IHBcdTAwZTUgZGVubmUgbG9rYWxlIGZpbGVuIHNlbmRlcyB0aWwgR29vZ2xlIHZpYSBlbiBzaWtrZXIgdGlsa29ibGluZyBmb3IgXHUwMGU1IGJsaSBvdmVyc2F0dC4iO1FbMTRdPSJJbm5ob2xkZXQgcFx1MDBlNSBkZW5uZSBzaWtyZSBzaWRlbiBzZW5kZXMgdGlsIEdvb2dsZSB2aWEgZW4gc2lra2VyIHRpbGtvYmxpbmcgZm9yIFx1MDBlNSBibGkgb3ZlcnNhdHQuIjtRWzE1XT0iSW5uaG9sZGV0IHBcdTAwZTUgZGVubmUgaW50cmFuZXR0c2lkZW4gc2VuZGVzIHRpbCBHb29nbGUgdmlhIGVuIHNpa2tlciB0aWxrb2JsaW5nIGZvciBcdTAwZTUgYmxpIG92ZXJzYXR0LiI7UVsxNl09IlZlbGcgc3ByXHUwMGU1ayI7UVsxN109ZnVuY3Rpb24oYSl7cmV0dXJuIlNsXHUwMGU1IGF2IG92ZXJzZXR0ZWxzZSB0aWwgIithfTtRWzE4XT1mdW5jdGlvbihhKXtyZXR1cm4iRGVha3RpdmVyIGZvcjogIithfTtRWzE5XT0iU2tqdWwgYWxsdGlkIjsKUVsyMF09Ik9yaWdpbmFsdGVrc3Q6IjtRWzIxXT0iQmlkcmEgbWVkIGVuIGJlZHJlIG92ZXJzZXR0ZWxzZSI7UVsyMl09IkJpZHJhIjtRWzIzXT0iT3ZlcnNldHQgYWx0IjtRWzI0XT0iR2plbm9wcHJldHQgYWx0IjtRWzI1XT0iQXZicnl0IGFsdCI7UVsyNl09Ik92ZXJzZXR0IGRlbGVuZSB0aWwgbWl0dCBzcHJcdTAwZTVrIjtRWzI3XT1mdW5jdGlvbihhKXtyZXR1cm4iT3ZlcnNldHQgYWx0IHRpbCAiK2F9O1FbMjhdPSJWaXMgb3BwcmlubmVsaWdlIHNwclx1MDBlNWsiO1FbMjldPSJBbHRlcm5hdGl2ZXIiO1FbMzBdPSJTbFx1MDBlNSBhdiBvdmVyc2V0dGVsc2UgZm9yIGRldHRlIG5ldHRzdGVkZXQiO1FbMzFdPW51bGw7UVszMl09IlZpcyBhbHRlcm5hdGl2ZSBvdmVyc2V0dGVsc2VyIjtRWzMzXT0iS2xpa2sgcFx1MDBlNSBvcmQgb3ZlbmZvciBmb3IgXHUwMGU1IGZcdTAwZTUgYWx0ZXJuYXRpdmUgb3ZlcnNldHRlbHNlciI7UVszNF09IkJydWsiO1FbMzVdPSJEcmEgbWVkIFNoaWZ0LXRhc3QgZm9yIFx1MDBlNSBlbmRyZSByZWtrZWZcdTAwZjhsZ2UiOwpRWzM2XT0iS2xpa2sgZm9yIFx1MDBlNSBzZSBhbHRlcm5hdGl2ZSBvdmVyc2V0dGVsc2VyIjtRWzM3XT0iSG9sZCBuZWRlIFNoaWZ0LXRhc3Rlbiwga2xpa2ssIG9nIGRyYSBkZXJldHRlciBvcmRlbmUgb3ZlbmZvciBmb3IgXHUwMGU1IGVuZHJlIHBcdTAwZTUgcmVra2VmXHUwMGY4bGdlbi4iO1FbMzhdPSJUYWtrIGZvciBhdCBkdSBiaWRyYXIgbWVkIG92ZXJzZXR0ZWxzZXNmb3JzbGFnZXQgZGl0dCB0aWwgR29vZ2xlIE92ZXJzZXR0ZXIuIjtRWzM5XT0iQWRtaW5pc3RyZXIgb3ZlcnNldHRpbmcgZm9yIGRldHRlIG5ldHRzdGVkZXQiO1FbNDBdPSJLbGlrayBwXHUwMGU1IGV0IG9yZCBmb3IgXHUwMGU1IHNlIGFsdGVybmF0aXZlIG92ZXJzZXR0ZWxzZXIsIGVsbGVyIGRvYmJlbHRrbGlrayBmb3IgXHUwMGU1IHJlZGlnZXJlIGRpcmVrdGUiO1FbNDFdPSJPcHByaW5uZWxpZyB0ZWtzdCI7UVs0Ml09Ik92ZXJzZXR0ZXIiO1FbNDNdPSJPdmVyc2V0dCI7UVs0NF09IlJldHRpbmdlbiBkaW4gZXIgc2VuZHQgaW5uLiI7ClFbNDVdPSJGZWlsOiBTcHJcdTAwZTVrZXQgdGlsIG5ldHRzaWRlbiBzdFx1MDBmOHR0ZXMgaWtrZS4iO1FbNDZdPSJNb2R1bCBmb3Igc3ByXHUwMGU1a292ZXJzZXR0aW5nIjtRWzQ3XT0iR2kgZW4gdnVyZGVyaW5nIGF2IGRlbm5lIG92ZXJzZXR0ZWxzZW4iO1FbNDhdPSJUaWxiYWtlbWVsZGluZ2VuIGRpbiBicnVrZXMgZm9yIFx1MDBlNSBnalx1MDBmOHJlIEdvb2dsZSBPdmVyc2V0dGVyIGJlZHJlIjtRWzQ5XT0iR29kIG92ZXJzZXR0ZWxzZSI7UVs1MF09IkRcdTAwZTVybGlnIG92ZXJzZXR0ZWxzZSI7UVs1MV09Ik92ZXJzZXR0ZWxzZSJ9O3ZhciBncz1mdW5jdGlvbigpe3JldHVybiJbbXNnX3VuZGVmaW5lZF0ifSxSPXt9OwooZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbihiKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYn19O1I9e0llOmEoMCksbWc6YSgxKSxBZTphKDIpLFdqOmEoMyksRGc6YSg0KSxDZTphKDUpLHdnOmEoNDUpLHhnOmEoNiksemc6YSg3KSx3ZDphKDgpLEVnOmEoOSksc2s6YSgxMCksSmc6YSgxMSksQWc6YSgxMiksbGs6YSgxMyksQ2c6YSgxNCksa2s6YSgxNSksQmc6YSgxNiksdms6YSgxNyksRmc6YSgxOCksamo6YSgxOSksVWo6YSgyMCksSWo6YSgyMSksbWs6YSgyMiksZWs6YSgyMyksZGs6YSgyNCksYms6YSgyNSksdGs6YSgyNikscms6YSgyNyksY2s6YSgyOCkseWc6YSgyOSksR2c6YSgzMCksaWo6YSgzMiksZ2o6YSgzMyksd2s6YSgzNCkseGo6YSgzNSkscGo6YSgzNiksd2o6YSgzNyksbms6YSgzOCksUWo6YSgzOSksaGo6YSg0MCksVmo6YSg0MSksRWU6YSg0NiksWGo6YSg0NyksSGo6YSg0OCksR2o6YSg0OSksRmo6YSg1MCksdWs6YSg1MSl9fSkoKTtSLkNsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMF19OwpSLlprPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMV19O1IuYmw9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyXX07Ui5ubD1mdW5jdGlvbigpe3JldHVybiBRWzNdfTtSLkRsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbNF19O1IuZmw9ZnVuY3Rpb24oKXtyZXR1cm4gUVs1XX07Ui5obD1mdW5jdGlvbigpe3JldHVybiBRWzQ1XX07Ui5pbD1mdW5jdGlvbigpe3JldHVybiBRWzZdfTtSLm9sPWZ1bmN0aW9uKCl7cmV0dXJuIFFbN119O1IuR2w9ZnVuY3Rpb24oKXtyZXR1cm4gUVs4XX07Ui5JbD1mdW5jdGlvbigpe3JldHVybiBRWzldfTtSLkZsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMTBdfTtSLk9sPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMTFdfTtSLnBsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMTJdfTtSLnlsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMTNdfTtSLnpsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMTRdfTtSLnhsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMTVdfTtSLnFsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMTZdfTsKUi5MbD1mdW5jdGlvbigpe3JldHVybiBRWzE3XX07Ui5LbD1mdW5jdGlvbigpe3JldHVybiBRWzE4XX07Ui5Zaz1mdW5jdGlvbigpe3JldHVybiBRWzE5XX07Ui5sbD1mdW5jdGlvbigpe3JldHVybiBRWzIwXX07Ui5zaD1mdW5jdGlvbigpe3JldHVybiBRWzQxXX07Ui5lbD1mdW5jdGlvbigpe3JldHVybiBRWzIxXX07Ui5BbD1mdW5jdGlvbigpe3JldHVybiBRWzIyXX07Ui53bD1mdW5jdGlvbigpe3JldHVybiBRWzIzXX07Ui52bD1mdW5jdGlvbigpe3JldHVybiBRWzI0XX07Ui5ybD1mdW5jdGlvbigpe3JldHVybiBRWzI1XX07Ui5IbD1mdW5jdGlvbigpe3JldHVybiBRWzI2XX07Ui5FbD1mdW5jdGlvbigpe3JldHVybiBRWzI3XX07Ui51bD1mdW5jdGlvbigpe3JldHVybiBRWzI4XX07Ui5rbD1mdW5jdGlvbigpe3JldHVybiBRWzI5XX07Ui5NbD1mdW5jdGlvbigpe3JldHVybiBRWzMwXX07Ui5qbD1mdW5jdGlvbigpe3JldHVybiBRWzM5XX07Ui5Yaz1mdW5jdGlvbigpe3JldHVybiBRWzMyXX07ClIuVms9ZnVuY3Rpb24oKXtyZXR1cm4gUVszM119O1IuV2s9ZnVuY3Rpb24oKXtyZXR1cm4gUVs0MF19O1IuTmw9ZnVuY3Rpb24oKXtyZXR1cm4gUVszNF19O1IuZGw9ZnVuY3Rpb24oKXtyZXR1cm4gUVszNV19O1IuYWw9ZnVuY3Rpb24oKXtyZXR1cm4gUVszNl19O1IuY2w9ZnVuY3Rpb24oKXtyZXR1cm4gUVszN119O1IuQmw9ZnVuY3Rpb24oKXtyZXR1cm4gUVszOF19O1IuZ2w9ZnVuY3Rpb24oKXtyZXR1cm4gUVs0Nl19O1IudGg9ZnVuY3Rpb24oKXtyZXR1cm4gUVs0N119O1Iucmg9ZnVuY3Rpb24oKXtyZXR1cm4gUVs0OF19O1IucWg9ZnVuY3Rpb24oKXtyZXR1cm4gUVs0OV19O1IucGg9ZnVuY3Rpb24oKXtyZXR1cm4gUVs1MF19O1IuSmw9ZnVuY3Rpb24oKXtyZXR1cm4gUVs1MV19O3ZhciBocz1SO3ZhciBpcz1ocy5zaCxqcz1ocy50aCxrcz1ocy5yaCxscz1ocy5xaCxtcz1ocy5waDt2YXIgcHM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kaXI7YT1hLmNqO3JldHVybiBWbihXbihWbihXbihWbihfLnlsKCksJzxkaXYgaWQ9Imdvb2ctZ3QtdHQiIGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItTDdsYmtiIikrJyBza2lwdHJhbnNsYXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgYm9yZGVyLXJhZGl1czogMTJweDsgbWFyZ2luOiAwIDAgMCAtMjNweDsgcGFkZGluZzogMDsgZm9udC1mYW1pbHk6IFwnR29vZ2xlIFNhbnNcJywgQXJpYWwsIHNhbnMtc2VyaWY7IiBkYXRhLWlkPSIiPjxkaXYgaWQ9Imdvb2ctZ3QtdnQiIGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kIikrJyI+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1VZDdmciIpKyciPjxpbWcgc3JjPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaS9wcm9kdWN0bG9nb3MvdHJhbnNsYXRlL3YxNC8yNHB4LnN2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBhbHQ9IiIvPjxkaXYgY2xhc3M9IicrCihiPT09InJ0bCI/IiAiK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLUl1aXpXYy1TSXNyVGQiKSsiICI6IiAiK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLUl1aXpXYy1pM2pNOGMiKSsiICIpKyciIGRpcj0iJytQKGIpKyciPicrS3AoaXMoKSkrJzwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtazc3SWlmIikrJyI+PGRpdiBpZD0iZ29vZy1ndC1vcmlnaW5hbC10ZXh0IiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLW5WTWZjZC1mbWNtUyIpKyIgIitQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1heEFWMSIpKyciPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkIikrIiAiK1AoYikrJyI+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9kIikrIiAiK1AoYikrJyIgZGlyPSInK1AoYikrJyI+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1VVHVqQ2IiKSsKJyI+JytLcChqcygpKSsnPC9kaXY+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1lTzltS2UiKSsnIj4nK0twKGtzKCkpKyc8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLXhnb3Y1IikrIiAiK1AoYikrJyI+JyksYj09PSJydGwiP1duKFduKF8ueWwoKSxucygpKSxvcygpKTpXbihXbihfLnlsKCksb3MoKSksbnMoKSkpLCI8L2Rpdj48L2Rpdj4iKSwoMCxfLnRsKSgnPGRpdiBpZD0iZ29vZy1ndC12b3RpbmdIaWRkZW5QYW5lIiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1hWFlUY2UiKSsnIj48Zm9ybSBpZD0iZ29vZy1ndC12b3RpbmdGb3JtIiBhY3Rpb249IicrUChVcChhKSkrJyIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9InZvdGluZ0ZyYW1lIiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1hWFlUY2UiKSsnIj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2wiIGlkPSJnb29nLWd0LXZvdGluZ0lucHV0U3JjTGFuZyIvPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ0bCIgaWQ9Imdvb2ctZ3Qtdm90aW5nSW5wdXRUcmdMYW5nIi8+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InF1ZXJ5IiBpZD0iZ29vZy1ndC12b3RpbmdJbnB1dFNyY1RleHQiLz48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZ3RyYW5zIiBpZD0iZ29vZy1ndC12b3RpbmdJbnB1dFRyZ1RleHQiLz48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idm90ZSIgaWQ9Imdvb2ctZ3Qtdm90aW5nSW5wdXRWb3RlIi8+PC9mb3JtPjxpZnJhbWUgbmFtZT0idm90aW5nRnJhbWUiIGZyYW1lQm9yZGVyPTA+PC9pZnJhbWU+PC9kaXY+JykpLAoiPC9kaXY+PC9kaXY+Iil9LG9zPWZ1bmN0aW9uKCl7dmFyIGE9Xy55bCgpLGI9bHMoKTtiPVZuKGEsJzxidXR0b24gaWQ9Imdvb2ctZ3QtdGh1bWJVcEJ1dHRvbiIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1iZ202c2YiKSsnIiB0aXRsZT0iJytQKGIpKyciIGFyaWEtbGFiZWw9IicrUChiKSsnIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj48c3BhbiBpZD0iZ29vZy1ndC10aHVtYlVwSWNvbiI+Jyk7dmFyIGM9KDAsXy50bCkoJzxzdmcgd2lkdGg9IicrUCgyNCkrJyIgaGVpZ2h0PSInK1AoMjQpKyciIHZpZXdCb3g9IicrUCgiMCAwIDI0IDI0IikrJyIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtVEhJNlZiIikrIiAiK1AoIk5NbTVNIikrJyInK3pwKCkrJz48cGF0aCBkPSJNMjEgN2gtNi4zMWwuOTUtNC41Ny4wMy0uMzJjMC0uNDEtLjE3LS43OS0uNDQtMS4wNkwxNC4xNyAwUzcuMDggNi44NSA3IDdIMnYxM2gxNmMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczVjljMC0xLjEtLjktMi0yLTJ6TTcgMThINFY5aDN2OXptMTQtN2wtMyA3SDlWOGw0LjM0LTQuMzRMMTIgOWg5djJ6Ii8+PC9zdmc+Jyk7CmI9Vm4oV24oYixjKSwnPC9zcGFuPjxzcGFuIGlkPSJnb29nLWd0LXRodW1iVXBJY29uRmlsbGVkIj4nKTtjPSgwLF8udGwpKCc8c3ZnIHdpZHRoPSInK1AoMjQpKyciIGhlaWdodD0iJytQKDI0KSsnIiB2aWV3Qm94PSInK1AoIjAgMCAyNCAyNCIpKyciIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLVRISTZWYiIpKyIgIitQKCJOTW01TSIpKyciJyt6cCgpKyc+PHBhdGggZD0iTTIxIDdoLTYuMzFsLjk1LTQuNTcuMDMtLjMyYzAtLjQxLS4xNy0uNzktLjQ0LTEuMDZMMTQuMTcgMFM3LjA4IDYuODUgNyA3djEzaDExYy44MyAwIDEuNTQtLjUgMS44NC0xLjIybDMuMDItNy4wNWMuMDktLjIzLjE0LS40Ny4xNC0uNzNWOWMwLTEuMS0uOS0yLTItMnpNNSA3SDF2MTNoNFY3eiIvPjwvc3ZnPicpO1ZuKFduKGIsYyksIjwvc3Bhbj48L2J1dHRvbj4iKTtyZXR1cm4gYX0sbnM9ZnVuY3Rpb24oKXt2YXIgYT1fLnlsKCksYj1tcygpO2I9Vm4oYSwnPGJ1dHRvbiBpZD0iZ29vZy1ndC10aHVtYkRvd25CdXR0b24iIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IicrClAoIlZJcGdKZC15QVdORWItaHZoZ05kLWJnbTZzZiIpKyciIHRpdGxlPSInK1AoYikrJyIgYXJpYS1sYWJlbD0iJytQKGIpKyciIGFyaWEtcHJlc3NlZD0iZmFsc2UiPjxzcGFuIGlkPSJnb29nLWd0LXRodW1iRG93bkljb24iPicpO3ZhciBjPSgwLF8udGwpKCc8c3ZnIHdpZHRoPSInK1AoMjQpKyciIGhlaWdodD0iJytQKDI0KSsnIiB2aWV3Qm94PSInK1AoIjAgMCAyNCAyNCIpKyciIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLVRISTZWYiIpKyIgIitQKCJOTW01TSIpKyciJyt6cCgpKyc+PHBhdGggZD0iTTMgMTdoNi4zMWwtLjk1IDQuNTctLjAzLjMyYzAgLjQxLjE3Ljc5LjQ0IDEuMDZMOS44MyAyNHM3LjA5LTYuODUgNy4xNy03aDVWNEg2Yy0uODMgMC0xLjU0LjUtMS44NCAxLjIybC0zLjAyIDcuMDVjLS4wOS4yMy0uMTQuNDctLjE0LjczdjJjMCAxLjEuOSAyIDIgMnpNMTcgNmgzdjloLTNWNnpNMyAxM2wzLTdoOXYxMGwtNC4zNCA0LjM0TDEyIDE1SDN2LTJ6Ii8+PC9zdmc+Jyk7CmI9Vm4oV24oYixjKSwnPC9zcGFuPjxzcGFuIGlkPSJnb29nLWd0LXRodW1iRG93bkljb25GaWxsZWQiPicpO2M9KDAsXy50bCkoJzxzdmcgd2lkdGg9IicrUCgyNCkrJyIgaGVpZ2h0PSInK1AoMjQpKyciIHZpZXdCb3g9IicrUCgiMCAwIDI0IDI0IikrJyIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtVEhJNlZiIikrIiAiK1AoIk5NbTVNIikrJyInK3pwKCkrJz48cGF0aCBkPSJNMyAxN2g2LjMxbC0uOTUgNC41Ny0uMDMuMzJjMCAuNDEuMTcuNzkuNDQgMS4wNkw5LjgzIDI0czcuMDktNi44NSA3LjE3LTdWNEg2Yy0uODMgMC0xLjU0LjUtMS44NCAxLjIybC0zLjAyIDcuMDVjLS4wOS4yMy0uMTQuNDctLjE0LjczdjJjMCAxLjEuOSAyIDIgMnptMTYgMGg0VjRoLTR2MTN6Ii8+PC9zdmc+Jyk7Vm4oV24oYixjKSwiPC9zcGFuPjwvYnV0dG9uPiIpO3JldHVybiBhfTt2YXIgcXM9ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBhPT09ImZ1bmN0aW9uIiljJiYoYT0oMCxfLnkpKGEsYykpO2Vsc2UgaWYoYSYmdHlwZW9mIGEuaGFuZGxlRXZlbnQ9PSJmdW5jdGlvbiIpYT0oMCxfLnkpKGEuaGFuZGxlRXZlbnQsYSk7ZWxzZSB0aHJvdyBFcnJvcigieGEiKTtyZXR1cm4gTnVtYmVyKGIpPjIxNDc0ODM2NDc/LTE6Xy52LnNldFRpbWVvdXQoYSxifHwwKX07dmFyIHJzPWZ1bmN0aW9uKCl7aWYoXy5aYyl7dmFyIGE9L1dpbmRvd3MgTlQgKFswLTkuXSspLztyZXR1cm4oYT1hLmV4ZWMoXy5UYSgpKSk/YVsxXToiMCJ9cmV0dXJuIF8uWWM/KGE9LzFbMHwxXVtfLl1bMC05Xy5dKy8sKGE9YS5leGVjKF8uVGEoKSkpP2FbMF0ucmVwbGFjZSgvXy9nLCIuIik6IjEwIik6Xy4kYz8oYT0vQW5kcm9pZFxzKyhbXlwpO10rKShcKXw7KS8sKGE9YS5leGVjKF8uVGEoKSkpP2FbMV06IiIpOl8uYWR8fF8uYmR8fF8uY2Q/KGE9Lyg/OmlQaG9uZXxDUFUpXHMrT1NccysoXFMrKS8sKGE9YS5leGVjKF8uVGEoKSkpP2FbMV0ucmVwbGFjZSgvXy9nLCIuIik6IiIpOiIifSgpO3ZhciBzcz1mdW5jdGlvbihhKXtyZXR1cm4oYT1hLmV4ZWMoXy5UYSgpKSk/YVsxXToiIn0sdHM9ZnVuY3Rpb24oKXtpZihfLkpoKXJldHVybiBzcygvRmlyZWZveFwvKFswLTkuXSspLyk7aWYoXy5TY3x8Xy5UY3x8Xy5SYylyZXR1cm4gXy5qZDtpZihfLk5oKXtpZihfLiRhKCl8fF8uYWIoKSl7dmFyIGE9c3MoL0NyaU9TXC8oWzAtOS5dKykvKTtpZihhKXJldHVybiBhfXJldHVybiBzcygvQ2hyb21lXC8oWzAtOS5dKykvKX1pZihfLk9oJiYhXy4kYSgpKXJldHVybiBzcygvVmVyc2lvblwvKFswLTkuXSspLyk7aWYoXy5LaHx8Xy5MaCl7aWYoYT0vVmVyc2lvblwvKFxTKykuKk1vYmlsZVwvKFxTKykvLmV4ZWMoXy5UYSgpKSlyZXR1cm4gYVsxXSsiLiIrYVsyXX1lbHNlIGlmKF8uTWgpcmV0dXJuKGE9c3MoL0FuZHJvaWRccysoWzAtOS5dKykvKSk/YTpzcygvVmVyc2lvblwvKFswLTkuXSspLyk7cmV0dXJuIiJ9KCk7Xy5HKFltLF8uaGIpO18ubT1ZbS5wcm90b3R5cGU7Xy5tLkVhPW51bGw7Xy5tLkRjPSEwO18ubS5OZT1udWxsO18ubS56Yj0hMTtfLm0uWmQ9LTE7Xy5tLlViPSJ0b2dnbGVfZGlzcGxheSI7Xy5tLkg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5FYX07Xy5tLlFiPWZ1bmN0aW9uKGEpe2lmKHRoaXMuemIpdGhyb3cgRXJyb3IoInlhIik7dGhpcy5FYT1hfTtfLm0ucmU9ZnVuY3Rpb24oYSl7aWYodGhpcy56Yil0aHJvdyBFcnJvcigieWEiKTt0aGlzLkRjPWF9O18ubS5pc1Zpc2libGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56Yn07Cl8ubS5wYT1mdW5jdGlvbihhKXt0aGlzLkwmJnRoaXMuTC5zdG9wKCk7dGhpcy5LJiZ0aGlzLksuc3RvcCgpO2lmKGEpe2lmKCF0aGlzLnpiJiZ0aGlzLnVkKCkpe2lmKCF0aGlzLkVhKXRocm93IEVycm9yKCJ6YSIpO3RoaXMucGIoKTthPV8uc2QodGhpcy5FYSk7dGhpcy5EYyYmKHRoaXMubC5OKGEsIm1vdXNlZG93biIsdGhpcy5OZiwhMCksdGhpcy5sLk4oYSwiYmx1ciIsdGhpcy5FaSkpO3RoaXMuVWI9PSJ0b2dnbGVfZGlzcGxheSI/KHRoaXMuRWEuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsbXAodGhpcy5FYSwhMCkpOnRoaXMuVWI9PSJtb3ZlX29mZnNjcmVlbiImJnRoaXMucGIoKTt0aGlzLnpiPSEwO3RoaXMuWmQ9RGF0ZS5ub3coKTt0aGlzLkw/KF8uTmQodGhpcy5MLCJlbmQiLHRoaXMuT2YsITEsdGhpcyksdGhpcy5MLnBsYXkoKSk6dGhpcy5PZigpfX1lbHNlIHVzKHRoaXMpfTtfLm0ucGI9ZnVuY3Rpb24oKXt9Owp2YXIgdXM9ZnVuY3Rpb24oYSxiKXthLnpiJiZhLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImJlZm9yZWhpZGUiLHRhcmdldDpifSkmJihhLmwmJl8uUmYoYS5sKSxhLnpiPSExLGEuSz8oXy5OZChhLkssImVuZCIsXy5aaihhLlNlLGIpLCExLGEpLGEuSy5wbGF5KCkpOmEuU2UoYikpfTtfLm09WW0ucHJvdG90eXBlO18ubS5TZT1mdW5jdGlvbihhKXt0aGlzLlViPT0idG9nZ2xlX2Rpc3BsYXkiP3RoaXMuYWkoKTp0aGlzLlViPT0ibW92ZV9vZmZzY3JlZW4iJiYodGhpcy5FYS5zdHlsZS50b3A9Ii0xMDAwMHB4Iik7dGhpcy5nZShhKX07Xy5tLmFpPWZ1bmN0aW9uKCl7dGhpcy5FYS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO21wKHRoaXMuRWEsITEpfTtfLm0udWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KCJiZWZvcmVzaG93Iil9O18ubS5PZj1mdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hFdmVudCgic2hvdyIpfTsKXy5tLmdlPWZ1bmN0aW9uKGEpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiaGlkZSIsdGFyZ2V0OmF9KX07Xy5tLk5mPWZ1bmN0aW9uKGEpe2E9YS50YXJnZXQ7Xy5CZCh0aGlzLkVhLGEpfHx2cyh0aGlzLGEpfHxEYXRlLm5vdygpLXRoaXMuWmQ8MTUwfHx1cyh0aGlzLGEpfTtfLm0uRWk9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5zZCh0aGlzLkVhKTtpZih0eXBlb2YgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9InVuZGVmaW5lZCIpe2lmKGE9Yi5hY3RpdmVFbGVtZW50LCFhfHxfLkJkKHRoaXMuRWEsYSl8fGEudGFnTmFtZT09IkJPRFkifHx2cyh0aGlzLGEpKXJldHVybn1lbHNlIGlmKGEudGFyZ2V0IT1iKXJldHVybjtEYXRlLm5vdygpLXRoaXMuWmQ8MTUwfHx1cyh0aGlzKX07dmFyIHZzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ueGMoYS5OZXx8W10sZnVuY3Rpb24oYyl7cmV0dXJuIGI9PT1jfHxfLkJkKGMsYil9KX07ClltLnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7WW0uZWEuTS5jYWxsKHRoaXMpO3RoaXMubC5kaXNwb3NlKCk7Xy5wYSh0aGlzLkwpO18ucGEodGhpcy5LKTtkZWxldGUgdGhpcy5FYTtkZWxldGUgdGhpcy5sO2RlbGV0ZSB0aGlzLk5lfTtfLkcoYm4sXy5oYik7Ym4ucHJvdG90eXBlLmhhbmRsZUV2ZW50PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLmRiKGEuZyk7Yi50eXBlPWEudHlwZT09ImZvY3VzaW4ifHxhLnR5cGU9PSJmb2N1cyI/ImZvY3VzaW4iOiJmb2N1c291dCI7dGhpcy5kaXNwYXRjaEV2ZW50KGIpfTtibi5wcm90b3R5cGUuTT1mdW5jdGlvbigpe2JuLmVhLk0uY2FsbCh0aGlzKTtfLlZkKHRoaXMuaCk7Xy5WZCh0aGlzLmopO2RlbGV0ZSB0aGlzLmd9O2NuLnByb3RvdHlwZS5oPWZ1bmN0aW9uKCl7fTt2YXIgeXM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg7aWYoaD1jLm9mZnNldFBhcmVudCl7dmFyIGs9aC50YWdOYW1lPT0iSFRNTCJ8fGgudGFnTmFtZT09IkJPRFkiO2lmKCFrfHxjcChoLCJwb3NpdGlvbiIpIT0ic3RhdGljIil7dmFyIGw9aHAoaCk7aWYoIWspe2s9InJ0bCI9PWNwKGgsImRpcmVjdGlvbiIpO3ZhciBuO2lmKG49ayl7bj1fLk9oJiZMbCh0cywxMCk+PTA7dmFyIHE7aWYocT1fLmRkKXE9TGwocnMsMTApPj0wO3ZhciBwPV8uTmgmJkxsKHRzLDg1KT49MDtuPV8uVWN8fG58fHF8fHB9az1uPy1oLnNjcm9sbExlZnQ6ayYmY3AoaCwib3ZlcmZsb3dYIikhPSJ2aXNpYmxlIj9oLnNjcm9sbFdpZHRoLWguY2xpZW50V2lkdGgtaC5zY3JvbGxMZWZ0Omguc2Nyb2xsTGVmdDtsPWFvKGwsbmV3IHpsKGssaC5zY3JvbGxUb3ApKX19fWg9bHx8bmV3IHpsO2w9aHAoYSk7az1scChhKTtsPW5ldyB3bShsLngsbC55LGsud2lkdGgsay5oZWlnaHQpO2lmKGs9aXAoYSkpcD0KbmV3IHdtKGsubGVmdCxrLnRvcCxrLnJpZ2h0LWsubGVmdCxrLmJvdHRvbS1rLnRvcCksaz1NYXRoLm1heChsLmxlZnQscC5sZWZ0KSxuPU1hdGgubWluKGwubGVmdCtsLndpZHRoLHAubGVmdCtwLndpZHRoKSxrPD1uJiYocT1NYXRoLm1heChsLnRvcCxwLnRvcCkscD1NYXRoLm1pbihsLnRvcCtsLmhlaWdodCxwLnRvcCtwLmhlaWdodCkscTw9cCYmKGwubGVmdD1rLGwudG9wPXEsbC53aWR0aD1uLWssbC5oZWlnaHQ9cC1xKSk7bj1fLmxiKGEpO2s9Xy5sYihjKTtuLmchPWsuZyYmKG49bi5nLmJvZHksaz1qcChuLGsuZy5kZWZhdWx0Vmlldyksaz1hbyhrLGhwKG4pKSxsLmxlZnQrPWsueCxsLnRvcCs9ay55KTthPXdzKGEsYik7Yj1sLmxlZnQ7YSY0P2IrPWwud2lkdGg6YSYyJiYoYis9bC53aWR0aC8yKTtiPW5ldyB6bChiLGwudG9wKyhhJjE/bC5oZWlnaHQ6MCkpO2I9YW8oYixoKTtlJiYoYi54Kz0oYSY0Py0xOjEpKmUueCxiLnkrPShhJjE/LTE6MSkqZS55KTt2YXIgcjtnJiYocj0KaXAoYykpJiYoci50b3AtPWgueSxyLnJpZ2h0LT1oLngsci5ib3R0b20tPWgueSxyLmxlZnQtPWgueCk7cmV0dXJuIHhzKGIsYyxkLGYscixnKX0seHM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9RG4oYSk7dmFyIGc9d3MoYixjKTtjPWxwKGIpO3ZhciBoPW5ldyBfLkNhKGMud2lkdGgsYy5oZWlnaHQpO2E9RG4oYSk7aD1uZXcgXy5DYShoLndpZHRoLGguaGVpZ2h0KTt2YXIgaz0wO2lmKGR8fGchPTApZyY0P2EueC09aC53aWR0aCsoZD9kLnJpZ2h0OjApOmcmMj9hLngtPWgud2lkdGgvMjpkJiYoYS54Kz1kLmxlZnQpLGcmMT9hLnktPWguaGVpZ2h0KyhkP2QuYm90dG9tOjApOmQmJihhLnkrPWQudG9wKTtmJiYoZT8oZD1oLGc9MCwoZiY2NSk9PTY1JiYoYS54PGUubGVmdHx8YS54Pj1lLnJpZ2h0KSYmKGYmPS0yKSwoZiYxMzIpPT0xMzImJihhLnk8ZS50b3B8fGEueT49ZS5ib3R0b20pJiYoZiY9LTUpLGEueDxlLmxlZnQmJmYmMSYmKGEueD1lLmxlZnQsZ3w9MSksZiYxNiYmKGs9CmEueCxhLng8ZS5sZWZ0JiYoYS54PWUubGVmdCxnfD00KSxhLngrZC53aWR0aD5lLnJpZ2h0JiYoZC53aWR0aD1NYXRoLm1pbihlLnJpZ2h0LWEueCxrK2Qud2lkdGgtZS5sZWZ0KSxkLndpZHRoPU1hdGgubWF4KGQud2lkdGgsMCksZ3w9NCkpLGEueCtkLndpZHRoPmUucmlnaHQmJmYmMSYmKGEueD1NYXRoLm1heChlLnJpZ2h0LWQud2lkdGgsZS5sZWZ0KSxnfD0xKSxmJjImJihnfD0oYS54PGUubGVmdD8xNjowKXwoYS54K2Qud2lkdGg+ZS5yaWdodD8zMjowKSksYS55PGUudG9wJiZmJjQmJihhLnk9ZS50b3AsZ3w9MiksZiYzMiYmKGs9YS55LGEueTxlLnRvcCYmKGEueT1lLnRvcCxnfD04KSxhLnkrZC5oZWlnaHQ+ZS5ib3R0b20mJihkLmhlaWdodD1NYXRoLm1pbihlLmJvdHRvbS1hLnksaytkLmhlaWdodC1lLnRvcCksZC5oZWlnaHQ9TWF0aC5tYXgoZC5oZWlnaHQsMCksZ3w9OCkpLGEueStkLmhlaWdodD5lLmJvdHRvbSYmZiY0JiYoYS55PU1hdGgubWF4KGUuYm90dG9tLWQuaGVpZ2h0LAplLnRvcCksZ3w9MiksZiY4JiYoZ3w9KGEueTxlLnRvcD82NDowKXwoYS55K2QuaGVpZ2h0PmUuYm90dG9tPzEyODowKSksZT1nKTplPTI1NixrPWUpO2U9bmV3IHdtKDAsMCwwLDApO2UubGVmdD1hLng7ZS50b3A9YS55O2Uud2lkdGg9aC53aWR0aDtlLmhlaWdodD1oLmhlaWdodDthPWs7aWYoYSY0OTYpcmV0dXJuIGE7ZXAoYixuZXcgemwoZS5sZWZ0LGUudG9wKSk7aD1uZXcgXy5DYShlLndpZHRoLGUuaGVpZ2h0KTtfLnljKGMsaCl8fHBwKGIsaCwiYm9yZGVyLWJveCIpO3JldHVybiBhfSx3cz1mdW5jdGlvbihhLGIpe3JldHVybihiJjgmJiJydGwiPT1jcChhLCJkaXJlY3Rpb24iKT9iXjQ6YikmLTl9O18uRyhkbixjbik7ZG4ucHJvdG90eXBlLmg9ZnVuY3Rpb24oYSxiLGMpe3lzKHRoaXMuZWxlbWVudCx0aGlzLmosYSxiLHZvaWQgMCxjLHRoaXMubCl9O18uRyhlbixjbik7ZW4ucHJvdG90eXBlLmg9ZnVuY3Rpb24oYSxiLGMpe3lzKChhP18uc2QoYSk6ZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudCwwLGEsYix0aGlzLmcsYyxudWxsKX07Xy5HKGZuLFltKTtmbi5wcm90b3R5cGUucGI9ZnVuY3Rpb24oKXtpZih0aGlzLm8pe3ZhciBhPSF0aGlzLmlzVmlzaWJsZSgpJiZ0aGlzLlViIT0ibW92ZV9vZmZzY3JlZW4iLGI9dGhpcy5IKCk7YSYmKGIuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixtcChiLCEwKSk7dGhpcy5vLmgoYiw4LHRoaXMuWGIpO2EmJm1wKGIsITEpfX07Xy5HKE8sZm4pO3ZhciB6cz1bXTtfLm09Ty5wcm90b3R5cGU7Xy5tLnlhPW51bGw7Xy5tLmNsYXNzTmFtZT0iVklwZ0pkLXN1RU9kYyI7Xy5tLlpmPTUwMDtfLm0ud2Y9MDtfLm0uYXR0YWNoPWZ1bmN0aW9uKGEpe2E9Z24oYSk7dGhpcy5BLmFkZChhKTtfLngoYSwibW91c2VvdmVyIix0aGlzLlVkLCExLHRoaXMpO18ueChhLCJtb3VzZW91dCIsdGhpcy5OYiwhMSx0aGlzKTtfLngoYSwibW91c2Vtb3ZlIix0aGlzLmdiLCExLHRoaXMpO18ueChhLCJmb2N1cyIsdGhpcy5mYiwhMSx0aGlzKTtfLngoYSwiYmx1ciIsdGhpcy5OYiwhMSx0aGlzKX07Xy5tLmRldGFjaD1mdW5jdGlvbihhKXt2YXIgYj10aGlzO2E/KGE9Z24oYSksQXModGhpcyxhKSx0aGlzLkEuZGVsZXRlKGEpKToodGhpcy5BLmZvckVhY2goZnVuY3Rpb24oYyl7QXMoYixjKX0pLHRoaXMuQS5jbGVhcigpKX07CnZhciBBcz1mdW5jdGlvbihhLGIpe18uVWQoYiwibW91c2VvdmVyIixhLlVkLCExLGEpO18uVWQoYiwibW91c2VvdXQiLGEuTmIsITEsYSk7Xy5VZChiLCJtb3VzZW1vdmUiLGEuZ2IsITEsYSk7Xy5VZChiLCJmb2N1cyIsYS5mYiwhMSxhKTtfLlVkKGIsImJsdXIiLGEuTmIsITEsYSl9O08ucHJvdG90eXBlLkthPWZ1bmN0aW9uKGEpe18uQ2QodGhpcy5IKCksYSl9OwpPLnByb3RvdHlwZS5RYj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLkgoKTtiJiZfLkFkKGIpO08uZWEuUWIuY2FsbCh0aGlzLGEpO2E/KGI9dGhpcy5HLmcuYm9keSxiLmluc2VydEJlZm9yZShhLGIubGFzdENoaWxkKSxfLnBhKHRoaXMuQyksdGhpcy5DPW5ldyBibih0aGlzLkgoKSksXy5hayh0aGlzLF8uWmooXy5wYSx0aGlzLkMpKSxfLngodGhpcy5DLCJmb2N1c2luIix0aGlzLkQsdm9pZCAwLHRoaXMpLF8ueCh0aGlzLkMsImZvY3Vzb3V0Iix0aGlzLlQsdm9pZCAwLHRoaXMpKTooXy5wYSh0aGlzLkMpLHRoaXMuQz1udWxsKX07Ty5wcm90b3R5cGUudmQ9ZnVuY3Rpb24oKXtyZXR1cm4gRW8odGhpcy5IKCkpfTt2YXIgQnM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuRj9hLmlzVmlzaWJsZSgpPzQ6MTphLkk/MzphLmlzVmlzaWJsZSgpPzI6MH07Ck8ucHJvdG90eXBlLnVkPWZ1bmN0aW9uKCl7aWYoIVltLnByb3RvdHlwZS51ZC5jYWxsKHRoaXMpKXJldHVybiExO2lmKHRoaXMuZylmb3IodmFyIGEsYj0wO2E9enNbYl07YisrKV8uQmQoYS5IKCksdGhpcy5nKXx8YS5wYSghMSk7Xy51YSh6cyx0aGlzKTthPXRoaXMuSCgpO2EuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lO3RoaXMuRCgpO18ueChhLCJtb3VzZW92ZXIiLHRoaXMuVWMsITEsdGhpcyk7Xy54KGEsIm1vdXNlb3V0Iix0aGlzLlRjLCExLHRoaXMpO0NzKHRoaXMpO3JldHVybiEwfTsKTy5wcm90b3R5cGUuZ2U9ZnVuY3Rpb24oKXtfLnZhKHpzLHRoaXMpO2Zvcih2YXIgYT10aGlzLkgoKSxiLGM9MDtiPXpzW2NdO2MrKyliLmcmJl8uQmQoYSxiLmcpJiZiLnBhKCExKTt0aGlzLkhiJiZ0aGlzLkhiLlQoKTtfLlVkKGEsIm1vdXNlb3ZlciIsdGhpcy5VYywhMSx0aGlzKTtfLlVkKGEsIm1vdXNlb3V0Iix0aGlzLlRjLCExLHRoaXMpO3RoaXMuZz12b2lkIDA7QnModGhpcyk9PTAmJih0aGlzLlA9ITEpO1ltLnByb3RvdHlwZS5nZS5jYWxsKHRoaXMpfTtPLnByb3RvdHlwZS5kZT1mdW5jdGlvbihhLGIpe3RoaXMuZz09YSYmdGhpcy5BLmhhcyh0aGlzLmcpJiYodGhpcy5QfHwhdGhpcy5JZD8odGhpcy5wYSghMSksdGhpcy5pc1Zpc2libGUoKXx8KHRoaXMuZz1hLHRoaXMubz1ifHxuZXcgRHMoRG4odGhpcy5yYSkpLHRoaXMuaXNWaXNpYmxlKCkmJnRoaXMucGIoKSx0aGlzLnBhKCEwKSkpOnRoaXMuZz12b2lkIDApO3RoaXMuRj12b2lkIDB9OwpPLnByb3RvdHlwZS5GYz1mdW5jdGlvbihhKXt0aGlzLkk9dm9pZCAwO2lmKGE9PXRoaXMuZyl7YT10aGlzLkc7dmFyIGI9YS5nO3RyeXt2YXIgYz1iJiZiLmFjdGl2ZUVsZW1lbnQ7dmFyIGQ9YyYmYy5ub2RlTmFtZT9jOm51bGx9Y2F0Y2goZSl7ZD1udWxsfWQ9ZCYmdGhpcy5IKCkmJmEuY29udGFpbnModGhpcy5IKCksZCk7dGhpcy55YSE9bnVsbCYmKHRoaXMueWE9PXRoaXMuSCgpfHx0aGlzLkEuaGFzKHRoaXMueWEpKXx8ZHx8dGhpcy5JYSYmdGhpcy5JYS55YXx8dGhpcy5wYSghMSl9fTt2YXIgRXM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1LbihhLkcuZyk7YS5yYS54PWIuY2xpZW50WCtjLng7YS5yYS55PWIuY2xpZW50WStjLnl9O08ucHJvdG90eXBlLlVkPWZ1bmN0aW9uKGEpe3ZhciBiPUZzKHRoaXMsYS50YXJnZXQpO3RoaXMueWE9Yjt0aGlzLkQoKTtiIT10aGlzLmcmJih0aGlzLmc9YixHcyh0aGlzLGIpLEhzKHRoaXMpLEVzKHRoaXMsYSkpfTsKdmFyIEZzPWZ1bmN0aW9uKGEsYil7dHJ5e2Zvcig7YiYmIWEuQS5oYXMoYik7KWI9Yi5wYXJlbnROb2RlO3JldHVybiBifWNhdGNoKGMpe3JldHVybiBudWxsfX07Ty5wcm90b3R5cGUuZ2I9ZnVuY3Rpb24oYSl7RXModGhpcyxhKTt0aGlzLlA9ITB9O08ucHJvdG90eXBlLmZiPWZ1bmN0aW9uKGEpe3RoaXMueWE9YT1Gcyh0aGlzLGEudGFyZ2V0KTt0aGlzLlA9ITA7aWYodGhpcy5nIT1hKXt0aGlzLmc9YTt2YXIgYj1uZXcgSXModGhpcy55YSk7dGhpcy5EKCk7R3ModGhpcyxhLGIpO0hzKHRoaXMpfX07dmFyIEhzPWZ1bmN0aW9uKGEpe2lmKGEuZylmb3IodmFyIGIsYz0wO2I9enNbY107YysrKV8uQmQoYi5IKCksYS5nKSYmKGIuSWE9YSxhLkhiPWIpfTsKTy5wcm90b3R5cGUuTmI9ZnVuY3Rpb24oYSl7dmFyIGI9RnModGhpcyxhLnRhcmdldCksYz1Gcyh0aGlzLGEucmVsYXRlZFRhcmdldCk7YiE9YyYmKGI9PXRoaXMueWEmJih0aGlzLnlhPW51bGwpLENzKHRoaXMpLHRoaXMuUD0hMSwhdGhpcy5pc1Zpc2libGUoKXx8YS5yZWxhdGVkVGFyZ2V0JiZfLkJkKHRoaXMuSCgpLGEucmVsYXRlZFRhcmdldCk/dGhpcy5nPXZvaWQgMDp0aGlzLlQoKSl9O08ucHJvdG90eXBlLlVjPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5IKCk7dGhpcy55YSE9YSYmKHRoaXMuRCgpLHRoaXMueWE9YSl9O08ucHJvdG90eXBlLlRjPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuSCgpO3RoaXMueWEhPWJ8fGEucmVsYXRlZFRhcmdldCYmXy5CZChiLGEucmVsYXRlZFRhcmdldCl8fCh0aGlzLnlhPW51bGwsdGhpcy5UKCkpfTsKdmFyIEdzPWZ1bmN0aW9uKGEsYixjKXthLkZ8fChhLkY9cXMoKDAsXy55KShhLmRlLGEsYixjKSxhLlpmKSl9LENzPWZ1bmN0aW9uKGEpe2EuRiYmKF8udi5jbGVhclRpbWVvdXQoYS5GKSxhLkY9dm9pZCAwKX07Ty5wcm90b3R5cGUuVD1mdW5jdGlvbigpe0JzKHRoaXMpPT0yJiYodGhpcy5JPXFzKCgwLF8ueSkodGhpcy5GYyx0aGlzLHRoaXMuZyksdGhpcy53ZikpfTtPLnByb3RvdHlwZS5EPWZ1bmN0aW9uKCl7dGhpcy5JJiYoXy52LmNsZWFyVGltZW91dCh0aGlzLkkpLHRoaXMuST12b2lkIDApfTtPLnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7dGhpcy5wYSghMSk7Q3ModGhpcyk7dGhpcy5kZXRhY2goKTt0aGlzLkgoKSYmXy5BZCh0aGlzLkgoKSk7dGhpcy55YT1udWxsO2RlbGV0ZSB0aGlzLkc7Ty5lYS5NLmNhbGwodGhpcyl9O3ZhciBEcz1mdW5jdGlvbihhLGIpe2VuLmNhbGwodGhpcyxhLGIpfTtfLkcoRHMsZW4pOwpEcy5wcm90b3R5cGUuaD1mdW5jdGlvbihhLGIsYyl7Yj1pcCgoYT9fLnNkKGEpOmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQpO2M9Yz9uZXcgdm0oYy50b3ArMTAsYy5yaWdodCxjLmJvdHRvbSxjLmxlZnQrMTApOm5ldyB2bSgxMCwwLDAsMTApO3hzKHRoaXMuZyxhLDgsYyxiLDkpJjQ5NiYmeHModGhpcy5nLGEsOCxjLGIsNSl9O3ZhciBJcz1mdW5jdGlvbihhKXtkbi5jYWxsKHRoaXMsYSw1KX07Xy5HKElzLGRuKTtJcy5wcm90b3R5cGUuaD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bmV3IHpsKDEwLDApO3lzKHRoaXMuZWxlbWVudCx0aGlzLmosYSxiLGQsYyw5KSY0OTYmJnlzKHRoaXMuZWxlbWVudCw0LGEsMSxkLGMsNSl9O3ZhciBKcz1mdW5jdGlvbigpe08uY2FsbCh0aGlzKTt0aGlzLmxhPW51bGw7dGhpcy5SPW5ldyBfLkhiKHRoaXMpO3RoaXMuQj10aGlzLmo9dGhpcy5oPXRoaXMud2E9bnVsbDt0aGlzLk89ITB9O18uQihKcyxPKTtfLm09SnMucHJvdG90eXBlO18ubS5rYT1mdW5jdGlvbigpe3RoaXMuTz0hMTt2YXIgYT1fLnhmLnRlc3Qob3EpPyJydGwiOiJsdHIiO3RoaXMuUWIoa20ocHMse1VsOkVxLE9rOkNxLFJsOnhxLGRpcjphLGNqOklxfSkpO3RoaXMuY2xhc3NOYW1lKz0iIFZJcGdKZC15QVdORWItTDdsYmtiIHNraXB0cmFuc2xhdGUiOyhhPSEoIXRoaXMuSCgpfHwhdGhpcy5CKSkmJnRoaXMuUi5OKHdpbmRvdywicmVzaXplIiwoMCxfLnkpKHRoaXMucGIsdGhpcykpO3JldHVybiBhfTtfLm0uZGU9ZnVuY3Rpb24oYSxiKXt0aGlzLmxhPWE7Ty5wcm90b3R5cGUuZGUuY2FsbCh0aGlzLGEsYik7dGhpcy5IKCkuc3R5bGUuZGlzcGxheT0iYmxvY2sifTsKXy5tLlVkPWZ1bmN0aW9uKGEpe2lmKCF0aGlzLk8pe3ZhciBiPUZzKHRoaXMsYS50YXJnZXQpO3RoaXMueWE9Yjt0aGlzLkQoKTtiIT10aGlzLmc/KHRoaXMuZz1iLEdzKHRoaXMsYiksSHModGhpcyksRXModGhpcyxhKSk6R3ModGhpcyxiKX19O18ubS5NPWZ1bmN0aW9uKCl7dGhpcy5SJiZ0aGlzLlIuZGlzcG9zZSgpO3RoaXMuQj10aGlzLmxhPXRoaXMuUj1udWxsO08ucHJvdG90eXBlLk0uY2FsbCh0aGlzKX07Xy5tLnJlPWZ1bmN0aW9uKGEpe2lmKHRoaXMuaXNWaXNpYmxlKCkpe2E9KHRoaXMuRGM9YSk/dGhpcy5sLk46dGhpcy5sLnljO3ZhciBiPV8uc2QodGhpcy5IKCkpO2EuY2FsbCh0aGlzLmwsYiwibW91c2Vkb3duIix0aGlzLk5mLCEwKX1lbHNlIE8ucHJvdG90eXBlLnJlLmNhbGwodGhpcyxhKX07Xy5tLlFiPWZ1bmN0aW9uKGEpe08ucHJvdG90eXBlLlFiLmNhbGwodGhpcyxhKTthJiYodGhpcy5CPXZvKGEpKX07Cl8ubS5wYj1mdW5jdGlvbihhLGIpe3ZhciBjPWhwKGRvY3VtZW50LmJvZHkpLnk7aWYodGhpcy5vKXsodGhpcy5vfHxudWxsKS5nLnkrPWM7Ty5wcm90b3R5cGUucGIuY2FsbCh0aGlzKTt2YXIgZD1wYXJzZUludCh0aGlzLkgoKS5zdHlsZS5sZWZ0LDEwKTthPXBhcnNlSW50KHRoaXMuSCgpLnN0eWxlLnRvcCwxMCktKGE/MDpjKTtiJiYoYj10aGlzLlhifHx7fSxhLT1iLnRvcHx8MTAsZC09Yi5sZWZ0fHwxMCk7YS09YzsodGhpcy5vfHxudWxsKS5nLnk9YTsodGhpcy5vfHxudWxsKS5nLng9ZDtjPW5ldyB6bChkLGEpO2VwKHRoaXMuSCgpLGMpfX07Xy5tLnBhPWZ1bmN0aW9uKGEpe08ucHJvdG90eXBlLnBhLmNhbGwodGhpcyxhKX07Xy5tLk5hPWZ1bmN0aW9uKGEpe3RoaXMuaD1hfTtfLm0ubmE9ZnVuY3Rpb24oYSl7dGhpcy5qPWF9O18ubS5LYT1mdW5jdGlvbihhKXthPWE/Xy5BYyhhKToiIjt0aGlzLkI/Xy5DZCh0aGlzLkIsYSk6Ty5wcm90b3R5cGUuS2EuY2FsbCh0aGlzLGEpfTsKXy5tLkphPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaH07Xy5tLm9hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07Xy5tLnZkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQj9Fbyh0aGlzLkIpOk8ucHJvdG90eXBlLnZkLmNhbGwodGhpcyl9O18ubS5OYj1mdW5jdGlvbihhKXt0aGlzLk98fE8ucHJvdG90eXBlLk5iLmNhbGwodGhpcyxhKX07Xy5tLlVjPWZ1bmN0aW9uKGEpe3RoaXMuT3x8Ty5wcm90b3R5cGUuVWMuY2FsbCh0aGlzLGEpfTtfLm0uVGM9ZnVuY3Rpb24oYSl7dGhpcy5PfHxPLnByb3RvdHlwZS5UYy5jYWxsKHRoaXMsYSl9O3ZhciBLcz1mdW5jdGlvbigpe3RoaXMuaD1uZXcgTWFwO3RoaXMuZz1XcShjcil9LE9zPWZ1bmN0aW9uKGEpe3ZhciBiPWduKCJnb29nLWd0LXRodW1iVXBCdXR0b24iKSxjPWEuaCxkPWEuZztiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2lmKExzKGMpPT09TXMpZ3IoZCk7ZWxzZXt2YXIgZT1kcihkLDUpO2VyKGQsZSk7ZnIoZSw1KX1OcyhjLE1zKX0sITEpfSxRcz1mdW5jdGlvbihhKXt2YXIgYj1nbigiZ29vZy1ndC10aHVtYkRvd25CdXR0b24iKSxjPWEuaCxkPWEuZztiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2lmKExzKGMpPT09UHMpZ3IoZCk7ZWxzZXt2YXIgZT1kcihkLDYpO2VyKGQsZSk7ZnIoZSw2KX1OcyhjLFBzKX0sITEpfSxUcz1mdW5jdGlvbihhKXt2YXIgYj1nbigiZ29vZy1ndC10dCIpLGM9Yi5kYXRhc2V0LGQ9Z24oImdvb2ctZ3Qtdm90aW5nSW5wdXRTcmNMYW5nIiksZT1nbigiZ29vZy1ndC12b3RpbmdJbnB1dFRyZ0xhbmciKSwKZj1nbigiZ29vZy1ndC12b3RpbmdJbnB1dFNyY1RleHQiKSxnPWduKCJnb29nLWd0LXZvdGluZ0lucHV0VHJnVGV4dCIpLGg9dm8oKSxrPWduKCJnb29nLWd0LXRyYW5zbGF0aW9uIiksbD1hLmgsbj1hLmc7d2luZG93LmRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiZ29vZy1ndC1wb3B1cFNob3duIixmdW5jdGlvbihxKXt2YXIgcD1kcihuLDQpO2VyKG4scCk7ZnIocCw0KTtxPXEuZGV0YWlsO3A9U3RyaW5nKHEuR2QpO3E9cS5YaTtjLmlkPXA7cD1sLmdldChwKXx8UnM7U3MocCk7Yi5zdHlsZS53aWR0aD1NYXRoLm1heChNYXRoLm1pbih3aW5kb3cuaW5uZXJXaWR0aC0xNiw1MzYpLDI4OCkrInB4IjtwPXEuSmEoKXx8IiI7dmFyIHI9cS5vYSgpfHwiIjtkLnZhbHVlPXA7ZS52YWx1ZT1yO2YudmFsdWU9cS52ZCgpO2cudmFsdWU9cS53YTtrJiYoay5pbm5lclRleHQ9cS53YSk7Yi5sYW5nPW9xO2gubGFuZz1wO2smJihrLmxhbmc9cik7Xy54Zi50ZXN0KHApJiYoaC5jbGFzc0xpc3QuYWRkKCJydGwiKSwKaC5kaXI9InJ0bCIpO2smJl8ueGYudGVzdChyKSYmKGsuY2xhc3NMaXN0LmFkZCgicnRsIiksay5kaXI9InJ0bCIpfSwhMSl9LFNzPWZ1bmN0aW9uKGEpe3ZhciBiPWduKCJnb29nLWd0LXRodW1iVXBCdXR0b24iKSxjPWduKCJnb29nLWd0LXRodW1iVXBJY29uIiksZD1nbigiZ29vZy1ndC10aHVtYlVwSWNvbkZpbGxlZCIpLGU9Z24oImdvb2ctZ3QtdGh1bWJEb3duQnV0dG9uIiksZj1nbigiZ29vZy1ndC10aHVtYkRvd25JY29uIiksZz1nbigiZ29vZy1ndC10aHVtYkRvd25JY29uRmlsbGVkIik7Yi5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsImZhbHNlIik7Yy5zdHlsZS5kaXNwbGF5PSIiO2Quc3R5bGUuZGlzcGxheT0ibm9uZSI7ZS5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsImZhbHNlIik7Zi5zdHlsZS5kaXNwbGF5PSIiO2cuc3R5bGUuZGlzcGxheT0ibm9uZSI7c3dpdGNoKGEpe2Nhc2UgTXM6Yi5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsInRydWUiKTtjLnN0eWxlLmRpc3BsYXk9CiJub25lIjtkLnN0eWxlLmRpc3BsYXk9IiI7YnJlYWs7Y2FzZSBQczplLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIiwidHJ1ZSIpLGYuc3R5bGUuZGlzcGxheT0ibm9uZSIsZy5zdHlsZS5kaXNwbGF5PSIifWduKCJnb29nLWd0LXZvdGluZ0lucHV0Vm90ZSIpLnZhbHVlPWF9LExzPWZ1bmN0aW9uKGEpe3ZhciBiPWduKCJnb29nLWd0LXR0IikuZGF0YXNldDtyZXR1cm4gYS5nZXQoYi5pZCl9LE5zPWZ1bmN0aW9uKGEsYil7THMoYSk9PT1iJiYoYj1Scyk7U3MoYik7dmFyIGM9Z24oImdvb2ctZ3QtdHQiKS5kYXRhc2V0O2Euc2V0KGMuaWQsYik7Z24oImdvb2ctZ3Qtdm90aW5nRm9ybSIpLnN1Ym1pdCgpfSxScz0oMCkudG9TdHJpbmcoKSxNcz0oMSkudG9TdHJpbmcoKSxQcz0oMikudG9TdHJpbmcoKTt2YXIgVXM9ZnVuY3Rpb24oYSl7dGhpcy5BPWE7dGhpcy5sPXRoaXMuaD10aGlzLm89dGhpcy5qPS0xO3RoaXMuZz0hMTt0aGlzLkM9MDt0aGlzLkQ9IiI7dGhpcy5GPTB9O1VzLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe2lmKCF0aGlzLmcpe3RoaXMuZz0hMDt2YXIgYT1bXSxiO2ZvcihiPTA7YjwxNTtiKyspYVtiXT1YcVswfE1hdGgucmFuZG9tKCkqNjJdO3RoaXMuRD1hLmpvaW4oIiIpO3RoaXMuQz0wO3RoaXMubD10aGlzLmg9dGhpcy5vPXRoaXMuaj0tMTt0aGlzLkY9RGF0ZS5ub3coKTtxcyh0aGlzLkIsMUU0LHRoaXMpfX07VXMucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLmcmJih0aGlzLmc9ITEsVnModGhpcykpfTtVcy5wcm90b3R5cGUuQj1mdW5jdGlvbigpe3RoaXMuZyYmKFZzKHRoaXMpLHFzKHRoaXMuQiwxRTMsdGhpcykpfTsKdmFyIFZzPWZ1bmN0aW9uKGEpe3ZhciBiPWEuQS5sLGM9YS5BLkEsZD1hLkEuaixlPWEuQS5vO2lmKGEuaiE9Ynx8YS5vIT1jfHxhLmghPWR8fGEubCE9ZSl7dmFyIGY9e307Zi5jdD1iO2YuY3Y9YztmLmN0cz1kO2YuY3ZzPWU7Zi5zaWQ9YS5EO2Yuc2VxPWEuQysrO2YudGF0PURhdGUubm93KCktYS5GO2lmKGEuaj49MHx8YS5vPj0wfHxhLmg+PTB8fGEubD49MClmLnB0PWEuaixmLnB2PWEubyxmLnB0cz1hLmgsZi5wdnM9YS5sO1FtKCJ0ZV92IixmKTthLmo9YjthLm89YzthLmg9ZDthLmw9ZX19O3ZhciBXcz1mdW5jdGlvbigpe3RoaXMubz10aGlzLmo9dGhpcy5BPXRoaXMubD0wO3RoaXMuZz1bXTt0aGlzLmg9Xy52LkludGVyc2VjdGlvbk9ic2VydmVyIT1udWxsP25ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoMCxfLnkpKHRoaXMuQix0aGlzKSk6bnVsbH07V3MucHJvdG90eXBlLmF0dGFjaD1mdW5jdGlvbihhLGIpe3RoaXMuais9Yjt2YXIgYz10aGlzLmcubGVuZ3RoO3RoaXMuZy5wdXNoKGIpO2ZvcihiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBkPWFbYl07eW8oZCk/KGRbWHNdPWMsdGhpcy5sKz1FbyhkKS5sZW5ndGgsdGhpcy5oJiZ0aGlzLmgub2JzZXJ2ZShkKSk6dGhpcy5GZihkLm5vZGVUeXBlKX19O1dzLnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07eW8oYyk/KGNbWHNdPXZvaWQgMCx0aGlzLmgmJnRoaXMuaC51bm9ic2VydmUoYykpOnRoaXMuRmYoYy5ub2RlVHlwZSl9fTsKV3MucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5vPXRoaXMuaj10aGlzLkE9dGhpcy5sPTA7dGhpcy5nPVtdfTtXcy5wcm90b3R5cGUuQj1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGM9YVtiXTtpZihjLmludGVyc2VjdGlvblJhdGlvPjAmJmMudGFyZ2V0W1hzXSE9bnVsbCl7dGhpcy5BKz1FbyhjLnRhcmdldCkubGVuZ3RoO3ZhciBkPWMudGFyZ2V0W1hzXTt0aGlzLm8rPXRoaXMuZ1tkXTt0aGlzLmdbZF09MDtkZWxldGUgYy50YXJnZXRbWHNdfX19O0RyLmF0dGFjaCgzNjU0NixXcy5wcm90b3R5cGUse0ZmOjF9KTt2YXIgWHM9Il9ndF8iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyKTt2YXIgWXM9e307WXMuYWRkPWtuO1lzLkRrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1obihhKTt0eXBlb2YgYj09PSJzdHJpbmciP18udmEoZCxiKTpBcnJheS5pc0FycmF5KGIpJiYoZD1sbihkLGIpKTt0eXBlb2YgYyE9PSJzdHJpbmcifHxfLnRhKGQsYyk/QXJyYXkuaXNBcnJheShjKSYmam4oZCxjKTpkLnB1c2goYyk7YS5jbGFzc05hbWU9ZC5qb2luKCIgIil9O1lzLmVuYWJsZT1vbjtZcy5nZXQ9aG47WXMuaGFzPW5uO1lzLnJlbW92ZT1tbjtZcy5zZXQ9ZnVuY3Rpb24oYSxiKXthLmNsYXNzTmFtZT1ifTtZcy5obT1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPWhuKGEpLGU9ITEsZj0wO2Y8ZC5sZW5ndGg7ZisrKWRbZl09PWImJihkLnNwbGljZShmLS0sMSksZT0hMCk7ZSYmKGQucHVzaChjKSxhLmNsYXNzTmFtZT1kLmpvaW4oIiAiKSk7cmV0dXJuIGV9O1lzLnRvZ2dsZT1mdW5jdGlvbihhLGIpe3ZhciBjPSFubihhLGIpO29uKGEsYixjKTtyZXR1cm4gY307dmFyIFpzPWZ1bmN0aW9uKGEpe18uaGIuY2FsbCh0aGlzKTthPWF8fHt9O3RoaXMuZz1KbChhKTt0aGlzLmcuaGM9YS5oYyE9PXZvaWQgMD9hLmhjOjE7dGhpcy5nLnZlPSEhYS52ZTt0aGlzLmcuYmg9cGFyc2VJbnQoYS5iaCwxMCl8fDMwMDt0aGlzLmcudHJhY2tWaXNpYmlsaXR5PWEudHJhY2tWaXNpYmlsaXR5fHwhMTt0aGlzLmcuYXBpS2V5PWEuYXBpS2V5fHwiIjt0aGlzLkM9MDt0aGlzLmw9e307dGhpcy5CPW51bGw7dGhpcy5GPXRoaXMuRD0iIjt0aGlzLm89bmV3IF8uSGIodGhpcyk7dGhpcy5BPXRoaXMuaj10aGlzLmg9bnVsbDt0aGlzLmcudHJhY2tWaXNpYmlsaXR5JiZfLnYuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIhPW51bGwmJih0aGlzLmo9bmV3IFdzLHRoaXMuQT1uZXcgVXModGhpcy5qKSk7dGhpcy5oPW5ldyBKcyh7U2k6dGhpcy5nLlNpfSk7dGhpcy5oLndmPTMwMDt0aGlzLmguWmY9MUUzO3RoaXMuaC5yZSghMCk7dGhpcy5vLk4odGhpcy5oLCJzaG93IiwoMCxfLnkpKHRoaXMub2csCnRoaXMpKTt0aGlzLm8uTih0aGlzLmgsImhpZGUiLCgwLF8ueSkodGhpcy5uZyx0aGlzKSk7dGhpcy5oLmthKCk7YT1uZXcgS3M7Z24oImdvb2ctZ3QtdGh1bWJVcEJ1dHRvbiIpJiYoT3MoYSksUXMoYSksVHMoYSkpfTtfLkIoWnMsXy5oYik7dmFyICRzPWZ1bmN0aW9uKGEpe2EuQSYmYS5BLnN0b3AoKTtmb3IodmFyIGIgaW4gYS5sKXt2YXIgYz1hLGQ9Yy5sW2JdO2lmKGQpe2MuaiYmYy5qLmRldGFjaChkLkFhKTtmb3IodmFyIGU9MDtlPGQuQWEubGVuZ3RoOysrZSlkLkFhW2VdJiZjLmRldGFjaChkLkFhW2VdKTtkZWxldGUgYy5sW2JdfX1hLmomJmEuai5yZXNldCgpfTtfLm09WnMucHJvdG90eXBlO18ubS5hdHRhY2g9ZnVuY3Rpb24oYSxiKXtiJiYoYi5HZD1hLHRoaXMuaC5hdHRhY2goYikpfTtfLm0uZGV0YWNoPWZ1bmN0aW9uKGEpe2EmJnRoaXMuaC5kZXRhY2goYSl9OwpfLm0ub2c9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmgubGE7YT1hP2EuR2Q6dm9pZCAwO2lmKGEhPT12b2lkIDApe3ZhciBiPXRoaXMubFthXTthdCh0aGlzLHRoaXMuQiwhMSk7dGhpcy5CPWE7YXQodGhpcyxhKTt0aGlzLmguTmEoYi5UaSk7dGhpcy5oLm5hKGIuVmkpO3ZhciBjPWIuWjt0aGlzLmgud2E9YyYmXy5BYyhjKTt0aGlzLmguS2EoYi50ZXh0KX1hPW5ldyBDdXN0b21FdmVudCgiZ29vZy1ndC1wb3B1cFNob3duIix7ZGV0YWlsOntHZDphLFhpOnRoaXMuaH19KTt3aW5kb3cuZG9jdW1lbnQuYm9keS5kaXNwYXRjaEV2ZW50KGEpfTtfLm0ubmc9ZnVuY3Rpb24oKXthdCh0aGlzLHRoaXMuQiwhMSl9O18ubS5NPWZ1bmN0aW9uKCl7JHModGhpcyk7dGhpcy5oJiYodGhpcy5oLmRpc3Bvc2UoKSx0aGlzLmg9bnVsbCk7dGhpcy5vJiYodGhpcy5vLmRpc3Bvc2UoKSx0aGlzLm89bnVsbCk7Xy5oYi5wcm90b3R5cGUuTS5jYWxsKHRoaXMpfTsKdmFyIGF0PWZ1bmN0aW9uKGEsYixjKXtpZihhPWEubFtiXSlmb3IoYz1jfHx0eXBlb2YgYz09InVuZGVmaW5lZCIsYj0wO2I8YS5BYS5sZW5ndGg7KytiKWlmKGEuQWFbYl0pWXNbYz8iYWRkIjoicmVtb3ZlIl0oYS5BYVtiXSwiVklwZ0pkLXlBV05FYi1WSXBnSmQtZm1jbVMtc241NFEiKX07dmFyIGJ0PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKWlmKGFbYl0mJmFbYl0ubm9kZSlyZXR1cm4gYVtiXS5ub2RlO3JldHVybiBudWxsfSxmdD1mdW5jdGlvbihhKXt2YXIgYj1idChhKTtpZighYilyZXR1cm4gbnVsbDt2YXIgYz1bXSxkPVtdLGU9W107Yj1uZXcgZHMoYiwhMCk7dmFyIGY9YVthLmxlbmd0aC0xXS5ub2RlLGc9MCxoPSExO2Rve2IubmV4dCgpO3ZhciBrPWIubm9kZSgpO2lmKCFrKWJyZWFrO3ZhciBsPWIuZy5nLG49Yi5kZXB0aCgpO2ZvcihsPT0xJiYtLW47ZzxhLmxlbmd0aCYmIWFbZ10ubm9kZTspKytnO2s9PWFbZ10ubm9kZXx8IWgmJmw9PTEmJihrIT1udWxsJiZrLnByZXZpb3VzU2libGluZz09bnVsbD8wOiFjdChkdChrKSkpPyhsPWV0KGspLGQucHVzaCh7bm9kZTpsLEthOmZ1bmN0aW9uKCl7fX0pLGVbZC5sZW5ndGgtMV09bixrLnBhcmVudE5vZGUmJmsucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobCxrKSxrPT1hW2ddLm5vZGUmJgooY1tnKytdPWQubGVuZ3RoLTEsaD0hMCkpOmg9ITF9d2hpbGUoayE9Zik7cmV0dXJue3plOmUsR2k6YyxkaTpkfX0sY3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPW51bGwmJlhyW2EudGFnTmFtZV19LGR0PWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIG51bGw7Zm9yKGE9YS5wcmV2aW91c1NpYmxpbmc7YSE9bnVsbCYmYSE9bnVsbCYmYS5ub2RlVHlwZT09MyYmXy5BYyhFbyhhKSk9PSIiOylhPWEucHJldmlvdXNTaWJsaW5nO3JldHVybiBhfSxqdD1mdW5jdGlvbihhLGIsYyxkLGUsZil7Xy5oYi5jYWxsKHRoaXMpO3RoaXMuZz1bXTtmb3IodmFyIGc9MDtnPGEubGVuZ3RoOysrZyl0aGlzLmcucHVzaCgibm9kZVR5cGUiaW4gYVtnXT9ndChhW2ddKTphW2ddKSxodChhW2ddLm5vZGUpO3RoaXMubD1iO3RoaXMuRD1kfHwwO3RoaXMuUj1lfHwwO3RoaXMuQz1jO3RoaXMuQj1mfHxudWxsO3RoaXMuSz10aGlzLkc9dGhpcy5MPSExO3RoaXMubz1bXTt0aGlzLkE9W107dGhpcy5oPVtdOwp0aGlzLk89W107bmV3IF8uSGIodGhpcyk7dGhpcy5qPXRoaXMuST0hMX0sZ3Q7Xy5CKGp0LF8uaGIpOwp2YXIgbXQ9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuITE7aWYoYS5ub2RlVHlwZSE9M3x8IV8uU2MpcmV0dXJuIGt0IGluIGEmJiEhYVtrdF07aWYoIWEucGFyZW50Tm9kZSlyZXR1cm4hMDtpZighKGx0IGluIGEucGFyZW50Tm9kZSkpcmV0dXJuITE7dmFyIGI9YS5wYXJlbnROb2RlW2x0XTtpZighYnx8IWJbYS5ub2RlVmFsdWVdKXJldHVybiExO2I9YlthLm5vZGVWYWx1ZV07Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2MpaWYoYltjXT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sbnQ9ZnVuY3Rpb24oYSxiKXtpZighYSlyZXR1cm4iIjtpZihhLnRhZ05hbWU9PSJUSVRMRSIpcmV0dXJuIFN0cmluZyhkb2N1bWVudC50aXRsZSk7YS5ub2RlVHlwZT09Mz9iPSJub2RlVmFsdWUiOmJ8fChiPSJ2YWx1ZSIpO3JldHVybiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoYik/U3RyaW5nKGEuZ2V0QXR0cmlidXRlKGIpKTp0eXBlb2YgYVtiXT09PSJzdHJpbmciP1N0cmluZyhhW2JdKToKIiJ9O2p0LnByb3RvdHlwZS5tYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmx9Owp2YXIgb3Q9ZnVuY3Rpb24oYSxiLGMpe2I9e1BmOmIsaGU6YyxVOltdfTthLmgucHVzaChiKTtyZXR1cm4gYn0scXQ9ZnVuY3Rpb24oYSl7aWYoIWEuaiYmYS5MJiYhYS5HJiYhYS5LKXthLkc9ITA7dmFyIGI7aWYoYj1wdChhLmcpKXtiPWEuZzt2YXIgYz1hLmg7aWYoYi5sZW5ndGg9PTEmJmJbMF0mJmJbMF0ueGUpe2Zvcih2YXIgZD1bXSxlPTA7ZTxjLmxlbmd0aDsrK2UpZm9yKHZhciBmPTA7ZjxjW2VdLlUubGVuZ3RoOysrZilkLnB1c2goY1tlXS5VW2ZdLlopO2JbMF0uS2EoZC5qb2luKCIgIiksYlswXS5ub2RlKTtiPSEwfWVsc2UgYj0hMTtiPSFifWlmKGImJihiPWZ0KGEuZykpKXthLkE9Yi5HaTthLm89Yi5kaTtkPWEuZztlPWEuQTtmPWEubzt2YXIgZz1iLnplO2M9W107Zm9yKHZhciBoPTA7aDxkLmxlbmd0aDsrK2gpaWYoY1toXT1bXSxkW2hdLm5vZGUmJmVbaF0hPT12b2lkIDApZm9yKHZhciBrPTA7azxmLmxlbmd0aDsrK2spaWYoIShnW2tdPmdbZVtoXV0pKXtpZihnW2tdPT0KZ1tlW2hdXSl7aWYoZltrXS5ub2RlLnBhcmVudE5vZGUhPWZbZVtoXV0ubm9kZS5wYXJlbnROb2RlKWNvbnRpbnVlfWVsc2V7Zm9yKHZhciBsPWdbZVtoXV0tZ1trXSxuPWZbZVtoXV0ubm9kZS5wYXJlbnROb2RlO2wtLSYmbiYmbiE9ZltrXS5ub2RlLnBhcmVudE5vZGU7KW49bi5wYXJlbnROb2RlO2lmKG4hPWZba10ubm9kZS5wYXJlbnROb2RlKWNvbnRpbnVlfWNbaF0ucHVzaChrKX1kPWEuZztlPWEuaDtmPS0xO2ZvcihnPWUubGVuZ3RoLTE7Zz49MDstLWcpZm9yKGg9ZVtnXSxrPWguVS5sZW5ndGgtMTtrPj0wOy0taylpZihsPWguVVtrXSwhKGwuWDwwKSYmZFtsLlhdJiZkW2wuWF0ubm9kZSlpZihmPDApbC5YYz1pcihjW2wuWF0pLGY9Y1tsLlhdW2NbbC5YXS5sZW5ndGgtMV07ZWxzZSBmb3Iobj1jW2wuWF0ubGVuZ3RoLTE7bj49MDstLW4paWYoY1tsLlhdW25dPD1mKXtsLlhjPWlyKGNbbC5YXS5zbGljZSgwLG4rMSkpO2Y9Y1tsLlhdW25dO2JyZWFrfWZvcihjPWU9MDtjPGEuaC5sZW5ndGg7KytjKXtkPQphLmhbY107Zj1hLmc7Zz1kO2g9Yi56ZTtrPWEuQTtsPSIiO2ZvcihuPTA7bjxnLlUubGVuZ3RoOysrbil7dmFyIHE9Zy5VW25dO2wrPXEuWjtpZihxLlg8MCl7dmFyIHA9LTEscj0tMSx0PWtbZy5VW24tMV0uWF07dCE9PXZvaWQgMCYmKHA9aFt0XSk7bjxnLlUubGVuZ3RoLTEmJih0PWtbZy5VW24rMV0uWF0sdCE9PXZvaWQgMCYmKHI9aFt0XSkpO2lmKHA+PTB8fHI+PTApYTppZih0PShwPDB8fHI8cCkmJm48Zy5VLmxlbmd0aC0xLHA9ZixyPXEscT1nLlVbdD9uKzE6bi0xXSwhKHEuWD49cC5sZW5ndGh8fHBbcS5YXS5ub2RlPT1udWxsKSl7cD1yLlo7ci5aPSIiO2lmKC9eICskLy50ZXN0KHApJiYocj10P3EuWi5jaGFyQ29kZUF0KDApOnEuWi5jaGFyQ29kZUF0KHEuWi5sZW5ndGgtMSksMzU4NDw9ciYmcjw9MzcxMXx8MTIyODg8PXImJnI8PTEyMzUxfHwxMjM1Mjw9ciYmcjw9MTI1NDN8fDEyNzg0PD1yJiZyPD0xMjc5OXx8MTk5Njg8PXImJnI8PTQwOTU5fHw2NTI4MDw9ciYmcjw9CjY1NTE5KSlicmVhayBhO3EuWj10P3ArcS5aOnEuWitwfX19Zj1sO2c9YS5nO2g9ZDtrPWEubztsPWIuemU7bj1hLkE7cT1bXTtmb3IocD0wO3A8aC5VLmxlbmd0aCYmIShlPj1rLmxlbmd0aCk7KytwKWlmKHI9aC5VW3BdLHIuWGMmJiEoci5YPDApJiZnW3IuWF0ubm9kZSYmci5aKWlmKGU9PW5bci5YXXx8ZSBpbiByLlhjJiYoIShlKzEgaW4gci5YYyl8fGUrMSE9bltyLlhdKSl7aWYoa1tlXSYma1tlXS5ub2RlKXt0PWV0KGtbZV0ubm9kZSk7cS5wdXNoKHQpO2Zvcih2YXIgQT1rW2VdLm5vZGUsRD1sW25bci5YXV0tbFtlXSxFPXQsYmE9Z1tyLlhdLm5vZGUucGFyZW50Tm9kZSxaPUU7YmEmJkQtLTspWj1iYS5jbG9uZU5vZGUoITEpLFouYXBwZW5kQ2hpbGQoRSksYmE9YmEucGFyZW50Tm9kZSxFPVo7QS5hcHBlbmRDaGlsZChaKTtBPWdbci5YXS5ub2RlO2dbci5YXS5yZD9nW3IuWF0uemZ8fHQuYXBwZW5kQ2hpbGQoQSk6KEE9Z1tyLlhdLm5vZGUuY2xvbmVOb2RlKCExKSxBLmlkJiYKKEEuaWQ9IiIpLHQuYXBwZW5kQ2hpbGQoQSkpO2dbci5YXS5LYShyLlosQSl9fWVsc2UrK2UsLS1wO2c9cTtuPWEuZztxPWQ7aD1hLkM7aWYocS5QZiloPXEuUGY7ZWxzZXtsPW4ubGVuZ3RoO2s9LTE7Zm9yKHA9MDtwPHEuVS5sZW5ndGg7KytwKXI9cS5VW3BdLlgscj49MCYmbltyXSYmbltyXS5ub2RlJiYoaz1NYXRoLm1heChrLHIpLGw9TWF0aC5taW4obCxyKSk7Zm9yKG49IiI7bDw9azsrK2wpaFtsXSYmKG4rPWhbbF0pO2g9bn1sPWE7bj1nO3E9aDtpZihsLkIpe2lmKGwuQi5nLmhjIT0zKXtnPWwuTztoPWcucHVzaDtrPWwuQjtkPWQuaGU7ZD1rLmxbKytrLkNdPXtpZDprLkMudG9TdHJpbmcoKSxSazpsLHRleHQ6cSxmbTpkfHxxLFo6ZixUaTprLkQsVmk6ay5GLEFhOm59O2ZvcihmPTA7ZjxuLmxlbmd0aDsrK2YpbltmXSYmay5hdHRhY2goZC5pZCxuW2ZdKTtrLmomJmsuai5hdHRhY2gobixxLmxlbmd0aCk7ay5BJiZrLkEuc3RhcnQoKTtoLmNhbGwoZyxkLmlkKX19ZWxzZSBmb3IoZD0KMDtkPG4ubGVuZ3RoOysrZCluW2RdLnRpdGxlPXF9Yj1hLmc7Zm9yKGM9MDtjPGIubGVuZ3RoOysrYyliW2NdLm5vZGUmJiFiW2NdLnJkJiZfLkFkKGJbY10ubm9kZSk7Yj1hLmc7Yz1hLm87YT1hLkE7Zm9yKGU9ZD0wO2U8Yy5sZW5ndGg7KytlKWlmKGY9Y1tlXS5ub2RlKXtmb3IoO2Q8Yi5sZW5ndGgmJmU+YVtkXTspZCsrOyhkPj1iLmxlbmd0aHx8ZSE9YVtkXSkmJiFmLmZpcnN0Q2hpbGQmJihfLkFkKGYpLGNbZV0ubm9kZT1udWxsKX19fX07Cmp0LnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKCl7aWYodGhpcy5HKWlmKHRoaXMuRz0hMSx0aGlzLkImJiRzKHRoaXMuQiksdGhpcy5PPVtdLHB0KHRoaXMubyksdGhpcy5nLmxlbmd0aD09MSYmdGhpcy5nWzBdLnhlKXRoaXMuZ1swXS5LYSh0aGlzLkNbMF0sdGhpcy5nWzBdLm5vZGUpO2Vsc2V7Zm9yKHZhciBhPTAsYj0wO2I8dGhpcy5vLmxlbmd0aDsrK2Ipe3ZhciBjPXRoaXMub1tiXS5ub2RlO2lmKGMpe2Zvcig7YTx0aGlzLmcubGVuZ3RoJiZiPnRoaXMuQVthXTspe3ZhciBkPWErKzt0aGlzLmdbZF0ubm9kZSYmKHJ0KHRoaXMuZ1tkXS5ub2RlKSx0aGlzLmdbZF0ubm9kZT1udWxsKX1pZihhPHRoaXMuZy5sZW5ndGgmJmI9PXRoaXMuQVthXSYmdGhpcy5nW2FdLm5vZGUpe3RoaXMuZ1thXS56Znx8KF8uemQoYyksYy5hcHBlbmRDaGlsZCh0aGlzLmdbYV0ubm9kZSkpO3RoaXMuZ1thXS5LYSh0aGlzLkNbYV0sdGhpcy5nW2FdLm5vZGUpO2ErKzt2YXIgZT1jLnBhcmVudE5vZGU7CmlmKGUmJmUubm9kZVR5cGUhPTExKWlmKGMucmVtb3ZlTm9kZSljLnJlbW92ZU5vZGUoITEpO2Vsc2V7Zm9yKDtkPWMuZmlyc3RDaGlsZDspZS5pbnNlcnRCZWZvcmUoZCxjKTtfLkFkKGMpfX1lbHNlIF8uQWQoYyl9fXRoaXMubz1bXX19O2p0LnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7Xy5oYi5wcm90b3R5cGUuTS5jYWxsKHRoaXMpO3RoaXMucmVzdG9yZSgpO2Zvcih2YXIgYT0wO2E8dGhpcy5nLmxlbmd0aDsrK2EpdGhpcy5nW2FdLm5vZGUmJnJ0KHRoaXMuZ1thXS5ub2RlKTt0aGlzLmc9bnVsbH07CnZhciBodD1mdW5jdGlvbihhKXtpZihhKWlmKGEubm9kZVR5cGU9PTMmJl8uU2Mpe2x0IGluIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlW2x0XXx8KGEucGFyZW50Tm9kZVtsdF09e30pO3ZhciBiPWEucGFyZW50Tm9kZVtsdF07YlthLm5vZGVWYWx1ZV18fChiW2Eubm9kZVZhbHVlXT1bXSk7Yj1iW2Eubm9kZVZhbHVlXTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoOysrYylpZihiW2NdPT1hKXJldHVybjtiLnB1c2goYSl9ZWxzZSBhW2t0XT0xfSxydD1mdW5jdGlvbihhKXtpZighYXx8YS5ub2RlVHlwZT09MyYmXy5TYyl7dmFyIGI9YS5wYXJlbnROb2RlO2lmKGImJmx0IGluIGIpe3ZhciBjPWJbbHRdO2lmKGMmJmEmJmNbYS5ub2RlVmFsdWVdKXt2YXIgZD1jW2Eubm9kZVZhbHVlXTtpZihkKWZvcih2YXIgZT0wO2U8ZC5sZW5ndGg7KytlKWlmKGRbZV09PWEpe2Quc3BsaWNlKGUsMSk7YnJlYWt9ZC5sZW5ndGg9PTAmJmRlbGV0ZSBjW2Eubm9kZVZhbHVlXX1pZihjJiZ3cihjKSl0cnl7ZGVsZXRlIGJbbHRdfWNhdGNoKGYpe2JbbHRdPQoiIn19fWVsc2UgaWYoa3QgaW4gYSl0cnl7ZGVsZXRlIGFba3RdfWNhdGNoKGYpe2Fba3RdPSIifX0scHQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2IpdHJ5e2FbYl0ubm9kZSYmIWFbYl0ubm9kZS5wYXJlbnROb2RlJiYoYVtiXS5ub2RlPW51bGwpfWNhdGNoKGMpe2FbYl0ubm9kZT1udWxsfWZvcihiPWEubGVuZ3RoLTE7Yj49MCYmIWFbYl0ubm9kZTstLWIpO2EubGVuZ3RoPWIrMTtyZXR1cm4gYS5sZW5ndGh9LGV0PWZ1bmN0aW9uKGEpe2E9YS5vd25lckRvY3VtZW50P2Eub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb250Iik6Xy53ZChkb2N1bWVudCwiZm9udCIpO2h0KGEpO2Euc3R5bGUudmVydGljYWxBbGlnbj0iaW5oZXJpdCI7Xy5vaShfLlppKHBxLDIpKSYmKGEuZGlyPSJhdXRvIik7cmV0dXJuIGF9LHN0PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1uZXcgU2V0LGM9MDtjPGEuZy5sZW5ndGg7YysrKXt2YXIgZD1hLmdbY10ubm9kZTtkIT1udWxsJiYKYi5hZGQoZCl9cmV0dXJuIGJ9LHR0PWZ1bmN0aW9uKCl7dGhpcy5oPXt9O3RoaXMuZz17fX07dHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmhbYV0hPW51bGx8fHRoaXMuZ1thXSE9bnVsbHx8YiYmKGEgaW4gdGhpcy5ofHxhIGluIHRoaXMuZyl9O3R0LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihhLGIpe3RoaXMuZ1thXT1ifTt0dC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGEpe2RlbGV0ZSB0aGlzLmdbYV07ZGVsZXRlIHRoaXMuaFthXX07dHQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nW2FdO2J8fChiPXRoaXMuaFthXSx0aGlzLmdbYV09Yik7cmV0dXJuIGJ9O3ZhciBrdD0iX2d0XyIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIpLGx0PSJfZ3RuXyIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIpOwooZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMpe2RvY3VtZW50LnRpdGxlPWN9dmFyIGI9e307Z3Q9ZnVuY3Rpb24oYyxkKXtpZihjLnRhZ05hbWU9PSJUSVRMRSIpcmV0dXJue25vZGU6YyxLYTphLHJkOiEwLHpmOiEwLHhlOiEwfTtpZihjLm5vZGVUeXBlPT0zKXJldHVybntub2RlOmMsS2E6ZnVuY3Rpb24oZSxmKXtfLkNkKGYsZSl9fTtkfHwoZD0idmFsdWUiKTtiW2RdfHwoYltkXT1mdW5jdGlvbihlLGYpe2Yuc2V0QXR0cmlidXRlJiZmLnNldEF0dHJpYnV0ZShkLGUpO3R5cGVvZiBlPT09InN0cmluZyImJihmW2RdPWUpfSk7Yz17bm9kZTpjLEthOmJbZF0scmQ6ITB9O2QhPSJ2YWx1ZSImJihjLnhlPSEwKTtyZXR1cm4gY319KSgpOwp2YXIgdXQ9ZnVuY3Rpb24oYSxiLGMsZCl7ZD1kLmZpcnN0Q2hpbGQmJmQuZmlyc3RDaGlsZC5ub2RlVHlwZT09Mz9kLmZpcnN0Q2hpbGQubm9kZVZhbHVlOkVvKGQpO2Q9e1g6YyxaOnBvKGQpfTthLnB1c2goZCk7YltjXT9iW2NdLmVuZD1kOmJbY109e3N0YXJ0OmQsZW5kOmR9O3JldHVybiBkfSx2dD1mdW5jdGlvbihhKXtmb3IodmFyIGIsYz1hLmZpcnN0Q2hpbGQ7YztjPWIpYj1jLm5leHRTaWJsaW5nLGMubm9kZVR5cGUhPTMmJihjPT1hLmZpcnN0Q2hpbGQ/YS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGMsYSk6eG8oYyxhKSx2dChjKSl9O3ZhciB3dD1mdW5jdGlvbigpe3RoaXMuZz1bXX07d3QucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXt0aGlzLmcucHVzaChhKX07dmFyIHh0PWZ1bmN0aW9uKCl7dGhpcy5nPVtdfTtfLkIoeHQsd3QpO3h0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7aWYoYSlmb3IoO2EoKTspO307eHQuZz1mdW5jdGlvbigpe3JldHVybiBXcSh4dCl9O3ZhciB6dD1mdW5jdGlvbihhKXt0aGlzLmc9W107dGhpcy5oPS41O3l0KHRoaXMsYSk7dGhpcy5sPTA7dGhpcy5qPSEwO3RoaXMubz0oMCxfLnkpKHRoaXMuQSx0aGlzKX07Xy5CKHp0LHd0KTt2YXIgeXQ9ZnVuY3Rpb24oYSxiKXtiPjE/YS5oPTE6YjwuMDAxP2EuaD0uMDAxOmImJihhLmg9Yil9O3p0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7d3QucHJvdG90eXBlLmFkZC5jYWxsKHRoaXMsYSk7dGhpcy5qJiZBdCh0aGlzKX07dmFyIEF0PWZ1bmN0aW9uKGEpe2Euaj0hMTt3aW5kb3cuc2V0VGltZW91dChhLm8sTWF0aC5taW4oYS5sLDVFMykpfTsKenQucHJvdG90eXBlLkE9ZnVuY3Rpb24oKXt2YXIgYT0obmV3IERhdGUpLmdldFRpbWUoKTtkb3t0aGlzLmcubGVuZ3RoJiYodGhpcy5nWzBdJiZ0aGlzLmdbMF0oKXx8dGhpcy5nLnNoaWZ0KCkpO3ZhciBiPSEhdGhpcy5nLmxlbmd0aDt2YXIgYz05NSp0aGlzLmgrNTt2YXIgZD0obmV3IERhdGUpLmdldFRpbWUoKS1hfXdoaWxlKGImJmQ8Yyk7dGhpcy5sPU1hdGguY2VpbChkKigxL3RoaXMuaC0xKSkrMTtiP0F0KHRoaXMpOnRoaXMuaj0hMH07dmFyIEJ0PWZ1bmN0aW9uKGEsYil7dGhpcy5EPWF8fG51bGw7dGhpcy5JPWJ8fHh0LmcoKTt0aGlzLkI9dGhpcy5BPXRoaXMuRz1udWxsO3RoaXMubD10aGlzLmo9ITE7dGhpcy5vPW51bGw7dGhpcy5nPVtdO3RoaXMuaD0wfSxDdD1mdW5jdGlvbihhLGIpe2Euanx8KGEuRz1iKX0sRHQ9ZnVuY3Rpb24oYSxiLGMpe2EuQT1jPygwLF8ueSkoYixjKTpifSxFdD1mdW5jdGlvbihhLGIsYyl7YS5CPWM/KDAsXy55KShiLGMpOmJ9LEZ0PWZ1bmN0aW9uKGEsYil7YS5qfHwoYS5qPSEwLGEuRj1iLGEuaCsrLGEubz1hLkcsYS5DKCkpfTtCdC5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMuaCsrO3RoaXMuaj0hMTt0aGlzLmc9W119Owp2YXIgR3Q9ZnVuY3Rpb24oYSl7aWYoIWEuailyZXR1cm4gbnVsbDtmb3IodmFyIGI9ITEsYz0wO2M8YS5nLmxlbmd0aDsrK2MpaWYoYS5nW2NdLnRhcmdldD09PWEpe2EuZ1tjXS5yZWFkeT0hMTthLmdbY10uaGc9YS5oKzE7Yj0hMDticmVha31ifHxhLmcucHVzaCh7dGFyZ2V0OmEscmVhZHk6ITEsaGc6YS5oKzF9KTtyZXR1cm4oMCxfLnkpKGEuQyxhLGEsYS5oKzEpfSxIdD1mdW5jdGlvbihhKXtpZighYS5qKXJldHVybiEwO2Zvcih2YXIgYj0wO2I8YS5nLmxlbmd0aDsrK2IpaWYoYS5nW2JdLnRhcmdldD09PWEmJmEuZ1tiXS5oZz09YS5oKXJldHVybiBhLmdbYl0ucmVhZHk7cmV0dXJuITB9OwpCdC5wcm90b3R5cGUuQz1mdW5jdGlvbihhLGIpe2lmKHRoaXMuail7aWYoYSlmb3IodmFyIGM9MDtjPHRoaXMuZy5sZW5ndGg7KytjKWlmKHRoaXMuZ1tjXS50YXJnZXQ9PT1hKXt0aGlzLmdbY10ucmVhZHk9ITA7YnJlYWt9dGhpcy5sfHx0aGlzLkkuYWRkKCgwLF8ueSkodGhpcy5XLHRoaXMsYnx8dGhpcy5oKSl9fTsKQnQucHJvdG90eXBlLlc9ZnVuY3Rpb24oYSl7aWYodGhpcy5oIT1hKXJldHVybiExO2E9dGhpcy5vO2lmKGE9PUl0KXJldHVybiB0aGlzLnN0b3AoKSx0aGlzLkEmJnRoaXMuQS5jYWxsKHRoaXMuRCx0aGlzLHRoaXMuRiksITE7dGhpcy5sPSEwO3RyeXt2YXIgYj1hLmNhbGwodGhpcy5ELHRoaXMsdGhpcy5GKTtpZighYil0aHJvdyBFcnJvcigpO31jYXRjaChjKXt0aGlzLnN0b3AoKTthPWM7aWYodGhpcy5CKXRoaXMuQi5jYWxsKHRoaXMuRCxhLHRoaXMsdGhpcy5GKTtlbHNlIHRocm93IGE7cmV0dXJuITF9ZmluYWxseXt0aGlzLmw9ITF9YiE9SnQmJih0aGlzLm89Yix0aGlzLmgrKyx0aGlzLkMoKSk7cmV0dXJuITF9O3ZhciBKdD1mdW5jdGlvbigpe30sSXQ9ZnVuY3Rpb24oKXt9O3ZhciBLdD1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGEuY2xhc3NOYW1lPT0ic3RyaW5nIj9hLmNsYXNzTmFtZTphLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifSxMdD1mdW5jdGlvbihhLGIpe3R5cGVvZiBhLmNsYXNzTmFtZT09InN0cmluZyI/YS5jbGFzc05hbWU9YjphLnNldEF0dHJpYnV0ZSYmYS5zZXRBdHRyaWJ1dGUoImNsYXNzIixiKX0sTXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5jbGFzc0xpc3Q/YS5jbGFzc0xpc3QuY29udGFpbnMoYik6Xy50YShhLmNsYXNzTGlzdD9hLmNsYXNzTGlzdDpLdChhKS5tYXRjaCgvXFMrL2cpfHxbXSxiKX0sTnQ9ZnVuY3Rpb24oYSxiKXtpZihhLmNsYXNzTGlzdClhLmNsYXNzTGlzdC5hZGQoYik7ZWxzZSBpZighTXQoYSxiKSl7dmFyIGM9S3QoYSk7THQoYSxjKyhjLmxlbmd0aD4wPyIgIitiOmIpKX19LE90PWZ1bmN0aW9uKGEsYil7YS5jbGFzc0xpc3Q/YS5jbGFzc0xpc3QucmVtb3ZlKGIpOk10KGEsYikmJgpMdChhLEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChhLmNsYXNzTGlzdD9hLmNsYXNzTGlzdDpLdChhKS5tYXRjaCgvXFMrL2cpfHxbXSxmdW5jdGlvbihjKXtyZXR1cm4gYyE9Yn0pLmpvaW4oIiAiKSl9O3ZhciBRdD1mdW5jdGlvbihhLGIsYyxkLGUpe2I9Ynx8e307dGhpcy5XPWV8fFtdO3RoaXMuQT1bXTt0aGlzLkY9W107UHQodGhpcyxhfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYi5WZj09PXZvaWQgMHx8ISFiLlZmKTt0aGlzLkM9Y3x8anQ7dGhpcy5EPWIubGk7dGhpcy5qPXRoaXMuZz10aGlzLm89dGhpcy5kYz1udWxsO3RoaXMuQj0hIWIuYmo7dGhpcy5MPSEhYi5aaTt0aGlzLks9dGhpcy5CPzI3OjEzO3RoaXMuST0hMDt0aGlzLkc9W107dGhpcy5sPW5ldyBCdCh0aGlzLGQpfSxSdD1mdW5jdGlvbihhLGIsYyxkKXthLmwuanx8KGI9e2RnOmIsYWc6YyxBYTpbXSxRZjpbXSxyYjpbXSx0ZXh0TGVuZ3RoOjAsc2l6ZTowLGNvbnRpbnVvdXM6ITB9LGEuZGM9bnVsbCxDdChhLmwsYS5oKSxEdChhLmwsZCksRXQoYS5sLCgwLF8ueSkoZnVuY3Rpb24oZSl7dGhpcy51aShlKTtkKCl9LGEpKSxGdChhLmwsYikpfSxTdD1mdW5jdGlvbihhLGIpe3JldHVybiBhLkFhLmxlbmd0aD4wPwpuZXcgYihhLkFhLGEucmIuam9pbigiIiksYS5RZixhLnRleHRMZW5ndGgsYS5zaXplKTpudWxsfSxUdD1mdW5jdGlvbihhLGIpe2lmKCFhLmopcmV0dXJuIGEuZGM9U3QoYixhLkMpLCEwO2lmKCFiLmNvbnRpbnVvdXMmJmIuQWEubGVuZ3RoPjApcmV0dXJuIGEuZGM9U3QoYixhLkMpLCEwO2IuY29udGludW91cz1hLmouS2Y7YTp7dmFyIGM9YS5qO3ZhciBkPWEuSztpZihiLnNpemU+Yi5hZ3x8Yi50ZXh0TGVuZ3RoPmIuZGcpYz0hMTtlbHNle3ZhciBlPWMuc2l6ZSxmPWMudGV4dC5sZW5ndGg7aWYoYi5BYS5sZW5ndGghPTAmJihlKz1iLkFhLmxlbmd0aD09MT9iLnNpemUrZCtkOmIuc2l6ZStkLGYrPWIudGV4dExlbmd0aCxlPmIuYWd8fGY+Yi5kZykpe2M9ITE7YnJlYWsgYX1iLnNpemU9ZTtiLnRleHRMZW5ndGg9ZjtiLkFhLnB1c2goYy5ub2RlKTtiLlFmLnB1c2goYy50ZXh0KTtkPWIuQWEubGVuZ3RoLTE7ZD09MD9iLnJiLnB1c2goYy5MZCk6KGQ9PTEmJihiLnJiWzBdPSI8YSBpPTA+IisKYi5yYlswXSsiPC9hPiIpLGIucmIucHVzaCgiPGEgaT0iK2QrIj4iKSxiLnJiLnB1c2goYy5MZCksYi5yYi5wdXNoKCI8L2E+IikpO2M9ITB9fWlmKGMpcmV0dXJuIGEuaj1udWxsLCExO2EuZGM9U3QoYixhLkMpO3JldHVybiEwfSxVdD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bnQoYixjKTtkJiZfLkFjKGpvKGQpKSYmYS5HLnB1c2goe25vZGU6YixZZzpjLHRleHQ6ZH0pfTsKUXQucHJvdG90eXBlLmg9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO2lmKHRoaXMuaiYmVHQodGhpcyxiKSlyZXR1cm4gSXQ7aWYoIXRoaXMuZyl7dGhpcy5JPSEhdGhpcy5BLmxlbmd0aDtpZighdGhpcy5BLmxlbmd0aCYmKGE9dGhpcy5HLnNoaWZ0KCkpKXJldHVybiB0aGlzLmo9e0tmOiExLG5vZGU6Z3QoYS5ub2RlLGEuWWcpLHRleHQ6YS50ZXh0LExkOmxvKGEudGV4dCksc2l6ZTp0aGlzLkI/Xy5HYihhLnRleHQpLmxlbmd0aDphLnRleHQubGVuZ3RofSxiLmNvbnRpbnVvdXM9ITEsVHQodGhpcyxiKSxJdDthPXRoaXMuQS5zaGlmdCgpfHx0aGlzLkYuc2hpZnQoKTtpZighYSlyZXR1cm4gdGhpcy5qPW51bGwsVHQodGhpcyxiKSxJdDt0aGlzLm89W2EuWWldO3RoaXMuZz1uZXcgZHMoYS5yb290KX10aGlzLmcubmV4dCgpO2lmKHRoaXMuZy5kb25lKXJldHVybiB0aGlzLmc9bnVsbCxiLmNvbnRpbnVvdXM9ITEsdGhpcy5oO2E9dGhpcy5nLm5vZGUoKTt2YXIgZD10aGlzLmcuZy5nOwppZihkPT0tMSlyZXR1cm4gVnQodGhpcyksV3QoYSl8fChiLmNvbnRpbnVvdXM9ITEpLHRoaXMuaDtYdCh0aGlzLGEpO2Q9ZD09MTt2YXIgZT0hIWEmJihhLm5vZGVUeXBlPT0zJiZ0eXBlb2YgYS5ub2RlVmFsdWU9PT0ic3RyaW5nInx8YS50YWdOYW1lPT0iVElUTEUiJiZ0eXBlb2YgYS52YWx1ZT09PSJzdHJpbmcifHxhLnRhZ05hbWU9PSJURVhUQVJFQSImJk10KGEsInRyYW5zbGF0ZSIpfHxhLnRhZ05hbWU9PSJJTlBVVCImJihZclthLnR5cGVdfHxNdChhLCJ0cmFuc2xhdGUiKSkpO2lmKChlfHxkKSYmdGhpcy5JJiYhWXQoYSkpcmV0dXJuIFB0KHRoaXMsYSxadCh0aGlzKSwhMCksYnModGhpcy5nLmcpLFZ0KHRoaXMpLHRoaXMuaDtpZihkJiZadCh0aGlzKSYmKHRoaXMuTCYmVXQodGhpcyxhLCJ0aXRsZSIpLFV0KHRoaXMsYSwiYWx0IiksVXQodGhpcyxhLCJwbGFjZWhvbGRlciIpLFV0KHRoaXMsYSwiYXJpYS1sYWJlbCIpLFV0KHRoaXMsYSwiYXJpYS1wbGFjZWhvbGRlciIpLFV0KHRoaXMsCmEsImFyaWEtcm9sZWRlc2NyaXB0aW9uIiksVXQodGhpcyxhLCJhcmlhLXZhbHVldGV4dCIpLGVzKHRoaXMuZykpKWZvcih2YXIgZj1hLmZpcnN0Q2hpbGQ7Zjspe2lmKGYubm9kZVR5cGU9PTMpe3ZhciBnPWYubm9kZVZhbHVlLnNwbGl0KCJcbiIpO2lmKGcubGVuZ3RoPjJ8fGcubGVuZ3RoPT0yJiZfLkFjKGdbMF0pIT0iIiYmXy5BYyhnWzFdKSE9IiIpe2Yubm9kZVZhbHVlPWdbMF07Zm9yKHZhciBoPTE7aDxnLmxlbmd0aDsrK2gpe3ZhciBrPV8uc2QoYSkuY3JlYXRlRWxlbWVudCgiZm9udCIpO3RoaXMuVy5wdXNoKGspO3hvKGssZik7Zj1rO3hvKF8uc2QoYSkuY3JlYXRlVGV4dE5vZGUoIlxuIitnW2hdKSxmKTtmPWYubmV4dFNpYmxpbmd9fX1mPWYubmV4dFNpYmxpbmd9YS5zaGFkb3dSb290JiZBcnJheS5mcm9tKGEuc2hhZG93Um9vdC5jaGlsZE5vZGVzKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe1B0KGMscixadChjKSl9KTtpZihlKXticyh0aGlzLmcuZyk7aWYoWnQodGhpcykpe3ZhciBsPQpudChhKTtpZihfLkFjKGpvKGwpKSYmKHRoaXMuaj17S2Y6ITAsbm9kZTpndChhKSx0ZXh0OmwsTGQ6bG8obCksc2l6ZTp0aGlzLkI/Xy5HYihsKS5sZW5ndGg6bC5sZW5ndGh9LFR0KHRoaXMsYikpKXJldHVybiBWdCh0aGlzKSxJdH1WdCh0aGlzKTtyZXR1cm4gdGhpcy5ofWlmKGQpe2lmKCR0KGEpfHwhYS5maXJzdENoaWxkJiZhLnRhZ05hbWUhPSJJRlJBTUUiJiZhLnRhZ05hbWUhPSJSVUJZIilyZXR1cm4gYi5jb250aW51b3VzPWIuY29udGludW91cyYmISFYclthLnRhZ05hbWVdLGJzKHRoaXMuZy5nKSxWdCh0aGlzKSx0aGlzLmg7aWYoYS50YWdOYW1lPT0iUlVCWSIpe3RyeXtsPV8uQyhhLmNoaWxkTm9kZXMpO2Zvcih2YXIgbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBxPW4udmFsdWU7cS5ub2RlVHlwZSE9MyYmUHQodGhpcyxxLFp0KHRoaXMpKX19Y2F0Y2gocil7fWJzKHRoaXMuZy5nKTtWdCh0aGlzKTtyZXR1cm4gdGhpcy5ofWlmKGEudGFnTmFtZT09IklGUkFNRSIpe3RyeXtpZighYS5zcmMubWF0Y2goL2h0dHBzPzpcL1wvLyl8fApfLkNiKGEuc3JjLm1hdGNoKF8ucmYpWzNdfHxudWxsKT09d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKXt2YXIgcD16byhhKS5kb2N1bWVudEVsZW1lbnQ7cCYmUHQodGhpcyxwLFp0KHRoaXMpKX19Y2F0Y2gocil7fWIuY29udGludW91cz0hMTticyh0aGlzLmcuZyk7VnQodGhpcyk7cmV0dXJuIHRoaXMuaH1adCh0aGlzKSYmV3QoYSk/dGhpcy5EJiZhLnRhZ05hbWU9PSJBIiYmYS5ocmVmJiZ0aGlzLkQoYSk6Yi5jb250aW51b3VzPSExO3JldHVybiB0aGlzLmh9YnModGhpcy5nLmcpO1Z0KHRoaXMpO3JldHVybiB0aGlzLmh9Owp2YXIgJHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG10KGEpfHxhLm5vZGVUeXBlIT0zJiYoIWEudGFnTmFtZXx8V3JbYS50YWdOYW1lXXx8WHJbYS50YWdOYW1lXXx8TXQoYSwic2tpcHRyYW5zbGF0ZSIpKX0sYXU9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5zZChhKTtyZXR1cm4gYi5kZWZhdWx0VmlldyYmYi5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlP2IuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpOmEuY3VycmVudFN0eWxlfSxZdD1mdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09Mz8hMDphLm5vZGVUeXBlIT0xPyExOmEub2Zmc2V0V2lkdGgmJmEub2Zmc2V0SGVpZ2h0PyEwOihhPWF1KGEpLCEhYSYmYS5kaXNwbGF5IT0ibm9uZSImJmEudmlzaWJpbGl0eSE9ImhpZGRlbiIpfSxXdD1mdW5jdGlvbihhKXtpZihhLm5vZGVUeXBlPT0zKXJldHVybiEwO2lmKGEubm9kZVR5cGUhPTEpcmV0dXJuITE7dmFyIGI9YXUoYSk7cmV0dXJuISFWclthLnRhZ05hbWVdJiYKKCFifHwhYi5kaXNwbGF5fHxiLmRpc3BsYXk9PSJpbmxpbmUiKX0sUHQ9ZnVuY3Rpb24oYSxiLGMsZCl7KGQ/YS5GOmEuQSkucHVzaCh7cm9vdDpiLFlpOmM9PT12b2lkIDB8fGN9KX0sWnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEub1thLm8ubGVuZ3RoLTFdfSxYdD1mdW5jdGlvbihhLGIpe2I9IW10KGIpJiYoYi5ub2RlVHlwZT09JG4mJlp0KGEpfHwhKE10KGIsIm5vdHJhbnNsYXRlIil8fGIuYXR0cmlidXRlcyYmYi5hdHRyaWJ1dGVzLnRyYW5zbGF0ZSYmYi5hdHRyaWJ1dGVzLnRyYW5zbGF0ZS52YWx1ZT09Im5vIikmJihNdChiLCJ0cmFuc2xhdGUiKXx8ISFiLmF0dHJpYnV0ZXMmJiEhYi5hdHRyaWJ1dGVzLnRyYW5zbGF0ZSYmYi5hdHRyaWJ1dGVzLnRyYW5zbGF0ZS52YWx1ZT09InllcyJ8fFp0KGEpKSk7YS5vLnB1c2goYil9LFZ0PWZ1bmN0aW9uKGEpe2Euby5wb3AoKX0sYnU9e307RHIuYXR0YWNoKDU3NjIsUXQucHJvdG90eXBlLHt1aToxfSk7dmFyIGN1PWZ1bmN0aW9uKCl7Xy51LmNhbGwodGhpcyk7dGhpcy5nPVtdfTtfLkIoY3UsXy51KTtjdS5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbigpe3FzKHRoaXMuaCwwLHRoaXMpfTtjdS5wcm90b3R5cGUuaD1mdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8dGhpcy5nLmxlbmd0aDsrK2EpXy5BZCh0aGlzLmdbYV0pO3RoaXMuZz1bXX07Y3UucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtfLnUucHJvdG90eXBlLk0uY2FsbCh0aGlzKTt0aGlzLnJlc3RvcmUoKX07dmFyIGR1PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBTZXQ7YS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3lvKGMpP2IuYWRkKGMpOihjPWMucGFyZW50RWxlbWVudHx8bnVsbCxjIT1udWxsJiZiLmFkZChjKSl9KTtyZXR1cm4gYn07dmFyIGV1PWZ1bmN0aW9uKGEpe3RoaXMuaD0hMDt0aGlzLmw9YTt0aGlzLmo9ITE7dGhpcy5nPVtdfTtldS5wcm90b3R5cGUubWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLmpvaW4oIiIpfTt2YXIgZnU9ZnVuY3Rpb24oYSxiKXt0aGlzLm89YTt0aGlzLmw9ITA7dGhpcy5qPWI7dGhpcy5nPW51bGw7dGhpcy5oPTB9LGd1PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubD8oYigoMCxfLnkpKGEuQSxhKSxhLm8sYS5qPyJlbiI6IiIpLCEwKTohMX07ZnUucHJvdG90eXBlLkE9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZz1iO3RoaXMuaD1jO2EoKX07dmFyIGh1PWZ1bmN0aW9uKGEsYil7dGhpcy5sPWE7dGhpcy5EPSEhYjt0aGlzLmc9dGhpcy5DPTA7dGhpcy5vPXRoaXMuaj0tMTt0aGlzLkE9dGhpcy5CPXRoaXMuaD0wfSxrdT1mdW5jdGlvbihhLGIsYyl7YS5EJiYoYi09OSk7Zm9yKHZhciBkPSIiLGU9MCxmPWEuQztmPGEubC5sZW5ndGg7KytmKXt2YXIgZz1hLmwuY2hhckF0KGYpLGg9Zy5jaGFyQ29kZUF0KDApO2UrKzthLmgrPWEuRD9oPD0xMjc/aDw9MzJ8fGl1W2hdPzM6MTpoPD0yMDQ3fHxoPj01NTI5NiYmaDw9NTYzMTl8fGg+PTU2MzIwJiZoPD01NzM0Mz82Ojk6MTtoPWEuaD49YjtqdVtnXT8oYS5vPWYsYS5CPWEuaCxoPWh8fGU+Yyk6Zz09IiAiJiYoYS5qPWYsYS5BPWEuaCxoPWh8fGU+Yyk7aWYoaClyZXR1cm4gYS5vPj0wPyhkPWEubC5zdWJzdHJpbmcoYS5nLGEubysxKSxhLmgtPWEuQixhLmc9YS5vKzEsYS5vPj1hLmo/KGEuaj0tMSxhLkE9MCk6YS5BLT1hLkIsYS5vPS0xLGEuQj0wKTphLmo+PTA/KGQ9YS5sLnN1YnN0cmluZyhhLmcsCmEuaisxKSxhLmgtPWEuQSxhLmc9YS5qKzEsYS5qPS0xLGEuQT0wKTooZD1hLmwuc3Vic3RyaW5nKGEuZyxmKzEpLGEuaD0wLGEuZz1mKzEsYS5vPWEuaj0tMSxhLkE9YS5CPTApLGEuQz1mKzEsZH1hLmc8YS5sLmxlbmd0aCYmKGQ9YS5sLnN1YnN0cmluZyhhLmcpLGEuZz1hLmwubGVuZ3RoKTtyZXR1cm4gZH0sanU9aXIoWyIuIiwiLCIsIjoiLCJcXD8iLCIhIl0pLGx1PVsiLiIsIj8iLCIhIl0saXU9aXIoWzM0LDM1LDM2LDM3LDM4LDQzLDQ0LDQ3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDkxLDkyLDkzLDk0LDk2LDEyMywxMjQsMTI1LDEyN10pO3ZhciB0bT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIodG0sXy5KKTt2YXIgbXU9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKG11LF8uSik7dmFyIG51PWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihudSxfLkopO3ZhciBvdT1bMSwyXTt2YXIgcHU9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKHB1LF8uSik7cHUucHJvdG90eXBlLlJhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uZGoodGhpcywxKX07dmFyIHF1PV8uS2kocHUpO3ZhciBydTt2YXIgc3U9ZnVuY3Rpb24oKXt0aGlzLmhhPW5ldyBfLldmfSx0dT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7cmV0dXJuIF8uVmkoZnVuY3Rpb24oZSl7Yz1jbShhbSgkbChuZXcgWmwsImh0dHBzIiksYi5ob3N0KSxiLnBhdGgpO2Q9bmV3IFByb21pc2UoZnVuY3Rpb24oZixnKXtfLk5kKGEuaGEsInN1Y2Nlc3MiLGZ1bmN0aW9uKCl7Zih7Y29kZTpfLmhnKGEuaGEpLGhlYWRlcnM6TG4oYS5oYSksYm9keTpfLmlnKGEuaGEpfSl9KTtfLk5kKGEuaGEsImVycm9yIixmdW5jdGlvbigpe2coe2NvZGU6Xy5oZyhhLmhhKSxoZWFkZXJzOkxuKGEuaGEpLGJvZHk6Xy5pZyhhLmhhKX0pfSk7Xy5OZChhLmhhLCJ0aW1lb3V0IixmdW5jdGlvbigpe2coe2NvZGU6Xy5oZyhhLmhhKSxoZWFkZXJzOkxuKGEuaGEpLGJvZHk6Xy5pZyhhLmhhKX0pfSl9KTthLmhhLnNlbmQoYyxiLm1ldGhvZCxiLmJvZHksYi5oZWFkZXJzKTtyZXR1cm4gZS5yZXR1cm4oZCl9KX07dmFyIHJuPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihybixfLkopO3ZhciBxbj1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIocW4sXy5KKTt2YXIgcG49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5mayhhLDEsYil9O3ZhciB3dT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmO3JldHVybiBfLlZpKGZ1bmN0aW9uKGcpe2lmKGcuZz09MSl7Yj1ydXx8KHJ1PXF1KCdbMixudWxsLFtbW1siYXV0b3B1c2giLFsiYXV0b3B1c2gtdHJhbnNsYXRlLXBhLnNhbmRib3guZ29vZ2xlYXBpcy5jb20iXV0sWyJzdGFnaW5nIixbImRhaWx5MS10cmFuc2xhdGUtcGEuc2FuZGJveC5nb29nbGVhcGlzLmNvbSJdXSxbInByb2QiLFsidHJhbnNsYXRlLXBhLmdvb2dsZWFwaXMuY29tIl1dLFsicHJvZC1ldSIsWyJ0cmFuc2xhdGUtcGEuZXUucmVwLmdvb2dsZWFwaXMuY29tIl1dLFsicHJvZC11cyIsWyJ0cmFuc2xhdGUtcGEudXMucmVwLmdvb2dsZWFwaXMuY29tIl1dXV1dXScpKTtjPW1xO25xJiYoYz1jKyItIitucSk7dmFyIGg9YnAoYixudSwzKTt2YXIgaz1oLko7az1JbChIbChrKSxrLHZvaWQgMCxvdSk7aD1icChoLG11LGs9PT0xPzE6LTEpO2s9aC5KO3ZhciBsPWtbXy5IXXwwO2g9dW0oaCxrLGwsXy5XZyhoLGwpKS5nZXQoYyk7CmQ9Xy5OKGgsMSk7aD1uZXcgJHA7az1zbShhLDEsXy5haigpKTtoPUdsKGgsMSxrLG5tKS5OYShhLkphKCkpLm5hKGEub2EoKSk7az1uZXcgYXE7aD1fLkwoaywxLGgpO2g9c24oaCwyLHRxKTtfLk0ocHEsNykmJl8uZWooaCw0LCEwKTtlPWg7Zy5GKDIpO3JldHVybiBnLmgodnUoZCxlKSw0KX1pZihnLmchPTIpcmV0dXJuIGY9Zy5qLGcucmV0dXJuKHRuKGYpKTtnLkQoKTtyZXR1cm4gZy5yZXR1cm4oUHJvbWlzZS5yZWplY3QoRXJyb3IoIkFhIikpKX0pfSx2dT1mdW5jdGlvbihhLGIpe3ZhciBjPXh1LGQsZSxmLGc7cmV0dXJuIF8uVmkoZnVuY3Rpb24oaCl7aWYoaC5nPT0xKXJldHVybiBkPXtob3N0OmEscGF0aDoiL3YxL3RyYW5zbGF0ZUh0bWwiLG1ldGhvZDoiUE9TVCIsaGVhZGVyczp7IlgtZ29vZy1hcGkta2V5IjoiQUl6YVN5QVRCWGFqdnpRTFRESEVRYmNwcTBJaGUwdldESG1PNTIwIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbitwcm90b2J1ZiJ9LGJvZHk6Xy5XaihiKX0sCmU9Yy5nKCksaC5GKDIpLGguaCh0dShlLGQpLDQpO2lmKGguZyE9MilyZXR1cm4gZj1oLmosaC5yZXR1cm4oY3EoZi5ib2R5KSk7Zz1oLkQoKTtyZXR1cm4gaC5yZXR1cm4oUHJvbWlzZS5yZWplY3QoZykpfSl9O3ZhciB4dT1uZXcgZnVuY3Rpb24oKXt0aGlzLmc9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHN1fX0seXU9ZnVuY3Rpb24oYSl7dGhpcy5nPWF9LHp1PWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlO3JldHVybiBfLlZpKGZ1bmN0aW9uKGYpe2lmKGYuZz09MSlyZXR1cm4gc20oYiwxLF8uYWooKSkubGVuZ3RoPT09MD9mLnJldHVybihuZXcgcW4pOl8uTShwcSw4KT9mLnJldHVybih3dShiKSk6Zi5oKGEuZy50cmFuc2xhdGUoY3x8ZnVuY3Rpb24oKXt9LHNtKGIsMSxfLmFqKF8uV2gpKSxiLkphKCksYi5vYSgpLDAsITEpLDIpO2Q9Zi5qO2U9ZC5tYXAodW4pO3JldHVybiBmLnJldHVybihwbihuZXcgcW4sZSkpfSl9O3ZhciBBdT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoQXUsXy5KKTt2YXIgQnU9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEF1O3JldHVybiBHbChiLDEsYSxubSl9O0F1LnByb3RvdHlwZS5KYT1mdW5jdGlvbigpe3JldHVybiBfLk4odGhpcywyKX07QXUucHJvdG90eXBlLk5hPWZ1bmN0aW9uKGEpe3JldHVybiBzbih0aGlzLDIsYSl9O0F1LnByb3RvdHlwZS5vYT1mdW5jdGlvbigpe3JldHVybiBfLk4odGhpcywzKX07QXUucHJvdG90eXBlLm5hPWZ1bmN0aW9uKGEpe3JldHVybiBzbih0aGlzLDMsYSl9O3ZhciBDdT1mdW5jdGlvbihhLGIsYyxkLGUsZil7dGhpcy5CPWR8fGZ1bmN0aW9uKCl7fTt0aGlzLlA9Znx8ZnVuY3Rpb24oKXt9O3RoaXMuUj0hIWU7dGhpcy5qPWEuZy5JZjt0aGlzLmw9MDt0aGlzLkk9ZnVuY3Rpb24oKXt9O3RoaXMuRD1jO3RoaXMuRj10aGlzLmg9dGhpcy5vPTA7dGhpcy5nPW51bGw7dGhpcy5XPTA7dGhpcy5sYT0hMTt0aGlzLlQ9YS5nLkdmO3RoaXMuSz1bXTt0aGlzLnFiPTA7dGhpcy5MPWEuZy5LZDt0aGlzLkE9YS5sKCk7dGhpcy53YT10aGlzLlI/MTo2O3RoaXMuSWE9YS5nLldmO3RoaXMucWE9Yjt0aGlzLkM9W107dGhpcy5PPWF9O0N1LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8dGhpcy5DLmxlbmd0aDsrK2EpdGhpcy5DW2FdLnN0b3AoKTtmb3IoYT0wO2E8dGhpcy5LLmxlbmd0aDsrK2EpVHIodGhpcy5PLHRoaXMuS1thXSl9Owp2YXIgRHU9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wO2EuST0oMCxfLnkpKGZ1bmN0aW9uKCl7KytjPT10aGlzLkMubGVuZ3RoJiZiKCl9LGEpfSxFdT1mdW5jdGlvbihhLGIsYyl7YS5CPWZ1bmN0aW9uKCl7fTthLnFhPWI7YS5nPW51bGw7YS5xYj0wO2EuQz1bXTthLkk9ZnVuY3Rpb24oKXt9O2EuRD1jfSxGdT1mdW5jdGlvbihhLGIsYyl7aWYoYS5oPT0wJiYoYS5oPWI/M0UzOmEuQSwhY3x8Yzw9YS5BKSl7YS5vPWEuaDtyZXR1cm59ZG8gYj1hLmgsYS5oPGEuQSYmKGEuaCo9YS53YSxhLmg+YS5BJiYoYS5oPWEuQSkpO3doaWxlKGIhPWEuaCYmYyYmYS5oPGMpO2Eubz1hLmh9LEd1PWZ1bmN0aW9uKGEsYil7dmFyIGM9YiE9bnVsbCxkPSFjJiYhYS5sYTsoZHx8YykmJmEuQigxMDAsZCxiKX0sSHU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuTD9hLmcuUjphLmcubWEoKS5sZW5ndGh9LEl1PWZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBRdChhLnFhLnNoaWZ0KCkse2JqOmEuTCxsaTpiLApWZjohMCxaaTohIWN9LGZ1bmN0aW9uKCl7dmFyIGY9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gbmV3IGp0KGYuc2hpZnQoKSxmLnNoaWZ0KCksZi5zaGlmdCgpLGYuc2hpZnQoKSxmLnNoaWZ0KCksYyxkKX0sYS5ELGUpfSxLdT1mdW5jdGlvbihhLGIsYyl7aWYoYS5UPjAmJmIubGIoKT49YS5UKXJldHVybiEwO2lmKEh1KGEpPmEuaCl7aWYoYi5sYigpPjApcmV0dXJuITA7RnUoYSxjLEh1KGEpKTtmb3IodmFyIGQ9YS5nLm1hKCksZT1uZXcgaHUoZCxhLkwpLGY7Zj1rdShlLGEuaCxhLmopOylpZihsdS5pbmRleE9mKGYuY2hhckF0KGYubGVuZ3RoLTEpKTwwJiZiLksrKyxiLmwucHVzaChuZXcgZnUoW2ZdLCExKSksYS5sKz1mLmxlbmd0aCxhLmotPWYubGVuZ3RoLGEuajw9MCl7Yi5GPWQuc3Vic3RyaW5nKGUuZyk7YnJlYWt9ZWxzZSBGdShhLGMpO0p1KGIsYS5nLCEwKTthLmc9bnVsbDtyZXR1cm4hMH1pZihIdShhKT5hLm8pcmV0dXJuITA7SnUoYiwKYS5nLCEwKTthLm8tPUh1KGEpK2EuSWE7YS5sKz1hLmcuRDthLmotPWEuZy5EO2EuZz1udWxsO3JldHVybiExfSxMdT1mdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz17WmE6MH07Yy5aYTxhLmxlbmd0aDtjPXtaYTpjLlphfSxjLlphKyspYVtjLlphXS5sZW5ndGg+MSYmYVtjLlphXVsxXT09PTIwMD9iLnB1c2guYXBwbHkoYixfLiRiKGFbYy5aYV1bMF0udG9TdHJpbmcoKS5zcGxpdCgiJmx0O2V4dHJhX2lkXzEmZ3Q7IikubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm5bZS50cmltKCksYVtkLlphXVsxXV19fShjKSkpKTpiLnB1c2goYVtjLlphXSk7cmV0dXJuIGJ9LE11PWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGssbCxuO3JldHVybiBfLlZpKGZ1bmN0aW9uKHEpe3N3aXRjaChxLmcpe2Nhc2UgMTp2YXIgcD1wcTtpZihfLmJqKHAsaXEsNikpe3ZhciByPV8uYmoocCxpcSw2KSx0PV8uTShyLDEpO3A9Xy5NKHAsMyl8fHQ/KHQ/c20ociw0LF8uYWooKSk6CnNtKHAsNCxfLmFqKCkpKS5pbmNsdWRlcyhkLnRvTG93ZXJDYXNlKCkrIl8iK2UudG9Mb3dlckNhc2UoKSk6ITF9ZWxzZSBwPSExO2Y9cDtpZihmKXt2YXIgQT1BPT09dm9pZCAwPzNFMzpBO2lmKHA9Xy5iaihwcSxpcSw2KSlwPV8uYmoocHEsaXEsNikscD1fLk0ocCwxKTtpZihwKXtwPV8uYmoocHEsaXEsNik7QT1fLmdrKHAsMyk7cD1fLmdrKHAsMik7cj1bXTtmb3IodD0wO3Q8Yy5sZW5ndGg7dCsrKXt2YXIgRD1bY1t0XV0sRT1jW3RdLmxlbmd0aDtpZihjW3RdLnNwbGl0KCIgIikubGVuZ3RoPD1wKWZvcig7dCsxPGMubGVuZ3RoJiZFPEE7KUQucHVzaChjW3QrMV0pLEUrPWNbdCsxXS5sZW5ndGgrMisxOCx0Kys7ci5wdXNoKEQuam9pbigiICZsdDtleHRyYV9pZF8xJmd0OyAiKSl9QT1yfWVsc2V7cD1bXTtmb3Iocj0wO3I8Yy5sZW5ndGg7KXt0PVtdO2ZvcihFPTA7cjxjLmxlbmd0aDspe0Q9Y1tyXTt2YXIgYmE9RC5sZW5ndGg7RT10Lmxlbmd0aD09PTA/YmE6RSsyMCtiYTtpZihFPgpBJiZ0Lmxlbmd0aD4wKWJyZWFrO3QucHVzaChEKTtyKyt9dC5sZW5ndGg+MCYmcC5wdXNoKHQuam9pbigiICZsdDtleHRyYV9pZF8xJmd0OyAiKSl9QT1wfX1lbHNlIEE9YztnPUE7aD16dShuZXcgeXUoYS5PKSxCdShnKS5OYShkKS5uYShlKSxiKTtxLkYoMik7cmV0dXJuIHEuaChoLDQpO2Nhc2UgNDprPXEuajtsPXZuKGspO249Zj9MdShsKTpsO2IobiwyMDApO3EuSygzKTticmVhaztjYXNlIDI6cS5EKCksYihbXSw1MDApO2Nhc2UgMzpyZXR1cm4gYS5LLnB1c2goaCkscS5yZXR1cm4oaCl9fSl9O3ZhciBOdT1mdW5jdGlvbihhLGIpe18udS5jYWxsKHRoaXMpO3RoaXMubD1iO3RoaXMuaj17cm9vdE1hcmdpbjphfTt0aGlzLmc9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKCgwLF8ueSkodGhpcy5oLHRoaXMpLHRoaXMuail9O18uQihOdSxfLnUpO051LnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7Xy51LnByb3RvdHlwZS5NLmNhbGwodGhpcyk7dGhpcy5nPW51bGx9O051LnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKWlmKGFbYl0uaW50ZXJzZWN0aW9uUmF0aW8+MCl7dGhpcy5sKCk7YnJlYWt9fTtOdS5wcm90b3R5cGUudHJhY2s9ZnVuY3Rpb24oYSl7Sm8oYSwoMCxfLnkpKHRoaXMuZy5vYnNlcnZlLHRoaXMuZykpfTt2YXIgT3U9ZnVuY3Rpb24oYSl7dmFyIGI9YSE9bnVsbD9hOnt9LGM9Yi5JayxkPWIuS2ssZT1iLkVrLGY9Yi5MayxnPWIuSGssaD1iLkprLGs9Yi5GayxsPWIuR2s7YT1fLnlsKCk7IWwmJnNwKGMpPyhlPSEhZSxmPSEhZixiPWImJmIuUWssYz0oMCxfLnRsKShzcChjKT8iPHNjcmlwdCIrKGI/JyBub25jZT0iJytQKFlwKGIpKSsnIic6IiIpKyI+d2luZG93WydwcENvbmZpZyddID0ge3Byb2R1Y3ROYW1lOiAiK3ZwKFFwKGQhPW51bGw/ZDoidW5rbm93biIpKSsiLCBkZWxldGVJc0VuZm9yY2VkOiAiK3ZwKFFwKGUpKSsiLCBzZWFsSXNFbmZvcmNlZDogIit2cChRcChmKSkrIiwgaGVhcnRiZWF0UmF0ZTogIit2cChRcChnIT1udWxsP2c6LjUpKSsiLCBwZXJpb2RpY1JlcG9ydGluZ1JhdGVNaWxsaXM6ICIrdnAoUXAoaCE9bnVsbD9oOjZFNCkpKyIsIGRpc2FibGVBbGxSZXBvcnRpbmc6ICIrdnAoUXAoayE9bnVsbD9rOiExKSkrIn07Iit2cChRcChjIT1udWxsP2M6IiIpKSsiXHgzYy9zY3JpcHQ+IjoKIiIpKTpjPSIiO3JldHVybiBXbihhLGMpfTt2YXIgUHU9ZnVuY3Rpb24oYSl7cmV0dXJuKDAsXy50bCkoJzxzcGFuIGlkPSInK1AoYS5pZCkrJyI+PC9zcGFuPicpfSxRdT1mdW5jdGlvbihhKXt2YXIgYj1hLmlkLGM9YS5SZjtyZXR1cm4oMCxfLnRsKShLcChhLlNmKSsnPGRpdiBpZD0iJytQKGIpKyciPjwvZGl2PicrS3AoYykpfSxZbj1mdW5jdGlvbihhKXt2YXIgYj1hLnRvcCxjPWEubGVmdCxkPWEuYm90dG9tLGU9YS5yaWdodCxmPWEuaWQ7cmV0dXJuKDAsXy51bCkoIi4iK0FwKGEuY2xhc3NOYW1lKSsiIHt6LWluZGV4Ojk5OTk5OTk7IG92ZXJmbG93OnZpc2libGU7IHBvc2l0aW9uOmZpeGVkOyBfcG9zaXRpb246YWJzb2x1dGU7IisoYnx8Yj09PTA/InRvcDoiK0FwKGIpKyJweDsgX3RvcDpleHByZXNzaW9uKCgiK0FwKGIpKyIrKGhhY2sxPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSkrJ3B4Jyk7IjoidG9wOmF1dG87IikrKGN8fGM9PT0wPyJsZWZ0OiIrQXAoYykrCiJweDsgX2xlZnQ6ZXhwcmVzc2lvbigoIitBcChjKSsiKyhoYWNrMj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSkrJ3B4Jyk7IjoibGVmdDphdXRvOyIpKyhkfHxkPT09MD8iYm90dG9tOiIrQXAoZCkrInB4OyBfdG9wOmV4cHJlc3Npb24oKC0iK0FwKGQpKyItZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIrU3RyaW5nKGYpLnJlcGxhY2UoUnAsR3ApKyInKS5vZmZzZXRIZWlnaHQrKGhhY2szPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR8fGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0KSsoaGFjazQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApKSsncHgnKTsiOiJib3R0b206YXV0bzsiKSsoZXx8ZT09PTA/InJpZ2h0OiIrQXAoZSkrInB4OyBfbGVmdDpleHByZXNzaW9uKCgtIitBcChlKSsiLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciKwpTdHJpbmcoZikucmVwbGFjZShScCxHcCkrIicpLm9mZnNldFdpZHRoKyhoYWNrNT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGh8fGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpKyhoYWNrNj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSkrJ3B4Jyk7IjoicmlnaHQ6YXV0bzsiKSsifSIpfSxSdT1mdW5jdGlvbigpe3JldHVybigwLF8udGwpKCc8ZGl2IGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtYVoyd0VlLXdPSE15ZiIpKyciPjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1hWjJ3RWUtT2lpQ08iKSsnIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1hWjJ3RWUiKSsnIiB3aWR0aD0iOTZweCIgaGVpZ2h0PSI5NnB4IiB2aWV3Qm94PSIwIDAgNjYgNjYiPjxjaXJjbGUgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1hWjJ3RWUtSnQ1Y0siKSsKJyIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSI2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIGN4PSIzMyIgY3k9IjMzIiByPSIzMCIvPjwvc3ZnPjwvZGl2PjwvZGl2PicpfTt3bi54Yj12b2lkIDA7d24uZz1mdW5jdGlvbigpe3JldHVybiB3bi54Yj93bi54Yjp3bi54Yj1uZXcgd259O3duLnByb3RvdHlwZS5nPTA7Xy5HKHhuLF8uaGIpO18ubT14bi5wcm90b3R5cGU7Xy5tLmNpPXduLmcoKTtfLm0uUmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXx8KHRoaXMubGE9IjoiKyh0aGlzLmNpLmcrKykudG9TdHJpbmcoMzYpKX07Xy5tLkg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5DfTtfLm0ubmQ9ZnVuY3Rpb24oYSl7aWYodGhpcy5LJiZ0aGlzLkshPWEpdGhyb3cgRXJyb3IoIkNhIik7eG4uZWEubmQuY2FsbCh0aGlzLGEpfTtfLm0uUz1mdW5jdGlvbigpe3RoaXMuQz10aGlzLmguY3JlYXRlRWxlbWVudCgiRElWIil9O18ubS5rYT1mdW5jdGlvbihhKXtTdSh0aGlzLGEpfTtfLm0ucWM9ZnVuY3Rpb24oYSl7U3UodGhpcyxhLnBhcmVudE5vZGUsYSl9O3ZhciBTdT1mdW5jdGlvbihhLGIsYyl7aWYoYS5qYil0aHJvdyBFcnJvcigiRGEiKTthLkN8fGEuUygpO2I/Yi5pbnNlcnRCZWZvcmUoYS5DLGN8fG51bGwpOmEuaC5nLmJvZHkuYXBwZW5kQ2hpbGQoYS5DKTthLksmJiFhLksuamJ8fGEuTGEoKX07Cl8ubT14bi5wcm90b3R5cGU7Xy5tLmFoPWZ1bmN0aW9uKGEpe2lmKHRoaXMuamIpdGhyb3cgRXJyb3IoIkRhIik7aWYoYSl7dGhpcy53YT0hMDt2YXIgYj1fLnNkKGEpO3RoaXMuaCYmdGhpcy5oLmc9PWJ8fCh0aGlzLmg9Xy5sYihhKSk7dGhpcy5PYShhKTt0aGlzLkxhKCl9ZWxzZSB0aHJvdyBFcnJvcigiRWEiKTt9O18ubS5PYT1mdW5jdGlvbihhKXt0aGlzLkM9YX07Xy5tLkxhPWZ1bmN0aW9uKCl7dGhpcy5qYj0hMDtUdSh0aGlzLGZ1bmN0aW9uKGEpeyFhLmpiJiZhLkgoKSYmYS5MYSgpfSl9O18ubS5zYT1mdW5jdGlvbigpe1R1KHRoaXMsZnVuY3Rpb24oYSl7YS5qYiYmYS5zYSgpfSk7dGhpcy5PJiZfLlJmKHRoaXMuTyk7dGhpcy5qYj0hMX07Cl8ubS5NPWZ1bmN0aW9uKCl7dGhpcy5qYiYmdGhpcy5zYSgpO3RoaXMuTyYmKHRoaXMuTy5kaXNwb3NlKCksZGVsZXRlIHRoaXMuTyk7VHUodGhpcyxmdW5jdGlvbihhKXthLmRpc3Bvc2UoKX0pOyF0aGlzLndhJiZ0aGlzLkMmJl8uQWQodGhpcy5DKTt0aGlzLks9dGhpcy5DPXRoaXMuUj10aGlzLkY9bnVsbDt4bi5lYS5NLmNhbGwodGhpcyl9O3ZhciBTPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuUmEoKSsiLiIrYn0sVHU9ZnVuY3Rpb24oYSxiKXthLkYmJmEuRi5mb3JFYWNoKGIsdm9pZCAwKX07CnhuLnByb3RvdHlwZS5pZT1mdW5jdGlvbihhKXtmb3IodmFyIGI9W107dGhpcy5GJiZ0aGlzLkYubGVuZ3RoIT0wOyl7dmFyIGM9YixkPWMucHVzaCxlPXRoaXMuRj90aGlzLkZbMF18fG51bGw6bnVsbCxmPWE7aWYoZSl7dmFyIGc9dHlwZW9mIGU9PT0ic3RyaW5nIj9lOmUuUmEoKTt0aGlzLlImJmc/KGU9dGhpcy5SLGU9KGUhPT1udWxsJiZnIGluIGU/ZVtnXTp2b2lkIDApfHxudWxsKTplPW51bGw7aWYoZyYmZSl7dmFyIGg9dGhpcy5SO2cgaW4gaCYmZGVsZXRlIGhbZ107Xy52YSh0aGlzLkYsZSk7ZiYmKGUuc2EoKSxlLkMmJl8uQWQoZS5DKSk7Zj1lO2lmKGY9PW51bGwpdGhyb3cgRXJyb3IoIkJhIik7Zi5LPW51bGw7eG4uZWEubmQuY2FsbChmLG51bGwpfX1pZighZSl0aHJvdyBFcnJvcigiRmEiKTtkLmNhbGwoYyxlKX1yZXR1cm4gYn07dmFyIFV1PWZ1bmN0aW9uKCl7eG4uY2FsbCh0aGlzKX07Xy5CKFV1LHhuKTtVdS5wcm90b3R5cGUuUz1mdW5jdGlvbigpe3RoaXMuT2Eoa20oUnUpKX07VXUucHJvdG90eXBlLk9hPWZ1bmN0aW9uKGEpe3RoaXMuQz1hfTtVdS5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe050KHRoaXMuSCgpLCJWSXBnSmQtWlZpOW9kLWFaMndFZS13T0hNeWYtdGk2aEdjIik7TnQodGhpcy5IKCkuZmlyc3RDaGlsZCwiVklwZ0pkLVpWaTlvZC1hWjJ3RWUtT2lpQ08tdGk2aEdjIil9O3ZhciBWdT1mdW5jdGlvbihhKXtPdChhLkgoKSwiVklwZ0pkLVpWaTlvZC1hWjJ3RWUtd09ITXlmLXRpNmhHYyIpO090KGEuSCgpLmZpcnN0Q2hpbGQsIlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPLXRpNmhHYyIpfTt2YXIgV3U9ZnVuY3Rpb24oKXt0aGlzLmc9bmV3IFV1O3RoaXMuZy5TKCk7dGhpcy5nLmthKCk7dGhpcy5oPTB9O1d1LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuaD0wO1Z1KHRoaXMuZyl9O3ZhciBYdT1XcShjciksWXU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXt0aGlzLmw9YTt0aGlzLmc9Yjt0aGlzLkM9W107dGhpcy5GPW51bGw7dGhpcy5vPWM7dGhpcy5oPWQ7dGhpcy5qPWU7dGhpcy5xYT1mO3RoaXMuTz1nO3RoaXMuRD10aGlzLkE9bnVsbDt0aGlzLkI9aHx8bnVsbDt0aGlzLlc9dGhpcy5JPSExO3RoaXMuRz17fTt0aGlzLkw9WHU7dGhpcy5LPTB9LFp1PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1uZXcgU2V0LGM9MDtjPGEubGVuZ3RoO2MrKylzdChhW2NdKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3JldHVybiBiLmFkZChkKX0pO3JldHVybiBifTsKWXUucHJvdG90eXBlLnRyYWNrVmlzaWJpbGl0eT1mdW5jdGlvbihhKXt0aGlzLkE9bmV3IE51KCIyMDBweCIsKDAsXy55KSh0aGlzLlIsdGhpcyxhKSk7dGhpcy5BLnRyYWNrKGR1KFp1KFtdLmNvbmNhdCh0aGlzLmcsdGhpcy5DKSkpKTt0aGlzLkQ9bmV3IE51KCIwcHgiLCgwLF8ueSkodGhpcy5QLHRoaXMpKTt0aGlzLkQudHJhY2soZHUoWnUoW10uY29uY2F0KHRoaXMuZyx0aGlzLkMpKSkpfTtZdS5wcm90b3R5cGUuUj1mdW5jdGlvbihhKXt0aGlzLkEmJih0aGlzLkEuZy5kaXNjb25uZWN0KCksdGhpcy5BPW51bGwpO2EoKX07WXUucHJvdG90eXBlLlA9ZnVuY3Rpb24oKXt0aGlzLkk9ITA7JHUodGhpcyk7aWYoIXRoaXMuVyYmdGhpcy5CKXt2YXIgYT10aGlzLkI7YS5oKys9PTAmJmEuZy5zaG93KCl9fTt2YXIgJHU9ZnVuY3Rpb24oYSl7YS5EJiYoYS5ELmcuZGlzY29ubmVjdCgpLGEuRD1udWxsKX07Cll1LnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKCl7aWYodGhpcy5JJiYhdGhpcy5XJiZ0aGlzLkIpe3ZhciBhPXRoaXMuQjstLWEuaD09MCYmVnUoYS5nKX10aGlzLkEmJih0aGlzLkEuZy5kaXNjb25uZWN0KCksdGhpcy5BPW51bGwpOyR1KHRoaXMpO2F2KHRoaXMpfTt2YXIgSnU9ZnVuY3Rpb24oYSxiLGMpe2M/KGEuZy5wdXNoKGIpLGEuR1tiLm1hKCldPSEwKTphLkMucHVzaChiKX07WXUucHJvdG90eXBlLmxiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZy5sZW5ndGgrdGhpcy5DLmxlbmd0aH07dmFyIGJ2PWZ1bmN0aW9uKGEpe2lmKGEubC5sZW5ndGg9PTApe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmcubGVuZ3RoOysrYyliLnB1c2goYS5nW2NdLm1hKCkpO2EubC5wdXNoKG5ldyBmdShiLCExKSl9fTsKWXUucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7ZCsrO2Q9PWMmJmUoKX1idih0aGlzKTtmb3IodmFyIGM9MCxkPTAsZT1mdW5jdGlvbigpe30sZj10aGlzLm8sZz10aGlzLmgsaD10aGlzLmosaz0wO2s8dGhpcy5sLmxlbmd0aDsrK2spZ3UodGhpcy5sW2tdLGZ1bmN0aW9uKGwsbixxKXtyZXR1cm4gTXUoZixfLlpqKGwsYiksbixxfHxnLGgpfSkmJmMrKztjIT0wJiYoZT1HdChhKSk7cmV0dXJuIGN9O3ZhciBhdj1mdW5jdGlvbihhKXtpZihhLmcubGVuZ3RoPjApe2lmKGEuZy5sZW5ndGg9PTEmJmEubC5sZW5ndGg+MSl7dmFyIGI9MTt2YXIgYz1hLmwubGVuZ3RofWVsc2UgYj1jPWEuZy5sZW5ndGg7dmFyIGQ9YS5nLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5EfSkucmVkdWNlKGZ1bmN0aW9uKGUsZil7cmV0dXJuIGUrZn0pO2hyKGEuTCx7bGI6YixNZjpjLGdnOmQsTGY6YS5LfSl9fTt2YXIgY3Y9e2FtOiJOb3RvIFNhbnMgRXRoaW9waWMiLGJlcjoiTm90byBTYW5zIFRpZmluYWdoIiwiYm0tTmtvbyI6Ik5vdG8gU2FucyBOS28iLGJuOiJMb2hpdCBCZW5nYWxpIixibzoiTm90byBTZXJpZiBUaWJldGFuIixkdjoiTm90byBTYW5zIFRoYWFuYSIsZHo6Ik5vdG8gU2VyaWYgVGliZXRhbiIsaXU6Ik5vdG8gU2FucyBDYW5hZGlhbiBBYm9yaWdpbmFsIixrbToiTm9rb3JhIixsbzoiRGh5YW5hIixtbDoiTm90byBTYW5zIE1hbGF5YWxhbSIsIm1uaS1NdGVpIjoiTm90byBTYW5zIE1lZXRlaSBNYXllayIsbXk6Ik5vdG8gU2FucyBNeWFubWFyIiwicGEtQXJhYiI6Ik5vdG8gTmFzdGFsaXEgVXJkdSIscHM6Ik5vdG8gTmFza2ggQXJhYmljIixzYXQ6Ik5vdG8gU2FucyBPbCBDaGlraSIsc2Q6Ik5vdG8gTmFza2ggQXJhYmljIixzaToiTm90byBTYW5zIFNpbmhhbGEiLHRhOiJMb2hpdCBUYW1pbCIseXVlOiJDaG9jb2xhdGUgQ2xhc3NpY2FsIFNhbnMifSxkdj17fSxldj0oZHZbIkNob2NvbGF0ZSBDbGFzc2ljYWwgU2FucyJdPQoiL2NzczI/ZmFtaWx5PUNob2NvbGF0ZStDbGFzc2ljYWwrU2FucyIsZHYuRGh5YW5hPSIvY3NzP2ZhbWlseT1EaHlhbmEiLGR2WyJMb2hpdCBCZW5nYWxpIl09Ii9jc3M/ZmFtaWx5PUxvaGl0K0JlbmdhbGkiLGR2WyJMb2hpdCBUYW1pbCJdPSIvY3NzP2ZhbWlseT1Mb2hpdCtUYW1pbCIsZHYuTm9rb3JhPSIvY3NzP2ZhbWlseT1Ob2tvcmEiLGR2WyJOb3RvIE5hc2toIEFyYWJpYyJdPSIvZWFybHlhY2Nlc3Mvbm90b25hc2toYXJhYmljLmNzcyIsZHZbIk5vdG8gTmFzdGFsaXEgVXJkdSJdPSIvZWFybHlhY2Nlc3Mvbm90b25hc3RhbGlxdXJkdS5jc3MiLGR2WyJOb3RvIFNhbnMgQ2FuYWRpYW4gQWJvcmlnaW5hbCJdPSIvZWFybHlhY2Nlc3Mvbm90b3NhbnNjYW5hZGlhbmFib3JpZ2luYWwuY3NzIixkdlsiTm90byBTYW5zIEV0aGlvcGljIl09Ii9lYXJseWFjY2Vzcy9ub3Rvc2Fuc2V0aGlvcGljLmNzcyIsZHZbIk5vdG8gU2FucyBNYWxheWFsYW0iXT0iL2Vhcmx5YWNjZXNzL25vdG9zYW5zbWFsYXlhbGFtLmNzcyIsCmR2WyJOb3RvIFNhbnMgTWVldGVpIE1heWVrIl09Ii9jc3M/ZmFtaWx5PU5vdG8rU2FucytNZWV0ZWkrTWF5ZWsiLGR2WyJOb3RvIFNhbnMgTXlhbm1hciJdPSIvZWFybHlhY2Nlc3Mvbm90b3NhbnNteWFubWFyLmNzcyIsZHZbIk5vdG8gU2FucyBOS28iXT0iL2Nzcz9mYW1pbHk9Tm90bytTYW5zK05LbyIsZHZbIk5vdG8gU2FucyBPbCBDaGlraSJdPSIvZWFybHlhY2Nlc3Mvbm90b3NhbnNvbGNoaWtpLmNzcyIsZHZbIk5vdG8gU2FucyBTaW5oYWxhIl09Ii9lYXJseWFjY2Vzcy9ub3Rvc2Fuc3NpbmhhbGEuY3NzIixkdlsiTm90byBTYW5zIFRoYWFuYSJdPSIvZWFybHlhY2Nlc3Mvbm90b3NhbnN0aGFhbmEuY3NzIixkdlsiTm90byBTYW5zIFRpZmluYWdoIl09Ii9lYXJseWFjY2Vzcy9ub3Rvc2Fuc3RpZmluYWdoLmNzcyIsZHZbIk5vdG8gU2VyaWYgVGliZXRhbiJdPSIvY3NzP2ZhbWlseT1Ob3RvK1NlcmlmK1RpYmV0YW4iLGR2KSxmdj1mdW5jdGlvbigpe3RoaXMuZz1bXX07CmZ2LnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPV8uQyh0aGlzLmcpLGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKWIudmFsdWUucmVtb3ZlKCk7dGhpcy5nPVtdfTt2YXIgZ3Y9ZnVuY3Rpb24oYSxiKXtfLnUuY2FsbCh0aGlzKTt0aGlzLmc9W107dGhpcy5sPVtdO3RoaXMuaD1hO3RoaXMuaj1ifTtfLkIoZ3YsXy51KTtndi5wcm90b3R5cGUubz1mdW5jdGlvbihhKXt2YXIgYj1fLkFjKGEuaHJlZik7Yi5pbmRleE9mKCJqYXZhc2NyaXB0OiIpPT0wfHxiLmluZGV4T2YoIiMiKT49MHx8KHRoaXMubC5wdXNoKGEuaHJlZiksdGhpcy5nLnB1c2goYSksYS5ocmVmPWIrIiNnb29ndHJhbnMvIit0aGlzLmgrIi8iK3RoaXMuail9O2d2LnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7Xy51LnByb3RvdHlwZS5NLmNhbGwodGhpcyk7dGhpcy5yZXN0b3JlKCl9O2d2LnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKCl7aWYodGhpcy5nLmxlbmd0aCl7Zm9yKHZhciBhPTA7YTx0aGlzLmcubGVuZ3RoOysrYSl0aGlzLmdbYV0uaHJlZj10aGlzLmxbYV07dGhpcy5nPVtdO3RoaXMubD1bXX19O3ZhciBodj1mdW5jdGlvbihhLGIpe18udS5jYWxsKHRoaXMpO3RoaXMuZz1hO3RoaXMuaD1fLnhmLnRlc3QoYik/InRyYW5zbGF0ZWQtcnRsIjoidHJhbnNsYXRlZC1sdHIiO2E9W10uY29uY2F0KHRoaXMuZyk7Zm9yKGI9MDtiPGEubGVuZ3RoOysrYil5byhhW2JdKSYmTnQoYVtiXSx0aGlzLmgpfTtfLkIoaHYsXy51KTtodi5wcm90b3R5cGUuTT1mdW5jdGlvbigpe18udS5wcm90b3R5cGUuTS5jYWxsKHRoaXMpO3RoaXMucmVzdG9yZSgpfTtodi5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbigpe2Zvcih2YXIgYT1bXS5jb25jYXQodGhpcy5nKSxiPTA7YjxhLmxlbmd0aDsrK2IpeW8oYVtiXSkmJk90KGFbYl0sdGhpcy5oKX07dmFyIGl2PWZ1bmN0aW9uKGEsYixjKXt0aGlzLmc9M0UzO3RoaXMuaD1bXTt0aGlzLmo9bnVsbDt0aGlzLm89YTt0aGlzLkViPWI7dGhpcy5GYj1jO3RoaXMubD1hJiZ0eXBlb2YgYS5sPT09ImZ1bmN0aW9uIj9hLmwoKXx8MThFMzoxOEUzfSxrdj1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGcsaCxrLGwsbixxO3JldHVybiBfLlZpKGZ1bmN0aW9uKHApe3N3aXRjaChwLmcpe2Nhc2UgMTpjPWxvKGIpO2Q9W107aWYoYy5sZW5ndGg+YS5nKWZvcihlPW5ldyBodShjLCExKSxmPSIiO2Y9a3UoZSxhLmcpOylkLnB1c2goZiksYS5nPGEubCYmKGEuZyo9NixhLmc+YS5sJiYoYS5nPWEubCkpO2Vsc2UgZC5wdXNoKGMpO2c9W107aD1fLkMoZCk7az1oLm5leHQoKTtjYXNlIDI6aWYoay5kb25lKXtwLnhhKDQpO2JyZWFrfWw9ay52YWx1ZTtuPWc7cT1uLnB1c2g7cmV0dXJuIHAuaChqdihhLGwpLDUpO2Nhc2UgNTpxLmNhbGwobixwLmopO2s9aC5uZXh0KCk7cC54YSgyKTticmVhaztjYXNlIDQ6cmV0dXJuIHAucmV0dXJuKHBvKGcuam9pbigiIikpKX19KX0sCmp2PWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGMsZCl7YS5oLnB1c2goe3RleHQ6YixyZXNvbHZlOmMscmVqZWN0OmR9KTthLmp8fChhLmo9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmZsdXNoKCl9LDUwKSl9KX07aXYucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7dGhpcy5qPW51bGw7aWYodGhpcy5oLmxlbmd0aCE9PTApe3ZhciBhPXRoaXMuaDt0aGlzLmg9W107dmFyIGI9bmV3IHl1KHRoaXMubyk7YT1fLkMoYSk7Zm9yKHZhciBjPWEubmV4dCgpLGQ9e307IWMuZG9uZTtkPXtyYzp2b2lkIDB9LGM9YS5uZXh0KCkpZC5yYz1jLnZhbHVlLGM9QnUoW2QucmMudGV4dF0pLk5hKHRoaXMuRWIpLm5hKHRoaXMuRmIpLHp1KGIsYyxmdW5jdGlvbigpe30pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGYpeyhmPXZuKGYpWzBdKSYmZlsxXT09PTIwMD9lLnJjLnJlc29sdmUoZlswXS50b1N0cmluZygpKTplLnJjLnJlamVjdCgiVHJhbnNsYXRpb24gZmFpbGVkIil9fShkKSkuY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGYpe2UucmMucmVqZWN0KGYpfX0oZCkpfX07dmFyIGx2PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwpe18udS5jYWxsKHRoaXMpO3RoaXMuQz1hO3RoaXMuRmM9Yjt0aGlzLmxmPW5ldyBmdjt0aGlzLmZiPWN8fG51bGw7dGhpcy5JYT1sfHxudWxsO3RoaXMuSz1udWxsO3RoaXMuSWQ9ISFkO3RoaXMuamk9ZXx8InRyYW5zcGFyZW50Ijt0aGlzLmlpPSEhZjt0aGlzLkY9W107dGhpcy55Zj10aGlzLkk9dGhpcy5nPSExO3RoaXMubz1ofHxuZXcgdHQ7dGhpcy5EaT0haDt0aGlzLndhPWd8fHh0LmcoKTt0aGlzLlVlPW5ldyBjdTt0aGlzLkhiPXRoaXMuZ2I9dGhpcy5SPSExO3RoaXMuZGY9dGhpcy5BPS41O3RoaXMuamY9LjAxO3RoaXMuRD1uZXcgenQodGhpcy5BKTt0aGlzLmxhPSh0aGlzLkI9dGhpcy5yYT0hIWspP25ldyBNdXRhdGlvbk9ic2VydmVyKCgwLF8ueSkodGhpcy5RaCx0aGlzKSk6bnVsbDt0aGlzLkw9dGhpcy5YZT10aGlzLmo9dGhpcy5oPW51bGw7dGhpcy5QPTA7dGhpcy5PPW5ldyBNYXA7Xy54KHdpbmRvdywiYmx1ciIsCnRoaXMudGYsITAsdGhpcyk7Xy54KHdpbmRvdywiZm9jdXMiLHRoaXMudWYsITAsdGhpcyl9O18uQihsdixfLnUpO18ubT1sdi5wcm90b3R5cGU7Xy5tLkphPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaD90aGlzLmg6IiJ9O18ubS5vYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmo/dGhpcy5qOiIifTtfLm0uZ2g9ZnVuY3Rpb24oYSl7dGhpcy5vaS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5sJiZ0aGlzLmwoMCwhMSwxKX07Xy5tLmFmPWZ1bmN0aW9uKGEpe3RoaXMucGkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMubCYmdGhpcy5sKDAsITEsMSl9O18ubS5oaD1mdW5jdGlvbihhKXt0aGlzLnJpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmwmJnRoaXMubCgwLCExLDEpfTtfLm0uaWg9ZnVuY3Rpb24oYSl7dGhpcy50aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5sJiZ0aGlzLmwoMCwhMSwxKX07Cl8ubS50cmFuc2xhdGU9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihkfHxhIT10aGlzLmh8fGIhPXRoaXMuailtdih0aGlzKSx0aGlzLkRpJiYodGhpcy5vPW5ldyB0dCk7ZWxzZSBpZih0aGlzLmcpcmV0dXJuO3RoaXMubD1jO3RoaXMuQWk9ZTt0aGlzLkI9dGhpcy5yYTt0aGlzLmxhJiZ0aGlzLmxhLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7YXR0cmlidXRlczohMCxjaGlsZExpc3Q6ITAsY2hhcmFjdGVyRGF0YTohMCxzdWJ0cmVlOiEwfSk7dGhpcy5nPSEwO3RoaXMuaD1hO3RoaXMuaj1iO3RoaXMuSWQmJih0aGlzLks9bmV3IGd2KGEsYikpO3RoaXMuSGI9dGhpcy5oPT0iYXV0byI7dGhpcy5mYiYmKGM9dGhpcy5mYixhJiYoYy5EPWEpLGImJihjLkY9YikpO3RoaXMuWGI9bmV3IGh2KHRoaXMuQyx0aGlzLmopO2IgaW4gY3YmJihhPXRoaXMubGYsYiBpbiBjdiYmKGI9Y3ZbYl0sYz0iQGltcG9ydCB1cmwoIitXbygiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSIpLnJlc29sdmUoV28oZXZbYl0pKS50b1N0cmluZygpKwoiKTsiLGM9eW4oYyksYS5nLnB1c2goYyksYj15bignYm9keSB7Zm9udC1mYW1pbHk6IicrYisnIiwiR29vZ2xlIFNhbnMiLCJOb3RvIFNhbnMiLHNhbnMtc2VyaWYgIWltcG9ydGFudH0nKSxhLmcucHVzaChiKSkpO18ub2koXy5aaShwcSw5KSk/KHRoaXMuWGU9bmV3IGl2KHRoaXMuRmMsdGhpcy5oLHRoaXMuaiksdGhpcy5QPTAsbnYodGhpcyksdGhpcy5QPT09MCYmdGhpcy5sJiZ0aGlzLmwoMTAwLCEwKSk6dGhpcy5HPW92KHRoaXMpOyhiPXRoaXMuQyBpbnN0YW5jZW9mIE5vZGU/dGhpcy5DOm51bGwpJiZwdihiLHRoaXMuail9Owp2YXIgb3Y9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEJ0KGEsYS53YSk7Q3QoYixhLnNmKTtFdChiLCgwLF8ueSkoYS5naCxhKSk7RnQoYixuZXcgQ3UoYS5GYyxbXS5jb25jYXQoYS5DKSxhLndhLGEubCxhLkIsYS5BaSkpO3JldHVybiBifSxudj1mdW5jdGlvbihhKXthLkw9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGIpe2IuZm9yRWFjaChmdW5jdGlvbihjKXtpZihjLmlzSW50ZXJzZWN0aW5nKXt2YXIgZD1jLmJvdW5kaW5nQ2xpZW50UmVjdDtkJiZkLndpZHRoPT09MCYmZC5oZWlnaHQ9PT0wfHwocXYoYSxjLnRhcmdldCksYS5MLnVub2JzZXJ2ZShjLnRhcmdldCkpfX0pfSk7W10uY29uY2F0KGEuQykuZm9yRWFjaChmdW5jdGlvbihiKXtydihhLGIpfSl9LHJ2PWZ1bmN0aW9uKGEsYixjKXtjPWM9PT12b2lkIDA/ITA6YztpZighUXR8fCEkdChiKSl7YS5FZj09PXZvaWQgMCYmKGEuRWY9ISFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9Imdvb2dsZSJdW2NvbnRlbnQ9Im5vdHJhbnNsYXRlIl0sIG1ldGFbbmFtZT0icm9ib3RzIl1bY29udGVudD0ibm90cmFuc2xhdGUiXSwgbWV0YVtuYW1lPSJnb29nbGUiXVt2YWx1ZT0ibm90cmFuc2xhdGUiXSwgbWV0YVtuYW1lPSJ0cmFuc2xhdGUiXVtjb250ZW50PSJubyJdJykpOwppZihhLkVmKWM9ITE7ZWxzZSBpZihiLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpe3ZhciBkPSJub3RyYW5zbGF0ZSIsZT0idHJhbnNsYXRlIjtRdCYmYnUmJihkPSJub3RyYW5zbGF0ZSIsZT0idHJhbnNsYXRlIik7ZD1iLmNsYXNzTGlzdCYmYi5jbGFzc0xpc3QuY29udGFpbnMoZCl8fGIuZ2V0QXR0cmlidXRlJiZiLmdldEF0dHJpYnV0ZSgidHJhbnNsYXRlIik9PT0ibm8iO2U9Yi5jbGFzc0xpc3QmJmIuY2xhc3NMaXN0LmNvbnRhaW5zKGUpfHxiLmdldEF0dHJpYnV0ZSYmYi5nZXRBdHRyaWJ1dGUoInRyYW5zbGF0ZSIpPT09InllcyI7Yz1kPyExOmU/ITA6Y31pZihiLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpYyYmXy5BYyhiLnRleHRDb250ZW50KSYmYi5wYXJlbnRFbGVtZW50JiZhLkwub2JzZXJ2ZShiLnBhcmVudEVsZW1lbnQpO2Vsc2UgaWYoYi5jaGlsZE5vZGVzKWZvcihlPTA7ZTxiLmNoaWxkTm9kZXMubGVuZ3RoO2UrKylydihhLGIuY2hpbGROb2Rlc1tlXSwKYyl9fSxxdj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz17fSxkPTA7ZDxiLmNoaWxkTm9kZXMubGVuZ3RoO2M9e2tiOnZvaWQgMH0sZCsrKWMua2I9Yi5jaGlsZE5vZGVzW2RdLGMua2Iubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSYmXy5BYyhjLmtiLnRleHRDb250ZW50KSYmKGEuUCsrLGEuTy5oYXMoYy5rYil8fGEuTy5zZXQoYy5rYixjLmtiLnRleHRDb250ZW50KSxrdihhLlhlLGMua2IudGV4dENvbnRlbnQpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGYpe2Uua2IudGV4dENvbnRlbnQ9Zn19KGMpKS5jYXRjaChmdW5jdGlvbigpe30pLmZpbmFsbHkoZnVuY3Rpb24oKXthLlAtLTthLlA9PT0wJiZhLmwmJmEubCgxMDAsITApfSkpfTtsdi5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbigpe212KHRoaXMpO3RoaXMuVWUucmVzdG9yZSgpO3ZhciBhPXRoaXMuQyBpbnN0YW5jZW9mIE5vZGU/dGhpcy5DOm51bGw7YSYmcHYoYSx0aGlzLkphKCkpfTsKbHYucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtfLnUucHJvdG90eXBlLk0uY2FsbCh0aGlzKTt0aGlzLnJlc3RvcmUoKTtfLlVkKHdpbmRvdywiYmx1ciIsdGhpcy50ZiwhMCx0aGlzKTtfLlVkKHdpbmRvdywiZm9jdXMiLHRoaXMudWYsITAsdGhpcyl9O3ZhciBzdj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT13cihhLm8uaCksZj1uZXcgQnQoYSxiLkQpO2IuQy5wdXNoKGYpO0R0KGYsYi5JKTtGdShiLGUpO0N0KGYsZHx8YS5wZik7Yj1jfHxuZXcgWXUoW10sW10sYixhLkphKCksYS5vYSgpLGEueWYsYS5JLGEuSWEpO0V0KGYsYS5VaCxhKTthLkImJkR0KGYsYi5kb25lLGIpO0Z0KGYsYil9O18ubT1sdi5wcm90b3R5cGU7Xy5tLlVoPWZ1bmN0aW9uKGEsYixjKXtjLmRvbmUoKTt0aGlzLkk/dGhpcy5paChhKTp0aGlzLmhoKGEpO2Muby5JKCl9O18ubS51Zj1mdW5jdGlvbigpe3RoaXMuUj0hMTt0aGlzLlQ9MDt5dCh0aGlzLkQsdGhpcy5BKX07Cl8ubS50Zj1mdW5jdGlvbihhKXthLnRhcmdldD09d2luZG93JiYodGhpcy5SPSEwLHRoaXMuVD0wLHl0KHRoaXMuRCwuMDEpKX07Xy5tLlFoPWZ1bmN0aW9uKGEpe2lmKHRoaXMuZyYmdGhpcy5CKWlmKF8ub2koXy5aaShwcSw5KSkpZm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl0uYWRkZWROb2RlcztpZihjKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXJ2KHRoaXMsY1tkXSl9ZWxzZXtmb3IoYj0wO2I8YS5sZW5ndGg7YisrKWlmKGFbYl0udGFyZ2V0JiZhW2JdLnRhcmdldC5jbGFzc05hbWUmJnR5cGVvZiBhW2JdLnRhcmdldC5jbGFzc05hbWU9PT0ic3RyaW5nIiYmKGFbYl0udGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCJ0cmFuc2xhdGUiKT49MHx8YVtiXS50YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoImdvb2ctIik9PTApKXJldHVybjt0aGlzLndhLmFkZCgoMCxfLnkpKHRoaXMuTWksdGhpcykpfX07Cl8ubS5NaT1mdW5jdGlvbigpe3RoaXMuST0hMDt0aGlzLkcmJih0aGlzLkcuc3RvcCgpLHRoaXMuRz1vdih0aGlzKSk7cmV0dXJuITF9O18ubS5zZj1mdW5jdGlvbihhLGIpe0R1KGIsR3QoYSkpO3N2KHRoaXMsYik7cmV0dXJuIHRoaXMuWWh9O18ubS5ZaD1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLmcpcmV0dXJuIEl0O2lmKCFIdChhKSlyZXR1cm4gSnQ7aWYoIXRoaXMuQilmb3IoYT0wO2E8dGhpcy5GLmxlbmd0aDsrK2Epe3ZhciBjPWIsZD0oMCxfLnkpKHRoaXMuTWUsdGhpcyxiLHRoaXMuRlthXSk7Yy5ELmFkZChkKX1yZXR1cm4gdGhpcy5YaH07Cl8ubS5uZj1mdW5jdGlvbihhLGIpe2lmKHRoaXMuVCYmIXRoaXMuUil7YT0obmV3IERhdGUpLmdldFRpbWUoKS10aGlzLlQ7dmFyIGM9dGhpcy5BO2E8OTAwJiZjPi4wMT9jPU1hdGgubWF4KGMqLjksLjAxKTphPjExMDAmJmM8LjUmJihjPU1hdGgubWluKGMqMS41LC41KSk7dGhpcy5BPWM7dGhpcy5nYj90aGlzLmpmPS4wMTp0aGlzLmRmPXRoaXMuQX10aGlzLkk9dGhpcy5nPSEwO3RoaXMuVD0obmV3IERhdGUpLmdldFRpbWUoKTt0aGlzLkNpIT0oYT1kb2N1bWVudC5ib2R5LmlubmVyVGV4dHx8ZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudHx8ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwpPyh0aGlzLkNpPWEsYT0hMCk6YT0hMTthPyh0aGlzLmdiPSExLHRoaXMuQT10aGlzLmRmLHRoaXMuUnx8eXQodGhpcy5ELHRoaXMuQSksRXUoYixbXS5jb25jYXQodGhpcy5DKSx0aGlzLkQpLGE9bmV3IEJ0KHRoaXMsdGhpcy5EKSxDdChhLHRoaXMuc2YpLEV0KGEsKDAsXy55KSh0aGlzLmFmLHRoaXMpKSwKRnQoYSxiKSx0aGlzLkc9YSk6KHRoaXMuZ2I9ITAsdGhpcy5BPXRoaXMuamYsdGhpcy5SfHx5dCh0aGlzLkQsdGhpcy5BKSxhPW5ldyBCdCh0aGlzLHRoaXMuRCksQ3QoYSx0aGlzLm5mKSxFdChhLCgwLF8ueSkodGhpcy5hZix0aGlzKSksRnQoYSxiKSx0aGlzLkc9YSk7cmV0dXJuIEl0fTtfLm0uWGg9ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5nKXJldHVybiBJdDt0aGlzLkk9dGhpcy5nPSExO3RoaXMuSGI/R3UoYiwhMCk6KEd1KGIpLGIuUChiLmwpKTtpZih0aGlzLmlpKXJldHVybiB0aGlzLm5mO2IuY2xlYXIoKTtyZXR1cm4gSXR9Owp2YXIgdXY9ZnVuY3Rpb24oYSxiLGMpe2E6e3ZhciBkPXR2KGEpLGU9YS5mYixmPWEuamksZz1hLlVlLmc7Yj1HdChiKTtpZighYy5HKXtpZihjLnFhLmxlbmd0aD09MCl7Yy5sPT0wJiZjLnFiPT0wJiZjLkIoMCwhMCk7Yz0hMTticmVhayBhfWMuRz1JdShjLGQsZSxmLGcpfWMucmE9ITA7UnQoYy5HLGMuaixjLmgsYik7Yz0hMH1yZXR1cm4gYz9hLnBmOmEuU2N9LHR2PWZ1bmN0aW9uKGEpe3JldHVybiBhLklkPygwLF8ueSkoYS5LLm8sYS5LKTpmdW5jdGlvbigpe319O18ubT1sdi5wcm90b3R5cGU7Cl8ubS5wZj1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLmcpcmV0dXJuIEl0O3ZhciBjPWIubztpZihjLmc9PW51bGwpe2lmKCFjLnJhKXJldHVybiB1dih0aGlzLGEsYi5vKTtpZighSHQoYSkpcmV0dXJuIEp0O2MucmE9ITE7Yy5nPWMuRy5kY3x8bnVsbDt2YXIgZD1jLmc/Yy5nOmMuRz1udWxsO2lmKCFkKXJldHVybiB1dih0aGlzLGEsYi5vKTt0aGlzLkYucHVzaChkKTt2YXIgZT1kLm1hKCk7aWYodGhpcy5vLmhhcyhlLCF0aGlzLkIpfHxiLkdbZV0hPW51bGwmJmIuR1tlXSlyZXR1cm4gZT1jLmcuRCxjLmwrPWUsYy5qLT1lLGMuZz1udWxsLHRoaXMuQiYmSnUoYixkLCExKSx1dih0aGlzLGEsYi5vKTtlPXRoaXMubztkPWQubWEoKTtlLmdbZF09bnVsbH1iLmxiKCk+MCYmeXQodGhpcy5ELC41KTtyZXR1cm4gS3UoYyxiLHdyKHRoaXMuby5oKSk/dGhpcy5TYzp1dih0aGlzLGEsYi5vKX07Cl8ubS5TYz1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLmd8fGIubGIoKT09MClyZXR1cm4gSXQ7c3YodGhpcyxiLm8pO3JldHVybiB0aGlzLkI/KGIudHJhY2tWaXNpYmlsaXR5KEd0KGEpKSx0aGlzLlpoKTpiLnRyYW5zbGF0ZShhKT09MD9JdDp0aGlzLnJmfTtfLm0uWmg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5nP0h0KGEpP2IudHJhbnNsYXRlKGEpPT0wP0l0OnRoaXMucmY6SnQ6SXR9OwpfLm0uTWU9ZnVuY3Rpb24oYSxiKXtiLmomJnRoaXMuby5yZW1vdmUoYi5sKTtpZighdGhpcy5nKXJldHVybiExO2lmKHRoaXMuby5oYXMoYi5tYSgpLCExKSl7dmFyIGM9dGhpcy5vO2MuaGFzKGIubCwhMSk/KGIuaD1jLnJlYWQoYi5sKSxiLkw9ITApOihjLnJlbW92ZShiLmwpLGIuaj0hMCk7cXQoYil9ZWxzZSBpZihjPXRoaXMubyxiLmopYy5yZW1vdmUoYi5sKTtlbHNlIGlmKGIuRil7dmFyIGQ9Yi5GLnJlcGxhY2UoLzxhIC9nLCI8c3BhbiAiKS5yZXBsYWNlKC9cL2E+L2csIi9zcGFuPiIpO2IuTD0hMDtkZWxldGUgYi5GO2IuRj1udWxsO2IuaD1bXTt2YXIgZT1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLGY9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKTttcChmLCExKTtkPWQuaW5kZXhPZigiPGk+Iik+PTA/ZDoiPGI+IitkKyI8L2I+IjtkPV8uS2IoZCk7ZD1fLm1sKGQpO2Yubm9kZVR5cGU9PT0xJiZNbChmKTtmLmlubmVySFRNTD1fLmtqKGQpOwplLmJvZHkuYXBwZW5kQ2hpbGQoZik7ZT1bXTtmb3IoZD1mLmZpcnN0Q2hpbGQ7ZDtkPWQubmV4dFNpYmxpbmcpaWYoZC50YWdOYW1lPT0iSSIpdmFyIGc9b3QoYixFbyhkKSxkLmlubmVySFRNTCk7ZWxzZSBpZihkLnRhZ05hbWU9PSJCIil7Z3x8KGc9b3QoYiwiIiwiIikpO2lmKGIuZy5sZW5ndGg9PTEpdXQoZy5VLGUsMCxkKTtlbHNle3ZhciBoPWU7dmFyIGs9ZDt2YXIgbD1iLmc7Zz1nLlU7Zm9yKHZhciBuPVtdLHE9ay5maXJzdENoaWxkO3E7cT1wKXt2YXIgcD1xLm5leHRTaWJsaW5nO3Z0KHEpfWZvcihwPWsuZmlyc3RDaGlsZDtwO3A9cC5uZXh0U2libGluZylwLmF0dHJpYnV0ZXMmJnAuYXR0cmlidXRlcy5pPyhrPXBhcnNlSW50KHAuYXR0cmlidXRlcy5pLm5vZGVWYWx1ZSwxMCksIWlzTmFOKGspJiZrPj0wJiZrPGwubGVuZ3RoJiYobFtrXS5yZCYmbltrXT9uW2tdLlorPXAuZmlyc3RDaGlsZCYmcC5maXJzdENoaWxkLm5vZGVUeXBlPT0zP3AuZmlyc3RDaGlsZC5ub2RlVmFsdWU6CkVvKHApOm5ba109dXQoZyxoLGsscCkpKTpwLm5vZGVUeXBlPT0zJiZnLnB1c2goe1g6LTEsWjpwbyhwLm5vZGVWYWx1ZSl9KTtnIT1udWxsJiZnLmxlbmd0aD4wJiZnWzBdLlg9PS0xJiYoZy5sZW5ndGg9PTE/Z1swXS5YPTA6KGdbMV0uWj1nWzBdLlorZ1sxXS5aLGcuc2hpZnQoKSkpfWc9dm9pZCAwfWQ9Yi5oO2ZvcihoPTA7aDxkLmxlbmd0aC0xOysraClsPWRbaF0sZz1rbyhsLlVbbC5VLmxlbmd0aC0xXS5aKSxnPWcuY2hhckNvZGVBdChnLmxlbmd0aC0xKSwxMjI4ODw9ZyYmZzw9MTIzNTF8fDY1MjgwPD1nJiZnPD02NTUxOXx8KGwuVVtsLlUubGVuZ3RoLTFdLlorPSIgIik7Xy5BZChmKTtmb3IoZj0wO2Y8Yi5nLmxlbmd0aDsrK2YpZjxlLmxlbmd0aCYmZjxiLkMubGVuZ3RoJiZlW2ZdIT1udWxsJiYoZD1iLkNbZl0saD1lW2ZdLnN0YXJ0LGghPW51bGwmJihsPWQuc3Vic3RyaW5nKDAsZC5sZW5ndGgtZC5yZXBsYWNlKC9eW1xzXHhhMF0rLywiIikubGVuZ3RoKSxsPT0iICImJgoobD0iIiksbCYmKGguWj1sK2guWi5yZXBsYWNlKC9eW1xzXHhhMF0rLywiIikpKSxoPWVbZl0uZW5kLGghPW51bGwmJihkPWQuc3Vic3RyaW5nKGtvKGQpLmxlbmd0aCksZD09IiAiJiYoZD0iIiksZCYmKGguWj1rbyhoLlopK2QpKSk7Yi5oLmxlbmd0aCE9MXx8Yi5oWzBdLmhlfHwoYi5oWzBdLmhlPWIubCk7Yy53cml0ZShiLmwsYi5oKTtxdChiKX1iLkl8fCh0aGlzLkhiPSExKTtjPWIuaj8hMDp2b2lkIDA7YS5XKz1iLkQ7YyE9bnVsbCYmKGEubGE9ITApO2I9TWF0aC5taW4oTWF0aC5mbG9vcihhLlcqMTAwL2EubCksMTAwKTtpZihhLkYhPWJ8fGMpYS5GPWIsYS5SPyhhLkIoYS5GLCEwLGMpLGEuUChhLlcpKTphLkIoYS5GLCExLGMpO3JldHVybiExfTsKXy5tLnJmPWZ1bmN0aW9uKGEsYil7aWYoIXRoaXMuZylyZXR1cm4gSXQ7aWYoIUh0KGEpKXJldHVybiBKdDtpZihiLmxiKCk+MSl7YT1iLmxbMF07dmFyIGM9Yi5nO2lmKGEuanx8Yy5sZW5ndGg9PTB8fGEuZz09bnVsbHx8YS5nLmxlbmd0aD09MClhPW51bGw7ZWxzZXtmb3IodmFyIGQ9W10sZT1bXSxmPTA7ZjxhLmcubGVuZ3RoJiZmPGMubGVuZ3RoOysrZil7dmFyIGc9YS5nW2ZdO2cmJmdbMF0mJmdbMV09PTIwMHx8KGUucHVzaChjW2ZdKSxkLnB1c2goYS5vW2ZdKSl9YT1lLmxlbmd0aD4wP3tOaTpuZXcgZnUoZCwhMCksT2k6ZX06bnVsbH1hPWE/bmV3IFl1KFthLk5pXSxhLk9pLGIubyxiLmgsYi5qLGIucWEsYi5PLGIuQik6bnVsbDthIT1udWxsJiZzdih0aGlzLGIubyxhLHRoaXMuU2MpfWVsc2V7YT0hMTtmb3IoYz0wO2M8Yi5sLmxlbmd0aDsrK2MpZD1iLmxbY10sZC5qfHxkLmg9PTIwMCYmZC5nJiZkLmdbMF0/ZD1kLmw9ITE6KGQuaj0hMCxkPWQubD0hMCksYT1kfHxhO2lmKGEpcmV0dXJuIHRoaXMuU2N9ZD0KdGhpcy5KYSgpO2E9dGhpcy5vYSgpO2lmKGIuZy5sZW5ndGg+MSlpZihjPWIubFswXSxlPWQ9PSJhdXRvIixkPWIuZyxjLmg9PTIwMClmb3IoZj0wO2Y8Yy5nLmxlbmd0aCYmZjxkLmxlbmd0aDsrK2YpaWYoKGc9Yy5nW2ZdKSYmZ1sxXT09MjAwKXt2YXIgaD1nWzJdLGs9ZFtmXSxsPWssbj1oIT1udWxsJiZoPT1hO2wuRj1nWzBdO24hPT12b2lkIDAmJihsLks9bik7ay5JPWUmJmg9PW51bGx9ZWxzZSBkW2ZdLmo9ITA7ZWxzZSBmb3IoYT0wO2E8ZC5sZW5ndGg7KythKWRbYV0uaj0hMDtlbHNle2M9bmV3IGV1KGQ9PSJhdXRvIik7Zm9yKGQ9MDtkPGIubC5sZW5ndGg7KytkKWY9Yi5sW2RdLGU9YSxmLmg9PTIwMCYmZi5nJiZmLmdbMF0/KGY9Zi5nWzBdLGMuZy5wdXNoKGZbMF0pLGY9ZlsyXSxjLmg9Yy5oJiZmIT1udWxsJiZmPT1lLGYhPW51bGwmJihjLmw9ITEpKTpjLmo9ITA7Yi5GIT1udWxsJiYoYy5nLnB1c2goYi5GKSxiLkY9bnVsbCk7aWYoYT1iLmdbMF0pZD1jLm1hKCksZT1jLmgsCmEuRj1kLGUhPT12b2lkIDAmJihhLks9ZSksYS5JPWMubCxhLmo9Yy5qfWlmKHRoaXMuQil7YT0oMCxfLnkpKHRoaXMuTWUsdGhpcyk7Zm9yKGM9MDtjPGIuZy5sZW5ndGg7YysrKWEoYi5vLGIuZ1tjXSk7Zm9yKGM9MDtjPGIuQy5sZW5ndGg7YysrKWEoYi5vLGIuQ1tjXSk7JHUoYik7Yi5XPSEwO2IuSSYmYi5CJiYoYj1iLkIsLS1iLmg9PTAmJlZ1KGIuZykpfXJldHVybiBJdH07CnZhciBtdj1mdW5jdGlvbihhKXthLmxhJiZhLmxhLmRpc2Nvbm5lY3QoKTthLklhJiZhLklhLnJlc2V0KCk7YS5nJiYoYS5HJiZhLkcuc3RvcCgpLGEuZz0hMSxhLkk9ITEpO2lmKGEuRi5sZW5ndGgpe2Zvcih2YXIgYj0wO2I8YS5GLmxlbmd0aDsrK2IpYS5GW2JdLmRpc3Bvc2UoKTthLkY9W119YS5LIT1udWxsJiYoYS5LLnJlc3RvcmUoKSxhLks9bnVsbCk7YS5YYiE9bnVsbCYmKGEuWGIucmVzdG9yZSgpLGEuWGI9bnVsbCk7YS5PJiZhLk8uc2l6ZT4wJiYoYS5PLmZvckVhY2goZnVuY3Rpb24oYyxkKXtkLnRleHRDb250ZW50PWN9KSxhLk8uY2xlYXIoKSk7YS5MJiYoYS5MLmRpc2Nvbm5lY3QoKSxhLkw9bnVsbCk7YS5sZi5yZXN0b3JlKCl9LHB2PWZ1bmN0aW9uKGEsYil7YS5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIikmJmEuc2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIsYik7YS5nZXRBdHRyaWJ1dGUoImxhbmciKSYmYS5zZXRBdHRyaWJ1dGUoImxhbmciLGIpfTsKRHIuYXR0YWNoKDMwNDYsbHYucHJvdG90eXBlLHtvaToxLHJpOjIscGk6Myx0aTo0fSk7dmFyIHZ2PVdxKGNyKSx3dj1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsLG4pe18udS5jYWxsKHRoaXMpO3RoaXMuTz1ifHxudWxsO3RoaXMuSz0hIWM7dGhpcy5HPWR8fCJ0cmFuc3BhcmVudCI7dGhpcy5EPWZ8fCIiO2I9Z3x8e2ZldGNoU3RhcnQ6MCxTazowfTthPWIuZmV0Y2hTdGFydHx8MDtiPWIuZmV0Y2hFbmR8fDA7dGhpcy5GPWEmJmI/Yi1hOjA7dGhpcy5SPURhdGUubm93KCktcnE7dGhpcy5BPSExO3RoaXMuZz1uZXcgUnIoZXx8IiIsdm9pZCAwLGYsbik7dGhpcy5JPW5ldyB6dCgxKTt0aGlzLkI9bmV3IHR0O3RoaXMubD1udWxsO3RoaXMuQz0hMDt0aGlzLm89Xy52LkludGVyc2VjdGlvbk9ic2VydmVyIT1udWxsO3RoaXMuTD1ofHxudWxsO2U9bmV3IGpyO2Y9bmV3IGxyKHRoaXMuZy5pbml0aWFsaXplLmJpbmQodGhpcy5nLGUucmVnaXN0ZXIoKSkpO3RoaXMuemM9bXIoZixlLmRlbGF5KCgwLF8ueSkodGhpcy56Yyx0aGlzKSkpO3RoaXMuUGM9bXIoZixlLmRlbGF5KCgwLF8ueSkodGhpcy5QYywKdGhpcykpKTt0aGlzLnFkPW1yKGYsZS5kZWxheSgoMCxfLnkpKHRoaXMucWQsdGhpcykpKTt0aGlzLnJlc3RvcmU9bXIoZixlLmRlbGF5KCgwLF8ueSkodGhpcy5yZXN0b3JlLHRoaXMpKSk7Zi5maW5pc2goKTtlLmZpbmlzaCgpO3BlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5tYXJrJiZwZXJmb3JtYW5jZS5tYXJrKFJxLHZvaWQgMCk7ZT1kcih2diwxKTtmPW5ldyBRbjtmPV8uVGooZiwxLHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO2E6e2lmKHBlcmZvcm1hbmNlJiYoaD1wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJuYXZpZ2F0aW9uIiksaC5sZW5ndGg9PTEpKXtoPWhbMF07YnJlYWsgYX1oPW51bGx9aCYmKG49bmV3IEZtLG49Xy5UaihuLDEsIiIpLGE9R20oaC5zdGFydFRpbWUpLG49Xy5MKG4sMixhKSxhPUhtKGguZHVyYXRpb24pLG49Xy5MKG4sMyxhKSxhPW5ldyBQbixhPV8uVGooYSwxLGguaW5pdGlhdG9yVHlwZSksYT1fLlRqKGEsMixoLm5leHRIb3BQcm90b2NvbCksCmI9R20oaC53b3JrZXJTdGFydHx8MCksYT1fLkwoYSwzLGIpLGI9R20oaC5yZWRpcmVjdFN0YXJ0KSxhPV8uTChhLDQsYiksYj1HbShoLnJlZGlyZWN0U3RhcnQpLGE9Xy5MKGEsNCxiKSxiPUdtKGgucmVkaXJlY3RFbmQpLGE9Xy5MKGEsNSxiKSxiPUdtKGguZmV0Y2hTdGFydCksYT1fLkwoYSw2LGIpLGI9R20oaC5kb21haW5Mb29rdXBTdGFydCksYT1fLkwoYSw3LGIpLGI9R20oaC5kb21haW5Mb29rdXBFbmQpLGE9Xy5MKGEsOCxiKSxiPUdtKGguY29ubmVjdFN0YXJ0KSxhPV8uTChhLDksYiksYj1HbShoLmNvbm5lY3RFbmQpLGE9Xy5MKGEsMTAsYiksYj1HbShoLnNlY3VyZUNvbm5lY3Rpb25TdGFydCksYT1fLkwoYSwxMSxiKSxiPUdtKGgucmVzcG9uc2VTdGFydCksYT1fLkwoYSwxMyxiKSxiPUdtKGgucmVzcG9uc2VFbmQpLGE9Xy5MKGEsMTQsYiksYT1fLmprKGEsMTUsaC50cmFuc2ZlclNpemUpLGE9Xy5qayhhLDE2LGguZW5jb2RlZEJvZHlTaXplKSxhPV8uamsoYSwxNyxoLmRlY29kZWRCb2R5U2l6ZSksCm49Sm0obiw2LGEpLF8uTChmLDMsbiksbj1ObShScSkpJiYoaD1PbShVcSx7c3RhcnQ6aC5yZXNwb25zZUVuZCxlbmQ6bi5zdGFydFRpbWV8fHBlcmZvcm1hbmNlLm5vdygpfSkpJiYocGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMmJnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMoVXEpLGg9S20oaCksXy5MKGYsNCxoKSxoPVVuKGUpLF8uTChoLDQsZikpO2ZyKGUsMSl9O18uRyh3dixfLnUpO0RyLmF0dGFjaCgxNDA5Nyx3di5wcm90b3R5cGUse2JlOmZ1bmN0aW9uKCl7UW0odGhpcy5nLlRhKCk/InRlX2FmYXMiOiJ0ZV9hZmF1Iil9fSk7Xy5tPXd2LnByb3RvdHlwZTtfLm0uUGk9ZnVuY3Rpb24oYSl7dGhpcy5vPWF9O18ubS5TYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcuVGEoKX07Cl8ubS56Yz1mdW5jdGlvbihhLGIpe3RoaXMuZy5TYSgpP3RoaXMuZy5vLnNlbmQoe2Rpc3BsYXlfbGFuZ3VhZ2U6YixrZXk6IkFJemFTeUJXRGowUUp2Vkl4OFhPaFJlZ1hYNV9TclJXeGhUNUhzNCJ9LGEpLnRoZW4oZnVuY3Rpb24oYyl7cmV0dXJuIGEoYyl9KToodGhpcy5iZSgpLGEobnVsbCkpfTsKXy5tLlBjPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nO2lmKGIpYShiKTtlbHNlIGlmKHRoaXMuZy5TYSgpKXtiPW5ldyBhcyhkb2N1bWVudC5ib2R5LCExLCExLDEsMSk7Zm9yKHZhciBjPVtdLGQ9MCxlPXRoaXMuZy5oLkhmO2MubGVuZ3RoK2Q8ZTspe3ZhciBmPWIubmV4dCgpO2lmKGYuZG9uZSlicmVhaztmPWYudmFsdWU7Yi5nPT0xJiYkdChmKT9icyhiKTpmLm5vZGVUeXBlPT0zJiYoZj1fLkFjKGpvKGYubm9kZVZhbHVlKSkpJiYoYy5wdXNoKGYpLGQrPWYubGVuZ3RoKX1Tcih0aGlzLmcsYSxjLmpvaW4oIiAiKSkudGhlbihmdW5jdGlvbihnKXthKGcpfSxmdW5jdGlvbihnKXtyZXR1cm4gYShudWxsLGcpfSl9ZWxzZSB0aGlzLmJlKCksYShudWxsLCEwKX07Cl8ubS5xZD1mdW5jdGlvbihhLGIsYyxkLGUpe3Z2LkViPWE7dnYuRmI9Yjt2YXIgZj1kcih2diwyKTtlcih2dixmKTt2YXIgZz1ObShScSk7aWYoZyl7dmFyIGg9Tm0oU3EpO2lmKGgpe3ZhciBrPU9tKFZxLHtzdGFydDpnLnN0YXJ0VGltZSxlbmQ6aC5zdGFydFRpbWV8fHBlcmZvcm1hbmNlLm5vdygpfSk7ayYmKGc9VW4oZiksaD1uZXcgU24saz1LbShrKSxoPV8uTChoLDEsayksXy5MKGcsNSxoKSxwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcyYmcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcyhWcSkpfX1mcihmLDIpO2Y9e2RldGFpbDp7c291cmNlTGFuZ3VhZ2U6YSx0YXJnZXRMYW5ndWFnZTpifX07cGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm1hcmsmJnBlcmZvcm1hbmNlLm1hcmsoU3EsZik7Zj1EYXRlLm5vdygpO0NyKCk7aWYoIWF8fHhyKGEsYikpYT0iYXV0byI7aWYoZXx8YSE9dGhpcy5ofHxiIT10aGlzLmopdGhpcy5CPW5ldyB0dDt0aGlzLmg9YTt0aGlzLmo9CmI7dGhpcy5nLlNhKCk/KGQ9ZHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHRoaXMubCYmdGhpcy5sLmRpc3Bvc2UoKSx0aGlzLmw9bmV3IGx2KGQsdGhpcy5nLHRoaXMuTyx0aGlzLkssdGhpcy5HLCEwLHRoaXMuSSx0aGlzLkIsdGhpcy5vLHRoaXMuTCksdGhpcy5sLnlmPXRoaXMuQSx0aGlzLkM9ITAsdGhpcy5sLnRyYW5zbGF0ZShhLGIsYyxlLCgwLF8ueSkodGhpcy55aSx0aGlzLGYsYSxiKSkpOih0aGlzLmJlKCksYygwLCExLCEwKSl9O18ubS5wZz1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5sJiZ0aGlzLmwuZ307Xy5tLllmPWZ1bmN0aW9uKGEpe3RoaXMuQT1hfTtfLm0ucmVzdG9yZT1mdW5jdGlvbigpe3ZhciBhPWRyKHZ2LDMpO2VyKHZ2LGEpO2ZyKGEsMyk7cGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm1hcmsmJnBlcmZvcm1hbmNlLm1hcmsoVHEsdm9pZCAwKTtDcigpO3RoaXMuZy5TYSgpJiZ0aGlzLmwmJnRoaXMubC5yZXN0b3JlKCl9OwpfLm0uTT1mdW5jdGlvbigpe0JyKCk7d3YuZWEuTS5jYWxsKHRoaXMpO3RoaXMuZy5kaXNwb3NlKCk7dGhpcy5sPXRoaXMuZz1udWxsO3RoaXMuQj1uZXcgdHR9OwpfLm0ueWk9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5DJiYodGhpcy5DPSExLGI9e3NsOmIsdGw6Yyx0ZXh0bGVuOmR9LHRoaXMuQSYmKGIuY3R0PSIxIiksdGhpcy5EIT0iIiYmKGIuc3A9dGhpcy5EKSxiLnR0dD1EYXRlLm5vdygpLWEsYi50dGw9dGhpcy5SLHRoaXMuRiYmKGIudHRmPXRoaXMuRiksdGhpcy5vJiYoYi5zcj0xKSxhPXBxLGM9W10sXy5vaShfLlppKGEsMikpJiZjLnB1c2goInNkYSIpLF8ub2koXy5aaShhLDMpKSYmYy5wdXNoKCJlZWlzIiksZD1fLmJqKGEsaXEsNiksXy5vaShfLlppKGQsMSkpJiZjLnB1c2goImVzdHMiKSxfLm9pKF8uWmkoYSw3KSkmJmMucHVzaCgiZWhjbSIpLF8ub2koXy5aaShhLDgpKSYmYy5wdXNoKCJlb3BhIiksXy5vaShfLlppKGEsOSkpJiZjLnB1c2goImVhZHQiKSxiLmVmPWMuam9pbigiLCIpLFFtKCJ0ZV90aW1lIixiKSl9O3ZhciB4dj1mdW5jdGlvbihhKXt4bi5jYWxsKHRoaXMsYSk7dGhpcy5BPW5ldyBfLkhiKHRoaXMpfTtfLkIoeHYseG4pO3h2LnByb3RvdHlwZS5TPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpO2EuY2xhc3NOYW1lPSJnb29nLXRlLWNvbWJvIjthLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsUi5FZSk7dGhpcy5PYShhKX07eHYucHJvdG90eXBlLkxhPWZ1bmN0aW9uKCl7eG4ucHJvdG90eXBlLkxhLmNhbGwodGhpcyk7dGhpcy5aZSgpfTt4di5wcm90b3R5cGUuWmU9ZnVuY3Rpb24oKXtfLngodGhpcy5IKCksImNoYW5nZSIscHIodGhpcywiY2hhbmdlIikpO3RoaXMuZGlzcGF0Y2hFdmVudCgibG9hZCIpfTt4di5wcm90b3R5cGUuc2E9ZnVuY3Rpb24oKXt4bi5wcm90b3R5cGUuc2EuY2FsbCh0aGlzKTt0aGlzLkEuZGlzcG9zZSgpO3RoaXMuQT1udWxsfTsKdmFyIHl2PWZ1bmN0aW9uKGEsYil7YS5IKCkucGFyZW50Tm9kZSE9YiYmKGEuSCgpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYS5IKCkpLGIuYXBwZW5kQ2hpbGQoYS5IKCkpKX07Xy5tPXh2LnByb3RvdHlwZTtfLm0udWM9ZnVuY3Rpb24oYSl7dGhpcy5oLmllKHRoaXMuSCgpKTtmb3IodmFyIGIgaW4gYSlpZihhW2JdIT09T2JqZWN0LnByb3RvdHlwZVtiXSl7dmFyIGM9dGhpcy5oLlMoIk9QVElPTiIse3ZhbHVlOmJ9KTt0aGlzLmguU2IoYyxhW2JdKTt0aGlzLkgoKS5hcHBlbmRDaGlsZChjKX10aGlzLkgoKS5zZWxlY3RlZEluZGV4PTB9O18ubS5NYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkgoKS52YWx1ZX07Xy5tLmNiPWZ1bmN0aW9uKGEpe2lmKHRoaXMuSCgpLnZhbHVlIT1hKWZvcih2YXIgYj0wLGM7Yz10aGlzLkgoKS5vcHRpb25zLml0ZW0oYik7KytiKWlmKGMudmFsdWU9PWEpe3RoaXMuSCgpLnNlbGVjdGVkSW5kZXg9YjticmVha319OwpfLm0uQWM9ZnVuY3Rpb24oYSl7aWYoXy5vYyhhKT09InVuZGVmaW5lZCIpcmV0dXJuIHRoaXMuSCgpLm9wdGlvbnMuaXRlbSh0aGlzLkgoKS5zZWxlY3RlZEluZGV4KS50ZXh0O2Zvcih2YXIgYj0wLGM7Yz10aGlzLkgoKS5vcHRpb25zLml0ZW0oYik7KytiKWlmKGMudmFsdWU9PWEpcmV0dXJuIGMudGV4dH07Xy5tLlJiPWZ1bmN0aW9uKGEpe3RoaXMuSCgpLmRpc2FibGVkPSFhfTt2YXIgenY9ZnVuY3Rpb24oYSl7eHYuY2FsbCh0aGlzLGEpfTtfLkIoenYseHYpO3p2LnByb3RvdHlwZS5uYj1mdW5jdGlvbihhKXt0aGlzLnVjLmNhbGwodGhpcyxhKX07dmFyIEF2PWZ1bmN0aW9uKGEsYil7eHYuY2FsbCh0aGlzLGIpO3RoaXMuZz1hJiZKbChhKXx8e307dGhpcy5nLm9lPXRoaXMuZy5vZXx8MTE7dGhpcy5nLnBkPXRoaXMuZy5wZCE9MDt0aGlzLmcuZWI9QXF9O18uQihBdix4dik7Xy5tPUF2LnByb3RvdHlwZTtfLm0uS2M9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiR2EiKTt9OwpfLm0uUz1mdW5jdGlvbigpe3RoaXMuS2MoKTt0aGlzLkQ9dGhpcy5IKCk7dGhpcy5sPXdvKCJJRlJBTUUiLHtmcmFtZUJvcmRlcjowLCJjbGFzcyI6IlZJcGdKZC1aVmk5b2QteGwwN09iLU9FVm1jZCBza2lwdHJhbnNsYXRlIix0aXRsZTpSLkVlfSk7dGhpcy5sLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiO21wKHRoaXMubCwhMSk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmwpfTsKXy5tLlplPWZ1bmN0aW9uKCl7dmFyIGE9Xy54Zi50ZXN0KG9xKT8icnRsIjoibHRyIixiPV8uTGIodGhpcy5nLmViKSxjPVModGhpcywibWVudUJvZHkiKTt0aGlzLkEuTih0aGlzLmwsImxvYWQiLHRoaXMucWcpO3RyKHRoaXMubCwoMCxfLnkpKGZ1bmN0aW9uKCl7dmFyIGQ9em8odGhpcy5sKSxlPXt9LGY9ZSYmZS5UZTtlPVduKFZuKF8ueWwoKSwiPGhlYWQ+IiksT3UoZSkpO2Y9JzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURjgiPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IicrUCh4cChiKSkrJyInKyhmPycgbm9uY2U9IicrUChZcChmKSkrJyInOiIiKSsnPjwvaGVhZD48Ym9keSBzY3JvbGw9Im5vIiBzdHlsZT0ibWFyZ2luOjBweDtvdmVyZmxvdzpoaWRkZW4iIGRpcj0iJytQKGEpKyciIG1hcmdpbkhlaWdodD0wIG1hcmdpbldpZHRoPTAgbGVmdE1hcmdpbj0wIHRvcE1hcmdpbj0wIGJvcmRlcj0wPjxkaXYgaWQ9IicrClAoYykrJyIgY2xhc3M9JztpZih3cCgiVklwZ0pkLVpWaTlvZC14bDA3T2IiLF8ucWwpKXt2YXIgZz1NcCgiVklwZ0pkLVpWaTlvZC14bDA3T2IiLm1hKCkpO2c9U3RyaW5nKGcpLnJlcGxhY2UoT3AsQ3ApfWVsc2UgZz0iVklwZ0pkLVpWaTlvZC14bDA3T2IiLnJlcGxhY2UoTnAsQ3ApO2U9Vm4oZSxmK2crIj48L2Rpdj48L2JvZHk+IikuVGIoKTtkLndyaXRlKF8ua2ooZSkpO2QuY2xvc2UoKX0sdGhpcykpfTtfLm0ucWc9ZnVuY3Rpb24oKXt0aGlzLmo9bmV3IF8ucmQoem8odGhpcy5sKSk7dGhpcy5MPXRoaXMuai5IKFModGhpcywibWVudUJvZHkiKSk7dGhpcy5BLk4odGhpcy5ELCJjbGljayIsdGhpcy5UZCk7Xy5TYz90aGlzLkEuTih0aGlzLmwsImJsdXIiLHRoaXMuUmMpOnRoaXMuQS5OKEFvKHRoaXMubCksImJsdXIiLHRoaXMuUmMpO3RoaXMuZGlzcGF0Y2hFdmVudCgibG9hZCIpfTsKXy5tLnNhPWZ1bmN0aW9uKCl7eHYucHJvdG90eXBlLnNhLmNhbGwodGhpcyk7Xy5BZCh0aGlzLmwpO3RoaXMuRD10aGlzLlQ9dGhpcy5CPXRoaXMuTD10aGlzLmo9dGhpcy5sPW51bGx9O18ubS5xZj1mdW5jdGlvbihhKXt0aGlzLm8hPWEuY3VycmVudFRhcmdldC52YWx1ZSYmKHRoaXMuY2IoYS5jdXJyZW50VGFyZ2V0LnZhbHVlKSx0aGlzLmRpc3BhdGNoRXZlbnQoImNoYW5nZSIpKTt0aGlzLlJjKCl9O18ubS5UZD1mdW5jdGlvbigpe0J2KHRoaXMpO0FvKHRoaXMubCkuZm9jdXMoKTt0aGlzLnJhPSEwfTtfLm0uUmM9ZnVuY3Rpb24oKXt0aGlzLnJhJiYodGhpcy5yYT0hMSxCdih0aGlzLCExKSxfLm1iKF8uc2QodGhpcy5EKSkuZm9jdXMoKSl9O18ubS5rZT1mdW5jdGlvbigpe307Xy5tLmxlPWZ1bmN0aW9uKCl7fTsKdmFyIEJ2PWZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGI9PSJ1bmRlZmluZWQifHxiKXthLmxlKCk7Yj1qcChhLkQsd2luZG93KTt2YXIgYz1iLnkrYS5ELm9mZnNldEhlaWdodCxkPWIueS1hLkcuaGVpZ2h0LGU9Yi54LGY9Yi54K2EuRC5vZmZzZXRXaWR0aC1hLkcud2lkdGg7aWYoXy5TYyYmIXNvKCkpe3ZhciBnPWRvY3VtZW50LmJvZHk7Yy09Zy5vZmZzZXRUb3A7ZC09Zy5vZmZzZXRUb3A7ZS09Zy5vZmZzZXRMZWZ0O2YtPWcub2Zmc2V0TGVmdH1lbHNlIGc9S24oZG9jdW1lbnQpLGMtPWcueSxkLT1nLnksZS09Zy54LGYtPWcueDtnPV8uaWIod2luZG93KTtiLnk9Yi55PD1nLmhlaWdodC1hLkcuaGVpZ2h0P2M6ZDtiLnk+Zy5oZWlnaHQtYS5HLmhlaWdodCYmKGIueT1nLmhlaWdodC1hLkcuaGVpZ2h0KTtiLnk8MCYmKGIueT0wKTtfLnhmLnRlc3Qob3EpP2IueD1mPj0wP2Y6ZTpiLng9ZTw9Zy53aWR0aC1hLkcud2lkdGg/ZTpmO2IueD5nLndpZHRoLWEuRy53aWR0aCYmKGIueD1nLndpZHRoLQphLkcud2lkdGgpO2IueDwwJiYoYi54PTApO2VwKGEubCxiKTttcChhLmwsITApO0N2KGEpfWVsc2UgYS5rZSgpLG1wKGEubCwhMSl9O18ubT1Bdi5wcm90b3R5cGU7Xy5tLk1hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307Cl8ubS51Yz1mdW5jdGlvbihhKXt0aGlzLmouaWUodGhpcy5MKTttcCh0aGlzLmwsITApO3RoaXMuSWE9YTt0aGlzLkI9W107Zm9yKHZhciBiIGluIGEpaWYoYVtiXSE9PU9iamVjdC5wcm90b3R5cGVbYl0paWYoYVtiXT09Ii0tLSIpe3ZhciBjPXtsaW5rOnRoaXMuai5TKCJESVYiLHtjbGFzc05hbWU6IlZJcGdKZC1aVmk5b2QtdkgxR21mLWhnRFV3ZSIsdmFsdWU6Yn0pLGdpOiEwfTt0aGlzLkIucHVzaChjKX1lbHNle2M9e2xpbms6dGhpcy5qLlMoIkEiLHtjbGFzc05hbWU6IlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQiLGhyZWY6IiMiLHZhbHVlOmJ9KX07dGhpcy5CLnB1c2goYyk7dmFyIGQ9dGhpcy5qLlMoIkRJViIse3N0eWxlOiJ3aGl0ZS1zcGFjZTpub3dyYXAifSk7dGhpcy5qLmFwcGVuZENoaWxkKGMubGluayxkKTt0aGlzLmcucGQmJnRoaXMuai5hcHBlbmRDaGlsZChkLHRoaXMuai5TKCJTUEFOIix7Y2xhc3NOYW1lOiJpbmRpY2F0b3IifSwiXHUyMDNhIikpOwp0aGlzLmouYXBwZW5kQ2hpbGQoZCx0aGlzLmouUygiU1BBTiIse2NsYXNzTmFtZToidGV4dCJ9LHR5cGVvZiBhW2JdPT09ImZ1bmN0aW9uIj9hW2JdKCk6YVtiXSkpO3RoaXMuQS5OKGMubGluaywiY2xpY2siLHRoaXMucWYpfWE9dGhpcy5CLmxlbmd0aC0xO2E9TWF0aC5yb3VuZCgoYS1hJXRoaXMuZy5vZSkvdGhpcy5nLm9lKSsxO3RoaXMuVD10aGlzLmouUygiVEFCTEUiLHtjZWxsc3BhY2luZzowLGNlbGxwYWRkaW5nOjAsYm9yZGVyOjB9KTtjPXRoaXMuai5TKCJUQk9EWSIpO2I9dGhpcy5qLlMoIlRSIix7dmFsaWduOiJ0b3AifSk7dGhpcy5MLmNsYXNzTmFtZT0iVklwZ0pkLVpWaTlvZC12SDFHbWYiO3RoaXMuai5hcHBlbmRDaGlsZCh0aGlzLkwsdGhpcy5UKTt0aGlzLmouYXBwZW5kQ2hpbGQodGhpcy5ULGMpO3RoaXMuai5hcHBlbmRDaGlsZChjLGIpO2ZvcihkPWM9MDtjPGE7KytjKXt2YXIgZT10aGlzLmouUygiVEQiKTt0aGlzLmouYXBwZW5kQ2hpbGQoYixlKTtmb3IodmFyIGY9CjA7ZjwxMSYmZDx0aGlzLkIubGVuZ3RoOysrZiwrK2QpdGhpcy5qLmFwcGVuZENoaWxkKGUsdGhpcy5CW2RdLmxpbmspO2MhPWEtMSYmKGU9dGhpcy5qLlMoIlREIix7ImNsYXNzIjoiVklwZ0pkLVpWaTlvZC12SDFHbWYtS3JoUE5iIn0sIlx1MDBhMCIpLHRoaXMuai5hcHBlbmRDaGlsZChiLGUpKX10aGlzLm89bnVsbDt0aGlzLmNiKHRoaXMuQlswXS5saW5rLnZhbHVlKTtDdih0aGlzKTttcCh0aGlzLmwsITEpfTtfLm0uQWM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuSWFbXy5vYyhhKT09InVuZGVmaW5lZCI/dGhpcy5vOmFdfTtfLm0ubWU9ZnVuY3Rpb24oKXt9OwpfLm0uY2I9ZnVuY3Rpb24oYSl7aWYodGhpcy5vIT1hKXt0aGlzLkFjKGEpJiYodGhpcy5vPWEsdGhpcy5tZSgpKTtmb3IodmFyIGI9MDtiPHRoaXMuQi5sZW5ndGg7KytiKXt2YXIgYz10aGlzLkJbYl07Yy5naXx8KGMubGluay5jbGFzc05hbWU9Yy5saW5rLnZhbHVlPT1hJiZ0aGlzLmcucGQ/IlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQiOiJWSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmIiKX19fTt2YXIgQ3Y9ZnVuY3Rpb24oYSl7cXAoYS5MLG9wKGEuVCkpO3FwKGEubCxvcChhLkwpKTthLkc9b3AoYS5sKX0sRHY9ZnVuY3Rpb24oYSxiKXtBdi5jYWxsKHRoaXMsYSxiKX07Xy5CKER2LEF2KTtfLm09RHYucHJvdG90eXBlOwpfLm0uS2M9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmguUygiYSIseyJhcmlhLWhhc3BvcHVwIjoidHJ1ZSJ9KTthLmNsYXNzTmFtZT0iVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVkIjtfLm5sKGEsIiMiKTt0aGlzLkk9dGhpcy5oLlMoIlNQQU4iKTthLmFwcGVuZENoaWxkKHRoaXMuSSk7dGhpcy5QPXRoaXMuaC5TKCJJTUciLHtzcmM6Q3EsYWx0OiIiLHN0eWxlOiJiYWNrZ3JvdW5kLWltYWdlOnVybCgiK3hxKyIpO2JhY2tncm91bmQtcG9zaXRpb246LTE0cHggMHB4O2JvcmRlcjpub25lIix3aWR0aDoxNCxoZWlnaHQ6MTR9KTthLmFwcGVuZENoaWxkKHRoaXMuUCk7dGhpcy5PYShhKX07Xy5tLmtlPWZ1bmN0aW9uKCl7Xy5oaih0aGlzLlAsImJhY2tncm91bmRQb3NpdGlvbiIsIi0xNHB4IDBweCIpfTtfLm0ubGU9ZnVuY3Rpb24oKXtfLmhqKHRoaXMuUCwiYmFja2dyb3VuZFBvc2l0aW9uIiwiMHB4IDBweCIpfTsKXy5tLnNhPWZ1bmN0aW9uKCl7QXYucHJvdG90eXBlLnNhLmNhbGwodGhpcyk7dGhpcy5QPXRoaXMuST1udWxsfTtfLm0ubWU9ZnVuY3Rpb24oKXt0aGlzLmguU2IodGhpcy5JLHRoaXMuQWModGhpcy5vKXx8IiIpfTtfLm0ubmI9ZnVuY3Rpb24oYSl7dGhpcy51Yy5jYWxsKHRoaXMsYSl9O3ZhciBFdj1mdW5jdGlvbihhLGIpe0F2LmNhbGwodGhpcyxhLGIpfTtfLkIoRXYsQXYpO18ubT1Fdi5wcm90b3R5cGU7Cl8ubS5LYz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaC5TKCJhIix7ImFyaWEtaGFzcG9wdXAiOiJ0cnVlIn0pO2EuY2xhc3NOYW1lPSJWSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWQiO18ubmwoYSwiIyIpO3RoaXMuST10aGlzLmguUygiU1BBTiIpO2EuYXBwZW5kQ2hpbGQodGhpcy5JKTthLmFwcGVuZENoaWxkKHRoaXMuaC5TKCJJTUciLHtzcmM6Q3EsYWx0OiIiLHdpZHRoOjEsaGVpZ2h0OjF9KSk7YS5hcHBlbmRDaGlsZCh0aGlzLmguUygiU1BBTiIse3N0eWxlOiJib3JkZXItbGVmdDoxcHggc29saWQgI2JiYiJ9LCJcdTIwMGIiKSk7YS5hcHBlbmRDaGlsZCh0aGlzLmguUygiSU1HIix7c3JjOkNxLGFsdDoiIix3aWR0aDoxLGhlaWdodDoxfSkpO3RoaXMuUD10aGlzLmguUygic3BhbiIse3N0eWxlOiJjb2xvcjojNzY3Njc2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sIlx1MjViYyIpO2EuYXBwZW5kQ2hpbGQodGhpcy5QKTt0aGlzLk9hKGEpfTsKXy5tLmtlPWZ1bmN0aW9uKCl7Xy5oaih0aGlzLlAsImNvbG9yIiwiIzliOWI5YiIpfTtfLm0ubGU9ZnVuY3Rpb24oKXtfLmhqKHRoaXMuUCwiY29sb3IiLCIjZDVkNWQ1Iil9O18ubS5zYT1mdW5jdGlvbigpe0F2LnByb3RvdHlwZS5zYS5jYWxsKHRoaXMpO3RoaXMuUD10aGlzLkk9bnVsbH07Xy5tLm1lPWZ1bmN0aW9uKCl7dGhpcy5oLlNiKHRoaXMuSSx0aGlzLkFjKHRoaXMubyl8fCIiKX07Xy5tLm5iPWZ1bmN0aW9uKGEpe3RoaXMudWMuY2FsbCh0aGlzLGEpfTt2YXIgRnY9ZnVuY3Rpb24oYSxiKXtBdi5jYWxsKHRoaXMsYSxiKTt0aGlzLmcucGQ9ITF9O18uQihGdixBdik7CkZ2LnByb3RvdHlwZS5LYz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmNsYXNzTmFtZT0iVklwZ0pkLVpWaTlvZC1MZ2JzU2UiO3ZhciBiPXRoaXMuaC5TKCJESVYiLHtzdHlsZToiYmFja2dyb3VuZDogdXJsKCIrd3ErIikgcmVwZWF0LXggMCAtMzlweCJ9KTthLmFwcGVuZENoaWxkKGIpO3RoaXMuST10aGlzLmguY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7Yi5hcHBlbmRDaGlsZCh0aGlzLkkpO3RoaXMuT2EoYSl9O0Z2LnByb3RvdHlwZS5zYT1mdW5jdGlvbigpe0F2LnByb3RvdHlwZS5zYS5jYWxsKHRoaXMpO3RoaXMuST1udWxsfTtGdi5wcm90b3R5cGUucWY9ZnVuY3Rpb24oYSl7dGhpcy5jYihhLmN1cnJlbnRUYXJnZXQudmFsdWUpO3RoaXMuZGlzcGF0Y2hFdmVudCgiY2hhbmdlIik7dGhpcy5SYygpfTt2YXIgR3Y9ZnVuY3Rpb24oYSxiKXt4bi5jYWxsKHRoaXMsYik7dGhpcy5nPWEmJkpsKGEpfHx7fTt0aGlzLmo9bmV3IF8uSGIodGhpcyl9O18uRyhHdix4bik7dmFyIEh2PXt6azowLEtqOjEsaGs6Mn07Xy5tPUd2LnByb3RvdHlwZTsKXy5tLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmguY3JlYXRlRWxlbWVudCgiZGl2Iik7TnQoYSwic2tpcHRyYW5zbGF0ZSIpO050KGEsImdvb2ctdGUtZ2FkZ2V0Iik7YS5kaXI9Xy54Zi50ZXN0KG9xKT8icnRsIjoibHRyIjttcChhLCExKTtpZih0aGlzLmcubGF5b3V0PT0yKWltKGEsUXUoe2lkOlModGhpcywidGFyZ2V0TGFuZ3VhZ2UiKSxTZjoiIixSZjoiIn0pKTtlbHNle3ZhciBiPW5ldyB0bztpZihzcChfLlNjJiYhc28oKSkpdmFyIGM9IjxzcGFuIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO2hlaWdodDoxNXB4OyB3aWR0aDo1MXB4O2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlciggc3JjPSciK1N0cmluZyhGcSkucmVwbGFjZShScCxHcCkrIicsc2l6aW5nTWV0aG9kPSdzY2FsZScpO1wiPjwvc3Bhbj4iO2Vsc2UgYz1ocy53ZCxjPSc8aW1nIHNyYz0iJytQKFdwKEZxKSkrCiciIHdpZHRoPSIzN3B4IiBoZWlnaHQ9IjE0cHgiIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OiAzcHgiIGFsdD0iR29vZ2xlICcrUChjKSsnIj4nO3ZhciBkPWhzLndkO3ZhciBlPSgwLF8udGwpKCc8c3BhbiBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwIj48YSBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZCIpKyciIGhyZWY9IicrUChVcChHcSkpKyciIHRhcmdldD0iX2JsYW5rIj4nK2MrS3AoZCkrIjwvYT48L3NwYW4+Iik7Yz1iLmZvcm1hdDtkPVI7dmFyIGY9ZC56ZztlPWUuVGIoKTtlPXVvKGIse3R5cGU6Imh0bWwiLHhmOl8ua2ooZSkudG9TdHJpbmcoKX0pO2I9Yy5jYWxsKGIsZi5jYWxsKGQsZSkpO2ltKGEsUXUoe2lkOlModGhpcywidGFyZ2V0TGFuZ3VhZ2UiKSxTZjoiIixSZjp0aGlzLmcubGF5b3V0PT0xP1JsKFsiXHUwMGEwIiwiXHUwMGEwIixiXSk6Yn0pKX10aGlzLk9hKGEpfTsKXy5tLkxhPWZ1bmN0aW9uKCl7R3YuZWEuTGEuY2FsbCh0aGlzKTt0aGlzLmw9dGhpcy5nLmxheW91dD09Mj9uZXcgRXYobnVsbCx0aGlzLmgpOm5ldyB6dih0aGlzLmgpO3RoaXMuai5OKHRoaXMubCwiY2hhbmdlIixwcih0aGlzLCJjaGdfdGd0X2xhbmciKSk7dGhpcy5qLk4odGhpcy5sLCJsb2FkIix0aGlzLnJnKTt2YXIgYT10aGlzLmguSChTKHRoaXMsInRhcmdldExhbmd1YWdlIikpO2lmKHRoaXMuZy5sYXlvdXQ9PTIpe3ZhciBiPXRoaXMuaC5TKCJJTUciLHtzcmM6Q3EsImNsYXNzIjoiZ29vZy10ZS1nYWRnZXQtaWNvbiIsYWx0OiIifSk7Yi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9InVybCgiK3hxKyIpIjtiLnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbj0iLTY1cHggMHB4Ijt2YXIgYz10aGlzLmguUygiU1BBTiIse3N0eWxlOiJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlIn0pO2EuYXBwZW5kQ2hpbGQoYik7YS5hcHBlbmRDaGlsZChjKTt0aGlzLmwua2EoYyk7YS5zdHlsZS53aGl0ZVNwYWNlPQoibm93cmFwIjthLmNsYXNzTmFtZT0iZ29vZy10ZS1nYWRnZXQtc2ltcGxlIn1lbHNlIHRoaXMubC5rYShhKSx0aGlzLmcubGF5b3V0PT0xJiYoYS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUiKX07Xy5tLnJnPWZ1bmN0aW9uKCl7aWYodGhpcy5nLmxheW91dD09Mil7dmFyIGE9dGhpcy5sLGI9dGhpcy5oLkgoUyh0aGlzLCJ0YXJnZXRMYW5ndWFnZSIpKTthLkEueWMoYS5ELCJjbGljayIsYS5UZCk7YS5EPWI7YS5BLk4oYS5ELCJjbGljayIsYS5UZCl9dGhpcy5kaXNwYXRjaEV2ZW50KCJsb2FkIil9O18ubS5zYT1mdW5jdGlvbigpe0d2LmVhLnNhLmNhbGwodGhpcyk7dGhpcy5qLmRpc3Bvc2UoKTt0aGlzLmo9bnVsbDt0aGlzLmwuZGlzcG9zZSgpO3RoaXMubD1udWxsfTtfLm0ub2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sLk1hKCl9O18ubS5uYT1mdW5jdGlvbihhKXthPT0iIj90aGlzLkwmJnRoaXMubC5uYih0aGlzLkwpOnRoaXMuSSYmdGhpcy5sLm5iKHRoaXMuSSk7dGhpcy5sLmNiKGEpfTsKXy5tLnBhPWZ1bmN0aW9uKGEpe21wKHRoaXMuSCgpLGEpfTtfLm0uUmI9ZnVuY3Rpb24oYSl7dGhpcy5sLlJiKGEpfTtfLm0udWU9ZnVuY3Rpb24oYSxiKXt0aGlzLkw9YTt0aGlzLkk9Yn07dmFyIEl2PWZ1bmN0aW9uKGEsYil7eG4uY2FsbCh0aGlzLGIpO3RoaXMuZz1hJiZKbChhKXx8e307dGhpcy5nLmVifHwodGhpcy5nLmViPUFxKTt0aGlzLmo9bmV3IF8uSGIodGhpcyl9O18uRyhJdix4bik7dmFyIEp2PXtwazoxLHFrOjIsbGo6Myxrajo0fTtfLm09SXYucHJvdG90eXBlO18ubS5TPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuRz0hMTttcChhLCExKTt2YXIgYj1TKHRoaXMsImNvbnRhaW5lciIpO2I9KDAsXy50bCkoJzxpZnJhbWUgaWQ9IicrUChiKSsnIiBmcmFtZUJvcmRlcj0wIHNyYz0iamF2YXNjcmlwdDpcJ1wnIiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLVNtZlotT0VWbWNkIikrJyBza2lwdHJhbnNsYXRlIiBzdHlsZT0idmlzaWJpbGl0eTp2aXNpYmxlIj48L2lmcmFtZT4nKTtpbShhLGIpO3RoaXMuT2EoYSl9OwpfLm0uTGE9ZnVuY3Rpb24oKXtJdi5lYS5MYS5jYWxsKHRoaXMpO3ZhciBhPV8ueGYudGVzdChvcSk/InJ0bCI6Imx0ciIsYj1fLkxiKHRoaXMuZy5lYiksYz1TKHRoaXMsInRyYW5zbGF0ZSIpLGQ9Q3EsZT14cTt0aGlzLkgoKS5pZD1TKHRoaXMsImZsb2F0Q29udGFpbmVyIik7dmFyIGY9e2lkOnRoaXMuSCgpLmlkLGNsYXNzTmFtZToiZ29vZy10ZS1mdGFiLWZsb2F0In07dGhpcy5IKCkuY2xhc3NOYW1lKz0iIGdvb2ctdGUtZnRhYi1mbG9hdCI7c3dpdGNoKHRoaXMuZy5OYyl7Y2FzZSAyOnZhciBnPSJnb29nLXRlLWZsb2F0LXRvcCI7Zi50b3A9MDtmLnJpZ2h0PTIwO2JyZWFrO2Nhc2UgMzpnPSJnb29nLXRlLWZsb2F0LWJvdHRvbSI7Zi5ib3R0b209MDtmLnJpZ2h0PTIwO2JyZWFrO2Nhc2UgNDpnPSJnb29nLXRlLWZsb2F0LWJvdHRvbSI7Zi5ib3R0b209MDtmLmxlZnQ9MjA7YnJlYWs7ZGVmYXVsdDpnPSJnb29nLXRlLWZsb2F0LXRvcCIsZi50b3A9MCxmLmxlZnQ9MjB9bnAoWm4obmV3IF8ueWYsCmYpLHRoaXMuSCgpKTt0aGlzLkI9dGhpcy5oLkgoUyh0aGlzLCJjb250YWluZXIiKSk7dGhpcy5qLk4odGhpcy5CLCJsb2FkIix0aGlzLnNnKTt0cih0aGlzLkIsKDAsXy55KShmdW5jdGlvbigpe3ZhciBoPXpvKHRoaXMuQiksaz1nLGw9e30sbj1sJiZsLlRlLHE9aHMuSWU7az1WbihXbihWbihfLnlsKCksIjxoZWFkPiIpLE91KGwpKSwnPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGOCI+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJytQKHhwKGIpKSsnIicrKG4/JyBub25jZT0iJytQKFlwKG4pKSsnIic6IiIpKyc+PC9oZWFkPjxib2R5IGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtU21mWiIpKyIgIitQKGspKyciIHNjcm9sbD0ibm8iIHN0eWxlPSJvdmVyZmxvdzpoaWRkZW4iIGRpcj0iJytQKGEpKyciPjxhIGlkPSInK1AoYykrJyIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0iJysKUCgiVklwZ0pkLVpWaTlvZC1TbWZaLWhTUkdQZCIpKyciPjxpbWcgc3JjPSInK1AoV3AoZCkpKyciIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOnVybCgnK1AoV3AoZSkpKycpO2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggMHB4Ij48c3Bhbj4nK0twKHEpKyI8L3NwYW4+PC9hPjwvYm9keT4iKS5UYigpO2gud3JpdGUoXy5raihrKSk7aC5jbG9zZSgpfSx0aGlzKSl9O18ubS5zZz1mdW5jdGlvbigpe3RoaXMubD0obmV3IF8ucmQoem8odGhpcy5CKSkpLkgoUyh0aGlzLCJ0cmFuc2xhdGUiKSk7dGhpcy5qLk4odGhpcy5sLCJjbGljayIscHIodGhpcywiY2xrX3RyYW5zIikpO21wKHRoaXMuSCgpLCEwKTt2YXIgYT1vcCh0aGlzLmwpO21wKHRoaXMuSCgpLCExKTtxcCh0aGlzLkIsYSk7cXAodGhpcy5IKCksYSk7dGhpcy5kaXNwYXRjaEV2ZW50KCJsb2FkIil9OwpfLm0uc2E9ZnVuY3Rpb24oKXtJdi5lYS5zYS5jYWxsKHRoaXMpO3RoaXMuai5kaXNwb3NlKCk7dGhpcy5qPW51bGw7Xy5BZCh0aGlzLkIpO3RoaXMubD10aGlzLkI9bnVsbH07Xy5tLmlzVmlzaWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkd9O18ubS5wYT1mdW5jdGlvbihhKXt0aGlzLkc9YTttcCh0aGlzLkgoKSxhKX07dmFyIEt2PWZ1bmN0aW9uKGEsYil7eG4uY2FsbCh0aGlzLGIpO3RoaXMuQT1uZXcgXy5IYih0aGlzKTt0aGlzLmc9YSYmSmwoYSl8fHt9O3RoaXMuZy5lYj1BcTt0aGlzLmcud2U9ITE7Xy5oaih0aGlzLmguZy5ib2R5LCJwb3NpdGlvbiIsInJlbGF0aXZlIik7Xy5NaHx8Xy5oaih0aGlzLmguZy5ib2R5LCJtaW5IZWlnaHQiLCIxMDAlIik7Xy5oaih0aGlzLmguZy5kb2N1bWVudEVsZW1lbnQsImhlaWdodCIsIjEwMCUiKTtfLmhqKHRoaXMuaC5nLmJvZHksInRvcCIsIjBweCIpO18uU2MmJih3aW5kb3cuX2Jhbm5lcnF1aXJrZml4bGVmdD0tcGFyc2VJbnQoIjAiK3RoaXMuaC5nLmJvZHkubGVmdE1hcmdpbiwxMCksd2luZG93Ll9iYW5uZXJxdWlya2ZpeHRvcD0tcGFyc2VJbnQoIjAiK3RoaXMuaC5nLmJvZHkudG9wTWFyZ2luLDEwKS00MCl9O18uRyhLdix4bik7Xy5tPUt2LnByb3RvdHlwZTtfLm0ua2E9ZnVuY3Rpb24oKXt0aGlzLnFjKHRoaXMuaC5nLmJvZHkuZmlyc3RDaGlsZCl9OwpfLm0uUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLkc9ITE7bXAoYSwhMSk7TnQoYSwic2tpcHRyYW5zbGF0ZSIpO3ZhciBiPVModGhpcywiY29udGFpbmVyIik7Yj0oMCxfLnRsKSgnPGlmcmFtZSBpZD0iJytQKGIpKyciIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYi1PRVZtY2QiKSsnIHNraXB0cmFuc2xhdGUiIGZyYW1lQm9yZGVyPTAgc3JjPSIjIiBzdHlsZT0idmlzaWJpbGl0eTp2aXNpYmxlIj48L2lmcmFtZT4nKTtpbShhLGIpO3RoaXMuT2EoYSl9OwpfLm0uTGE9ZnVuY3Rpb24oKXtLdi5lYS5MYS5jYWxsKHRoaXMpO3ZhciBhPV8ueGYudGVzdChvcSk/InJ0bCI6Imx0ciIsYj1fLkxiKHRoaXMuZy5lYiksYz1DcSxkPUdxLGU9RHEsZj14cSxnPVModGhpcywicHJvbXB0U2VjdGlvbiIpLGg9Uyh0aGlzLCJjb25maXJtIiksaz1TKHRoaXMsInByb2dyZXNzU2VjdGlvbiIpLGw9Uyh0aGlzLCJwcm9ncmVzc1ZhbHVlIiksbj16cSxxPVModGhpcywiY2FuY2VsIikscD1TKHRoaXMsImZpbmlzaFNlY3Rpb24iKSxyPVModGhpcywicmVzdG9yZSIpLHQ9Uyh0aGlzLCJlcnJvclNlY3Rpb24iKSxBPVModGhpcywiZXJyb3JDb250ZW50IiksRD1TKHRoaXMsImNsb3NlIiksRT1TKHRoaXMsIm5vQXV0b1BvcHVwIiksYmEsWj1bXTt0aGlzLmcud2UmJloucHVzaChQdSh7aWQ6Uyh0aGlzLCJwcm9tcHRTb3VyY2VMYW5nIil9KSk7Wi5wdXNoKFB1KHtpZDpTKHRoaXMsInByb21wdFRhcmdldExhbmciKX0pKTt2YXIgdmk9bW0oUi5KZy5hcHBseShudWxsLApaKSk7Wj1bXTt0aGlzLmcud2UmJloucHVzaChQdSh7aWQ6Uyh0aGlzLCJmaW5pc2hTb3VyY2VMYW5nIil9KSk7Wi5wdXNoKFB1KHtpZDpTKHRoaXMsImZpbmlzaFRhcmdldExhbmciKX0pKTt2YXIgd2k9bW0oUi5EZy5hcHBseShudWxsLFopKTt0aGlzLmcuY2cmJihiYT10aGlzLmcuY2cpO3RoaXMuQj10aGlzLmguSChTKHRoaXMsImNvbnRhaW5lciIpKTt0aGlzLkEuTih0aGlzLkIsImxvYWQiLHRoaXMudGcpO3RyKHRoaXMuQiwoMCxfLnkpKGZ1bmN0aW9uKCl7dmFyIGFnPXpvKHRoaXMuQiksWGM9YmEsTGQ9e30sRGU9TGQmJkxkLlRlLEVlPWhzLndkLHhpPWhzLkllLGJnPWhzLkVnLHlpPWhzLm1nLHppPWhzLkFnLGNnPWhzLkFlLEFpPWhzLkFlO1hjPVZuKFduKFZuKF8ueWwoKSwiPGhlYWQ+IiksT3UoTGQpKSwnPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGOCI+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJysKUCh4cChiKSkrJyInKyhEZT8nIG5vbmNlPSInK1AoWXAoRGUpKSsnIic6IiIpKyc+PC9oZWFkPjxib2R5IGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYiIpKyciIHNjcm9sbD0ibm8iIGJvcmRlcj0wIGRpcj0iJytQKGEpKyciPjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTAgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJT48dHIgdmFsaWduPW1pZGRsZT48dGQgd2lkdGg9MSBub3dyYXA+PGEgaHJlZj0iJytQKFVwKGQpKSsnIiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZCIpKyciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iJytQKFdwKGUpKSsnIiBhbHQ9Ikdvb2dsZSAnK1AoRWUpKyciPjwvYT48L3RkPicrKHNwKFhjKT8nPHRkIHdpZHRoPTE+PGltZyBzcmM9IicrUChXcChjKSkrJyIgd2lkdGg9IjkiIGhlaWdodD0iMTUiIHRpdGxlPSInK1AoWGMpKyciIGFsdD0iJytQKFhjKSsnIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTp1cmwoJysKUChXcChmKSkrJyk7YmFja2dyb3VuZC1wb3NpdGlvbjotNTZweCAwcHg7bWFyZ2luOjAgNHB4Ij48L3RkPic6IiIpKyc8dGQgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiLUtFNnZxZSIpKyciPjwvdGQ+PHRkPjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTAgaGVpZ2h0PTEwMCU+PHRyIGlkPSInK1AoZykrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgdmFsaWduPW1pZGRsZT48dGQgbm93cmFwPjxzcGFuIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYi1iTjk3UGMiKSsnIj4nK0twKHZpKSsnPC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYi1LRTZ2cWUiKSsnIj48L3RkPjx0ZCBub3dyYXA+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLUxnYnNTZSIpKyciPjxkaXY+PGJ1dHRvbiBpZD0iJytQKGgpKyciPjxiPicrS3AoeGkpKyc8L2I+PC9idXR0b24+PC9kaXY+PC9kaXY+PC90ZD48dGQgY2xhc3M9IicrClAoIlZJcGdKZC1aVmk5b2QtT1JIYi1LRTZ2cWUiKSsnIj48L3RkPjx0ZCBub3dyYXA+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLUxnYnNTZSIpKyciPjxkaXY+PGJ1dHRvbiBpZD0iJytQKEUpKyciPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvdGQ+PC90cj48dHIgaWQ9IicrUChrKSsnIiBzdHlsZT0iZGlzcGxheTpub25lIiB2YWxpZ249bWlkZGxlPjx0ZD48c3BhbiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItYk45N1BjIikrJyI+JytLcChiZykrJyZuYnNwOzxzcGFuIGRpcj0ibHRyIj4oPGIgaWQ9IicrUChsKSsnIj48L2I+JSk8L3NwYW4+Jm5ic3A7PGltZyBzcmM9IicrUChXcChuKSkrJyI+PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYi1LRTZ2cWUiKSsnIj48L3RkPjx0ZCBub3dyYXA+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLUxnYnNTZSIpKyciPjxkaXY+PGJ1dHRvbiBpZD0iJytQKHEpKyciPicrS3AoeWkpKwonPC9idXR0b24+PC9kaXY+PC9kaXY+PC90ZD48L3RyPjx0ciBpZD0iJytQKHApKyciIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjx0ZD48c3BhbiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItYk45N1BjIikrJyI+JytLcCh3aSkrJzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItS0U2dnFlIikrJyI+PC90ZD48dGQgbm93cmFwPjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1MZ2JzU2UiKSsnIj48ZGl2PjxidXR0b24gaWQ9IicrUChyKSsnIj4nK0twKHppKSsnPC9idXR0b24+PC9kaXY+PC9kaXY+PC90ZD48L3RyPjx0ciBpZD0iJytQKHQpKyciIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHZhbGlnbj1taWRkbGU+PHRkPjxzcGFuIGlkPSInK1AoQSkrJyIgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiLWJOOTdQYyIpKyciPjwvc3Bhbj48L3RkPjwvdHI+PC90YWJsZT48L3RkPjx0ZCBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItS0U2dnFlIikrCiciPjwvdGQ+PHRkIHdpZHRoPTEgaWQ9Im9wdGlvbnMiPjwvdGQ+PHRkIHdpZHRoPTE+PGEgaWQ9IicrUChEKSsnIiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLVR2RDlQYy1oU1JHUGQiKSsnIiBocmVmPSIjIiB0aXRsZT0iJytQKGNnKSsnIj48aW1nIHNyYz0iJytQKFdwKGMpKSsnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIGFsdD0iJytQKEFpKSsnIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTp1cmwoJytQKFdwKGYpKSsnKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yOHB4IDBweCI+PC9hPjwvdGQ+PC90cj48L3RhYmxlPjwvYm9keT4nKS5UYigpO2FnLndyaXRlKF8ua2ooWGMpKTthZy5jbG9zZSgpfSx0aGlzKSl9OwpfLm0udGc9ZnVuY3Rpb24oKXt0aGlzLmo9bmV3IF8ucmQoem8odGhpcy5CKSk7THYodGhpcyxSLkNlKTtpZih0aGlzLmcuZWI9PUFxKXt2YXIgYT0idXJsKCIrd3ErIikiO18uaGoodGhpcy5qLmcuYm9keSwiYmFja2dyb3VuZEltYWdlIixhKTtmb3IodmFyIGI9dGhpcy5qLmcuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpLGM9MDtjPGIubGVuZ3RoOysrYyl7dmFyIGQ9YltjXS5wYXJlbnROb2RlO18uaGooZCwiYmFja2dyb3VuZEltYWdlIixhKTtfLmhqKGQsImJhY2tncm91bmRSZXBlYXQiLCJyZXBlYXQteCIpO18uaGooZCwiYmFja2dyb3VuZFBvc2l0aW9uIiwiMCAtMzlweCIpfX10aGlzLmcud2UmJih0aGlzLm89bmV3IER2KHRoaXMuZyx0aGlzLmopKTt0aGlzLmw9bmV3IER2KHRoaXMuZyx0aGlzLmopO3RoaXMuRD1uZXcgRnYodGhpcy5nLHRoaXMuaik7dGhpcy5BLk4odGhpcy5qLkgoUyh0aGlzLCJjb25maXJtIikpLCJjbGljayIscHIodGhpcywiY2xrX2NvbmZpcm0iKSk7CnRoaXMuQS5OKHRoaXMuai5IKFModGhpcywiY2FuY2VsIikpLCJjbGljayIscHIodGhpcywiY2xrX2NhbmNlbCIpKTt0aGlzLkEuTih0aGlzLmouSChTKHRoaXMsInJlc3RvcmUiKSksImNsaWNrIixwcih0aGlzLCJjbGtfcmVzdG9yZSIpKTt0aGlzLkEuTih0aGlzLmouSChTKHRoaXMsImNsb3NlIikpLCJjbGljayIscHIodGhpcywiY2xrX2Nsb3NlIikpO3RoaXMuUD10aGlzLmouSChTKHRoaXMsIm5vQXV0b1BvcHVwIikpO3RoaXMuQS5OKHRoaXMuUCwiY2xpY2siLHByKHRoaXMsImNsa19ub19hcCIpKTt0aGlzLm8mJnRoaXMuQS5OKHRoaXMubywiY2hhbmdlIixwcih0aGlzLCJjaGdfc3JjX2xhbmciKSk7dGhpcy5BLk4odGhpcy5sLCJjaGFuZ2UiLHByKHRoaXMsImNoZ190Z3RfbGFuZyIpKTt0aGlzLkEuTih0aGlzLkQsImNoYW5nZSIsdGhpcy5SaCk7YT1uZXcganIoKDAsXy55KSh0aGlzLnVnLHRoaXMpKTt0aGlzLm8mJnRoaXMuQS5OKHRoaXMubywibG9hZCIsYS5yZWdpc3RlcigpKTsKdGhpcy5BLk4odGhpcy5sLCJsb2FkIixhLnJlZ2lzdGVyKCkpO3RoaXMuQS5OKHRoaXMuRCwibG9hZCIsYS5yZWdpc3RlcigpKTthLmZpbmlzaCgpO3RoaXMubyYmdGhpcy5vLmthKHRoaXMuai5IKFModGhpcywicHJvbXB0U291cmNlTGFuZyIpKSk7dGhpcy5sLmthKHRoaXMuai5IKFModGhpcywicHJvbXB0VGFyZ2V0TGFuZyIpKSk7dGhpcy5ELmthKHRoaXMuai5IKCJvcHRpb25zIikpfTtfLm0udWc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLkQsYj1SLnlnO18uemQoYS5JKTthLkkuYXBwZW5kQ2hpbGQoYS5oLmNyZWF0ZVRleHROb2RlKGIrIlx1MDBhMFx1MjViYyIpKTt0aGlzLkQudWMoe3R1cm5fb2ZmX3NpdGU6Ui5HZyxzMToiLS0tIixsZWFybl9tb3JlOlIueGd9KTt0aGlzLmRpc3BhdGNoRXZlbnQoImxvYWQiKX07Xy5tLlJoPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuRC5NYSgpKXtjYXNlICJsZWFybl9tb3JlIjp3aW5kb3cub3BlbihKcSwiX2JsYW5rIik7YnJlYWs7Y2FzZSAidHVybl9vZmZfc2l0ZSI6dGhpcy5kaXNwYXRjaEV2ZW50KCJjbGtfbm9fYXBfc2l0ZSIpfX07Cl8ubS5zYT1mdW5jdGlvbigpe3RoaXMucGEoITEpO0t2LmVhLnNhLmNhbGwodGhpcyk7dGhpcy5BLmRpc3Bvc2UoKTt0aGlzLkE9bnVsbDt0aGlzLm8mJih0aGlzLm8uZGlzcG9zZSgpLHRoaXMubz1udWxsKTt0aGlzLmwuZGlzcG9zZSgpO3RoaXMubD1udWxsO3RoaXMuRC5kaXNwb3NlKCk7dGhpcy5EPW51bGw7Xy5BZCh0aGlzLkIpO3RoaXMuYWM9dGhpcy5qPW51bGx9O18ubS5KYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm8/dGhpcy5vLk1hKCk6IiJ9O18ubS5vYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmwuTWEoKX07Xy5tLk5hPWZ1bmN0aW9uKGEpe3RoaXMubyYmdGhpcy5vLmNiKGEpO3RoaXMuVCYmdGhpcy5UW2FdJiZ0aGlzLmouU2IodGhpcy5QLFIuRmcodGhpcy5UW2FdKSl9O18ubS5uYT1mdW5jdGlvbihhKXt0aGlzLmwuY2IoYSl9Owp2YXIgTXY9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5hYyE9Yil7YS5hYz1iO2lmKGI9PTApe2EubyYmeXYoYS5vLGEuai5IKFMoYSwicHJvbXB0U291cmNlTGFuZyIpKSk7aWYoYS5MKXt2YXIgZT1hLm9hKCk7YS5sLm5iKGEuTCk7YS5uYShlKX15dihhLmwsYS5qLkgoUyhhLCJwcm9tcHRUYXJnZXRMYW5nIikpKX1lbHNlIGI9PTImJihhLm8mJnl2KGEubyxhLmouSChTKGEsImZpbmlzaFNvdXJjZUxhbmciKSkpLGEuSSYmKGU9YS5vYSgpLGEubC5uYihhLkkpLGEubmEoZSkpLHl2KGEubCxhLmouSChTKGEsImZpbmlzaFRhcmdldExhbmciKSkpKTtlPXt9O2VbLTFdPWEuai5IKFMoYSwiZXJyb3JTZWN0aW9uIikpO2VbMF09YS5qLkgoUyhhLCJwcm9tcHRTZWN0aW9uIikpO2VbMV09YS5qLkgoUyhhLCJwcm9ncmVzc1NlY3Rpb24iKSk7ZVsyXT1hLmouSChTKGEsImZpbmlzaFNlY3Rpb24iKSk7Zm9yKHZhciBmIGluIGUpZVtmXSE9PU9iamVjdC5wcm90b3R5cGVbZl0mJm1wKGVbZl0sZj09CmIpfWMmJmEucGEoITApO2EuUC5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheT1kPyJibG9jayI6Im5vbmUifTtLdi5wcm90b3R5cGUuaXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR307Ckt2LnByb3RvdHlwZS5wYT1mdW5jdGlvbihhKXtpZih0aGlzLkchPWEpe3RoaXMuRz1hO2lmKF8uU2MpdmFyIGI9cGFyc2VJbnQoIjAiK3RoaXMuaC5nLmJvZHkubGVmdE1hcmdpbiwxMCksYz1wYXJzZUludCgiMCIrdGhpcy5oLmcuYm9keS50b3BNYXJnaW4sMTApO3ZhciBkPXRoaXMuaC5nLmNvbXBhdE1vZGU9PSJCYWNrQ29tcGF0IjthPyhfLmhqKHRoaXMuaC5nLmJvZHksInRvcCIsIjQwcHgiKSxtcCh0aGlzLkgoKSwhMCksXy5TYyYmKHNvKCk/KHdpbmRvdy5fYmFubmVycXVpcmtmaXhsZWZ0PXdpbmRvdy5fYmFubmVycXVpcmtmaXh0b3A9MCxkJiYodGhpcy5oLmcuYm9keS50b3BNYXJnaW49Yys0MCkpOmQ/KHRoaXMuaC5nLmJvZHkudG9wTWFyZ2luPWMrNDAsd2luZG93Ll9iYW5uZXJxdWlya2ZpeGxlZnQ9d2luZG93Ll9iYW5uZXJxdWlya2ZpeHRvcD0wKTood2luZG93Ll9iYW5uZXJxdWlya2ZpeGxlZnQ9LWIsd2luZG93Ll9iYW5uZXJxdWlya2ZpeHRvcD0tYy00MCkpKTooXy5oaih0aGlzLmguZy5ib2R5LAoidG9wIiwiMHB4IiksbXAodGhpcy5IKCksITEpLGQmJmM+PTQwJiYodGhpcy5oLmcuYm9keS50b3BNYXJnaW49Yy00MCkpfX07dmFyIE52PWZ1bmN0aW9uKGEsYil7YS5qLlNiKGEuai5IKFMoYSwicHJvZ3Jlc3NWYWx1ZSIpKSxiKX0sTHY9ZnVuY3Rpb24oYSxiKXthLmouU2IoYS5qLkgoUyhhLCJlcnJvckNvbnRlbnQiKSksYil9O0t2LnByb3RvdHlwZS51ZT1mdW5jdGlvbihhLGIpe3RoaXMuTD1hO3RoaXMuST1iO3RoaXMubC5uYihhKX07dmFyIFB2PWZ1bmN0aW9uKGEsYil7Xy51LmNhbGwodGhpcyk7Xy5vYyhhKT09InN0cmluZyImJihiPWEsYT17fSk7Xy5vYyhiKT09InN0cmluZyImJihiPWduKFN0cmluZyhiKSkpO3RoaXMuVD1iO3RoaXMuQT1uZXcgXy5IYih0aGlzKTt0aGlzLmxhPXZvaWQgMDthPU9iamVjdChhKTt0aGlzLm89ImF1dG8iOyEoYj13aW5kb3cucGFyZW50IT13aW5kb3cpJiYoYj0oIXdpbmRvdy5leHRlcm5hbHx8IXdpbmRvdy5leHRlcm5hbC5nb29nbGVUb29sYmFyVmVyc2lvbnx8cGFyc2VGbG9hdCh3aW5kb3cuZXh0ZXJuYWwuZ29vZ2xlVG9vbGJhclZlcnNpb24pPDYuMikmJighd2luZG93Lmd0YkV4dGVybmFsfHwhd2luZG93Lmd0YkV4dGVybmFsLmlzVHJhbnNsYXRlRW5hYmxlZHx8IXdpbmRvdy5ndGJFeHRlcm5hbC5pc1RyYW5zbGF0ZUVuYWJsZWQoKSkpJiYoYj1uYXZpZ2F0b3IuYXBwVmVyc2lvbiYmbmF2aWdhdG9yLmFwcFZlcnNpb24ubWF0Y2goL1xzQ2hyb21lXC8oKFxkKylcLihcZCspXC5bXGRcLl0rKVxzLyksCmI9IShiJiZiWzJdJiZiWzNdJiZOdW1iZXIoYlsyXSkqMUUzK051bWJlcihiWzNdKT49NDAwMSkpO3RoaXMuZz17RWQ6YixoZjohMSxGZDpudWxsLEVjOm51bGwsWGQ6W10sY2Y6W10sZGg6ITEsUGI6ITEsYXBpS2V5OiIiLGxheW91dDowLFZlOiExfTt0aGlzLklhPXtlYjpBcSxjZzp2cT09Imh0dHBzOi8vIj9SLkNnOm51bGx9O3RoaXMuUD17ZWI6QXEsTmM6bnVsbH07YSYmKCJhdXRvRGlzcGxheSJpbiBhJiYodGhpcy5nLkVkPXRoaXMuZy5FZCYmISFhLmF1dG9EaXNwbGF5KSwibXVsdGlsYW5ndWFnZVBhZ2UiaW4gYSYmKHRoaXMuZy5QYj0hIWEubXVsdGlsYW5ndWFnZVBhZ2UpLCJsYXlvdXQiaW4gYSYmKHRoaXMuZy5sYXlvdXQ9YS5sYXlvdXQpLGEucGFnZUxhbmd1YWdlJiYodGhpcy5nLmRkPXFyKGEucGFnZUxhbmd1YWdlKSksYS5pbmNsdWRlZExhbmd1YWdlcyYmKHRoaXMuZy5YZD1hLmluY2x1ZGVkTGFuZ3VhZ2VzLnNwbGl0KCIsIikpLGEuZXhjbHVkZWRMYW5ndWFnZXMmJgoodGhpcy5nLmNmPWEuZXhjbHVkZWRMYW5ndWFnZXMuc3BsaXQoIiwiKSksYS5yZW1vdGVBcGlQcm94eUhhbmRsZXJzJiYodGhpcy5sYT1hLnJlbW90ZUFwaVByb3h5SGFuZGxlcnMpLHRoaXMuZy5kZCYmKHRoaXMubz10aGlzLmcuZGQpLGEua2V5JiYodGhpcy5nLmFwaUtleT1hLmtleSksdGhpcy5QLk5jPU51bWJlcihhLmZsb2F0UG9zaXRpb24pfHx0aGlzLlAuTmMsImRpc2FibGVBdXRvVHJhbnNsYXRpb24iaW4gYSYmKHRoaXMuZy5WZT0hIWEuZGlzYWJsZUF1dG9UcmFuc2xhdGlvbikpOyF0aGlzLmcuVmUmJk92KHRoaXMpJiYodGhpcy5nLmhmPSEwKTt0aGlzLkM9e307aWYoKGE9ZG9jdW1lbnQuY29va2llLm1hdGNoKC8oXnw7IClnb29ndHJhbnNvcHQ9KC4qPykoO3wkKS8pKSYmYVsyXSlmb3IodGhpcy5DPXt9LGE9Xy5EYihhWzJdKS5zcGxpdCgifCIpLGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXS5zcGxpdCgiPSIpO2NbMF0mJih0aGlzLkNbY1swXV09Y1sxXSl9dGhpcy53YT0KbmV3IFpzKHthcGlLZXk6dGhpcy5nLmFwaUtleSxoYzoxLHZlOiEwLGdtOkhxfSx7Y2xpZW50OnRxLHU6d2luZG93LmxvY2F0aW9uLmhyZWZ9KTt0aGlzLkY9bmV3IHd2KHZvaWQgMCx0aGlzLndhLHZvaWQgMCx2b2lkIDAsdGhpcy5nLmFwaUtleSx2b2lkIDAsdm9pZCAwLG5ldyBXdSx2b2lkIDAsdm9pZCAwLHRoaXMubGEpO3RoaXMuRz0hMTt0aGlzLkEuTih3aW5kb3csInBhZ2VoaWRlIix0aGlzLmRpc3Bvc2UpO3RoaXMuSz1uZXcganIoKDAsXy55KSh0aGlzLk1oLHRoaXMpKTt0aGlzLkk9bmV3IGpyKCgwLF8ueSkodGhpcy5PaCx0aGlzKSk7dGhpcy5PPW5ldyBscigoMCxfLnkpKHRoaXMua2ksdGhpcykpO3RoaXMuaD1uZXcgS3YodGhpcy5JYSk7dGhpcy5GLnpjKHRoaXMuSy5yZWdpc3RlcigoMCxfLnkpKHRoaXMuSmgsdGhpcykpLG9xKTt0aGlzLlQ/KHRoaXMubD1uZXcgR3YodGhpcy5nKSx0aGlzLkEuTih0aGlzLmwsImxvYWQiLHRoaXMuSy5yZWdpc3RlcigpKSx0aGlzLkEuTih0aGlzLmwsCiJjaGdfdGd0X2xhbmciLG1yKHRoaXMuTyx0aGlzLkkuZGVsYXkoKDAsXy55KSh0aGlzLkloLHRoaXMpKSkpLHRoaXMubC5rYSh0aGlzLlQpKTp0aGlzLlAuTmMmJih0aGlzLkI9bmV3IEl2KHRoaXMuUCksdGhpcy5BLk4odGhpcy5CLCJsb2FkIix0aGlzLksucmVnaXN0ZXIoKSksdGhpcy5BLk4odGhpcy5CLCJjbGtfdHJhbnMiLG1yKHRoaXMuTyx0aGlzLkkuZGVsYXkoKDAsXy55KSh0aGlzLkdoLHRoaXMpKSkpLHRoaXMuQi5rYSgpKTshdGhpcy5nLmRkJiZ0aGlzLmcuZGgmJnRoaXMuRi5QYyh0aGlzLksucmVnaXN0ZXIoKDAsXy55KSh0aGlzLkVoLHRoaXMpKSk7dGhpcy5LLmZpbmlzaCgpfTtfLkIoUHYsXy51KTsKdmFyIE92PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZixnKXtpZihmPV8uRGIoZikubWF0Y2goIl5cXCgoKFthLXpBLVpcXC1fXSopXFx8KT8oW2EtekEtWlxcLV9dKilcXCl8Xi8oKFthLXpBLVpcXC1fXSopLyk/KFthLXpBLVpcXC1fXSopIikpe2lmKGZbM10pcmV0dXJuIGcuZy5GZD1mWzJdLGcuZy5FYz1mWzNdLCEwO2lmKGZbNl0pcmV0dXJuIGcuZy5GZD1mWzVdLGcuZy5FYz1mWzZdLCEwfXJldHVybiExfXZhciBjPXt1cmw6ZnVuY3Rpb24oKXt2YXIgZj13aW5kb3cubG9jYXRpb24uaHJlZi5tYXRjaCgvIy4qZ29vZ3RyYW5zKC4qKS8pO3JldHVybiBmJiZmWzFdfSxjb29raWU6ZnVuY3Rpb24oKXt2YXIgZj1kb2N1bWVudC5jb29raWUubWF0Y2goLyhefDsgKWdvb2d0cmFucz0oLio/KSg7fCQpLyk7cmV0dXJuIGYmJmZbMl19fSxkO2ZvcihkIGluIGMpaWYoY1tkXSE9PU9iamVjdC5wcm90b3R5cGVbZF0pe3ZhciBlPWNbZF0oKTtpZihlJiZiKGUsYSkpcmV0dXJuIGR9cmV0dXJuIiJ9LApRdj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz13aW5kb3cubG9jYXRpb24uaG9zdG5hbWUuc3BsaXQoIi4iKTtjLmxlbmd0aD4yOyljLnNoaWZ0KCk7Yz0iO2RvbWFpbj0iK2Muam9pbigiLiIpO2IhPW51bGw/YT1hKyI9IitiOihiPW5ldyBEYXRlLGIuc2V0VGltZShiLmdldFRpbWUoKS0xKSxhPWErIj1ub25lO2V4cGlyZXM9IitiLnRvR01UU3RyaW5nKCkpO2ErPSI7cGF0aD0vIjtkb2N1bWVudC5jb29raWU9YTt0cnl7ZG9jdW1lbnQuY29va2llPWErY31jYXRjaChkKXt9fSxSdj1mdW5jdGlvbihhLGIpe3ZhciBjPW51bGw7YiE9PXZvaWQgMCYmKGM9YSE9PXZvaWQgMD8iLyIrYSsiLyIrYjoiLyIrYik7UXYoImdvb2d0cmFucyIsYyl9O18ubT1Qdi5wcm90b3R5cGU7Cl8ubS5KaD1mdW5jdGlvbihhKXt0aGlzLmo9cXIob3EpO2E9YXx8e307dmFyIGI9YS50YXJnZXRMYW5ndWFnZXN8fFtdO3RoaXMuTD17c2w6V20oYS5zb3VyY2VMYW5ndWFnZXN8fFtdKSx0bDpXbShiKX07dGhpcy5EPXt9O3RoaXMuUj17fTthPSF0aGlzLmcuWGQubGVuZ3RoO2I9aXIodGhpcy5nLlhkKTt2YXIgYz1pcih0aGlzLmcuY2YpO3RoaXMuRFtvcV09IiI7dGhpcy5SW29xXT0iIjtmb3IodmFyIGQgaW4gdGhpcy5MLnRsKXRoaXMuTC50bFtkXT09PU9iamVjdC5wcm90b3R5cGVbZF18fCEoYXx8ZCBpbiBiKXx8ZCBpbiBjfHwodGhpcy5SW2RdPXRoaXMuTC50bFtkXSxkPT10aGlzLmcuZGQmJiF0aGlzLmcuUGIpfHwodGhpcy5EW2RdPXRoaXMuTC50bFtkXSk7dGhpcy5EW29xXXx8ZGVsZXRlIHRoaXMuRFtvcV07dGhpcy5SW29xXXx8ZGVsZXRlIHRoaXMuUltvcV07dGhpcy5yYT1KbCh0aGlzLkwuc2wpfTtfLm0uRWg9ZnVuY3Rpb24oYSl7YSYmKHRoaXMubz1xcihhKSl9OwpfLm0uTWg9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5LO2lmKHRoaXMuTCl7dGhpcy5vPXRoaXMub3x8dGhpcy5nLkZkO3RoaXMuaj10aGlzLmcuRWN8fHRoaXMuajt2YXIgYT10aGlzLmcuaGZ8fHRoaXMuZy5FZCYmdGhpcy5vIT10aGlzLmomJiEodGhpcy5vIGluIHNxKSYmdGhpcy5DLm9zIT0iMSImJnRoaXMuQ1sibyIrdGhpcy5vXSE9IjEiO3RoaXMubz09InpoLVRXIiYmKHRoaXMubz0iemgtQ04iKTt0aGlzLnJhW3RoaXMub118fChhPSExLHRoaXMubz0iYXV0byIpO2lmKCF0aGlzLkRbdGhpcy5qXSlpZihhPSExLHRoaXMuRC5lbil0aGlzLmo9ImVuIjtlbHNlIGZvcih2YXIgYiBpbiB0aGlzLkQpaWYodGhpcy5EW2JdIT09T2JqZWN0LnByb3RvdHlwZVtiXSl7dGhpcy5qPWI7YnJlYWt9aWYodGhpcy5sKXtiPXRoaXMuRDt2YXIgYz17IiI6Ui5CZ30sZDtmb3IoZCBpbiBiKWJbZF0hPT1PYmplY3QucHJvdG90eXBlW2RdJiYoY1tkXT1iW2RdKTt0aGlzLmwudWUoYyx0aGlzLlIpO3RoaXMubC5uYSgiIil9IXFxJiYKYT90aGlzLmcuRWM/bXIodGhpcy5PLHRoaXMuSS5kZWxheSgoMCxfLnkpKHRoaXMub2QsdGhpcywhMCwhMCkpKS5jYWxsKCk6KHRoaXMuRz0hMCxtcih0aGlzLk8sdGhpcy5JLmRlbGF5KCgwLF8ueSkodGhpcy5vZCx0aGlzKSkpLmNhbGwoKSxRbSgidGVfYXAiLHtzbDp0aGlzLm99KSk6KHRoaXMuQiYmdGhpcy5CLnBhKCEwKSx0aGlzLmwmJnRoaXMubC5wYSghMCkpO3dpbmRvdy5nb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZVNlcnZpY2UmJnRoaXMuUmIoITEpO3RoaXMuTy5maW5pc2goKX19OwpfLm0uT2g9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmgsYj10aGlzLnJhO2EubyYmYS5vLm5iKGIpO2EuVD1iO3RoaXMuaC51ZSh0aGlzLkQsdGhpcy5SKTt0aGlzLmguTmEodGhpcy5vKTt0aGlzLmgubmEodGhpcy5qKTt0aGlzLkEuTih0aGlzLmgsImNsa19jb25maXJtIix0aGlzLnloKTt0aGlzLkEuTih0aGlzLmgsImNsa19jYW5jZWwiLHRoaXMueGgpO3RoaXMuQS5OKHRoaXMuaCwiY2xrX3Jlc3RvcmUiLHRoaXMuUmQpO3RoaXMuQS5OKHRoaXMuaCwiY2xrX2Nsb3NlIix0aGlzLlFjKTt0aGlzLkEuTih0aGlzLmgsImNsa19ub19hcCIsdGhpcy56aCk7dGhpcy5BLk4odGhpcy5oLCJjbGtfbm9fYXBfc2l0ZSIsdGhpcy5BaCk7dGhpcy5BLk4odGhpcy5oLCJjaGdfc3JjX2xhbmciLHRoaXMubWYpO3RoaXMuQS5OKHRoaXMuaCwiY2hnX3RndF9sYW5nIix0aGlzLm1mKTt0aGlzLmwmJnRoaXMubC5wYSghMCl9OwpfLm0ua2k9ZnVuY3Rpb24oKXt0aGlzLkEuTih0aGlzLmgsImxvYWQiLHRoaXMuSS5yZWdpc3RlcigpKTt0aGlzLmgua2EoKTt0aGlzLkkuZmluaXNoKCl9O18ubS5NPWZ1bmN0aW9uKCl7dGhpcy5GLnJlc3RvcmUoKTtfLnUucHJvdG90eXBlLk0uY2FsbCh0aGlzKTt0aGlzLkYuZGlzcG9zZSgpO3RoaXMuQS5kaXNwb3NlKCk7dGhpcy5BPW51bGw7dGhpcy5oJiZ0aGlzLmguZGlzcG9zZSgpO3RoaXMuaD1udWxsO3RoaXMuQiYmdGhpcy5CLmRpc3Bvc2UoKTt0aGlzLkI9bnVsbDt0aGlzLmwmJnRoaXMubC5kaXNwb3NlKCk7dGhpcy5UPXRoaXMubD1udWxsfTtfLm0ueWg9ZnVuY3Rpb24oKXshdGhpcy5oLmlzVmlzaWJsZSgpfHwhdGhpcy5nLlBiJiZ4cih0aGlzLm8sdGhpcy5oLm9hKCkpfHwodGhpcy5HJiZRbSgidGVfYXB0Iix7c2w6dGhpcy5vfSksU3YodGhpcywhMSksdGhpcy5sJiZ0aGlzLmwubmEodGhpcy5oLm9hKCkpKX07Cl8ubS54aD1mdW5jdGlvbigpe3RoaXMuaC5pc1Zpc2libGUoKSYmKFR2KHRoaXMpLE12KHRoaXMuaCwwKSx0aGlzLmwmJnRoaXMubC5uYSgiIikpfTtfLm0uUmQ9ZnVuY3Rpb24oKXt0aGlzLmguaXNWaXNpYmxlKCkmJihUdih0aGlzKSxNdih0aGlzLmgsMCkpO3RoaXMubCYmdGhpcy5sLm5hKCIiKX07Xy5tLlFjPWZ1bmN0aW9uKCl7dGhpcy5oLmlzVmlzaWJsZSgpJiYodGhpcy5HJiYodGhpcy5HPSExLFFtKCJ0ZV9hcGMiLHtzbDp0aGlzLm99KSksVHYodGhpcyksdGhpcy5oLnBhKCExKSx0aGlzLmwmJnRoaXMubC5uYSgiIiksdGhpcy5CJiZ0aGlzLkIucGEoITApKX07Xy5tLnpoPWZ1bmN0aW9uKCl7dGhpcy5oLmlzVmlzaWJsZSgpJiYodGhpcy5DWyJvIit0aGlzLm9dPSIxIixRbSgidGVfYXByIix7c2w6dGhpcy5vfSksdGhpcy5HPSExLHRoaXMuUWMoKSl9OwpfLm0uQWg9ZnVuY3Rpb24oKXtpZih0aGlzLmguaXNWaXNpYmxlKCkpe3RoaXMuRz0hMTt0aGlzLkMub3M9IjEiO3ZhciBhPW51bGw7aWYodGhpcy5DKXthPVtdO2Zvcih2YXIgYiBpbiB0aGlzLkMpdGhpcy5DW2JdIT09T2JqZWN0LnByb3RvdHlwZVtiXSYmYS5wdXNoKGIrIj0iK3RoaXMuQ1tiXSk7YT1hLmpvaW4oInwiKX1RdigiZ29vZ3RyYW5zb3B0IixhKTt0aGlzLlFjKCl9fTtfLm0ubWY9ZnVuY3Rpb24oKXt0aGlzLmguaXNWaXNpYmxlKCkmJighdGhpcy5nLlBiJiZ4cih0aGlzLm8sdGhpcy5oLm9hKCkpP3RoaXMuUmQoKToodGhpcy5vPXRoaXMuaC5KYSgpfHx0aGlzLm8sdGhpcy5qPXRoaXMuaC5vYSgpLHRoaXMuaC5hYz09MiYmKHRoaXMubCYmdGhpcy5sLm5hKHRoaXMuaC5vYSgpKSxTdih0aGlzKSkpKX07Xy5tLm9kPWZ1bmN0aW9uKGEsYil7dGhpcy5oLmlzVmlzaWJsZSgpfHwodGhpcy5CJiZ0aGlzLkIucGEoITEpLGE/U3YodGhpcyxiKTpNdih0aGlzLmgsMCwhMCx0aGlzLkcpKX07Cl8ubS5SaT1mdW5jdGlvbihhLGIpe21yKHRoaXMuTyx0aGlzLkkuZGVsYXkoKDAsXy55KSh0aGlzLm9kLHRoaXMsYSxiKSkpLmNhbGwoKX07Xy5tLkdoPWZ1bmN0aW9uKCl7dGhpcy5vZCh0aGlzLmguYWM9PTIpfTtfLm0uSWg9ZnVuY3Rpb24oKXt0aGlzLmwub2EoKT8hdGhpcy5nLlBiJiZ4cih0aGlzLm8sdGhpcy5oLm9hKCkpP3RoaXMuUmQoKToodGhpcy5qPXRoaXMubC5vYSgpLHRoaXMuaC5uYSh0aGlzLmopLFN2KHRoaXMpKTp0aGlzLmwubmEodGhpcy5qKX07CnZhciBTdj1mdW5jdGlvbihhLGIpe2lmKHdpbmRvdy5nb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZVNlcnZpY2UpdHJ5e3dpbmRvdy5nb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZVNlcnZpY2UuZ2V0SW5zdGFuY2UoKS5yZXN0b3JlKCl9Y2F0Y2goYyl7fVJ2KGEubyxhLmopO2EuRz0hMTshYiYmYS5vIGluIHNxJiZRbSgidGVfYXBlIix7c2w6YS5vfSk7TnYoYS5oLDApO012KGEuaCwxLCEwKTthLkYuWWYoISFiKTt3aW5kb3cuc2V0VGltZW91dCgoMCxfLnkpKGEuRi5xZCxhLkYsYS5nLlBiPyJhdXRvIjphLm8sYS5qLCgwLF8ueSkoYS5mYixhKSx2b2lkIDAsdm9pZCAwKSwwKX07ClB2LnByb3RvdHlwZS5mYj1mdW5jdGlvbihhLGIsYyl7dHlwZW9mIHRoaXMuZ2I9PSJmdW5jdGlvbiImJnRoaXMuZ2IoKTt0aGlzLmguaXNWaXNpYmxlKCkmJnRoaXMuaC5hYz09MSYmKGM/KFR2KHRoaXMpLE12KHRoaXMuaCwtMSwhMCksYz09Mj9Mdih0aGlzLmgsUi53Zyk6THYodGhpcy5oLFIuQ2UpKTooTnYodGhpcy5oLGEpLGImJih0aGlzLmwmJnRoaXMubC5uYSh0aGlzLmopLHRoaXMuaC5OYSh0aGlzLm8pLE12KHRoaXMuaCwyKSkpKX07dmFyIFR2PWZ1bmN0aW9uKGEpe1J2KCk7d2luZG93LnNldFRpbWVvdXQoKDAsXy55KShhLkYucmVzdG9yZSxhLkYsbnVsbCksMCl9O1B2LnByb3RvdHlwZS5SYj1mdW5jdGlvbihhKXthfHx0aGlzLlFjKCk7dGhpcy5sJiZ0aGlzLmwuUmIoYSk7dGhpcy5CJiZ0aGlzLkIucGEoYSl9O3ZhciB6bj1mdW5jdGlvbihhKXtpZihhJiYoYT1TdHJpbmcoYSksYT1hLnNwbGl0KCIuIiksYS5sZW5ndGgpKXtmb3IodmFyIGI9d2luZG93LGM9MDtjPGEubGVuZ3RoOysrYyl7dmFyIGQ9YVtjXTtpZighKGQmJmQgaW4gYikpcmV0dXJuO2I9YltkXX1yZXR1cm4gYn19O3ZhciBVdj1udWxsLFZ2PWZ1bmN0aW9uKGEpe2lmKCFVdil7dmFyIGIsYyxkLGU7YSYmKCJrZXkiaW4gYSYmKGI9YS5rZXkpLCJzZXJ2ZXJQYXJhbXMiaW4gYSYmKGM9YS5zZXJ2ZXJQYXJhbXMpLCJ0aW1lSW5mbyJpbiBhJiYoZD1hLnRpbWVJbmZvKSwicmVtb3RlQXBpUHJveHlIYW5kbGVycyJpbiBhJiYoZT1hLnJlbW90ZUFwaVByb3h5SGFuZGxlcnMpLChhPXlyKCkpJiYoYz1hKSk7YT0wO2lmKHRxPT0idGVfbGliInx8Xy5XYylhPTM7VXY9bmV3IHd2KHZvaWQgMCxuZXcgWnMoe2FwaUtleTpiLGhjOmEsdmU6ITAsdHJhY2tWaXNpYmlsaXR5OmM9PSJ0dmlzIn0pLHZvaWQgMCx2b2lkIDAsYixjLGQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsZSk7VXYuY29uc3RydWN0b3I9ZnVuY3Rpb24oKXt9O1V2LmlzQXZhaWxhYmxlPVV2LlNhO1V2LmdldFN1cHBvcnRlZExhbmd1YWdlcz1Vdi56YztVdi5nZXRQYWdlTGFuZ3VhZ2U9VXYuUGM7VXYuc2V0Q2xpY2tUaHJvdWdoPVV2LllmO1V2LnRyYW5zbGF0ZVBhZ2U9ClV2LnFkO1V2LnJlc3RvcmU9VXYucmVzdG9yZTtVdi5pc1RyYW5zbGF0aW5nPVV2LnBnO1V2LnNldENoZWNrVmlzaWJpbGl0eT1Vdi5QaX1yZXR1cm4gVXZ9O1Z2LmdldEluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIFV2fTt2YXIgV3Y9bnVsbCxYdj1mdW5jdGlvbihhLGIpe1d2fHwoV3Y9bmV3IFB2KGEsYiksV3YuY29uc3RydWN0b3I9ZnVuY3Rpb24oKXt9KTtyZXR1cm4gV3Z9O1h2LmdldEluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIFd2fTsKdmFyIFl2PWZ1bmN0aW9uKCl7dmFyIGE9em4oImdvb2dsZS50cmFuc2xhdGUubSIpO2F8fChmcygpLF8ucmMoImdvb2dsZS50cmFuc2xhdGUubSIsUSksYT1RKTtpZihhKWZvcih2YXIgYiBpbiBSKWlmKFJbYl0hPT1PYmplY3QucHJvdG90eXBlW1JbYl1dJiZSW2JdKXt2YXIgYz1SW2JdKCk7UltiXT1hW2NdP2FbY106Z3N9Xy5vaShfLlppKHBxLDEpKSYmKGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSxiLnRleHRDb250ZW50PSJcbiAgLnRyYW5zbGF0ZWQtbHRye1xuICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG4gIC50cmFuc2xhdGVkLXJ0bHtcbiAgICAgIGRpcmVjdGlvbjogcnRsO1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIH1cbiAgIixhPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sYXx8KGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaGVhZCIpLGM9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LApjLmluc2VydEJlZm9yZShhLGMuZmlyc3RDaGlsZCkpLGEuYXBwZW5kQ2hpbGQoYikpO0JuPT0xPyhfLnJjKCJnb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZVNlcnZpY2UiLFZ2KSxRbSgidGVfbGkiKSk6KF8ucmMoImdvb2dsZS50cmFuc2xhdGUuVHJhbnNsYXRlRWxlbWVudCIsWHYpLFB2LnByb3RvdHlwZS5kaXNwb3NlPVB2LnByb3RvdHlwZS5kaXNwb3NlLFB2LnByb3RvdHlwZS5zaG93QmFubmVyPVB2LnByb3RvdHlwZS5SaSxQdi5wcm90b3R5cGUuc2V0RW5hYmxlZD1Qdi5wcm90b3R5cGUuUmIsXy5yYygiZ29vZ2xlLnRyYW5zbGF0ZS5UcmFuc2xhdGVFbGVtZW50LkZsb2F0UG9zaXRpb24iLEp2KSxKdi5UT1BfTEVGVD0xLEp2LlRPUF9SSUdIVD0yLEp2LkJPVFRPTV9SSUdIVD0zLEp2LkJPVFRPTV9MRUZUPTQsXy5yYygiZ29vZ2xlLnRyYW5zbGF0ZS5UcmFuc2xhdGVFbGVtZW50LklubGluZUxheW91dCIsSHYpLEh2LlZFUlRJQ0FMPTAsSHYuSE9SSVpPTlRBTD0xLEh2LlNJTVBMRT0KMik7Q24oKX07CmlmKHdpbmRvdy5nb29nbGUmJndpbmRvdy5nb29nbGUudHJhbnNsYXRlJiZ3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZS5fY29uc3QpWXYoKTtlbHNlIGlmKHdpbmRvdy5nb29nbGUmJndpbmRvdy5nb29nbGUudHJhbnNsYXRlJiZ3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZS5fcHJvdG9Db25maWcpe3JxPW5ldyBEYXRlO3ZhciBadj1uZXcgbHEod2luZG93Lmdvb2dsZS50cmFuc2xhdGUuX3Byb3RvQ29uZmlnKTtPbj1fLk4oWnYsMjIpfHwiIjttcT1fLk4oWnYsNil8fCJwcm9kIjtucT1fLk4oWnYsMTIpfHwiIjtvcT1fLk4oWnYsMSl8fCJlbiI7QW49Xy5OKFp2LDIpfHwiIjt2YXIgJHY7KCR2PV8uYmooWnYsanEsMykpJiYocHE9JHYpO18uTihadiw4KTtxcT1fLk0oWnYsMTcpO3NxPXt9O3ZhciBhdzthdz1zbShadiwxOCxfLmFqKCkpO2Zvcih2YXIgYnc9MDtidzxhdy5sZW5ndGg7YncrKylzcVthd1tid11dPSEwO0JuPV8uTihadiw1KT09ImxpYiI/MTowO3RxPShfLk4oWnYsNCl8fCJ0ZSIpKwooQm49PTE/Il9saWIiOiIiKTtmcT1fLk4oWnYsOSl8fCIiO3ZhciBjdzsoY3c9Xy5OKFp2LDEwKSl8fChjdz1fLk4oWnYsMTEpKTt1cT1jd3x8IiI7dnE9Imh0dHBzOi8vIjt2YXIgZHc7ZHc9Xy5OKFp2LDEzKTt2YXIgZXc9dnErKGR3fHwiIikrIi90cmFuc2xhdGVfc3RhdGljLyI7d3E9ZXcrImltZy90ZV9iay5naWYiO3hxPWV3KyJpbWcvdGVfY3RybDMuZ2lmIjt6cT1ldysiaW1nL2xvYWRpbmcuZ2lmIjtBcT1fLk4oWnYsMTQpfHwiIjt5cT1fLk4oWnYsMTUpfHwiIjtCcT1fLk4oWnYsMTYpfHwiIjtDcT0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbWFnZXMvY2xlYXJkb3QuZ2lmIjtEcT0iaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL2dvb2dsZWxvZ28vMXgvZ29vZ2xlbG9nb19jb2xvcl82OHgyOGRwLnBuZyI7RXE9Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9wcm9kdWN0LzF4L3RyYW5zbGF0ZV8yNGRwLnBuZyI7RnE9Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9nb29nbGVsb2dvLzF4L2dvb2dsZWxvZ29fY29sb3JfNDJ4MTZkcC5wbmciOwpHcT0iaHR0cHM6Ly90cmFuc2xhdGUuZ29vZ2xlLmNvbSI7S3EoKTtZdigpfTsKXy5tYSgpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KfSkuY2FsbCh0aGlzLHRoaXMuZGVmYXVsdF90cik7Ci8vIEdvb2dsZSBJbmMuCg=="}},"time_used":90,"timings":{"blocked":0,"dns":3,"connect":16,"send":0,"wait":16,"receive":26,"ssl":29},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/ic-industry-leading-security.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"lazy-imageset","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.378Z","timestamp":1785130090378,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/ic-industry-leading-security.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:19 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=TvIRzw5mRHqH9ljlKe0AkOQarab1txHQq13NBS8H%2Fy%2FRSTNwy62EGNFeEaGKmc7hpcji7aBT9iVsP8oj9X6uDs2amD9CvIveHNv7zieB2bqqCpJhZtFKgszzzo76bKqBgxXDytqfcQ%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d38de94120a-OSL\r\ncontent-length: 25224\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":25224,"size_decoded":25988,"mime_type":"image/png","magic":"PNG image data, 220 x 220, 8-bit/color RGBA, non-interlaced","md5":"26b0ffefad012396ebf7f62852b8dfad","sha1":"04aa18ebe81500db997c8905e85a99d3045808bd","sha256":"15cf2a56f47b5ba917610a4122182cd5159f8292a12ce8fac769837b810190fa","sha512":"4cf17de9a523ddc72704d440a0e5dc6089bc9ccfca7d58dbdf050323a5a7602ce0ca5f4df6b2c06352a7936708e0604ff4d828feea5e30f8a4aad10c785df45b","ssdeep":"768:8DfSwybWMg+mauO9RspkBhK3E4qe6JiwHnrN:8jSbtFwO9EkBg3E9eR+h","tlshash":"93b2f1dc2b20ebb2e805f8c2810d98f757fa35777e646304a284877646f169ed4f059c","first_seen":"2026-07-27T04:11:05.739185Z","last_seen":"2026-07-27T05:30:59.829464Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/images/branding/product/2x/translate_24dp.png","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:11.856Z","timestamp":1785130091856,"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 /images/branding/product/2x/translate_24dp.png HTTP/1.1\r\nHost: www.gstatic.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://www.gstatic.com/_/translate_http/_/ss/k=translate_http.tr.B7Dih9Jyjnw.L.F4.O/am=BIAABw/d=0/rs=AN8SPfpC04vrrzQXgs_TCM5EtruwfPzNtQ/m=el_main_css\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6, 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\naccept-ranges: bytes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 1842\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 07:17:13 GMT\r\nexpires: Sat, 24 Jul 2027 07:17:13 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 14 Oct 2021 09:08:00 GMT\r\ncontent-type: image/png\r\nvary: Origin\r\nage: 252659\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":1842,"size_decoded":2516,"mime_type":"image/png","magic":"PNG image data, 48 x 48, 8-bit/color RGBA, non-interlaced","md5":"c69c796362406f9e11c7f4bf5bb628da","sha1":"e489ce95ab56208090868882113d7416abf46775","sha256":"4dac0026fbfa2615dce30c0af12830863fe885f84387a0147b9e338f548d5d82","sha512":"d3ad560ed0fd29be7d2cc434694f09e5a6fbea8b29c0611aecb54a1b73b4d722c53f42a19dae9e3d5d358444e50fb8fffbc39d67ce751bdbc8c861f6f95d3162","ssdeep":"","tlshash":"4e31f9fd129220437101ade72165eef798347c15f412da60ce65ba389c9fe20ed9a619","first_seen":"2023-04-05T07:39:29Z","last_seen":"2026-08-02T16:42:24.52291Z","times_seen":73651,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAG+UlEQVR4Ae2YVXfbWBCAtc/L8H+WocztYpmflrfccGKIU2ZmZuY2jLbMDjNvw693dkbOKIrWcpR18JzNOV987dL3SXMlpdJE+fr/CwDeWHqgY+6inb2e+Tv7hJ55OwaY288cJiPMbA3r97a+hUijjbpYvLdz/oJdfYKJNWBhWtsMRBptBt7s7HVr5WMNmGnvfIRIo426IEkjeUKVNxkwy4F/319F7yLSaKIuWHTkApCkujmINJqoCxYd/vgwOnnC3vkYkUYTdWFe3nwAj9G4jBBLG8tHHx9iJjI7qXoeIo0W6kIvbCTPAXMz+kDLHEeY2VrS+2Dl/g5wuspFVVWDaG5pFa2tYVpaWlSam5sVmpqaItLY2EjQWq6urp+GSIy6GI48oZdntPLMtYceEQxVoQAJ//cAprKyZgYiERIvjKWNR2eoo88kn66C3DxZVFXXk3DMAfX1jU5EIiRezDUhvvhAnzj5ohvkik5oauuAZsRd2Qmn8LPF+yLLz0KW7WmHzCynkOWAqG9ojDWAkQiJF0biTPL1HtHY2gGvOyJDv7btYk/EAOIqjlFhkUcEAiGSGvkAkjSC5F+/HpCtbOiEx65OuF3QBaGa8Gf0uvJQb0T5mfaBMXJ7AqK0tIzEWJ4xko8hAOf8p/196pFv/7sDjj3r1l42aQ177vfA0v2R5Tlgaf8YuVx+EQiGRHl5OQmOYADJRODk824+8sqs66/32rk3OvrM1QfhMfL7g3QWKIJEhj0+DQ0NhERIvDAKoA1L8k14FubtHCzPmJGfgSSdwjHKpTHyi1CoVJSVqRGxB7CYHhKngNxAJ+jFjTb0g+KuiAFLduMYZdIY+USwP4BYtc0Ka5MywIR8bAEkbSbgibNLL8+oY+Tz0RiFA1Zus8DK7VYgsRELYEntCM3dyc84YWy3elT2PRzYK1dyuv4lP92GWPtg3tZnsPgPCyzbhNJbrQi+bmOssDohA9Yk7kAyGOUzjXzkABbWc0KziekmxvIq6WGOPBn4fSnXelieUeSJmSk18OPvFli6MRywYmuaGrACA1Zut6GwQyMfY8AP+wYuo214GT3ytFvMyhgsn3KjR7S2h39PTVMXzM/oZfEwNgYjkCsP3DhGbmWMtJu5oqJCIf34BSXizrMs/fgYB5CQEQlXB9/IKuhG5uyEm3gj81Z2qp/T70m40mMozwGJeDXKyXUJ2e0XwWBoUIDb6xOr4+ywJj4dyvC9gfzwAjiisYVEI0NnwHare0h5YvGudojLOAVLN1hg56mLwAHELnxPG3rniYtQWVlJouYCeByiQeN0/Fk3uMo7lU3d3NYJHjwD5zO7YemBXmFGnphm7YVTNwrFsg1WWLbZCpm5+Yr8q9wCsQr3AJ2BIqcsKKCqqoqFYwuYEYXp9gHMyBOJJyvBcfginoU0+CVtN5TIsvjVskfZzEcu3wIaJwrgiPr6+ugBM4xFTYkzRuIsz/y0sx1evioWG6wHYfmWNFiXkA4rUH6D4wCU4khxgHGELiAWaWJaP2bkp/Zz5b5bPH2ZJ5Zv4cupDYqdsjJOHECvHFBdXc0RxgHGwsbieqLLMzRGVZC06wzeE9JwL6TBcryp7Tp5CTiA0QbU1NREDjCWNCHN2MJoxA3kEUsvzLE0wPe/psKqzTa4cOeRWBfvgBUYsePkRYowDKitrSUkQuKFeWljccaMPDElrRd+2HAY7j58pTxiv8wpEGtxLyzfhhEnLsCwAowFzYsTU/vRiBvKE38dCEB2jkt9xM7MKxTrEhzKOO04rpwJbQARQ4DNmKk6hpL/hgJw/QNejV71P2IHwndljChQIujZyH7sHHAAYRgww9brMpY0L05MsfaKSOIMyzOX78mioFAe9Iid1R9x/ModOgP6MSIkQuLFbEv77FikWVxLJPkpOigmQXk2Un7g1z/cMdEDmKnx1fOmpr72TbV0Ci1ThuCbtH/zNTIltRO0fKPj65QOhR8czco+cMm0D8q0AfwaPWC02JL4NO6zuTfhUx2fzLmh8umcm7A5+Qnk5eMZcA8+A8S4BsTZn3/0xYI7oOXz+YPZnvoCcvNcorjEK/wBZRMz4x9ArP3jRcuXi+7DF3oW3od420vIL5BFEcp7PPyzQdQAjiAkgr6NKkmOrA0UoMLy9hco7xTFxR4cHR/9lyOOTwivQqVGAczYBjgcDz7QihNx1uc482F5WfYJnz+ARz8YLYAZ+wBizW8vWlg+3vYcZ75EFBW5FXmvz49HP3oArzmgtLxCRiSCvo06ybacP5Qjj/I5ucWiEG9aTqdHkff7owfwe23Aq+yS+YhE0LdRJw7HKM7yGDKz8kVOTpEoKCgRThddNt0KHg/GeL3C5/NxEEFrbSD9Xu+jpzkLEInhxWRl8gf8A1/5iBrINb9BAAAAAElFTkSuQmCC"}},"time_used":17,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":17,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate-pa.googleapis.com/v1/supportedLanguages?client=te\u0026display_language=no\u0026key=AIzaSyBWDj0QJvVIx8XOhRegXX5_SrRWxhT5Hs4\u0026callback=callback","fqdn":"translate-pa.googleapis.com","domain":"translate-pa.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"172.217.118.4","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"moz-nullprincipal:{29dfc75d-854e-4e5d-ac76-9323a5820eef}?https://dreamspinfluence.com","date":"2026-07-27T05:28:11.886Z","timestamp":1785130091886,"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":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:20 GMT","end":"Mon, 21 Sep 2026 08:39:19 GMT"},"fingerprint":{"sha1":"2A:E6:04:0E:76:A4:02:27:67:28:31:4D:E5:61:19:26:CA:0E:32:84","sha256":"D4:ED:C4:F8:DB:31:8A:2D:35:15:01:14:C0:49:CB:47:FF:5B:CC:17:14:82:63:9B:A8:6F:61:4D:AA:E5:96:94"}}},"request":{"raw":"GET /v1/supportedLanguages?client=te\u0026display_language=no\u0026key=AIzaSyBWDj0QJvVIx8XOhRegXX5_SrRWxhT5Hs4\u0026callback=callback HTTP/1.1\r\nHost: translate-pa.googleapis.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://dreamspinfluence.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\ncross-origin-resource-policy: cross-origin\r\np3p: CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Origin, X-Origin, Referer\r\ncontent-encoding: gzip\r\ndate: Mon, 27 Jul 2026 05:28:11 GMT\r\nserver: ESF\r\ncontent-length: 2635\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nset-cookie: NID=533=K-EFpIOe5TEJ1s7yQb6o5iIEADLhvKSf3Cw-rPMlqwK4Za9bLnkC-83uhi0wuiPwiEN8pfsWL2znR31jhFbtllEolLsm9sM3XmpE4hJvyg8y5bXVjN65SqNnTK_2g-VmneSs5cHafQBS_RvNlj77sLCfyL-0V8xWGBIx__fsUa_ARbzmHz6kYXVLXF1NhxMWWr5tFkbs-1Fb-YEggUH5JXbfYdQCMubogA; expires=Tue, 26-Jan-2027 05:28:11 GMT; path=/; domain=.translate-pa.googleapis.com; HttpOnly\r\nexpires: Mon, 27 Jul 2026 05:28:11 GMT\r\ncache-control: private\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":null,"data":{"size":31482,"size_decoded":3504,"mime_type":"text/javascript; charset=UTF-8","magic":"Unicode text, UTF-8 text","md5":"91115de97ad1a90076e130223cdd90ad","sha1":"f3ad22e4fa892dfbff0d083bc0465fc3a2240317","sha256":"816e9881b1955d8beff3011d93481dad4c4de71bbd80b50ac267e7e45d4c3bad","sha512":"fbca69c3431240ab374b9ccfb06d76074059cdfe2f153743b292020271a8a3a36885189594a97fd74b43249b1f6359af62dfd0731e7b50e024f37faebdccf620","ssdeep":"192:Z6STcB9aqiD0+52DdKXrWryLxizUSTcB9aqdD0+52DdKXrWryLxG:JTcbaU3KXiMxidTcbah3KXiMxG","tlshash":"d0e267bae8b50d9b6a5e65b416fa2a03306041db4edc3c053b1c1e4c6fdec1e6c7169e","first_seen":"2025-09-02T05:12:23.753308Z","last_seen":"2026-08-02T16:42:24.403758Z","times_seen":8967,"resource_available":true,"data":"Ly8gQVBJIGNhbGxiYWNrCmNhbGxiYWNrKHsKICAic291cmNlTGFuZ3VhZ2VzIjogWwogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYXV0byIsCiAgICAgICJuYW1lIjogIkdqZW5ramVubiBzcHLDpWsiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWIiLAogICAgICAibmFtZSI6ICJhYmtoYXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWNlIiwKICAgICAgIm5hbWUiOiAiYWNlaG5lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhY2giLAogICAgICAibmFtZSI6ICJhY2hvbGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWEiLAogICAgICAibmFtZSI6ICJhZmFyIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFmIiwKICAgICAgIm5hbWUiOiAiYWZyaWthYW5zIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNxIiwKICAgICAgIm5hbWUiOiAiYWxiYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhbHoiLAogICAgICAibmFtZSI6ICJhbHVyIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFtIiwKICAgICAgIm5hbWUiOiAiYW1oYXJpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYXIiLAogICAgICAibmFtZSI6ICJhcmFiaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImh5IiwKICAgICAgIm5hbWUiOiAiYXJtZW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJheiIsCiAgICAgICJuYW1lIjogImFzZXJiYWpkc2phbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFzIiwKICAgICAgIm5hbWUiOiAiYXNzYW1lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhdiIsCiAgICAgICJuYW1lIjogImF2YXJpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYXdhIiwKICAgICAgIm5hbWUiOiAiYXdhZGhpIgogICAgfSwKICAgIHsKICAgICAibGFuZ3VhZ2UiOiAiYXkiLAogICAgICAibmFtZSI6ICJheW1hcmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmFuIiwKICAgICAgIm5hbWUiOiAiYmFsaW5lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiYWwiLAogICAgICAibmFtZSI6ICJiYWx1dHNqaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJibSIsCiAgICAgICJuYW1lIjogImJhbWJhcmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmNpIiwKICAgICAgIm5hbWUiOiAiYmFvdWzDqSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiYSIsCiAgICAgICJuYW1lIjogImJhc2praXJzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJldSIsCiAgICAgICJuYW1lIjogImJhc2tpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYnR4IiwKICAgICAgIm5hbWUiOiAiYmF0YWsga2FybyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJidHMiLAogICAgICAibmFtZSI6ICJiYXRhayBzaW1hbHVuZ3VuIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJiYyIsCiAgICAgICJuYW1lIjogImJhdGFrIHRvYmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmVtIiwKICAgICAgIm5hbWUiOiAiYmVtYmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYm4iLAogICAgICAibmFtZSI6ICJiZW5nYWxpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJldyIsCiAgICAgICJuYW1lIjogImJldGF3aSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiaG8iLAogICAgICAibmFtZSI6ICJiaG9qcHVyaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiaWsiLAogICAgICAibmFtZSI6ICJiaWtvbCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJicyIsCiAgICAgICJuYW1lIjogImJvc25pc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYnIiLAogICAgICAibmFtZSI6ICJicmV0b25zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiZyIsCiAgICAgICJuYW1lIjogImJ1bGdhcnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJ1YSIsCiAgICAgICJuYW1lIjogImJ1cmphdGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJteSIsCiAgICAgICJuYW1lIjogImJ1cm1lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjZWIiLAogICAgICAibmFtZSI6ICJjZWJ1YW5vIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNoIiwKICAgICAgIm5hbWUiOiAiY2hhbW9ycm8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibnkiLAogICAgICAibmFtZSI6ICJjaGljaGV3YSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkYSIsCiAgICAgICJuYW1lIjogImRhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZhLUFGIiwKICAgICAgIm5hbWUiOiAiZGFyaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkdiIsCiAgICAgICJuYW1lIjogImRoaXZlaGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZGluIiwKICAgICAgIm5hbWUiOiAiZGlua2EiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZG9pIiwKICAgICAgIm5hbWUiOiAiZG9ncmkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZG92IiwKICAgICAgIm5hbWUiOiAiZG9tYmUiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZHl1IiwKICAgICAgIm5hbWUiOiAiRHl1bGEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZHoiLAogICAgICAibmFtZSI6ICJkem9uZ2toYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJlbiIsCiAgICAgICJuYW1lIjogImVuZ2Vsc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZW8iLAogICAgICAibmFtZSI6ICJlc3BlcmFudG8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZXQiLAogICAgICAibmFtZSI6ICJlc3Rpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZWUiLAogICAgICAibmFtZSI6ICJld2UiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZmEiLAogICAgICAibmFtZSI6ICJmYXJzaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJmaiIsCiAgICAgICJuYW1lIjogImZpamlhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZpIiwKICAgICAgIm5hbWUiOiAiZmluc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZm9uIiwKICAgICAgIm5hbWUiOiAiZm9uIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZyIiwKICAgICAgIm5hbWUiOiAiZnJhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZyLUNBIiwKICAgICAgIm5hbWUiOiAiRnJhbnNrIChDYW5hZGEpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZ5IiwKICAgICAgIm5hbWUiOiAiZnJpc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJmdXIiLAogICAgICAibmFtZSI6ICJmcml1bGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJmZiIsCiAgICAgICJuYW1lIjogImZ1bGZ1bGRlIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZvIiwKICAgICAgIm5hbWUiOiAiZsOmcsO4eXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImdsIiwKICAgICAgIm5hbWUiOiAiZ2FsaXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia2EiLAogICAgICAibmFtZSI6ICJnZW9yZ2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJlbCIsCiAgICAgICJuYW1lIjogImdyZXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImduIiwKICAgICAgIm5hbWUiOiAiZ3VhcmFuw60iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZ3UiLAogICAgICAibmFtZSI6ICJndWphcmF0aSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJnYWEiLAogICAgICAibmFtZSI6ICJnYWEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY25oIiwKICAgICAgIm5hbWUiOiAiaGFraGEgY2hpbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJoYSIsCiAgICAgICJuYW1lIjogImhhdXNhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhhdyIsCiAgICAgICJuYW1lIjogImhhd2FpaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIml3IiwKICAgICAgIm5hbWUiOiAiaGVicmFpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaGlsIiwKICAgICAgIm5hbWUiOiAiaGlsaWdheW5vbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJoaSIsCiAgICAgICJuYW1lIjogImhpbmRpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhtbiIsCiAgICAgICJuYW1lIjogImhtb25nIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhyeCIsCiAgICAgICJuYW1lIjogImh1bnNyaWsiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmUiLAogICAgICAibmFtZSI6ICJodml0ZXJ1c3Npc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaWJhIiwKICAgICAgIm5hbWUiOiAiaWJhbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpZyIsCiAgICAgICJuYW1lIjogImlnYm8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaWxvIiwKICAgICAgIm5hbWUiOiAiaWxva2FubyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpZCIsCiAgICAgICJuYW1lIjogImluZG9uZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaXUtTGF0biIsCiAgICAgICJuYW1lIjogIkludWt0aXR1dCAobGF0aW5zaykiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaXUiLAogICAgICAibmFtZSI6ICJJbnVrdGl0dXQgKHN0YXZlbHNlKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJnYSIsCiAgICAgICJuYW1lIjogImlyc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaXMiLAogICAgICAibmFtZSI6ICJpc2xhbmRzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpdCIsCiAgICAgICJuYW1lIjogIml0YWxpZW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzYWgiLAogICAgICAibmFtZSI6ICJqYWt1dGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJqYW0iLAogICAgICAibmFtZSI6ICJqYW1haWNhbnNrIHBhdG9pcyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJqYSIsCiAgICAgICJuYW1lIjogImphcGFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAianciLAogICAgICAibmFtZSI6ICJqYXZhbmVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInlpIiwKICAgICAgIm5hbWUiOiAiamlkZGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrYWMiLAogICAgICAibmFtZSI6ICJqaW5ncG8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAieW8iLAogICAgICAibmFtZSI6ICJqb3J1YmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia2wiLAogICAgICAibmFtZSI6ICJrYWxhYWxsaXN1dCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrbiIsCiAgICAgICJuYW1lIjogImthbm5hZGEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAieXVlIiwKICAgICAgIm5hbWUiOiAia2FudG9uZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia3IiLAogICAgICAibmFtZSI6ICJrYW51cmkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicGFtIiwKICAgICAgIm5hbWUiOiAia2FwYW1wYW5nYW4iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia2siLAogICAgICAibmFtZSI6ICJrYXNha2hpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2EiLAogICAgICAibmFtZSI6ICJrYXRhbGFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia2VrIiwKICAgICAgIm5hbWUiOiAia2VrY2hpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImtoYSIsCiAgICAgICJuYW1lIjogImtoYXNpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImttIiwKICAgICAgIm5hbWUiOiAia2htZXIiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2dnIiwKICAgICAgIm5hbWUiOiAia2lnYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrZyIsCiAgICAgICJuYW1lIjogImtpa29uZ28iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiemgtQ04iLAogICAgICAibmFtZSI6ICJraW5lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJydyIsCiAgICAgICJuYW1lIjogImtpbnlhcndhbmRhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImt5IiwKICAgICAgIm5hbWUiOiAia2lyZ2lzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInJuIiwKICAgICAgIm5hbWUiOiAia2lydW5kaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrdHUiLAogICAgICAibmFtZSI6ICJraXR1YmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidHJwIiwKICAgICAgIm5hbWUiOiAia29rYm9yb2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia3YiLAogICAgICAibmFtZSI6ICJrb21pIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImdvbSIsCiAgICAgICJuYW1lIjogImtvbmthbmkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia28iLAogICAgICAibmFtZSI6ICJrb3JlYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjbyIsCiAgICAgICJuYW1lIjogImtvcnNpa2Fuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaHQiLAogICAgICAibmFtZSI6ICJrcmVvbCAoSGFpdGkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNycyIsCiAgICAgICJuYW1lIjogImtyZW9sIChTZXljaGVsbGVuZSkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY3JoIiwKICAgICAgIm5hbWUiOiAiS3JpbXRhdGFyaXNrIChreXJpbGxpc2spIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNyaC1MYXRuIiwKICAgICAgIm5hbWUiOiAiS3JpbXRhdGFyaXNrIChsYXRpbnNrKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrcmkiLAogICAgICAibmFtZSI6ICJrcmlvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhyIiwKICAgICAgIm5hbWUiOiAia3JvYXRpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia3UiLAogICAgICAibmFtZSI6ICJrdXJkaXNrIChrdXJtYW5qaSkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2tiIiwKICAgICAgIm5hbWUiOiAia3VyZGlzayAoc29yYW5pKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsbyIsCiAgICAgICJuYW1lIjogImxhb3Rpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibHRnIiwKICAgICAgIm5hbWUiOiAibGF0Z2FsaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxhIiwKICAgICAgIm5hbWUiOiAibGF0aW4iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibHYiLAogICAgICAibmFtZSI6ICJsYXR2aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxpaiIsCiAgICAgICJuYW1lIjogImxpZ3VyaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxpIiwKICAgICAgIm5hbWUiOiAibGltYnVyZ3NrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxuIiwKICAgICAgIm5hbWUiOiAibGluZ2FsYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsdCIsCiAgICAgICJuYW1lIjogImxpdGF1aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxtbyIsCiAgICAgICJuYW1lIjogImxvbWJhcmRpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibGciLAogICAgICAibmFtZSI6ICJsdWdhbmRhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImx1byIsCiAgICAgICJuYW1lIjogImx1byIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsYiIsCiAgICAgICJuYW1lIjogImx1eGVtYm91cmdzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtZyIsCiAgICAgICJuYW1lIjogIm1hZGFnYXNzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1hZCIsCiAgICAgICJuYW1lIjogIm1hZHVyZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibWFpIiwKICAgICAgIm5hbWUiOiAibWFpdGhpbGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibWFrIiwKICAgICAgIm5hbWUiOiAiTWFrYXNzYXIiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibWsiLAogICAgICAibmFtZSI6ICJtYWtlZG9uc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibWwiLAogICAgICAibmFtZSI6ICJtYWxheWFsYW0iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibXMiLAogICAgICAibmFtZSI6ICJtYWxheWlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtcy1BcmFiIiwKICAgICAgIm5hbWUiOiAibWFsYXlpc2sgKGphd2kpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm10IiwKICAgICAgIm5hbWUiOiAibWFsdGVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1hbSIsCiAgICAgICJuYW1lIjogIm1hbSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJndiIsCiAgICAgICJuYW1lIjogIm1hbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1pIiwKICAgICAgIm5hbWUiOiAibWFvcmkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibXIiLAogICAgICAibmFtZSI6ICJtYXJhdGhpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1oIiwKICAgICAgIm5hbWUiOiAibWFyc2hhbGxlc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtd3IiLAogICAgICAibmFtZSI6ICJtYXJ3YWRpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1mZSIsCiAgICAgICJuYW1lIjogIm1hdXJpdGlzayBrcmVvbCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtbmktTXRlaSIsCiAgICAgICJuYW1lIjogIm1laXRlaWxvbiAobWFuaXB1cmkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1pbiIsCiAgICAgICJuYW1lIjogIm1pbmFuZyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsdXMiLAogICAgICAibmFtZSI6ICJtaXpvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1uIiwKICAgICAgIm5hbWUiOiAibW9uZ29sc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibmhlIiwKICAgICAgIm5hbWUiOiAibmFodWF0bCAow7hzdGxpZ2UgSHVhc3RlY2EpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5kYy1aVyIsCiAgICAgICJuYW1lIjogIm5kYXUiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibnIiLAogICAgICAibmFtZSI6ICJuZGViZWxlIChzw7hyKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJubCIsCiAgICAgICJuYW1lIjogIm5lZGVybGFuZHNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5ldyIsCiAgICAgICJuYW1lIjogIk5lcGFsIGJoYXNhIChuZXdhcmkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5lIiwKICAgICAgIm5hbWUiOiAibmVwYWxzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJibS1Oa29vIiwKICAgICAgIm5hbWUiOiAiTktvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5vIiwKICAgICAgIm5hbWUiOiAibm9yc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibnVzIiwKICAgICAgIm5hbWUiOiAibnVlciIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJvYyIsCiAgICAgICJuYW1lIjogIm9rc2l0YW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJvciIsCiAgICAgICJuYW1lIjogIm9yaXlhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm9tIiwKICAgICAgIm5hbWUiOiAib3JvbW8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAib3MiLAogICAgICAibmFtZSI6ICJvc3NldGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwYWciLAogICAgICAibmFtZSI6ICJwYW5nYXNpbmFuIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInBhIiwKICAgICAgIm5hbWUiOiAiUGFuamFiaSAoZ3VybXVraGkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInBhLUFyYWIiLAogICAgICAibmFtZSI6ICJwYW5qYWJpIChzaGFobXVraGkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInBhcCIsCiAgICAgICJuYW1lIjogInBhcGlhbWVudG8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicHMiLAogICAgICAibmFtZSI6ICJwYXNodG8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicGwiLAogICAgICAibmFtZSI6ICJwb2xzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwdCIsCiAgICAgICJuYW1lIjogInBvcnR1Z2lzaXNrIChCcmFzaWwpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInB0LVBUIiwKICAgICAgIm5hbWUiOiAicG9ydHVnaXNpc2sgKFBvcnR1Z2FsKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJxdSIsCiAgICAgICJuYW1lIjogInF1ZWNodWEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicm9tIiwKICAgICAgIm5hbWUiOiAicm9tYW5pIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInJvIiwKICAgICAgIm5hbWUiOiAicnVtZW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJydSIsCiAgICAgICJuYW1lIjogInJ1c3Npc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2UiLAogICAgICAibmFtZSI6ICJzYW1pc2sgKG5vcmQpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNtIiwKICAgICAgIm5hbWUiOiAic2Ftb2Fuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2ciLAogICAgICAibmFtZSI6ICJzYW5nbyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzYSIsCiAgICAgICJuYW1lIjogInNhbnNrcml0IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNhdC1MYXRuIiwKICAgICAgIm5hbWUiOiAiU2FudGFsaSAobGF0aW5zaykiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2F0IiwKICAgICAgIm5hbWUiOiAiU2FudGFsaSAob2wgY2hpa2kpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInN6bCIsCiAgICAgICJuYW1lIjogInNjaGxlc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJuc28iLAogICAgICAibmFtZSI6ICJzZXBlZGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic3IiLAogICAgICAibmFtZSI6ICJzZXJiaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNobiIsCiAgICAgICJuYW1lIjogInNoYW4iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic24iLAogICAgICAibmFtZSI6ICJzaG9uYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzY24iLAogICAgICAibmFtZSI6ICJzaWNpbGlhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNkIiwKICAgICAgIm5hbWUiOiAic2luZGhpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNpIiwKICAgICAgIm5hbWUiOiAic2luZ2FsZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZ2QiLAogICAgICAibmFtZSI6ICJza290c2sgZ8OmbGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzayIsCiAgICAgICJuYW1lIjogInNsb3Zha2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzbCIsCiAgICAgICJuYW1lIjogInNsb3ZlbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNvIiwKICAgICAgIm5hbWUiOiAic29tYWxpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInN0IiwKICAgICAgIm5hbWUiOiAic290aG8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZXMiLAogICAgICAibmFtZSI6ICJzcGFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic3UiLAogICAgICAibmFtZSI6ICJzdW5kYW5lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzdXMiLAogICAgICAibmFtZSI6ICJzdXN1IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInN2IiwKICAgICAgIm5hbWUiOiAic3ZlbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInN3IiwKICAgICAgIm5hbWUiOiAic3dhaGlsaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzcyIsCiAgICAgICJuYW1lIjogInN3YXRpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRnIiwKICAgICAgIm5hbWUiOiAidGFkc2ppa2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0bCIsCiAgICAgICJuYW1lIjogInRhZ2Fsb2ciCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidHkiLAogICAgICAibmFtZSI6ICJ0YWhpdGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiZXItTGF0biIsCiAgICAgICJuYW1lIjogInRhbWF6aWdodCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiZXIiLAogICAgICAibmFtZSI6ICJ0YW1hemlnaHQgKHRpZmluYWdoKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0YSIsCiAgICAgICJuYW1lIjogInRhbWlsIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInR0IiwKICAgICAgIm5hbWUiOiAidGF0YXJpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGUiLAogICAgICAibmFtZSI6ICJ0ZWx1Z3UiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGV0IiwKICAgICAgIm5hbWUiOiAidGV0dW0iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGgiLAogICAgICAibmFtZSI6ICJ0aGFpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJvIiwKICAgICAgIm5hbWUiOiAidGliZXRhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRpIiwKICAgICAgIm5hbWUiOiAidGlncmluamEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGl2IiwKICAgICAgIm5hbWUiOiAidGl2IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRwaSIsCiAgICAgICJuYW1lIjogInRvayBwaXNpbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0byIsCiAgICAgICJuYW1lIjogInRvbmdhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImx1YSIsCiAgICAgICJuYW1lIjogInRzaGlsdWJhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNzIiwKICAgICAgIm5hbWUiOiAidHNqZWtraXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNlIiwKICAgICAgIm5hbWUiOiAidHNqZXRzamVuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2hrIiwKICAgICAgIm5hbWUiOiAidHNqdWt0c2ppc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY3YiLAogICAgICAibmFtZSI6ICJ0c2p1dmFzamlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0cyIsCiAgICAgICJuYW1lIjogInRzb25nYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0biIsCiAgICAgICJuYW1lIjogInRzd2FuYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0Y3kiLAogICAgICAibmFtZSI6ICJ0dWx1IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInR1bSIsCiAgICAgICJuYW1lIjogInR1bWJ1a2EiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGsiLAogICAgICAibmFtZSI6ICJ0dXJrbWVuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidHl2IiwKICAgICAgIm5hbWUiOiAidHV2aW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhayIsCiAgICAgICJuYW1lIjogInR3aSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0ciIsCiAgICAgICJuYW1lIjogInR5cmtpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZGUiLAogICAgICAibmFtZSI6ICJ0eXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInVkbSIsCiAgICAgICJuYW1lIjogInVkbXVydGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ1ZyIsCiAgICAgICJuYW1lIjogInVpZ3VyaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInVrIiwKICAgICAgIm5hbWUiOiAidWtyYWluc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaHUiLAogICAgICAibmFtZSI6ICJ1bmdhcnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInVyIiwKICAgICAgIm5hbWUiOiAidXJkdSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ1eiIsCiAgICAgICJuYW1lIjogInVzYmVraXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInZlIiwKICAgICAgIm5hbWUiOiAidmVuZGEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidmVjIiwKICAgICAgIm5hbWUiOiAidmVuZXRpYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ2aSIsCiAgICAgICJuYW1lIjogInZpZXRuYW1lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjeSIsCiAgICAgICJuYW1lIjogIndhbGlzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIndhciIsCiAgICAgICJuYW1lIjogIndhcmF5LXdhcmF5IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIndvIiwKICAgICAgIm5hbWUiOiAid29sb2YiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAieGgiLAogICAgICAibmFtZSI6ICJ4aG9zYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ5dWEiLAogICAgICAibmFtZSI6ICJ5dWthdGFuc2sgbWF5YSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ6YXAiLAogICAgICAibmFtZSI6ICJ6YXBvdGVjIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInp1IiwKICAgICAgIm5hbWUiOiAienVsdSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjaG0iLAogICAgICAibmFtZSI6ICLDuHN0bWFyaXNrIgogICAgfQogIF0sCiAgInRhcmdldExhbmd1YWdlcyI6IFsKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFiIiwKICAgICAgIm5hbWUiOiAiYWJraGFzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFjZSIsCiAgICAgICJuYW1lIjogImFjZWhuZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWNoIiwKICAgICAgIm5hbWUiOiAiYWNob2xpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFhIiwKICAgICAgIm5hbWUiOiAiYWZhciIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhZiIsCiAgICAgICJuYW1lIjogImFmcmlrYWFucyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzcSIsCiAgICAgICJuYW1lIjogImFsYmFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWx6IiwKICAgICAgIm5hbWUiOiAiYWx1ciIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhbSIsCiAgICAgICJuYW1lIjogImFtaGFyaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFyIiwKICAgICAgIm5hbWUiOiAiYXJhYmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJoeSIsCiAgICAgICJuYW1lIjogImFybWVuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYXoiLAogICAgICAibmFtZSI6ICJhc2VyYmFqZHNqYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhcyIsCiAgICAgICJuYW1lIjogImFzc2FtZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYXYiLAogICAgICAibmFtZSI6ICJhdmFyaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImF3YSIsCiAgICAgICJuYW1lIjogImF3YWRoaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJheSIsCiAgICAgICJuYW1lIjogImF5bWFyYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiYW4iLAogICAgICAibmFtZSI6ICJiYWxpbmVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJhbCIsCiAgICAgICJuYW1lIjogImJhbHV0c2ppIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJtIiwKICAgICAgIm5hbWUiOiAiYmFtYmFyYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiY2kiLAogICAgICAibmFtZSI6ICJiYW91bMOpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJhIiwKICAgICAgIm5hbWUiOiAiYmFzamtpcnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImV1IiwKICAgICAgIm5hbWUiOiAiYmFza2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJidHgiLAogICAgICAibmFtZSI6ICJiYXRhayBrYXJvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJ0cyIsCiAgICAgICJuYW1lIjogImJhdGFrIHNpbWFsdW5ndW4iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmJjIiwKICAgICAgIm5hbWUiOiAiYmF0YWsgdG9iYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiZW0iLAogICAgICAibmFtZSI6ICJiZW1iYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJibiIsCiAgICAgICJuYW1lIjogImJlbmdhbGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmV3IiwKICAgICAgIm5hbWUiOiAiYmV0YXdpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJobyIsCiAgICAgICJuYW1lIjogImJob2pwdXJpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJpayIsCiAgICAgICJuYW1lIjogImJpa29sIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJzIiwKICAgICAgIm5hbWUiOiAiYm9zbmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiciIsCiAgICAgICJuYW1lIjogImJyZXRvbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJnIiwKICAgICAgIm5hbWUiOiAiYnVsZ2Fyc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYnVhIiwKICAgICAgIm5hbWUiOiAiYnVyamF0aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm15IiwKICAgICAgIm5hbWUiOiAiYnVybWVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNlYiIsCiAgICAgICJuYW1lIjogImNlYnVhbm8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2giLAogICAgICAibmFtZSI6ICJjaGFtb3JybyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJueSIsCiAgICAgICJuYW1lIjogImNoaWNoZXdhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImRhIiwKICAgICAgIm5hbWUiOiAiZGFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZmEtQUYiLAogICAgICAibmFtZSI6ICJkYXJpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImR2IiwKICAgICAgIm5hbWUiOiAiZGhpdmVoaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkaW4iLAogICAgICAibmFtZSI6ICJkaW5rYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkb2kiLAogICAgICAibmFtZSI6ICJkb2dyaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkb3YiLAogICAgICAibmFtZSI6ICJkb21iZSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkeXUiLAogICAgICAibmFtZSI6ICJEeXVsYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkeiIsCiAgICAgICJuYW1lIjogImR6b25na2hhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImVuIiwKICAgICAgIm5hbWUiOiAiZW5nZWxzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJlbyIsCiAgICAgICJuYW1lIjogImVzcGVyYW50byIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJldCIsCiAgICAgICJuYW1lIjogImVzdGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJlZSIsCiAgICAgICJuYW1lIjogImV3ZSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJmYSIsCiAgICAgICJuYW1lIjogImZhcnNpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZqIiwKICAgICAgIm5hbWUiOiAiZmlqaWFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZmkiLAogICAgICAibmFtZSI6ICJmaW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJmb24iLAogICAgICAibmFtZSI6ICJmb24iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZnIiLAogICAgICAibmFtZSI6ICJmcmFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZnItQ0EiLAogICAgICAibmFtZSI6ICJGcmFuc2sgKENhbmFkYSkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZnkiLAogICAgICAibmFtZSI6ICJmcmlzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZ1ciIsCiAgICAgICJuYW1lIjogImZyaXVsaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZmIiwKICAgICAgIm5hbWUiOiAiZnVsZnVsZGUiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZm8iLAogICAgICAibmFtZSI6ICJmw6Zyw7h5c2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZ2wiLAogICAgICAibmFtZSI6ICJnYWxpc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrYSIsCiAgICAgICJuYW1lIjogImdlb3JnaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImVsIiwKICAgICAgIm5hbWUiOiAiZ3Jlc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZ24iLAogICAgICAibmFtZSI6ICJndWFyYW7DrSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJndSIsCiAgICAgICJuYW1lIjogImd1amFyYXRpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImdhYSIsCiAgICAgICJuYW1lIjogImdhYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjbmgiLAogICAgICAibmFtZSI6ICJoYWtoYSBjaGluIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhhIiwKICAgICAgIm5hbWUiOiAiaGF1c2EiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaGF3IiwKICAgICAgIm5hbWUiOiAiaGF3YWlpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaXciLAogICAgICAibmFtZSI6ICJoZWJyYWlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJoaWwiLAogICAgICAibmFtZSI6ICJoaWxpZ2F5bm9uIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhpIiwKICAgICAgIm5hbWUiOiAiaGluZGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaG1uIiwKICAgICAgIm5hbWUiOiAiaG1vbmciCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaHJ4IiwKICAgICAgIm5hbWUiOiAiaHVuc3JpayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiZSIsCiAgICAgICJuYW1lIjogImh2aXRlcnVzc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpYmEiLAogICAgICAibmFtZSI6ICJpYmFuIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImlnIiwKICAgICAgIm5hbWUiOiAiaWdibyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpbG8iLAogICAgICAibmFtZSI6ICJpbG9rYW5vIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImlkIiwKICAgICAgIm5hbWUiOiAiaW5kb25lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpdS1MYXRuIiwKICAgICAgIm5hbWUiOiAiSW51a3RpdHV0IChsYXRpbnNrKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpdSIsCiAgICAgICJuYW1lIjogIkludWt0aXR1dCAoc3RhdmVsc2UpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImdhIiwKICAgICAgIm5hbWUiOiAiaXJzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpcyIsCiAgICAgICJuYW1lIjogImlzbGFuZHNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIml0IiwKICAgICAgIm5hbWUiOiAiaXRhbGllbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNhaCIsCiAgICAgICJuYW1lIjogImpha3V0aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImphbSIsCiAgICAgICJuYW1lIjogImphbWFpY2Fuc2sgcGF0b2lzIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImphIiwKICAgICAgIm5hbWUiOiAiamFwYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJqdyIsCiAgICAgICJuYW1lIjogImphdmFuZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAieWkiLAogICAgICAibmFtZSI6ICJqaWRkaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImthYyIsCiAgICAgICJuYW1lIjogImppbmdwbyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ5byIsCiAgICAgICJuYW1lIjogImpvcnViYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrbCIsCiAgICAgICJuYW1lIjogImthbGFhbGxpc3V0IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImtuIiwKICAgICAgIm5hbWUiOiAia2FubmFkYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ5dWUiLAogICAgICAibmFtZSI6ICJrYW50b25lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrciIsCiAgICAgICJuYW1lIjogImthbnVyaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwYW0iLAogICAgICAibmFtZSI6ICJrYXBhbXBhbmdhbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrayIsCiAgICAgICJuYW1lIjogImthc2FraGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjYSIsCiAgICAgICJuYW1lIjogImthdGFsYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrZWsiLAogICAgICAibmFtZSI6ICJrZWtjaGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia2hhIiwKICAgICAgIm5hbWUiOiAia2hhc2kiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia20iLAogICAgICAibmFtZSI6ICJraG1lciIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjZ2ciLAogICAgICAibmFtZSI6ICJraWdhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImtnIiwKICAgICAgIm5hbWUiOiAia2lrb25nbyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ6aC1DTiIsCiAgICAgICJuYW1lIjogImtpbmVzaXNrIChmb3JlbmtsZXQpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInpoLVRXIiwKICAgICAgIm5hbWUiOiAia2luZXNpc2sgKHRyYWRpc2pvbmVsbCkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicnciLAogICAgICAibmFtZSI6ICJraW55YXJ3YW5kYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJreSIsCiAgICAgICJuYW1lIjogImtpcmdpc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJybiIsCiAgICAgICJuYW1lIjogImtpcnVuZGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia3R1IiwKICAgICAgIm5hbWUiOiAia2l0dWJhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRycCIsCiAgICAgICJuYW1lIjogImtva2Jvcm9rIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImt2IiwKICAgICAgIm5hbWUiOiAia29taSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJnb20iLAogICAgICAibmFtZSI6ICJrb25rYW5pIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImtvIiwKICAgICAgIm5hbWUiOiAia29yZWFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY28iLAogICAgICAibmFtZSI6ICJrb3JzaWthbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImh0IiwKICAgICAgIm5hbWUiOiAia3Jlb2wgKEhhaXRpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjcnMiLAogICAgICAibmFtZSI6ICJrcmVvbCAoU2V5Y2hlbGxlbmUpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNyaCIsCiAgICAgICJuYW1lIjogIktyaW10YXRhcmlzayAoa3lyaWxsaXNrKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjcmgtTGF0biIsCiAgICAgICJuYW1lIjogIktyaW10YXRhcmlzayAobGF0aW5zaykiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia3JpIiwKICAgICAgIm5hbWUiOiAia3JpbyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJociIsCiAgICAgICJuYW1lIjogImtyb2F0aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImt1IiwKICAgICAgIm5hbWUiOiAia3VyZGlzayAoa3VybWFuamkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNrYiIsCiAgICAgICJuYW1lIjogImt1cmRpc2sgKHNvcmFuaSkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibG8iLAogICAgICAibmFtZSI6ICJsYW90aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImx0ZyIsCiAgICAgICJuYW1lIjogImxhdGdhbGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsYSIsCiAgICAgICJuYW1lIjogImxhdGluIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImx2IiwKICAgICAgIm5hbWUiOiAibGF0dmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsaWoiLAogICAgICAibmFtZSI6ICJsaWd1cmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsaSIsCiAgICAgICJuYW1lIjogImxpbWJ1cmdzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsbiIsCiAgICAgICJuYW1lIjogImxpbmdhbGEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibHQiLAogICAgICAibmFtZSI6ICJsaXRhdWlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsbW8iLAogICAgICAibmFtZSI6ICJsb21iYXJkaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxnIiwKICAgICAgIm5hbWUiOiAibHVnYW5kYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsdW8iLAogICAgICAibmFtZSI6ICJsdW8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibGIiLAogICAgICAibmFtZSI6ICJsdXhlbWJvdXJnc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibWciLAogICAgICAibmFtZSI6ICJtYWRhZ2Fzc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtYWQiLAogICAgICAibmFtZSI6ICJtYWR1cmVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1haSIsCiAgICAgICJuYW1lIjogIm1haXRoaWxpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1hayIsCiAgICAgICJuYW1lIjogIk1ha2Fzc2FyIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1rIiwKICAgICAgIm5hbWUiOiAibWFrZWRvbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1sIiwKICAgICAgIm5hbWUiOiAibWFsYXlhbGFtIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1zIiwKICAgICAgIm5hbWUiOiAibWFsYXlpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibXMtQXJhYiIsCiAgICAgICJuYW1lIjogIm1hbGF5aXNrIChqYXdpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtdCIsCiAgICAgICJuYW1lIjogIm1hbHRlc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtYW0iLAogICAgICAibmFtZSI6ICJtYW0iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZ3YiLAogICAgICAibmFtZSI6ICJtYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtaSIsCiAgICAgICJuYW1lIjogIm1hb3JpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1yIiwKICAgICAgIm5hbWUiOiAibWFyYXRoaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtaCIsCiAgICAgICJuYW1lIjogIm1hcnNoYWxsZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibXdyIiwKICAgICAgIm5hbWUiOiAibWFyd2FkaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtZmUiLAogICAgICAibmFtZSI6ICJtYXVyaXRpc2sga3Jlb2wiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibW5pLU10ZWkiLAogICAgICAibmFtZSI6ICJtZWl0ZWlsb24gKG1hbmlwdXJpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtaW4iLAogICAgICAibmFtZSI6ICJtaW5hbmciCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibHVzIiwKICAgICAgIm5hbWUiOiAibWl6byIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtbiIsCiAgICAgICJuYW1lIjogIm1vbmdvbHNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5oZSIsCiAgICAgICJuYW1lIjogIm5haHVhdGwgKMO4c3RsaWdlIEh1YXN0ZWNhKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJuZGMtWlciLAogICAgICAibmFtZSI6ICJuZGF1IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5yIiwKICAgICAgIm5hbWUiOiAibmRlYmVsZSAoc8O4cikiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibmwiLAogICAgICAibmFtZSI6ICJuZWRlcmxhbmRzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJuZXciLAogICAgICAibmFtZSI6ICJOZXBhbCBiaGFzYSAobmV3YXJpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJuZSIsCiAgICAgICJuYW1lIjogIm5lcGFsc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYm0tTmtvbyIsCiAgICAgICJuYW1lIjogIk5LbyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJubyIsCiAgICAgICJuYW1lIjogIm5vcnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm51cyIsCiAgICAgICJuYW1lIjogIm51ZXIiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAib2MiLAogICAgICAibmFtZSI6ICJva3NpdGFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAib3IiLAogICAgICAibmFtZSI6ICJvcml5YSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJvbSIsCiAgICAgICJuYW1lIjogIm9yb21vIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm9zIiwKICAgICAgIm5hbWUiOiAib3NzZXRpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicGFnIiwKICAgICAgIm5hbWUiOiAicGFuZ2FzaW5hbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwYSIsCiAgICAgICJuYW1lIjogIlBhbmphYmkgKGd1cm11a2hpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwYS1BcmFiIiwKICAgICAgIm5hbWUiOiAicGFuamFiaSAoc2hhaG11a2hpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwYXAiLAogICAgICAibmFtZSI6ICJwYXBpYW1lbnRvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInBzIiwKICAgICAgIm5hbWUiOiAicGFzaHRvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInBsIiwKICAgICAgIm5hbWUiOiAicG9sc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicHQiLAogICAgICAibmFtZSI6ICJwb3J0dWdpc2lzayAoQnJhc2lsKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwdC1QVCIsCiAgICAgICJuYW1lIjogInBvcnR1Z2lzaXNrIChQb3J0dWdhbCkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicXUiLAogICAgICAibmFtZSI6ICJxdWVjaHVhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInJvbSIsCiAgICAgICJuYW1lIjogInJvbWFuaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJybyIsCiAgICAgICJuYW1lIjogInJ1bWVuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicnUiLAogICAgICAibmFtZSI6ICJydXNzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNlIiwKICAgICAgIm5hbWUiOiAic2FtaXNrIChub3JkKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzbSIsCiAgICAgICJuYW1lIjogInNhbW9hbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNnIiwKICAgICAgIm5hbWUiOiAic2FuZ28iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2EiLAogICAgICAibmFtZSI6ICJzYW5za3JpdCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzYXQtTGF0biIsCiAgICAgICJuYW1lIjogIlNhbnRhbGkgKGxhdGluc2spIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNhdCIsCiAgICAgICJuYW1lIjogIlNhbnRhbGkgKG9sIGNoaWtpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzemwiLAogICAgICAibmFtZSI6ICJzY2hsZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibnNvIiwKICAgICAgIm5hbWUiOiAic2VwZWRpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNyIiwKICAgICAgIm5hbWUiOiAic2VyYmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzaG4iLAogICAgICAibmFtZSI6ICJzaGFuIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNuIiwKICAgICAgIm5hbWUiOiAic2hvbmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2NuIiwKICAgICAgIm5hbWUiOiAic2ljaWxpYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzZCIsCiAgICAgICJuYW1lIjogInNpbmRoaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzaSIsCiAgICAgICJuYW1lIjogInNpbmdhbGVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImdkIiwKICAgICAgIm5hbWUiOiAic2tvdHNrIGfDpmxpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2siLAogICAgICAibmFtZSI6ICJzbG92YWtpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2wiLAogICAgICAibmFtZSI6ICJzbG92ZW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzbyIsCiAgICAgICJuYW1lIjogInNvbWFsaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzdCIsCiAgICAgICJuYW1lIjogInNvdGhvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImVzIiwKICAgICAgIm5hbWUiOiAic3BhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInN1IiwKICAgICAgIm5hbWUiOiAic3VuZGFuZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic3VzIiwKICAgICAgIm5hbWUiOiAic3VzdSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzdiIsCiAgICAgICJuYW1lIjogInN2ZW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzdyIsCiAgICAgICJuYW1lIjogInN3YWhpbGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic3MiLAogICAgICAibmFtZSI6ICJzd2F0aSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0ZyIsCiAgICAgICJuYW1lIjogInRhZHNqaWtpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGwiLAogICAgICAibmFtZSI6ICJ0YWdhbG9nIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInR5IiwKICAgICAgIm5hbWUiOiAidGFoaXRpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmVyLUxhdG4iLAogICAgICAibmFtZSI6ICJ0YW1hemlnaHQiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmVyIiwKICAgICAgIm5hbWUiOiAidGFtYXppZ2h0ICh0aWZpbmFnaCkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGEiLAogICAgICAibmFtZSI6ICJ0YW1pbCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0dCIsCiAgICAgICJuYW1lIjogInRhdGFyaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRlIiwKICAgICAgIm5hbWUiOiAidGVsdWd1IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRldCIsCiAgICAgICJuYW1lIjogInRldHVtIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRoIiwKICAgICAgIm5hbWUiOiAidGhhaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJibyIsCiAgICAgICJuYW1lIjogInRpYmV0YW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0aSIsCiAgICAgICJuYW1lIjogInRpZ3JpbmphIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRpdiIsCiAgICAgICJuYW1lIjogInRpdiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0cGkiLAogICAgICAibmFtZSI6ICJ0b2sgcGlzaW4iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidG8iLAogICAgICAibmFtZSI6ICJ0b25nYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsdWEiLAogICAgICAibmFtZSI6ICJ0c2hpbHViYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjcyIsCiAgICAgICJuYW1lIjogInRzamVra2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjZSIsCiAgICAgICJuYW1lIjogInRzamV0c2plbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNoayIsCiAgICAgICJuYW1lIjogInRzanVrdHNqaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImN2IiwKICAgICAgIm5hbWUiOiAidHNqdXZhc2ppc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidHMiLAogICAgICAibmFtZSI6ICJ0c29uZ2EiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidG4iLAogICAgICAibmFtZSI6ICJ0c3dhbmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGN5IiwKICAgICAgIm5hbWUiOiAidHVsdSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0dW0iLAogICAgICAibmFtZSI6ICJ0dW1idWthIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRrIiwKICAgICAgIm5hbWUiOiAidHVya21lbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInR5diIsCiAgICAgICJuYW1lIjogInR1dmluc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWsiLAogICAgICAibmFtZSI6ICJ0d2kiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidHIiLAogICAgICAibmFtZSI6ICJ0eXJraXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImRlIiwKICAgICAgIm5hbWUiOiAidHlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ1ZG0iLAogICAgICAibmFtZSI6ICJ1ZG11cnRpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidWciLAogICAgICAibmFtZSI6ICJ1aWd1cmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ1ayIsCiAgICAgICJuYW1lIjogInVrcmFpbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImh1IiwKICAgICAgIm5hbWUiOiAidW5nYXJzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ1ciIsCiAgICAgICJuYW1lIjogInVyZHUiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidXoiLAogICAgICAibmFtZSI6ICJ1c2Jla2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ2ZSIsCiAgICAgICJuYW1lIjogInZlbmRhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInZlYyIsCiAgICAgICJuYW1lIjogInZlbmV0aWFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidmkiLAogICAgICAibmFtZSI6ICJ2aWV0bmFtZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY3kiLAogICAgICAibmFtZSI6ICJ3YWxpc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ3YXIiLAogICAgICAibmFtZSI6ICJ3YXJheS13YXJheSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ3byIsCiAgICAgICJuYW1lIjogIndvbG9mIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInhoIiwKICAgICAgIm5hbWUiOiAieGhvc2EiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAieXVhIiwKICAgICAgIm5hbWUiOiAieXVrYXRhbnNrIG1heWEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiemFwIiwKICAgICAgIm5hbWUiOiAiemFwb3RlYyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ6dSIsCiAgICAgICJuYW1lIjogInp1bHUiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2htIiwKICAgICAgIm5hbWUiOiAiw7hzdG1hcmlzayIKICAgIH0KICBdCn0KKTs="}},"time_used":58,"timings":{"blocked":0,"dns":2,"connect":8,"send":0,"wait":27,"receive":0,"ssl":21},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/element/log?format=json\u0026hasfast=true\u0026authuser=0","fqdn":"translate.googleapis.com","domain":"translate.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":"fetch","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:21.856Z","timestamp":1785130101856,"http_version":"HTTP/3","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":"POST /element/log?format=json\u0026hasfast=true\u0026authuser=0 HTTP/1.1\r\nHost: translate.googleapis.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://dreamspinfluence.com/\r\nX-Goog-AuthUser: 0\r\nContent-Encoding: gzip\r\nContent-Type: application/binary\r\nContent-Length: 302\r\nOrigin: https://dreamspinfluence.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=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"POST","post_data":{"size":444,"data":"\u001f\b\u0000\u0000\u0000\u0000\u0000\u0000\u0003ÝTÑNÃ \u0014ý\u0017[Ç¥@ËÞn? \u003eÑ¦!+n$6+óÁ¯\u0017µÙtS\u001f§äÀsáÂ\u0012\u0012w°ö× /\r\"íÒ't$ÏË`ÂqN\b:]I\u0013\\UU\u0002E\u000e\u0017\f2\u0005\u0014ü`.ºþ{(kKt\u0003ü1\boºD^«+\u0011Æ`RBV)åT¤ÅRô\u001e¸Xå \u001eù\u0005¡,ÑÖû®ÏfÍ^«]ß\u0019÷j\u000fÚ­õÝºÝY\b²(®b?ñ\u000bRof£¼iÝàºÍ\u0026Yìà¡Mô\u0013Ïà{NÙµùñÌyÁ'IdbdRÎ\u0003B@`T0\bß0\u0004í÷ÊõVy=ïÔF×¶UMíÛÚ8ã²æ]7ñ\u0014g[I\u0012þ/;w®b;}¦_J\n¾«\u0018Ê±\u0014\u0000\u000e[gÕ\u0007g°h\u0004\u0000\u0000"}},"response":{"raw":"HTTP/3 200 \r\naccess-control-allow-origin: https://dreamspinfluence.com\r\ncross-origin-resource-policy: cross-origin\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: X-Playlog-Web\r\ncontent-type: text/plain; charset=UTF-8\r\ncontent-encoding: gzip\r\ndate: Mon, 27 Jul 2026 05:28:21 GMT\r\nserver: Playlog\r\ncontent-length: 131\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\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":131,"size_decoded":581,"mime_type":"text/plain; charset=UTF-8","magic":"JSON text data","md5":"ca0b7e866005f6774d284b9f438ebfd2","sha1":"53644f5ee3640189bdb223473ba6a2d46606c556","sha256":"502e9680cfa78fa8be779cbf4f1947c8eaa3d43bf8c7464800ec772b2ddea358","sha512":"939c4526c623db033ad40bfdc6c8848a1dcd0ca797f17fbbd89fbec1b49dededc16e89084b3759e62fa0ffc8fe896980b10a1ff8daee22736a70b08f1ee13e2f","ssdeep":"","tlshash":"58c08c50330469e1080e82c8c0026858228c903b46708cf10bbd68125d3234a1004854","first_seen":"2023-04-05T03:14:56Z","last_seen":"2026-08-02T16:14:55.261432Z","times_seen":583872,"resource_available":false,"data":"WyItMSIsbnVsbCxbW1siQU5EUk9JRF9CQUNLVVAiLDBdLFsiQkFUVEVSWV9TVEFUUyIsMF0sWyJTTUFSVF9TRVRVUCIsMF0sWyJUUk9OIiwwXV0sLTMzMzQ3Mzc1OTQwMjQ5NzEyMjVdLFtdLHsiMTc1MjM3Mzc1IjpbMTAwMDBdfV0="}},"time_used":34,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":34,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/css/frontend-lite.min.css?ver=3.19.1","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.979Z","timestamp":1785130089979,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/elementor/assets/css/frontend-lite.min.css?ver=3.19.1 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=sjl1trIIrFkaT3nBJOZH%2Bi%2B6K5mWKiPhhOvwWOaxBpDg9C3afSLnYA1dcMX2JS8I3PJPruFCaKQgqlhUDrSETB5kdnaWmay9g2AX0t%2BbwJaq1fqVYgf5FhVouYSqwZohEDAWb6MtPg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d365e28120a-OSL\r\ncontent-length: 14040\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":137457,"size_decoded":14853,"mime_type":"text/css","magic":"ASCII text","md5":"7577f9ab342fe90e465b9f9662b9fae6","sha1":"1ea480a3357c582cf8681555439c177369c4bb94","sha256":"f7407398d464ab7643772d714e6b150249901c3b141acf75c59a9fef59aed554","sha512":"0318d9c439071bec0b9951e31b2d61117852b295bdc8745c02baba386fb92fbd7ab23d6b9528d858127a957e54e43d18a820729f2efc91821141f3d9069e5783","ssdeep":"1536:bPXi7bPvNZZ1LRfIuKiR+nMKTmBw9QoeiWxhgt:bPy7LNXH/KYw","tlshash":"fcd365523d631515961faa2f4a8b128c239040c3c94bfe95f58d9083dffdef53762aa2","first_seen":"2026-07-27T03:56:42.584262Z","last_seen":"2026-07-27T05:30:59.785154Z","times_seen":6,"resource_available":false,"data":"LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNy0wMi0yMDI0ICovCgouZGlhbG9nLXdpZGdldC1jb250ZW50IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1iZy1kZWZhdWx0KTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIGJveC1zaGFkb3c6IDJweCA4cHggMjNweCAzcHggcmdiYSgwLCAwLCAwLCAuMik7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5kaWFsb2ctbWVzc2FnZSB7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveAp9CgouZGlhbG9nLWNsb3NlLWJ1dHRvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IDE1cHg7CiAgICByaWdodDogMTVweDsKICAgIGNvbG9yOiB2YXIoLS1lLWEtY29sb3ItdHh0KTsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdHJhbnNpdGlvbjogdmFyKC0tZS1hLXRyYW5zaXRpb24taG92ZXIpCn0KCi5kaWFsb2ctY2xvc2UtYnV0dG9uOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1lLWEtY29sb3ItdHh0LWhvdmVyKQp9CgouZGlhbG9nLXByZXZlbnQtc2Nyb2xsIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBtYXgtaGVpZ2h0OiAxMDB2aAp9CgouZGlhbG9nLXR5cGUtbGlnaHRib3ggewogICAgcG9zaXRpb246IGZpeGVkOwogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuOCk7CiAgICB6LWluZGV4OiA5OTk5OwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB1c2VyLXNlbGVjdDogbm9uZQp9CgouZWxlbWVudG9yLWVkaXRvci1hY3RpdmUgLmVsZW1lbnRvci1wb3B1cC1tb2RhbCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLXdpZGdldC1jb250ZW50LAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLXdpZGdldC1jb250ZW50IHsKICAgIG1hcmdpbjogYXV0bzsKICAgIHdpZHRoOiA0MDBweDsKICAgIHBhZGRpbmc6IDIwcHgKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctaGVhZGVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWhlYWRlciB7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBmb250LXdlaWdodDogNTAwCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWhlYWRlcjphZnRlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1oZWFkZXI6YWZ0ZXIgewogICAgY29udGVudDogIiI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJvcmRlci1ibG9jay1lbmQ6IHZhcigtLWUtYS1ib3JkZXIpOwogICAgcGFkZGluZy1ibG9jay1lbmQ6IDEwcHg7CiAgICBtYXJnaW4tYmxvY2stZW5kOiAxMHB4OwogICAgbWFyZ2luLWlubGluZS1zdGFydDogLTIwcHg7CiAgICBtYXJnaW4taW5saW5lLWVuZDogLTIwcHgKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctbWVzc2FnZSwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1tZXNzYWdlIHsKICAgIG1pbi1oZWlnaHQ6IDUwcHgKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciB7CiAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMHB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICBnYXA6IDE1cHgKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbiB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgb3V0bGluZTogbm9uZTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWUtYS1ib3JkZXItcmFkaXVzKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1idG4tYmcpOwogICAgY29sb3I6IHZhcigtLWUtYS1idG4tY29sb3ItaW52ZXJ0KTsKICAgIHRyYW5zaXRpb246IHZhcigtLWUtYS10cmFuc2l0aW9uLWhvdmVyKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOmhvdmVyIHsKICAgIGJvcmRlcjogbm9uZQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjpob3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1idG4tYmctaG92ZXIpOwogICAgY29sb3I6IHZhcigtLWUtYS1idG4tY29sb3ItaW52ZXJ0KQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246YWN0aXZlLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjphY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1hY3RpdmUpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjpub3QoW2Rpc2FibGVkXSksCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOm5vdChbZGlzYWJsZWRdKSB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOmRpc2FibGVkLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjpkaXNhYmxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLWRpc2FibGVkKTsKICAgIGNvbG9yOiB2YXIoLS1lLWEtYnRuLWNvbG9yLWRpc2FibGVkKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246bm90KC5lbGVtZW50b3ItYnV0dG9uLXN0YXRlKSAuZWxlbWVudG9yLXN0YXRlLWljb24sCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOm5vdCguZWxlbWVudG9yLWJ1dHRvbi1zdGF0ZSkgLmVsZW1lbnRvci1zdGF0ZS1pY29uIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiB2YXIoLS1lLWEtY29sb3ItdHh0KQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLWNhbmNlbDpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWw6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQ6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQ6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWw6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWw6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dDpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0OmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWUtYS1iZy1ob3Zlcik7CiAgICBjb2xvcjogdmFyKC0tZS1hLWNvbG9yLXR4dC1ob3ZlcikKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWw6ZGlzYWJsZWQsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQ6ZGlzYWJsZWQsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWw6ZGlzYWJsZWQsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dDpkaXNhYmxlZCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiB2YXIoLS1lLWEtY29sb3ItdHh0LWRpc2FibGVkKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0LWJvcmRlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0LWJvcmRlciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1lLWEtY29sb3ItdHh0LW11dGVkKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1zdWNjZXNzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1zdWNjZXNzLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXN1Y2Nlc3MsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24tc3VjY2VzcyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLXN1Y2Nlc3MpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXN1Y2Nlc3M6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXN1Y2Nlc3M6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXN1Y2Nlc3M6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXN1Y2Nlc3M6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtc3VjY2Vzczpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1zdWNjZXNzOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXN1Y2Nlc3M6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24tc3VjY2Vzczpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLXN1Y2Nlc3MtaG92ZXIpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2ssCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctdGFrZV9vdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5LAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2ssCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy10YWtlX292ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLXByaW1hcnkpOwogICAgY29sb3I6IHZhcigtLWUtYS1idG4tY29sb3IpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2s6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2s6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctdGFrZV9vdmVyOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLXRha2Vfb3Zlcjpob3ZlciwKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeTpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeTpob3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLW9rOmZvY3VzLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2s6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy10YWtlX292ZXI6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy10YWtlX292ZXI6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeTpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5OmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1idG4tYmctcHJpbWFyeS1ob3Zlcik7CiAgICBjb2xvcjogdmFyKC0tZS1hLWJ0bi1jb2xvcikKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwuZGlhbG9nLXRha2Vfb3ZlciwKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1vay5kaWFsb2ctY2FuY2VsLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0LmRpYWxvZy1vaywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dC5kaWFsb2ctdGFrZV9vdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5LmRpYWxvZy1jYW5jZWwsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXByaW1hcnkuZS1idG4tdHh0LAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctY2FuY2VsLmRpYWxvZy10YWtlX292ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1vay5kaWFsb2ctY2FuY2VsLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQuZGlhbG9nLW9rLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQuZGlhbG9nLXRha2Vfb3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5LmRpYWxvZy1jYW5jZWwsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeS5lLWJ0bi10eHQgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBjb2xvcjogdmFyKC0tZS1hLWNvbG9yLXByaW1hcnktYm9sZCkKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwuZGlhbG9nLXRha2Vfb3Zlcjpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwuZGlhbG9nLXRha2Vfb3Zlcjpob3ZlciwKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1vay5kaWFsb2ctY2FuY2VsOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLW9rLmRpYWxvZy1jYW5jZWw6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQuZGlhbG9nLW9rOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0LmRpYWxvZy1vazpob3ZlciwKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dC5kaWFsb2ctdGFrZV9vdmVyOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0LmRpYWxvZy10YWtlX292ZXI6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXByaW1hcnkuZGlhbG9nLWNhbmNlbDpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeS5kaWFsb2ctY2FuY2VsOmhvdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5LmUtYnRuLXR4dDpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeS5lLWJ0bi10eHQ6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwuZGlhbG9nLXRha2Vfb3Zlcjpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLWNhbmNlbC5kaWFsb2ctdGFrZV9vdmVyOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2suZGlhbG9nLWNhbmNlbDpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLW9rLmRpYWxvZy1jYW5jZWw6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dC5kaWFsb2ctb2s6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dC5kaWFsb2ctb2s6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dC5kaWFsb2ctdGFrZV9vdmVyOmZvY3VzLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQuZGlhbG9nLXRha2Vfb3Zlcjpob3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5LmRpYWxvZy1jYW5jZWw6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeS5kaWFsb2ctY2FuY2VsOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXByaW1hcnkuZS1idG4tdHh0OmZvY3VzLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXByaW1hcnkuZS1idG4tdHh0OmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWUtYS1iZy1wcmltYXJ5KQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1hY2NlbnQsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5nby1wcm8sCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYWNjZW50LAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5nby1wcm8gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1hY2NlbnQpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWFjY2VudDpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYWNjZW50OmhvdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZ28tcHJvOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZ28tcHJvOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWFjY2VudDpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1hY2NlbnQ6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmdvLXBybzpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZ28tcHJvOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1idG4tYmctYWNjZW50LWhvdmVyKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1hY2NlbnQ6YWN0aXZlLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZ28tcHJvOmFjdGl2ZSwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1hY2NlbnQ6YWN0aXZlLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5nby1wcm86YWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1idG4tYmctYWNjZW50LWFjdGl2ZSkKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtaW5mbywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24taW5mbywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1pbmZvLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLWluZm8gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1pbmZvKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1pbmZvOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1pbmZvOmhvdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1pbmZvOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1pbmZvOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWluZm86Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtaW5mbzpob3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1pbmZvOmZvY3VzLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLWluZm86aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1pbmZvLWhvdmVyKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS13YXJuaW5nLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi13YXJuaW5nLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXdhcm5pbmcsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24td2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLXdhcm5pbmcpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXdhcm5pbmc6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXdhcm5pbmc6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXdhcm5pbmc6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXdhcm5pbmc6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtd2FybmluZzpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS13YXJuaW5nOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXdhcm5pbmc6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24td2FybmluZzpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLXdhcm5pbmctaG92ZXIpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWRhbmdlciwKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24tZGFuZ2VyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWRhbmdlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1kYW5nZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1kYW5nZXIpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWRhbmdlcjpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtZGFuZ2VyOmhvdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1kYW5nZXI6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLWRhbmdlcjpob3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1kYW5nZXI6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtZGFuZ2VyOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLWRhbmdlcjpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1kYW5nZXI6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1kYW5nZXItaG92ZXIpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbiBpLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbiBpIHsKICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA1cHgKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjp2aXNpdGVkLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOnZpc2l0ZWQgewogICAgY29sb3I6IGluaXRpYWwKfQoKLmZsYXRwaWNrci1jYWxlbmRhciB7CiAgICB3aWR0aDogMjgwcHgKfQoKLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggc3Bhbi5jdXItbW9udGggewogICAgZm9udC13ZWlnaHQ6IDMwMAp9CgouZmxhdHBpY2tyLWNhbGVuZGFyIC5kYXlDb250YWluZXIgewogICAgd2lkdGg6IDI4MHB4OwogICAgbWluLXdpZHRoOiAyODBweDsKICAgIG1heC13aWR0aDogMjgwcHgKfQoKLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheXMgewogICAgd2lkdGg6IDI4MHB4Cn0KCi5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkgewogICAgbWF4LXdpZHRoOiAzN3B4OwogICAgaGVpZ2h0OiAzN3B4OwogICAgbGluZS1oZWlnaHQ6IDM3cHgKfQoKLmVsZW1lbnRvci1oaWRkZW4gewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXNjcmVlbi1vbmx5LAouc2NyZWVuLXJlYWRlci10ZXh0LAouc2NyZWVuLXJlYWRlci10ZXh0IHNwYW4sCi51aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAtMTAwMDBlbTsKICAgIHdpZHRoOiAxcHg7CiAgICBoZWlnaHQ6IDFweDsKICAgIG1hcmdpbjogLTFweDsKICAgIHBhZGRpbmc6IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICAgIGJvcmRlcjogMAp9CgouZWxlbWVudG9yLWNsZWFyZml4OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBjbGVhcjogYm90aDsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAwCn0KCi5lLWxvZ28td3JhcHBlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1lLWEtYmctbG9nbyk7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAuNzVlbTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGxpbmUtaGVpZ2h0OiAxCn0KCi5lLWxvZ28td3JhcHBlciBpIHsKICAgIGNvbG9yOiB2YXIoLS1lLWEtY29sb3ItbG9nbyk7CiAgICBmb250LXNpemU6IDFlbQp9CgouZWxlbWVudG9yICosCi5lbGVtZW50b3IgOmFmdGVyLAouZWxlbWVudG9yIDpiZWZvcmUgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveAp9CgouZWxlbWVudG9yIGEgewogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZQp9CgouZWxlbWVudG9yIGhyIHsKICAgIG1hcmdpbjogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5lbGVtZW50b3IgaW1nIHsKICAgIGhlaWdodDogYXV0bzsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICBib3gtc2hhZG93OiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yKTpub3QoLmVsZW1lbnRvci13aWRnZXQtdGhlbWUtcG9zdC1jb250ZW50KSBmaWd1cmUgewogICAgbWFyZ2luOiAwCn0KCi5lbGVtZW50b3IgZW1iZWQsCi5lbGVtZW50b3IgaWZyYW1lLAouZWxlbWVudG9yIG9iamVjdCwKLmVsZW1lbnRvciB2aWRlbyB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbjogMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgYm9yZGVyOiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLAouZWxlbWVudG9yIC5lbGVtZW50b3ItYmFja2dyb3VuZC1ob2xkZXIsCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWNvbnRhaW5lciB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB3aWR0aDogMTAwJTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgei1pbmRleDogMDsKICAgIGRpcmVjdGlvbjogbHRyCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWNvbnRhaW5lciB7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tY29udGFpbmVyLmVsZW1lbnRvci1sb2FkaW5nIHsKICAgIG9wYWNpdHk6IDAKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tZW1iZWQgewogICAgbWF4LXdpZHRoOiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLAouZWxlbWVudG9yIC5lbGVtZW50b3ItYmFja2dyb3VuZC12aWRlby1lbWJlZCwKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8taG9zdGVkIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8gewogICAgbWF4LXdpZHRoOiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1odG1sNS12aWRlbyB7CiAgICAtby1vYmplY3QtZml0OiBjb3ZlcjsKICAgIG9iamVjdC1maXQ6IGNvdmVyCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLW92ZXJsYXksCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXNsaWRlc2hvdyB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB3aWR0aDogMTAwJTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGUKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93IHsKICAgIHotaW5kZXg6IDAKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93X19zbGlkZV9faW1hZ2UgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCU7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyCn0KCi5lLWNvbi1pbm5lcj4uZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWFic29sdXRlLAouZS1jb24+LmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hYnNvbHV0ZSwKLmVsZW1lbnRvci13aWRnZXQtd3JhcD4uZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWFic29sdXRlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZQp9CgouZS1jb24taW5uZXI+LmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1maXhlZCwKLmUtY29uPi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZml4ZWQsCi5lbGVtZW50b3Itd2lkZ2V0LXdyYXA+LmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1maXhlZCB7CiAgICBwb3NpdGlvbjogZml4ZWQKfQoKLmVsZW1lbnRvci13aWRnZXQtd3JhcCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtYXV0bywKLmVsZW1lbnRvci13aWRnZXQtd3JhcCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtaW5pdGlhbCB7CiAgICBtYXgtd2lkdGg6IDEwMCUKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13cmFwIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3Itd2lkZ2V0LXRhYmxldF9fd2lkdGgtYXV0bywKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci13aWRnZXQtdGFibGV0X193aWR0aC1pbml0aWFsIHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci13aWRnZXQtbW9iaWxlX193aWR0aC1hdXRvLAogICAgLmVsZW1lbnRvci13aWRnZXQtd3JhcCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaXRpYWwgewogICAgICAgIG1heC13aWR0aDogMTAwJQogICAgfQp9CgouZWxlbWVudG9yLWVsZW1lbnQgewogICAgLS1mbGV4LWRpcmVjdGlvbjogaW5pdGlhbDsKICAgIC0tZmxleC13cmFwOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGluaXRpYWw7CiAgICAtLWFsaWduLWl0ZW1zOiBpbml0aWFsOwogICAgLS1hbGlnbi1jb250ZW50OiBpbml0aWFsOwogICAgLS1nYXA6IGluaXRpYWw7CiAgICAtLWZsZXgtYmFzaXM6IGluaXRpYWw7CiAgICAtLWZsZXgtZ3JvdzogaW5pdGlhbDsKICAgIC0tZmxleC1zaHJpbms6IGluaXRpYWw7CiAgICAtLW9yZGVyOiBpbml0aWFsOwogICAgLS1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgZmxleC1iYXNpczogdmFyKC0tZmxleC1iYXNpcyk7CiAgICBmbGV4LWdyb3c6IHZhcigtLWZsZXgtZ3Jvdyk7CiAgICBmbGV4LXNocmluazogdmFyKC0tZmxleC1zaHJpbmspOwogICAgb3JkZXI6IHZhcigtLW9yZGVyKTsKICAgIGFsaWduLXNlbGY6IHZhcigtLWFsaWduLXNlbGYpCn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYWJzb2x1dGUsCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZml4ZWQgewogICAgei1pbmRleDogMQp9CgouZWxlbWVudG9yLWVsZW1lbnQ6d2hlcmUoLmUtY29uLWZ1bGwsIC5lbGVtZW50b3Itd2lkZ2V0KSB7CiAgICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tZmxleC1kaXJlY3Rpb24pOwogICAgZmxleC13cmFwOiB2YXIoLS1mbGV4LXdyYXApOwogICAganVzdGlmeS1jb250ZW50OiB2YXIoLS1qdXN0aWZ5LWNvbnRlbnQpOwogICAgYWxpZ24taXRlbXM6IHZhcigtLWFsaWduLWl0ZW1zKTsKICAgIGFsaWduLWNvbnRlbnQ6IHZhcigtLWFsaWduLWNvbnRlbnQpOwogICAgZ2FwOiB2YXIoLS1nYXApCn0KCi5lbGVtZW50b3ItaW52aXNpYmxlIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbgp9CgouZWxlbWVudG9yLWFsaWduLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgd2lkdGg6IGF1dG8KfQoKLmVsZW1lbnRvci1hbGlnbi1yaWdodCB7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9CgouZWxlbWVudG9yLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIHdpZHRoOiBhdXRvCn0KCi5lbGVtZW50b3ItYWxpZ24tbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Cn0KCi5lbGVtZW50b3ItYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICB3aWR0aDogYXV0bwp9CgouZWxlbWVudG9yLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1idXR0b24gewogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci1jdXN0b20tZW1iZWQtcGxheSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkgaSB7CiAgICBmb250LXNpemU6IDEwMHB4OwogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDAgNnB4IHJnYmEoMCwgMCwgMCwgLjMpCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkgc3ZnIHsKICAgIGhlaWdodDogMTAwcHg7CiAgICB3aWR0aDogMTAwcHg7CiAgICBmaWxsOiAjZmZmOwogICAgZmlsdGVyOiBkcm9wLXNoYWRvdygxcHggMCA2cHggcmdiYSgwLCAwLCAwLCAuMykpCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkgaSwKLmVsZW1lbnRvci1jdXN0b20tZW1iZWQtcGxheSBzdmcgewogICAgb3BhY2l0eTogLjg7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjVzCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkuZWxlbWVudG9yLXBsYXlpbmcgaSB7CiAgICBmb250LWZhbWlseTogZWljb25zCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkuZWxlbWVudG9yLXBsYXlpbmcgaTpiZWZvcmUgewogICAgY29udGVudDogIlxlOGZiIgp9CgouZWxlbWVudG9yLWN1c3RvbS1lbWJlZC1wbGF5LmVsZW1lbnRvci1wbGF5aW5nIGksCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkuZWxlbWVudG9yLXBsYXlpbmcgc3ZnIHsKICAgIGFuaW1hdGlvbjogZWljb24tc3BpbiAycyBsaW5lYXIgaW5maW5pdGUKfQoKLmVsZW1lbnRvci10YWcgewogICAgZGlzcGxheTogaW5saW5lLWZsZXgKfQoKLmVsZW1lbnRvci1rZW4tYnVybnMgewogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMTBzOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcgp9CgouZWxlbWVudG9yLWtlbi1idXJucy0tb3V0IHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4zKQp9CgouZWxlbWVudG9yLWtlbi1idXJucy0tYWN0aXZlIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDIwcwp9CgouZWxlbWVudG9yLWtlbi1idXJucy0tYWN0aXZlLmVsZW1lbnRvci1rZW4tYnVybnMtLW91dCB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpCn0KCi5lbGVtZW50b3Ita2VuLWJ1cm5zLS1hY3RpdmUuZWxlbWVudG9yLWtlbi1idXJucy0taW4gewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjMpCn0KCkBtZWRpYSAobWluLXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tY2VudGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tcmlnaHQgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tbGVmdCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWxlZnQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWNlbnRlciB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1yaWdodCB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tbGVmdCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tcmlnaHQgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWxlZnQgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1qdXN0aWZ5IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWNlbnRlciB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1yaWdodCB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1jZW50ZXIgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1qdXN0aWZ5IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tY2VudGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLXJpZ2h0IHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1sZWZ0IHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKOnJvb3QgewogICAgLS1wYWdlLXRpdGxlLWRpc3BsYXk6IGJsb2NrCn0KCi5lbGVtZW50b3ItcGFnZS10aXRsZSwKaDEuZW50cnktdGl0bGUgewogICAgZGlzcGxheTogdmFyKC0tcGFnZS10aXRsZS1kaXNwbGF5KQp9CgpAa2V5ZnJhbWVzIGVpY29uLXNwaW4gewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpCiAgICB9CiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKQogICAgfQp9CgouZWljb24tYW5pbWF0aW9uLXNwaW4gewogICAgYW5pbWF0aW9uOiBlaWNvbi1zcGluIDJzIGxpbmVhciBpbmZpbml0ZQp9CgouZWxlbWVudG9yLXNlY3Rpb24gewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3Itc2VjdGlvbiAuZWxlbWVudG9yLWNvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXNlY3Rpb24gLmVsZW1lbnRvci1jb250YWluZXIgewogICAgICAgIGZsZXgtd3JhcDogd3JhcAogICAgfQp9CgouZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQ+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMTQwcHgKfQoKLmVsZW1lbnRvci1zZWN0aW9uLmVsZW1lbnRvci1zZWN0aW9uLXN0cmV0Y2hlZCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24taXRlbXMtdG9wPi5lbGVtZW50b3ItY29udGFpbmVyIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3Itc2VjdGlvbi5lbGVtZW50b3Itc2VjdGlvbi1pdGVtcy1taWRkbGU+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24taXRlbXMtYm90dG9tPi5lbGVtZW50b3ItY29udGFpbmVyIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci1zZWN0aW9uLmVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1mdWxsIHsKICAgICAgICBoZWlnaHQ6IDEwMHZoCiAgICB9CiAgICAuZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWZ1bGw+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgICAgIGhlaWdodDogMTAwJQogICAgfQp9CgouZWxlbWVudG9yLWJjLWZsZXgtd2lkZ2V0IC5lbGVtZW50b3Itc2VjdGlvbi1jb250ZW50LXRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLXdpZGdldC13cmFwIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3ItYmMtZmxleC13aWRnZXQgLmVsZW1lbnRvci1zZWN0aW9uLWNvbnRlbnQtbWlkZGxlPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3ItY29sdW1uPi5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgewogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLWJjLWZsZXgtd2lkZ2V0IC5lbGVtZW50b3Itc2VjdGlvbi1jb250ZW50LWJvdHRvbT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLXdpZGdldC13cmFwIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZAp9CgouZWxlbWVudG9yLXJvdyB7CiAgICB3aWR0aDogMTAwJTsKICAgIGRpc3BsYXk6IGZsZXgKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXJvdyB7CiAgICAgICAgZmxleC13cmFwOiB3cmFwCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3I6bm90KC5lbGVtZW50b3ItYmMtZmxleC13aWRnZXQpIC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgewogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC13cmFwPi5lbGVtZW50b3ItZWxlbWVudCB7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldC13cmFwLmUtc3dpcGVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gKHZhcigtLWUtY29sdW1uLW1hcmdpbi1sZWZ0LCAwcHgpICsgdmFyKC0tZS1jb2x1bW4tbWFyZ2luLXJpZ2h0LCAwcHgpKSkKfQoKLmVsZW1lbnRvci13aWRnZXQgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3Itd2lkZ2V0Om5vdCg6bGFzdC1jaGlsZCkgewogICAgbWFyZ2luLWJvdHRvbTogMjBweAp9CgouZWxlbWVudG9yLXdpZGdldDpub3QoOmxhc3QtY2hpbGQpLmVsZW1lbnRvci1hYnNvbHV0ZSwKLmVsZW1lbnRvci13aWRnZXQ6bm90KDpsYXN0LWNoaWxkKS5lbGVtZW50b3Itd2lkZ2V0X193aWR0aC1hdXRvLAouZWxlbWVudG9yLXdpZGdldDpub3QoOmxhc3QtY2hpbGQpLmVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWluaXRpYWwgewogICAgbWFyZ2luLWJvdHRvbTogMAp9CgouZWxlbWVudG9yLWNvbHVtbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBtaW4taGVpZ2h0OiAxcHg7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3ItY29sdW1uLXdyYXAgewogICAgd2lkdGg6IDEwMCU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC1uYXJyb3c+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCB7CiAgICBwYWRkaW5nOiA1cHgKfQoKLmVsZW1lbnRvci1jb2x1bW4tZ2FwLWRlZmF1bHQ+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCB7CiAgICBwYWRkaW5nOiAxMHB4Cn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC1leHRlbmRlZD4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIHsKICAgIHBhZGRpbmc6IDE1cHgKfQoKLmVsZW1lbnRvci1jb2x1bW4tZ2FwLXdpZGU+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCB7CiAgICBwYWRkaW5nOiAyMHB4Cn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC13aWRlcj4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIHsKICAgIHBhZGRpbmc6IDMwcHgKfQoKLmVsZW1lbnRvci1pbm5lci1zZWN0aW9uIC5lbGVtZW50b3ItY29sdW1uLWdhcC1ubyAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIHsKICAgIHBhZGRpbmc6IDAKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMTAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTAiXSB7CiAgICAgICAgd2lkdGg6IDEwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0xMSwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSIxMSJdIHsKICAgICAgICB3aWR0aDogMTEuMTExJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0xMiwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSIxMiJdIHsKICAgICAgICB3aWR0aDogMTIuNSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMTQsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTQiXSB7CiAgICAgICAgd2lkdGg6IDE0LjI4NSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMTYsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTYiXSB7CiAgICAgICAgd2lkdGg6IDE2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMjAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMjAiXSB7CiAgICAgICAgd2lkdGg6IDIwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0yNSwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSIyNSJdIHsKICAgICAgICB3aWR0aDogMjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItY29sLTMwLAogICAgLmVsZW1lbnRvci1jb2x1bW5bZGF0YS1jb2w9IjMwIl0gewogICAgICAgIHdpZHRoOiAzMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMzMsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMzMiXSB7CiAgICAgICAgd2lkdGg6IDMzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtNDAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iNDAiXSB7CiAgICAgICAgd2lkdGg6IDQwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC01MCwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSI1MCJdIHsKICAgICAgICB3aWR0aDogNTAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItY29sLTYwLAogICAgLmVsZW1lbnRvci1jb2x1bW5bZGF0YS1jb2w9IjYwIl0gewogICAgICAgIHdpZHRoOiA2MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtNjYsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iNjYiXSB7CiAgICAgICAgd2lkdGg6IDY2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtNzAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iNzAiXSB7CiAgICAgICAgd2lkdGg6IDcwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC03NSwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSI3NSJdIHsKICAgICAgICB3aWR0aDogNzUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItY29sLTgwLAogICAgLmVsZW1lbnRvci1jb2x1bW5bZGF0YS1jb2w9IjgwIl0gewogICAgICAgIHdpZHRoOiA4MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtODMsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iODMiXSB7CiAgICAgICAgd2lkdGg6IDgzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtOTAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iOTAiXSB7CiAgICAgICAgd2lkdGg6IDkwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0xMDAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTAwIl0gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjQ3OXB4KSB7CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMTAgewogICAgICAgIHdpZHRoOiAxMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0xMSB7CiAgICAgICAgd2lkdGg6IDExLjExMSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0xMiB7CiAgICAgICAgd2lkdGg6IDEyLjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMTQgewogICAgICAgIHdpZHRoOiAxNC4yODUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMTYgewogICAgICAgIHdpZHRoOiAxNi42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMjAgewogICAgICAgIHdpZHRoOiAyMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0yNSB7CiAgICAgICAgd2lkdGg6IDI1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXhzLTMwIHsKICAgICAgICB3aWR0aDogMzAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMzMgewogICAgICAgIHdpZHRoOiAzMy4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtNDAgewogICAgICAgIHdpZHRoOiA0MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy01MCB7CiAgICAgICAgd2lkdGg6IDUwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXhzLTYwIHsKICAgICAgICB3aWR0aDogNjAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtNjYgewogICAgICAgIHdpZHRoOiA2Ni42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtNzAgewogICAgICAgIHdpZHRoOiA3MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy03NSB7CiAgICAgICAgd2lkdGg6IDc1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXhzLTgwIHsKICAgICAgICB3aWR0aDogODAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtODMgewogICAgICAgIHdpZHRoOiA4My4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtOTAgewogICAgICAgIHdpZHRoOiA5MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0xMDAgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMTAgewogICAgICAgIHdpZHRoOiAxMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0xMSB7CiAgICAgICAgd2lkdGg6IDExLjExMSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0xMiB7CiAgICAgICAgd2lkdGg6IDEyLjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMTQgewogICAgICAgIHdpZHRoOiAxNC4yODUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMTYgewogICAgICAgIHdpZHRoOiAxNi42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMjAgewogICAgICAgIHdpZHRoOiAyMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0yNSB7CiAgICAgICAgd2lkdGg6IDI1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXNtLTMwIHsKICAgICAgICB3aWR0aDogMzAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMzMgewogICAgICAgIHdpZHRoOiAzMy4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tNDAgewogICAgICAgIHdpZHRoOiA0MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS01MCB7CiAgICAgICAgd2lkdGg6IDUwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXNtLTYwIHsKICAgICAgICB3aWR0aDogNjAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tNjYgewogICAgICAgIHdpZHRoOiA2Ni42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tNzAgewogICAgICAgIHdpZHRoOiA3MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS03NSB7CiAgICAgICAgd2lkdGg6IDc1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXNtLTgwIHsKICAgICAgICB3aWR0aDogODAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tODMgewogICAgICAgIHdpZHRoOiA4My4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tOTAgewogICAgICAgIHdpZHRoOiA5MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0xMDAgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0xMCB7CiAgICAgICAgd2lkdGg6IDEwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTExIHsKICAgICAgICB3aWR0aDogMTEuMTExJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTEyIHsKICAgICAgICB3aWR0aDogMTIuNSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0xNCB7CiAgICAgICAgd2lkdGg6IDE0LjI4NSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0xNiB7CiAgICAgICAgd2lkdGg6IDE2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0yMCB7CiAgICAgICAgd2lkdGg6IDIwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTI1IHsKICAgICAgICB3aWR0aDogMjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItbWQtMzAgewogICAgICAgIHdpZHRoOiAzMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0zMyB7CiAgICAgICAgd2lkdGg6IDMzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC00MCB7CiAgICAgICAgd2lkdGg6IDQwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTUwIHsKICAgICAgICB3aWR0aDogNTAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItbWQtNjAgewogICAgICAgIHdpZHRoOiA2MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC02NiB7CiAgICAgICAgd2lkdGg6IDY2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC03MCB7CiAgICAgICAgd2lkdGg6IDcwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTc1IHsKICAgICAgICB3aWR0aDogNzUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItbWQtODAgewogICAgICAgIHdpZHRoOiA4MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC04MyB7CiAgICAgICAgd2lkdGg6IDgzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC05MCB7CiAgICAgICAgd2lkdGg6IDkwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTEwMCB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS13aWRlc2NyZWVuPi5lbGVtZW50b3ItY29udGFpbmVyPjpmaXJzdC1jaGlsZCB7CiAgICAgICAgb3JkZXI6IDEwCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDIpIHsKICAgICAgICBvcmRlcjogOQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS13aWRlc2NyZWVuPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNCkgewogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDUpIHsKICAgICAgICBvcmRlcjogNgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS13aWRlc2NyZWVuPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNykgewogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDgpIHsKICAgICAgICBvcmRlcjogMwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS13aWRlc2NyZWVuPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMTApIHsKICAgICAgICBvcmRlcjogMQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDoxMDI1cHgpIGFuZCAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpmaXJzdC1jaGlsZCB7CiAgICAgICAgb3JkZXI6IDEwCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMikgewogICAgICAgIG9yZGVyOiA5CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMykgewogICAgICAgIG9yZGVyOiA4CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNCkgewogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNSkgewogICAgICAgIG9yZGVyOiA2CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNikgewogICAgICAgIG9yZGVyOiA1CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNykgewogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOCkgewogICAgICAgIG9yZGVyOiAzCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOSkgewogICAgICAgIG9yZGVyOiAyCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMTApIHsKICAgICAgICBvcmRlcjogMQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDotMSkgYW5kIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjVweCkgYW5kIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDIpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDMpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDQpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDUpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDYpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDcpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDgpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDkpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgb3JkZXI6IDAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOi0xKSBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDotMSkgewogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46Zmlyc3QtY2hpbGQsCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMiksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMyksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNCksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNSksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNiksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNyksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOCksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOSksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMTApIHsKICAgICAgICBvcmRlcjogMAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46Zmlyc3QtY2hpbGQgewogICAgICAgIG9yZGVyOiAxMAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDIpIHsKICAgICAgICBvcmRlcjogOQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDMpIHsKICAgICAgICBvcmRlcjogOAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDQpIHsKICAgICAgICBvcmRlcjogNwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDUpIHsKICAgICAgICBvcmRlcjogNgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDYpIHsKICAgICAgICBvcmRlcjogNQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDcpIHsKICAgICAgICBvcmRlcjogNAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDgpIHsKICAgICAgICBvcmRlcjogMwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDkpIHsKICAgICAgICBvcmRlcjogMgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgb3JkZXI6IDEKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIG9yZGVyOiAxCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbiB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKdWwuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LXdyYXA6IHdyYXAKfQoKdWwuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaW5saW5lLWl0ZW0gewogICAgd29yZC1icmVhazogYnJlYWstd29yZAp9CgouZWxlbWVudG9yLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtY29sdW1uLWdhcDogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKTsKICAgIGdyaWQtcm93LWdhcDogdmFyKC0tZ3JpZC1yb3ctZ2FwKQp9CgouZWxlbWVudG9yLWdyaWQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgbWluLXdpZHRoOiAwCn0KCi5lbGVtZW50b3ItZ3JpZC0wIC5lbGVtZW50b3ItZ3JpZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIHdvcmQtc3BhY2luZzogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKTsKICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQp9CgouZWxlbWVudG9yLWdyaWQtMCAuZWxlbWVudG9yLWdyaWQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ3JpZC1yb3ctZ2FwKTsKICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQKfQoKLmVsZW1lbnRvci1ncmlkLTEgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTIgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTMgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTQgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTUgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTYgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTcgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTggLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDgsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTkgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMCwgMWZyKQp9CgouZWxlbWVudG9yLWdyaWQtMTEgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDExLCAxZnIpCn0KCi5lbGVtZW50b3ItZ3JpZC0xMiAuZWxlbWVudG9yLWdyaWQgewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIDFmcikKfQoKQG1lZGlhIChtaW4td2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApOwogICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tMCAuZWxlbWVudG9yLWdyaWQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1ncmlkLXJvdy1nYXApOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtd2lkZXNjcmVlbi0yIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tMyAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtd2lkZXNjcmVlbi01IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tNiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTcgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtd2lkZXNjcmVlbi04IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tOSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTAsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTExIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTEyIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIDFmcikKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItZ3JpZC1sYXB0b3AtMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhcigtLWdyaWQtY29sdW1uLWdhcCk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYygtMSAqIHZhcigtLWdyaWQtcm93LWdhcCkpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTAgLmVsZW1lbnRvci1ncmlkIC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ3JpZC1yb3ctZ2FwKTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTMgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTUgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTYgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg2LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTcgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTggLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTkgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg5LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTAsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1sYXB0b3AtMTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC0xMiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEyLCAxZnIpCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0X2V4dHJhLTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApOwogICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0wIC5lbGVtZW50b3ItZ3JpZCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWdyaWQtcm93LWdhcCk7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZAogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0xIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0yIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0zIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS00IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS01IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS02IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS03IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS04IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS05IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0xMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEwLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0X2V4dHJhLTExIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC10YWJsZXRfZXh0cmEtMTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItZ3JpZC10YWJsZXQtMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhcigtLWdyaWQtY29sdW1uLWdhcCk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYygtMSAqIHZhcigtLWdyaWQtcm93LWdhcCkpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTAgLmVsZW1lbnRvci1ncmlkIC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ3JpZC1yb3ctZ2FwKTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTMgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTUgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTYgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg2LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTcgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTggLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTkgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg5LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTAsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC10YWJsZXQtMTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldC0xMiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEyLCAxZnIpCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApOwogICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0wIC5lbGVtZW50b3ItZ3JpZCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWdyaWQtcm93LWdhcCk7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZAogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0xIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0yIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0zIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS00IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS01IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS02IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS03IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS04IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS05IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0xMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEwLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTExIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGVfZXh0cmEtMTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0wIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHdvcmQtc3BhY2luZzogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKTsKICAgICAgICBtYXJnaW4tYm90dG9tOiBjYWxjKC0xICogdmFyKC0tZ3JpZC1yb3ctZ2FwKSkKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMCAuZWxlbWVudG9yLWdyaWQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1ncmlkLXJvdy1nYXApOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMyAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtNCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtNSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtNiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtNyAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtOCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDgsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtOSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0xMSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDExLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlLTEyIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIDFmcikKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6MTAyNXB4KSB7CiAgICAjZWxlbWVudG9yLWRldmljZS1tb2RlOmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiZGVza3RvcCIKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6LTEpIHsKICAgICNlbGVtZW50b3ItZGV2aWNlLW1vZGU6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICJ3aWRlc2NyZWVuIgogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMSkgewogICAgI2VsZW1lbnRvci1kZXZpY2UtbW9kZTphZnRlciB7CiAgICAgICAgY29udGVudDogImxhcHRvcCI7CiAgICAgICAgY29udGVudDogInRhYmxldF9leHRyYSIKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAjZWxlbWVudG9yLWRldmljZS1tb2RlOmFmdGVyIHsKICAgICAgICBjb250ZW50OiAidGFibGV0IgogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMSkgewogICAgI2VsZW1lbnRvci1kZXZpY2UtbW9kZTphZnRlciB7CiAgICAgICAgY29udGVudDogIm1vYmlsZV9leHRyYSIKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgICNlbGVtZW50b3ItZGV2aWNlLW1vZGU6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICJtb2JpbGUiCiAgICB9Cn0KCi5lLWNvbiB7CiAgICAtLWJvcmRlci1yYWRpdXM6IDA7CiAgICAtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogMHB4OwogICAgLS1ib3JkZXItaW5saW5lLWVuZC13aWR0aDogMHB4OwogICAgLS1ib3JkZXItYmxvY2stZW5kLXdpZHRoOiAwcHg7CiAgICAtLWJvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6IDBweDsKICAgIC0tYm9yZGVyLXN0eWxlOiBpbml0aWFsOwogICAgLS1ib3JkZXItY29sb3I6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1jb250ZW50LXdpZHRoOiBtaW4oMTAwJSwgdmFyKC0tY29udGFpbmVyLW1heC13aWR0aCwgMTE0MHB4KSk7CiAgICAtLXdpZHRoOiAxMDAlOwogICAgLS1taW4taGVpZ2h0OiBpbml0aWFsOwogICAgLS1oZWlnaHQ6IGF1dG87CiAgICAtLXRleHQtYWxpZ246IGluaXRpYWw7CiAgICAtLW1hcmdpbi1ibG9jay1zdGFydDogMHB4OwogICAgLS1tYXJnaW4taW5saW5lLWVuZDogMHB4OwogICAgLS1tYXJnaW4tYmxvY2stZW5kOiAwcHg7CiAgICAtLW1hcmdpbi1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogdmFyKC0tY29udGFpbmVyLWRlZmF1bHQtcGFkZGluZy1ibG9jay1zdGFydCwgMTBweCk7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0tY29udGFpbmVyLWRlZmF1bHQtcGFkZGluZy1pbmxpbmUtZW5kLCAxMHB4KTsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IHZhcigtLWNvbnRhaW5lci1kZWZhdWx0LXBhZGRpbmctYmxvY2stZW5kLCAxMHB4KTsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLWNvbnRhaW5lci1kZWZhdWx0LXBhZGRpbmctaW5saW5lLXN0YXJ0LCAxMHB4KTsKICAgIC0tcG9zaXRpb246IHJlbGF0aXZlOwogICAgLS16LWluZGV4OiByZXZlcnQ7CiAgICAtLW92ZXJmbG93OiB2aXNpYmxlOwogICAgLS1nYXA6IHZhcigtLXdpZGdldHMtc3BhY2luZywgMjBweCk7CiAgICAtLW92ZXJsYXktbWl4LWJsZW5kLW1vZGU6IGluaXRpYWw7CiAgICAtLW92ZXJsYXktb3BhY2l0eTogMTsKICAgIC0tb3ZlcmxheS10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1lLWNvbi1ncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOwogICAgLS1lLWNvbi1ncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCgyLCAxZnIpOwogICAgcG9zaXRpb246IHZhcigtLXBvc2l0aW9uKTsKICAgIHdpZHRoOiB2YXIoLS13aWR0aCk7CiAgICBtaW4td2lkdGg6IDA7CiAgICBtaW4taGVpZ2h0OiB2YXIoLS1taW4taGVpZ2h0KTsKICAgIGhlaWdodDogdmFyKC0taGVpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpOwogICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1iYy1tYXJnaW4tYmxvY2stc3RhcnQsIHZhcigtLW1hcmdpbi1ibG9jay1zdGFydCkpOwogICAgbWFyZ2luLWlubGluZS1lbmQ6IHZhcigtLWJjLW1hcmdpbi1pbmxpbmUtZW5kLCB2YXIoLS1tYXJnaW4taW5saW5lLWVuZCkpOwogICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tYmMtbWFyZ2luLWJsb2NrLWVuZCwgdmFyKC0tbWFyZ2luLWJsb2NrLWVuZCkpOwogICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tYmMtbWFyZ2luLWlubGluZS1zdGFydCwgdmFyKC0tbWFyZ2luLWlubGluZS1zdGFydCkpOwogICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLWJjLXBhZGRpbmctaW5saW5lLXN0YXJ0LCB2YXIoLS1wYWRkaW5nLWlubGluZS1zdGFydCkpOwogICAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1iYy1wYWRkaW5nLWlubGluZS1lbmQsIHZhcigtLXBhZGRpbmctaW5saW5lLWVuZCkpOwogICAgei1pbmRleDogdmFyKC0tei1pbmRleCk7CiAgICBvdmVyZmxvdzogdmFyKC0tb3ZlcmZsb3cpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb24sIC4zcyksIGJvcmRlciB2YXIoLS1ib3JkZXItdHJhbnNpdGlvbiwgLjNzKSwgYm94LXNoYWRvdyB2YXIoLS1ib3JkZXItdHJhbnNpdGlvbiwgLjNzKSwgdHJhbnNmb3JtIHZhcigtLWUtY29uLXRyYW5zZm9ybS10cmFuc2l0aW9uLWR1cmF0aW9uLCAuNHMpCn0KCi5lLWNvbi5lLWZsZXggewogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1mbGV4LWJhc2lzOiBhdXRvOwogICAgLS1mbGV4LWdyb3c6IDA7CiAgICAtLWZsZXgtc2hyaW5rOiAxOwogICAgZmxleDogdmFyKC0tZmxleC1ncm93KSB2YXIoLS1mbGV4LXNocmluaykgdmFyKC0tZmxleC1iYXNpcykKfQoKLmUtY29uLWZ1bGwsCi5lLWNvbj4uZS1jb24taW5uZXIgewogICAgdGV4dC1hbGlnbjogdmFyKC0tdGV4dC1hbGlnbik7CiAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1iYy1wYWRkaW5nLWJsb2NrLXN0YXJ0LCB2YXIoLS1wYWRkaW5nLWJsb2NrLXN0YXJ0KSk7CiAgICBwYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0tYmMtcGFkZGluZy1ibG9jay1lbmQsIHZhcigtLXBhZGRpbmctYmxvY2stZW5kKSkKfQoKLmUtY29uLWZ1bGwuZS1mbGV4LAouZS1jb24uZS1mbGV4Pi5lLWNvbi1pbm5lciB7CiAgICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tZmxleC1kaXJlY3Rpb24pCn0KCi5lLWNvbiwKLmUtY29uPi5lLWNvbi1pbm5lciB7CiAgICBkaXNwbGF5OiB2YXIoLS1kaXNwbGF5KQp9CgouZS1jb24uZS1ncmlkIHsKICAgIC0tZ3JpZC1qdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0OwogICAgLS1ncmlkLWFsaWduLWNvbnRlbnQ6IHN0YXJ0OwogICAgLS1ncmlkLWF1dG8tZmxvdzogcm93Cn0KCi5lLWNvbi5lLWdyaWQsCi5lLWNvbi5lLWdyaWQ+LmUtY29uLWlubmVyIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tZS1jb24tZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zKTsKICAgIGdyaWQtdGVtcGxhdGUtcm93czogdmFyKC0tZS1jb24tZ3JpZC10ZW1wbGF0ZS1yb3dzKTsKICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tZ3JpZC1qdXN0aWZ5LWNvbnRlbnQpOwogICAgYWxpZ24tY29udGVudDogdmFyKC0tZ3JpZC1hbGlnbi1jb250ZW50KTsKICAgIGdyaWQtYXV0by1mbG93OiB2YXIoLS1ncmlkLWF1dG8tZmxvdyk7CiAgICBqdXN0aWZ5LWl0ZW1zOiB2YXIoLS1qdXN0aWZ5LWl0ZW1zKTsKICAgIGFsaWduLWl0ZW1zOiB2YXIoLS1hbGlnbi1pdGVtcykKfQoKLmUtY29uLWJveGVkLmUtZmxleCB7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IG5vcm1hbDsKICAgIGFsaWduLWl0ZW1zOiBub3JtYWw7CiAgICBhbGlnbi1jb250ZW50OiBub3JtYWwKfQoKLmUtY29uLWJveGVkLmUtZ3JpZCB7CiAgICBqdXN0aWZ5LWl0ZW1zOiBsZWdhY3k7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyCn0KCi5lLWNvbi1ib3hlZCB7CiAgICB0ZXh0LWFsaWduOiBpbml0aWFsOwogICAgZ2FwOiBpbml0aWFsCn0KCi5lLWNvbi5lLWZsZXg+LmUtY29uLWlubmVyIHsKICAgIGZsZXgtd3JhcDogdmFyKC0tZmxleC13cmFwKTsKICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tanVzdGlmeS1jb250ZW50KTsKICAgIGFsaWduLWl0ZW1zOiB2YXIoLS1hbGlnbi1pdGVtcyk7CiAgICBhbGlnbi1jb250ZW50OiB2YXIoLS1hbGlnbi1jb250ZW50KTsKICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICBmbGV4LWdyb3c6IDE7CiAgICBmbGV4LXNocmluazogMTsKICAgIGFsaWduLXNlbGY6IGF1dG8KfQoKLmUtY29uLmUtZ3JpZD4uZS1jb24taW5uZXIgewogICAganVzdGlmeS1pdGVtczogdmFyKC0tanVzdGlmeS1pdGVtcyk7CiAgICBhbGlnbi1pdGVtczogdmFyKC0tYWxpZ24taXRlbXMpCn0KCi5lLWNvbj4uZS1jb24taW5uZXIgewogICAgZ2FwOiB2YXIoLS1nYXApOwogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IHZhcigtLWNvbnRlbnQtd2lkdGgpOwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMDsKICAgIHBhZGRpbmctaW5saW5lLWVuZDogMDsKICAgIGhlaWdodDogMTAwJQp9Cgo6aXMoLmVsZW1lbnRvci1zZWN0aW9uLXdyYXAsIFtkYXRhLWVsZW1lbnRvci1pZF0pPi5lLWNvbiB7CiAgICAtLW1hcmdpbi1pbmxpbmUtZW5kOiBhdXRvOwogICAgLS1tYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvOwogICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgdmFyKC0td2lkdGgpKQp9CgouZS1jb24gLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGdldCB7CiAgICBtYXJnaW4tYmxvY2stZW5kOiAwCn0KCi5lLWNvbjpiZWZvcmUsCi5lLWNvbj4uZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93OmJlZm9yZSwKLmUtY29uPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXI6YmVmb3JlLAo6aXMoLmUtY29uLCAuZS1jb24+LmUtY29uLWlubmVyKT4uZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tY29udGFpbmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiB2YXIoLS1iYWNrZ3JvdW5kLW92ZXJsYXkpOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBtaXgtYmxlbmQtbW9kZTogdmFyKC0tb3ZlcmxheS1taXgtYmxlbmQtbW9kZSk7CiAgICBvcGFjaXR5OiB2YXIoLS1vdmVybGF5LW9wYWNpdHkpOwogICAgdHJhbnNpdGlvbjogdmFyKC0tb3ZlcmxheS10cmFuc2l0aW9uLCAuM3MpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7CiAgICBib3JkZXItc3R5bGU6IHZhcigtLWJvcmRlci1zdHlsZSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aCk7CiAgICBib3JkZXItaW5saW5lLWVuZC13aWR0aDogdmFyKC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGgpOwogICAgYm9yZGVyLWJsb2NrLWVuZC13aWR0aDogdmFyKC0tYm9yZGVyLWJsb2NrLWVuZC13aWR0aCk7CiAgICBib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiB2YXIoLS1ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoKTsKICAgIHRvcDogY2FsYygwcHggLSB2YXIoLS1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGgpKTsKICAgIGxlZnQ6IGNhbGMoMHB4IC0gdmFyKC0tYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCkpOwogICAgd2lkdGg6IG1heCgxMDAlICsgdmFyKC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGgpICsgdmFyKC0tYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCksIDEwMCUpOwogICAgaGVpZ2h0OiBtYXgoMTAwJSArIHZhcigtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aCkgKyB2YXIoLS1ib3JkZXItYmxvY2stZW5kLXdpZHRoKSwgMTAwJSkKfQoKLmUtY29uOmJlZm9yZSB7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLW92ZXJsYXktdHJhbnNpdGlvbiwgLjNzKSwgYm9yZGVyLXJhZGl1cyB2YXIoLS1ib3JkZXItdHJhbnNpdGlvbiwgLjNzKSwgb3BhY2l0eSB2YXIoLS1vdmVybGF5LXRyYW5zaXRpb24sIC4zcykKfQoKLmUtY29uPi5lbGVtZW50b3ItYmFja2dyb3VuZC1zbGlkZXNob3csCjppcyguZS1jb24sIC5lLWNvbj4uZS1jb24taW5uZXIpPi5lbGVtZW50b3ItYmFja2dyb3VuZC12aWRlby1jb250YWluZXIgewogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7CiAgICBib3JkZXItc3R5bGU6IHZhcigtLWJvcmRlci1zdHlsZSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aCk7CiAgICBib3JkZXItaW5saW5lLWVuZC13aWR0aDogdmFyKC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGgpOwogICAgYm9yZGVyLWJsb2NrLWVuZC13aWR0aDogdmFyKC0tYm9yZGVyLWJsb2NrLWVuZC13aWR0aCk7CiAgICBib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiB2YXIoLS1ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoKTsKICAgIHRvcDogY2FsYygwcHggLSB2YXIoLS1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGgpKTsKICAgIGxlZnQ6IGNhbGMoMHB4IC0gdmFyKC0tYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCkpOwogICAgd2lkdGg6IG1heCgxMDAlICsgdmFyKC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGgpICsgdmFyKC0tYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCksIDEwMCUpOwogICAgaGVpZ2h0OiBtYXgoMTAwJSArIHZhcigtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aCkgKyB2YXIoLS1ib3JkZXItYmxvY2stZW5kLXdpZHRoKSwgMTAwJSkKfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIDppcyguZS1jb24sIC5lLWNvbj4uZS1jb24taW5uZXIpPi5lbGVtZW50b3ItYmFja2dyb3VuZC12aWRlby1jb250YWluZXIuZWxlbWVudG9yLWhpZGRlbi1waG9uZSB7CiAgICAgICAgZGlzcGxheTogbm9uZQogICAgfQp9Cgo6aXMoLmUtY29uLCAuZS1jb24+LmUtY29uLWlubmVyKT4uZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tY29udGFpbmVyOmJlZm9yZSB7CiAgICB6LWluZGV4OiAxCn0KCjppcyguZS1jb24sIC5lLWNvbj4uZS1jb24taW5uZXIpPi5lbGVtZW50b3ItYmFja2dyb3VuZC1zbGlkZXNob3c6YmVmb3JlIHsKICAgIHotaW5kZXg6IDIKfQoKLmUtY29uIC5lbGVtZW50b3Itd2lkZ2V0IHsKICAgIG1pbi13aWR0aDogMAp9CgouZS1jb24gLmVsZW1lbnRvci13aWRnZXQtZW1wdHksCi5lLWNvbiAuZWxlbWVudG9yLXdpZGdldC1nb29nbGVfbWFwcywKLmUtY29uIC5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLAouZS1jb24gLmVsZW1lbnRvci13aWRnZXQuZS13aWRnZXQtc3dpcGVyIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lLWNvbj4uZS1jb24taW5uZXI+LmVsZW1lbnRvci13aWRnZXQ+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyLAouZS1jb24+LmVsZW1lbnRvci13aWRnZXQ+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIGhlaWdodDogMTAwJQp9CgouZS1jb24uZS1jb24+LmUtY29uLWlubmVyPi5lbGVtZW50b3Itd2lkZ2V0LAouZWxlbWVudG9yLmVsZW1lbnRvciAuZS1jb24+LmVsZW1lbnRvci13aWRnZXQgewogICAgbWF4LXdpZHRoOiAxMDAlCn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZS1jb24uZS1mbGV4IHsKICAgICAgICAtLXdpZHRoOiAxMDAlOwogICAgICAgIC0tZmxleC13cmFwOiB3cmFwCiAgICB9Cn0KCi5lLWNvbiB7CiAgICAtLWJjLW1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tbWFyZ2luLXRvcCk7CiAgICAtLWJjLW1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLW1hcmdpbi1ib3R0b20pOwogICAgLS1iYy1tYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1tYXJnaW4tbGVmdCk7CiAgICAtLWJjLW1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1tYXJnaW4tcmlnaHQpOwogICAgLS1iYy1wYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1wYWRkaW5nLXRvcCk7CiAgICAtLWJjLXBhZGRpbmctYmxvY2stZW5kOiB2YXIoLS1wYWRkaW5nLWJvdHRvbSk7CiAgICAtLWJjLXBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1wYWRkaW5nLWxlZnQpOwogICAgLS1iYy1wYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLXBhZGRpbmctcmlnaHQpCn0KCltkaXI9cnRsXSAuZS1jb24gewogICAgLS1iYy1tYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1tYXJnaW4tcmlnaHQpOwogICAgLS1iYy1tYXJnaW4taW5saW5lLWVuZDogdmFyKC0tbWFyZ2luLWxlZnQpOwogICAgLS1iYy1wYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0tcGFkZGluZy1yaWdodCk7CiAgICAtLWJjLXBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0tcGFkZGluZy1sZWZ0KQp9CgouZWxlbWVudG9yLWZvcm0tZmllbGRzLXdyYXBwZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcAp9CgouZWxlbWVudG9yLWZvcm0tZmllbGRzLXdyYXBwZXIuZWxlbWVudG9yLWxhYmVscy1hYm92ZSAuZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3ItZmllbGQtc3ViZ3JvdXAsCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlci5lbGVtZW50b3ItbGFiZWxzLWFib3ZlIC5lbGVtZW50b3ItZmllbGQtZ3JvdXA+LmVsZW1lbnRvci1zZWxlY3Qtd3JhcHBlciwKLmVsZW1lbnRvci1mb3JtLWZpZWxkcy13cmFwcGVyLmVsZW1lbnRvci1sYWJlbHMtYWJvdmUgLmVsZW1lbnRvci1maWVsZC1ncm91cD5pbnB1dCwKLmVsZW1lbnRvci1mb3JtLWZpZWxkcy13cmFwcGVyLmVsZW1lbnRvci1sYWJlbHMtYWJvdmUgLmVsZW1lbnRvci1maWVsZC1ncm91cD50ZXh0YXJlYSB7CiAgICBmbGV4LWJhc2lzOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlci5lbGVtZW50b3ItbGFiZWxzLWlubGluZT4uZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXIsCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlci5lbGVtZW50b3ItbGFiZWxzLWlubGluZT4uZWxlbWVudG9yLWZpZWxkLWdyb3VwPmlucHV0IHsKICAgIGZsZXgtZ3JvdzogMQp9CgouZWxlbWVudG9yLWZpZWxkLWdyb3VwIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQgewogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kCn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgYm9yZGVyOiAxcHggc29saWQgIzY5NzI3ZDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgY29sb3I6ICMxZjIxMjQ7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgZmxleC1ncm93OiAxCn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsOmZvY3VzIHsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIC4xKTsKICAgIG91dGxpbmU6IDAKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cCAuZWxlbWVudG9yLWZpZWxkLXRleHR1YWw6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IGluaGVyaXQ7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsOjpwbGFjZWhvbGRlciB7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgb3BhY2l0eTogLjYKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cCAuZWxlbWVudG9yLXNlbGVjdC13cmFwcGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXIgc2VsZWN0IHsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTsKICAgIGFwcGVhcmFuY2U6IG5vbmU7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgICBmb250LXN0eWxlOiBpbmhlcml0OwogICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQ7CiAgICBsZXR0ZXItc3BhY2luZzogaW5oZXJpdDsKICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogICAgZmxleC1iYXNpczogMTAwJTsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHgKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cCAuZWxlbWVudG9yLXNlbGVjdC13cmFwcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU5MmEiOwogICAgZm9udC1mYW1pbHk6IGVpY29uczsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgcmlnaHQ6IDEwcHg7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIHRleHQtc2hhZG93OiAwIDAgM3B4IHJnYmEoMCwgMCwgMCwgLjMpCn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc2VsZWN0LW11bHRpcGxlIC5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIiCn0KCi5lbGVtZW50b3ItZmllbGQtc3ViZ3JvdXAgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcAp9CgouZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwLmVsZW1lbnRvci1zdWJncm91cC1pbmxpbmUgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gewogICAgcGFkZGluZy1yaWdodDogMTBweAp9CgouZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwOm5vdCguZWxlbWVudG9yLXN1Ymdyb3VwLWlubGluZSkgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gewogICAgZmxleC1iYXNpczogMTAwJQp9CgouZWxlbWVudG9yLWZpZWxkLXR5cGUtYWNjZXB0YW5jZSAuZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGlucHV0LAouZWxlbWVudG9yLWZpZWxkLXR5cGUtYWNjZXB0YW5jZSAuZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGxhYmVsLAouZWxlbWVudG9yLWZpZWxkLXR5cGUtY2hlY2tib3ggLmVsZW1lbnRvci1maWVsZC1zdWJncm91cCAuZWxlbWVudG9yLWZpZWxkLW9wdGlvbiBpbnB1dCwKLmVsZW1lbnRvci1maWVsZC10eXBlLWNoZWNrYm94IC5lbGVtZW50b3ItZmllbGQtc3ViZ3JvdXAgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gbGFiZWwsCi5lbGVtZW50b3ItZmllbGQtdHlwZS1yYWRpbyAuZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGlucHV0LAouZWxlbWVudG9yLWZpZWxkLXR5cGUtcmFkaW8gLmVsZW1lbnRvci1maWVsZC1zdWJncm91cCAuZWxlbWVudG9yLWZpZWxkLW9wdGlvbiBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUKfQoKLmVsZW1lbnRvci1maWVsZC1sYWJlbCB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmVsZW1lbnRvci1tYXJrLXJlcXVpcmVkIC5lbGVtZW50b3ItZmllbGQtbGFiZWw6YWZ0ZXIgewogICAgY29udGVudDogIioiOwogICAgY29sb3I6IHJlZDsKICAgIHBhZGRpbmctbGVmdDogLjJlbQp9CgouZWxlbWVudG9yLWZpZWxkLXRleHR1YWwgewogICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIG1pbi1oZWlnaHQ6IDQwcHg7CiAgICBwYWRkaW5nOiA1cHggMTRweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweAp9CgouZWxlbWVudG9yLWZpZWxkLXRleHR1YWwuZWxlbWVudG9yLXNpemUteHMgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgbWluLWhlaWdodDogMzNweDsKICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4Cn0KCi5lbGVtZW50b3ItZmllbGQtdGV4dHVhbC5lbGVtZW50b3Itc2l6ZS1tZCB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBtaW4taGVpZ2h0OiA0N3B4OwogICAgcGFkZGluZzogNnB4IDE2cHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHgKfQoKLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsLmVsZW1lbnRvci1zaXplLWxnIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIG1pbi1oZWlnaHQ6IDU5cHg7CiAgICBwYWRkaW5nOiA3cHggMjBweDsKICAgIGJvcmRlci1yYWRpdXM6IDVweAp9CgouZWxlbWVudG9yLWZpZWxkLXRleHR1YWwuZWxlbWVudG9yLXNpemUteGwgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgbWluLWhlaWdodDogNzJweDsKICAgIHBhZGRpbmc6IDhweCAyNHB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4Cn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLXN0cmV0Y2ggLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdDpub3QoLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcikgLmVsZW1lbnRvci1idXR0b24gewogICAgZmxleC1iYXNpczogMTAwJQp9CgouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1zdHJldGNoIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIgewogICAgZmxleC1iYXNpczogNTAlOwogICAgZmxleC1ncm93OiAxCn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLXN0cmV0Y2ggLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uIHsKICAgIGZsZXgtYmFzaXM6IDEwMCUKfQoKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnMsCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0IHsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnMsCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLXN0YXJ0IC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWVuZCAuZS1mb3JtX19idXR0b25zLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1lbmQgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiwKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tZW5kIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1zdGFydCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBmbGV4LWJhc2lzOiBhdXRvCn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciwKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tc3RhcnQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciB7CiAgICBmbGV4LWdyb3c6IDAKfQoKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24sCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWVuZCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24gewogICAgZmxleC1iYXNpczogYXV0bwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0cmV0Y2ggLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdDpub3QoLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcikgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIGZsZXgtYmFzaXM6IDEwMCUKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1zdHJldGNoIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIgewogICAgICAgIGZsZXgtYmFzaXM6IDUwJTsKICAgICAgICBmbGV4LWdyb3c6IDEKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1zdHJldGNoIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiB7CiAgICAgICAgZmxleC1iYXNpczogMTAwJQogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zLAogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0IHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnMsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tc3RhcnQgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnMsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdDpub3QoLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcikgLmVsZW1lbnRvci1idXR0b24sCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uLAogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0YXJ0IC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tc3RhcnQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciB7CiAgICAgICAgZmxleC1ncm93OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiwKICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciwKICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uLAogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tc3RhcnQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uIHsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvCiAgICB9Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdHJldGNoIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICBmbGV4LWJhc2lzOiAxMDAlCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tc3RyZXRjaCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyIHsKICAgICAgICBmbGV4LWJhc2lzOiA1MCU7CiAgICAgICAgZmxleC1ncm93OiAxCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tc3RyZXRjaCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24gewogICAgICAgIGZsZXgtYmFzaXM6IDEwMCUKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmUtZm9ybV9fYnV0dG9ucywKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLXN0YXJ0IC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWVuZCAuZS1mb3JtX19idXR0b25zLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWVuZCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0IHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWVuZCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiwKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdGFydCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgZmxleC1iYXNpczogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWVuZCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIgewogICAgICAgIGZsZXgtZ3JvdzogMAogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24sCiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiwKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiB7CiAgICAgICAgZmxleC1iYXNpczogYXV0bwogICAgfQp9CgouZWxlbWVudG9yLWVycm9yIC5lbGVtZW50b3ItZmllbGQgewogICAgYm9yZGVyLWNvbG9yOiAjZDk1MzRmCn0KCi5lbGVtZW50b3ItZXJyb3IgLmhlbHAtaW5saW5lIHsKICAgIGNvbG9yOiAjZDk1MzRmOwogICAgZm9udC1zaXplOiAuOWVtCn0KCi5lbGVtZW50b3ItbWVzc2FnZSB7CiAgICBtYXJnaW46IDEwcHggMDsKICAgIGZvbnQtc2l6ZTogMWVtOwogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmVsZW1lbnRvci1tZXNzYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU5MGUiOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC1mYW1pbHk6IGVpY29uczsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgbWFyZ2luLXJpZ2h0OiA1cHgKfQoKLmVsZW1lbnRvci1tZXNzYWdlLmVsZW1lbnRvci1tZXNzYWdlLWRhbmdlciB7CiAgICBjb2xvcjogI2Q5NTM0Zgp9CgouZWxlbWVudG9yLW1lc3NhZ2UuZWxlbWVudG9yLW1lc3NhZ2UtZGFuZ2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU4N2YiCn0KCi5lbGVtZW50b3ItbWVzc2FnZS5mb3JtLW1lc3NhZ2Utc3VjY2VzcyB7CiAgICBjb2xvcjogIzVjYjg1Ywp9CgouZWxlbWVudG9yLWZvcm0gLmVsZW1lbnRvci1idXR0b24gewogICAgcGFkZGluZy10b3A6IDA7CiAgICBwYWRkaW5nLWJvdHRvbTogMDsKICAgIGJvcmRlcjogbm9uZQp9CgouZWxlbWVudG9yLWZvcm0gLmVsZW1lbnRvci1idXR0b24+c3BhbiB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXhzIHsKICAgIG1pbi1oZWlnaHQ6IDMzcHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXNtIHsKICAgIG1pbi1oZWlnaHQ6IDQwcHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLW1kIHsKICAgIG1pbi1oZWlnaHQ6IDQ3cHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLWxnIHsKICAgIG1pbi1oZWlnaHQ6IDU5cHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXhsIHsKICAgIG1pbi1oZWlnaHQ6IDcycHgKfQoKLmVsZW1lbnRvci1lbGVtZW50IC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4zcywgYm9yZGVyIC4zcywgYm9yZGVyLXJhZGl1cyAuM3MsIGJveC1zaGFkb3cgLjNzLCB0cmFuc2Zvcm0gdmFyKC0tZS10cmFuc2Zvcm0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjRzKQp9CgouZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGJhY2tncm91bmQtY29sb3I6ICM2OTcyN2Q7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZpbGw6ICNmZmY7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjNzCn0KCi5lbGVtZW50b3ItYnV0dG9uOmZvY3VzLAouZWxlbWVudG9yLWJ1dHRvbjpob3ZlciwKLmVsZW1lbnRvci1idXR0b246dmlzaXRlZCB7CiAgICBjb2xvcjogI2ZmZgp9CgouZWxlbWVudG9yLWJ1dHRvbi1jb250ZW50LXdyYXBwZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5lbGVtZW50b3ItYnV0dG9uLWljb24gewogICAgZmxleC1ncm93OiAwOwogICAgb3JkZXI6IDUKfQoKLmVsZW1lbnRvci1idXR0b24taWNvbiBzdmcgewogICAgd2lkdGg6IDFlbTsKICAgIGhlaWdodDogYXV0bwp9CgouZWxlbWVudG9yLWJ1dHRvbi1pY29uIC5lLWZvbnQtaWNvbi1zdmcgewogICAgaGVpZ2h0OiAxZW0KfQoKLmVsZW1lbnRvci1idXR0b24tdGV4dCB7CiAgICBmbGV4LWdyb3c6IDE7CiAgICBvcmRlcjogMTA7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKfQoKLmVsZW1lbnRvci1idXR0b24uZWxlbWVudG9yLXNpemUteHMgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgcGFkZGluZzogMTBweCAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4Cn0KCi5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLW1kIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIHBhZGRpbmc6IDE1cHggMzBweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouZWxlbWVudG9yLWJ1dHRvbi5lbGVtZW50b3Itc2l6ZS1sZyB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBwYWRkaW5nOiAyMHB4IDQwcHg7CiAgICBib3JkZXItcmFkaXVzOiA1cHgKfQoKLmVsZW1lbnRvci1idXR0b24uZWxlbWVudG9yLXNpemUteGwgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgcGFkZGluZzogMjVweCA1MHB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4Cn0KCi5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgb3JkZXI6IDE1Cn0KCi5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgb3JkZXI6IDUKfQoKLmVsZW1lbnRvci1idXR0b24gc3BhbiB7CiAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQKfQoKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1idXR0b24taW5mbyAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlCn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYnV0dG9uLXN1Y2Nlc3MgLmVsZW1lbnRvci1idXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1Ywp9CgouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWJ1dHRvbi13YXJuaW5nIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGUKfQoKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1idXR0b24tZGFuZ2VyIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOTUzNGYKfQoKLmVsZW1lbnRvci13aWRnZXQtYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uLWluZm8gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZQp9CgouZWxlbWVudG9yLXdpZGdldC1idXR0b24gLmVsZW1lbnRvci1idXR0b24gLmVsZW1lbnRvci1idXR0b24tc3VjY2VzcyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNiODVjCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbi13YXJuaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGUKfQoKLmVsZW1lbnRvci13aWRnZXQtYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmCn0KCi5lbGVtZW50b3ItdGFiLXRpdGxlIGEgewogICAgY29sb3I6IGluaGVyaXQKfQoKLmVsZW1lbnRvci12aWV3LXN0YWNrZWQgLmVsZW1lbnRvci1pY29uIHsKICAgIHBhZGRpbmc6IC41ZW07CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjk3MjdkOwogICAgY29sb3I6ICNmZmY7CiAgICBmaWxsOiAjZmZmCn0KCi5lbGVtZW50b3Itdmlldy1mcmFtZWQgLmVsZW1lbnRvci1pY29uIHsKICAgIHBhZGRpbmc6IC41ZW07CiAgICBjb2xvcjogIzY5NzI3ZDsKICAgIGJvcmRlcjogM3B4IHNvbGlkICM2OTcyN2Q7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLWljb24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjNzOwogICAgY29sb3I6ICM2OTcyN2Q7CiAgICBmb250LXNpemU6IDUwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1pY29uOmhvdmVyIHsKICAgIGNvbG9yOiAjNjk3MjdkCn0KCi5lbGVtZW50b3ItaWNvbiBpLAouZWxlbWVudG9yLWljb24gc3ZnIHsKICAgIHdpZHRoOiAxZW07CiAgICBoZWlnaHQ6IDFlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5lbGVtZW50b3ItaWNvbiBpOmJlZm9yZSwKLmVsZW1lbnRvci1pY29uIHN2ZzpiZWZvcmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpCn0KCi5lbGVtZW50b3ItaWNvbiBpLmZhZCB7CiAgICB3aWR0aDogYXV0bwp9CgouZWxlbWVudG9yLXNoYXBlLWNpcmNsZSAuZWxlbWVudG9yLWljb24gewogICAgYm9yZGVyLXJhZGl1czogNTAlCn0KCi5lLXRyYW5zZm9ybSAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSh2YXIoLS1lLXRyYW5zZm9ybS1wZXJzcGVjdGl2ZSwgMCkpIHJvdGF0ZSh2YXIoLS1lLXRyYW5zZm9ybS1yb3RhdGVaLCAwKSkgcm90YXRlWCh2YXIoLS1lLXRyYW5zZm9ybS1yb3RhdGVYLCAwKSkgcm90YXRlWSh2YXIoLS1lLXRyYW5zZm9ybS1yb3RhdGVZLCAwKSkgdHJhbnNsYXRlKHZhcigtLWUtdHJhbnNmb3JtLXRyYW5zbGF0ZSwgMCkpIHRyYW5zbGF0ZVgodmFyKC0tZS10cmFuc2Zvcm0tdHJhbnNsYXRlWCwgMCkpIHRyYW5zbGF0ZVkodmFyKC0tZS10cmFuc2Zvcm0tdHJhbnNsYXRlWSwgMCkpIHNjYWxlWChjYWxjKHZhcigtLWUtdHJhbnNmb3JtLWZsaXBYLCAxKSAqIHZhcigtLWUtdHJhbnNmb3JtLXNjYWxlWCwgdmFyKC0tZS10cmFuc2Zvcm0tc2NhbGUsIDEpKSkpIHNjYWxlWShjYWxjKHZhcigtLWUtdHJhbnNmb3JtLWZsaXBZLCAxKSAqIHZhcigtLWUtdHJhbnNmb3JtLXNjYWxlWSwgdmFyKC0tZS10cmFuc2Zvcm0tc2NhbGUsIDEpKSkpIHNrZXdYKHZhcigtLWUtdHJhbnNmb3JtLXNrZXdYLCAwKSkgc2tld1kodmFyKC0tZS10cmFuc2Zvcm0tc2tld1ksIDApKTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHZhcigtLWUtdHJhbnNmb3JtLW9yaWdpbi15KSB2YXIoLS1lLXRyYW5zZm9ybS1vcmlnaW4teCkKfQoKLmUtY29uLmUtdHJhbnNmb3JtIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUodmFyKC0tZS1jb24tdHJhbnNmb3JtLXBlcnNwZWN0aXZlLCAwKSkgcm90YXRlKHZhcigtLWUtY29uLXRyYW5zZm9ybS1yb3RhdGVaLCAwKSkgcm90YXRlWCh2YXIoLS1lLWNvbi10cmFuc2Zvcm0tcm90YXRlWCwgMCkpIHJvdGF0ZVkodmFyKC0tZS1jb24tdHJhbnNmb3JtLXJvdGF0ZVksIDApKSB0cmFuc2xhdGUodmFyKC0tZS1jb24tdHJhbnNmb3JtLXRyYW5zbGF0ZSwgMCkpIHRyYW5zbGF0ZVgodmFyKC0tZS1jb24tdHJhbnNmb3JtLXRyYW5zbGF0ZVgsIDApKSB0cmFuc2xhdGVZKHZhcigtLWUtY29uLXRyYW5zZm9ybS10cmFuc2xhdGVZLCAwKSkgc2NhbGVYKGNhbGModmFyKC0tZS1jb24tdHJhbnNmb3JtLWZsaXBYLCAxKSAqIHZhcigtLWUtY29uLXRyYW5zZm9ybS1zY2FsZVgsIHZhcigtLWUtY29uLXRyYW5zZm9ybS1zY2FsZSwgMSkpKSkgc2NhbGVZKGNhbGModmFyKC0tZS1jb24tdHJhbnNmb3JtLWZsaXBZLCAxKSAqIHZhcigtLWUtY29uLXRyYW5zZm9ybS1zY2FsZVksIHZhcigtLWUtY29uLXRyYW5zZm9ybS1zY2FsZSwgMSkpKSkgc2tld1godmFyKC0tZS1jb24tdHJhbnNmb3JtLXNrZXdYLCAwKSkgc2tld1kodmFyKC0tZS1jb24tdHJhbnNmb3JtLXNrZXdZLCAwKSk7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB2YXIoLS1lLWNvbi10cmFuc2Zvcm0tb3JpZ2luLXkpIHZhcigtLWUtY29uLXRyYW5zZm9ybS1vcmlnaW4teCkKfQoKLmVsZW1lbnRvci1lbGVtZW50LAouZWxlbWVudG9yLWxpZ2h0Ym94IHsKICAgIC0tc3dpcGVyLXRoZW1lLWNvbG9yOiAjMDAwOwogICAgLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplOiA0NHB4OwogICAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtc2l6ZTogNnB4OwogICAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaG9yaXpvbnRhbC1nYXA6IDZweAp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1zbGlkZSBmaWd1cmUsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyIC5zd2lwZXItc2xpZGUgZmlndXJlLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIC5zd2lwZXItc2xpZGUgZmlndXJlLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLnN3aXBlci1zbGlkZSBmaWd1cmUgewogICAgbGluZS1oZWlnaHQ6IDAKfQoKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3ItbGlnaHRib3gtY29udGVudC1zb3VyY2UsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyIC5lbGVtZW50b3ItbGlnaHRib3gtY29udGVudC1zb3VyY2UsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1saWdodGJveC1jb250ZW50LXNvdXJjZSwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5lbGVtZW50b3ItbGlnaHRib3gtY29udGVudC1zb3VyY2UgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgei1pbmRleDogMTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMjVweDsKICAgIGNvbG9yOiBoc2xhKDAsIDAlLCA5My4zJSwgLjkpOwogICAgdG9wOiA1MCU7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkKfQoKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiBzdmcsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24gc3ZnLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24gc3ZnLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24gc3ZnLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiBzdmcsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHN2ZywKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiBzdmcsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24gc3ZnIHsKICAgIGZpbGw6IGhzbGEoMCwgMCUsIDkzLjMlLCAuOSk7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYgewogICAgbGVmdDogMTBweAp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCB7CiAgICByaWdodDogMTBweAp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLnN3aXBlci1idXR0b24tZGlzYWJsZWQsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24uc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLnN3aXBlci1idXR0b24tZGlzYWJsZWQsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi5zd2lwZXItYnV0dG9uLWRpc2FibGVkLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi5zd2lwZXItYnV0dG9uLWRpc2FibGVkLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi5zd2lwZXItYnV0dG9uLWRpc2FibGVkLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLnN3aXBlci1idXR0b24tZGlzYWJsZWQsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24uc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCB7CiAgICBvcGFjaXR5OiAuMwp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1pbWFnZS1zdHJldGNoIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZS1pbWFnZSwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXIgLnN3aXBlci1pbWFnZS1zdHJldGNoIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZS1pbWFnZSwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLWltYWdlLXN0cmV0Y2ggLnN3aXBlci1zbGlkZSAuc3dpcGVyLXNsaWRlLWltYWdlLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLnN3aXBlci1pbWFnZS1zdHJldGNoIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZS1pbWFnZSB7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXItY29udGFpbmVyIC5zd2lwZXItcGFnaW5hdGlvbi1jdXN0b20sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLWNvbnRhaW5lcn4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXJ+LnN3aXBlci1wYWdpbmF0aW9uLWN1c3RvbSwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXItY29udGFpbmVyfi5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbiwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXIgLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlciAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlciAuc3dpcGVyLXBhZ2luYXRpb24tY3VzdG9tLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlciAuc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5zd2lwZXItcGFnaW5hdGlvbi1jdXN0b20sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLWhvcml6b250YWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLXBhZ2luYXRpb24tY3VzdG9tLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIC5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lcn4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyfi5zd2lwZXItcGFnaW5hdGlvbi1jdXN0b20sCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXJ+LnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5zd2lwZXItcGFnaW5hdGlvbi1jdXN0b20sCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlciAuc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24sCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlcn4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXJ+LnN3aXBlci1wYWdpbmF0aW9uLWN1c3RvbSwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyfi5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbiB7CiAgICBib3R0b206IDVweAp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIuc3dpcGVyLWN1YmUgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIuc3dpcGVyLWN1YmV+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci5zd2lwZXItY3ViZSAuZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLnN3aXBlci1jdWJlfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lci5zd2lwZXItY3ViZSAuZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXIuc3dpcGVyLWN1YmV+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIuc3dpcGVyLWN1YmUgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIuc3dpcGVyLWN1YmV+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTUwJSwgMXB4KQp9CgouZWxlbWVudG9yLWVsZW1lbnQgOndoZXJlKC5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwpfi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLAouZWxlbWVudG9yLWxpZ2h0Ym94IDp3aGVyZSguc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsKX4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyB7CiAgICBib3R0b206IDVweDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLWVsZW1lbnQgOndoZXJlKC5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwpfi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQsCi5lbGVtZW50b3ItbGlnaHRib3ggOndoZXJlKC5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwpfi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgbWFyZ2luOiAwIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1ob3Jpem9udGFsLWdhcCwgNHB4KQp9CgouZWxlbWVudG9yLWVsZW1lbnQgOndoZXJlKC5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwpfi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciwKLmVsZW1lbnRvci1saWdodGJveCA6d2hlcmUoLnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbCl+LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA0cHg7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwCn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItcGFnaW5hdGlvbi1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXIsCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItcGFnaW5hdGlvbi1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyLAouZWxlbWVudG9yLWxpZ2h0Ym94LmVsZW1lbnRvci1wYWdpbmF0aW9uLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlciwKLmVsZW1lbnRvci1saWdodGJveC5lbGVtZW50b3ItcGFnaW5hdGlvbi1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyIHsKICAgIHBhZGRpbmctYm90dG9tOiAzMHB4Cn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItcGFnaW5hdGlvbi1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiwKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1wYWdpbmF0aW9uLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXBhZ2luYXRpb24tcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiwKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1wYWdpbmF0aW9uLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLXBhZ2luYXRpb24tcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLXBhZ2luYXRpb24tcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLXBhZ2luYXRpb24tcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiwKLmVsZW1lbnRvci1saWdodGJveC5lbGVtZW50b3ItcGFnaW5hdGlvbi1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHsKICAgIHRvcDogY2FsYyg1MCUgLSAzMHB4IC8gMikKfQoKLmVsZW1lbnRvci1lbGVtZW50IC5lbGVtZW50b3Itc3dpcGVyLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouZWxlbWVudG9yLWVsZW1lbnQgLmVsZW1lbnRvci1tYWluLXN3aXBlciwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLW1haW4tc3dpcGVyIHsKICAgIHBvc2l0aW9uOiBzdGF0aWMKfQoKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLAouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyLAouZWxlbWVudG9yLWxpZ2h0Ym94LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLAouZWxlbWVudG9yLWxpZ2h0Ym94LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNjBweCkKfQoKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYsCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLWxpZ2h0Ym94LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICBsZWZ0OiAwCn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAouZWxlbWVudG9yLWxpZ2h0Ym94LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1saWdodGJveC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQgewogICAgcmlnaHQ6IDAKfQoKLmVsZW1lbnRvci1saWdodGJveCB7CiAgICAtLWxpZ2h0Ym94LXVpLWNvbG9yOiBoc2xhKDAsIDAlLCA5My4zJSwgMC45KTsKICAgIC0tbGlnaHRib3gtdWktY29sb3ItaG92ZXI6ICNmZmY7CiAgICAtLWxpZ2h0Ym94LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yKTsKICAgIC0tbGlnaHRib3gtaGVhZGVyLWljb25zLXNpemU6IDIwcHg7CiAgICAtLWxpZ2h0Ym94LW5hdmlnYXRpb24taWNvbnMtc2l6ZTogMjVweAp9CgouZWxlbWVudG9yLWxpZ2h0Ym94Om5vdCguZWxlbWVudG9yLXBvcHVwLW1vZGFsKSAuZGlhbG9nLWhlYWRlciwKLmVsZW1lbnRvci1saWdodGJveDpub3QoLmVsZW1lbnRvci1wb3B1cC1tb2RhbCkgLmRpYWxvZy1tZXNzYWdlIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctaGVhZGVyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLXdpZGdldC1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLW1lc3NhZ2UgewogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuM3M7CiAgICBoZWlnaHQ6IDEwMCUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLW1lc3NhZ2UuZGlhbG9nLWxpZ2h0Ym94LW1lc3NhZ2UgewogICAgcGFkZGluZzogMAp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctbGlnaHRib3gtY2xvc2UtYnV0dG9uIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbGlnaHRib3gtaGVhZGVyLWljb25zLXNpemUpOwogICAgcmlnaHQ6IC43NWVtOwogICAgbWFyZ2luLXRvcDogMTNweDsKICAgIHBhZGRpbmc6IC4yNWVtOwogICAgei1pbmRleDogMjsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctbGlnaHRib3gtY2xvc2UtYnV0dG9uIHN2ZyB7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLWxpZ2h0Ym94LWNsb3NlLWJ1dHRvbiwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24gewogICAgY29sb3I6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yKTsKICAgIHRyYW5zaXRpb246IGFsbCAuM3M7CiAgICBvcGFjaXR5OiAxCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmRpYWxvZy1saWdodGJveC1jbG9zZS1idXR0b24gc3ZnLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiBzdmcgewogICAgZmlsbDogdmFyKC0tbGlnaHRib3gtdWktY29sb3IpCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmRpYWxvZy1saWdodGJveC1jbG9zZS1idXR0b246aG92ZXIsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1saWdodGJveC11aS1jb2xvci1ob3ZlcikKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLWxpZ2h0Ym94LWNsb3NlLWJ1dHRvbjpob3ZlciBzdmcsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uOmhvdmVyIHN2ZyB7CiAgICBmaWxsOiB2YXIoLS1saWdodGJveC11aS1jb2xvci1ob3ZlcikKfQoKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIHsKICAgIGhlaWdodDogMTAwJQp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItbGlnaHRib3gtaXRlbSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogNzBweDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBtYXJnaW46IGF1dG8KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1saWdodGJveC1pdGVtIHsKICAgICAgICBwYWRkaW5nOiA3MHB4IDAKICAgIH0KfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLWxpZ2h0Ym94LWltYWdlIHsKICAgIG1heC1oZWlnaHQ6IDEwMCU7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgIHVzZXItc2VsZWN0OiBub25lCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1saWdodGJveC1pbWFnZSwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLWxpZ2h0Ym94LWltYWdlOmhvdmVyIHsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IG5vbmU7CiAgICBib3JkZXI6IG5vbmUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLWxpZ2h0Ym94LWltYWdlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAzMHB4IHJnYmEoMCwgMCwgMCwgLjMpLCAwIDAgOHB4IC01cHggcmdiYSgwLCAwLCAwLCAuMyk7CiAgICBib3JkZXItcmFkaXVzOiAycHgKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLWxhbmRzY2FwZSwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXBvcnRyYWl0LAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tc3F1YXJlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgbWFyZ2luOiBhdXRvCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1sYW5kc2NhcGUgaWZyYW1lLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tcG9ydHJhaXQgaWZyYW1lLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tc3F1YXJlIGlmcmFtZSB7CiAgICBib3JkZXI6IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1sYW5kc2NhcGUgaWZyYW1lLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tbGFuZHNjYXBlIHZpZGVvLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tcG9ydHJhaXQgaWZyYW1lLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tcG9ydHJhaXQgdmlkZW8sCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1zcXVhcmUgaWZyYW1lLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tc3F1YXJlIHZpZGVvIHsKICAgIGFzcGVjdC1yYXRpbzogdmFyKC0tdmlkZW8tYXNwZWN0LXJhdGlvLCAxLjc3Nzc3KQp9CgpAc3VwcG9ydHMgbm90IChhc3BlY3QtcmF0aW86MS8xKSB7CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tbGFuZHNjYXBlLAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXBvcnRyYWl0LAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXNxdWFyZSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgaGVpZ2h0OiAwOwogICAgICAgIHBhZGRpbmctYm90dG9tOiBjYWxjKDEwMCUgLyB2YXIoLS12aWRlby1hc3BlY3QtcmF0aW8sIDEuNzc3NzcpKQogICAgfQogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLWxhbmRzY2FwZSBpZnJhbWUsCiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tbGFuZHNjYXBlIHZpZGVvLAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXBvcnRyYWl0IGlmcmFtZSwKICAgIC5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1wb3J0cmFpdCB2aWRlbywKICAgIC5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1zcXVhcmUgaWZyYW1lLAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXNxdWFyZSB2aWRlbyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMAogICAgfQp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tc3F1YXJlIGlmcmFtZSwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXNxdWFyZSB2aWRlbyB7CiAgICB3aWR0aDogbWluKDkwdmgsIDkwdncpOwogICAgaGVpZ2h0OiBtaW4oOTB2aCwgOTB2dykKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLWxhbmRzY2FwZSBpZnJhbWUsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1sYW5kc2NhcGUgdmlkZW8gewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtaGVpZ2h0OiA5MHZoCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1wb3J0cmFpdCBpZnJhbWUsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1wb3J0cmFpdCB2aWRlbyB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBtYXgtd2lkdGg6IDkwdncKfQoKQG1lZGlhIChtaW4td2lkdGg6MTAyNXB4KSB7CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tbGFuZHNjYXBlIHsKICAgICAgICB3aWR0aDogODV2dzsKICAgICAgICBtYXgtaGVpZ2h0OiA4NXZoCiAgICB9CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tcG9ydHJhaXQgewogICAgICAgIGhlaWdodDogODV2aDsKICAgICAgICBtYXgtd2lkdGg6IDg1dncKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tbGFuZHNjYXBlIHsKICAgICAgICB3aWR0aDogOTV2dzsKICAgICAgICBtYXgtaGVpZ2h0OiA5NXZoCiAgICB9CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tcG9ydHJhaXQgewogICAgICAgIGhlaWdodDogOTV2aDsKICAgICAgICBtYXgtd2lkdGg6IDk1dncKICAgIH0KfQoKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICAgIGxlZnQ6IDAKfQoKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0IHsKICAgIHJpZ2h0OiAwCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uIHsKICAgIHdpZHRoOiAtbW96LW1heC1jb250ZW50OwogICAgd2lkdGg6IG1heC1jb250ZW50OwogICAgY29sb3I6ICNmZmYKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b246Zm9jdXMgewogICAgb3V0bGluZS13aWR0aDogMXB4Cn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYgewogICAgaGVpZ2h0OiAxMDAlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB3aWR0aDogMTUlOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBmb250LXNpemU6IHZhcigtLWxpZ2h0Ym94LW5hdmlnYXRpb24taWNvbnMtc2l6ZSkKfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uOmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lCiAgICB9CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICAgICAgd2lkdGg6IDIwJQogICAgfQogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCBpLAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiBpIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpCiAgICB9CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fY291bnRlciB7CiAgICBjb2xvcjogY3VycmVudENvbG9yOwogICAgZm9udC1zaXplOiAuNzVlbTsKICAgIHdpZHRoOiAtbW96LW1heC1jb250ZW50OwogICAgd2lkdGg6IG1heC1jb250ZW50Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19mb290ZXIsCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgdHJhbnNpdGlvbjogLjNzCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19mb290ZXIgewogICAgY29sb3I6IHZhcigtLWxpZ2h0Ym94LXRleHQtY29sb3IpCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXIgewogICAgY29sb3I6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yKTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICBmb250LXNpemU6IHZhcigtLWxpZ2h0Ym94LWhlYWRlci1pY29ucy1zaXplKTsKICAgIHBhZGRpbmctbGVmdDogMWVtOwogICAgcGFkZGluZy1yaWdodDogMi42ZW07CiAgICB0b3A6IDA7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgei1pbmRleDogMTAKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX2hlYWRlcj5pLAouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyPnN2ZyB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBwYWRkaW5nOiAuMjVlbTsKICAgIG1hcmdpbjogMCAuMzVlbQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyPmkgewogICAgZm9udC1zaXplOiBpbmhlcml0Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXI+aTpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tbGlnaHRib3gtdWktY29sb3ItaG92ZXIpCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXI+c3ZnIHsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgZmlsbDogdmFyKC0tbGlnaHRib3gtdWktY29sb3IpOwogICAgaGVpZ2h0OiAxZW07CiAgICB3aWR0aDogMWVtCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXI+c3ZnOmhvdmVyIHsKICAgIGZpbGw6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yLWhvdmVyKQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyIC5lbGVtZW50b3Itc2xpZGVzaG93X19jb3VudGVyIHsKICAgIG1hcmdpbi1yaWdodDogYXV0bwp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyIC5lbGVtZW50b3ItaWNvbi1zaGFyZSB7CiAgICB6LWluZGV4OiA1Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1tZW51IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgd2lkdGg6IDA7CiAgICBoZWlnaHQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLW1lbnUgLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIGEgewogICAgY29sb3I6ICMwYzBkMGUKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbWluLXdpZHRoOiAyMDBweDsKICAgIHJpZ2h0OiAyLjhlbTsKICAgIHRvcDogM2VtOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIHBhZGRpbmc6IDE0cHggMjBweDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtLW9yaWdpbjogOTAlIDEwJTsKICAgIHRyYW5zaXRpb246IGFsbCAuMjVzIC4xczsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLCAwLCAwLCAuMykKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIGEgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGNvbG9yOiAjM2Y0NDRiOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDIuNTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjVzIC4xcwp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYTpob3ZlciB7CiAgICBjb2xvcjogIzAwMAp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSBpLAouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSBzdmcgewogICAgbWFyZ2luLXJpZ2h0OiAuNzVlbQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSBpIHsKICAgIGZvbnQtc2l6ZTogMS4yNWVtCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyBhIHN2ZyB7CiAgICBoZWlnaHQ6IDEuMjVlbTsKICAgIHdpZHRoOiAxLjI1ZW0KfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiIjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxcHg7CiAgICByaWdodDogLjVlbTsKICAgIGJvcmRlcjogLjQ1ZW0gc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKSBzY2FsZVgoLjcpCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19mb290ZXIgewogICAgYm90dG9tOiAwOwogICAgei1pbmRleDogNTsKICAgIHBvc2l0aW9uOiBmaXhlZAp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fZGVzY3JpcHRpb24sCi5lbGVtZW50b3Itc2xpZGVzaG93X190aXRsZSB7CiAgICBtYXJnaW46IDAKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3RpdGxlIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDAKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX2Rlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTRweAp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tdWktaGlkZGVuIC5lbGVtZW50b3Itc2xpZGVzaG93X19mb290ZXIsCi5lbGVtZW50b3Itc2xpZGVzaG93LS11aS1oaWRkZW4gLmVsZW1lbnRvci1zbGlkZXNob3dfX2hlYWRlciB7CiAgICBvcGFjaXR5OiAwOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXVpLWhpZGRlbiAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1zbGlkZXNob3ctLXVpLWhpZGRlbiAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICBvcGFjaXR5OiAwCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1mdWxsc2NyZWVuLW1vZGUgLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgewogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXpvb20tbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fZm9vdGVyLAouZWxlbWVudG9yLXNsaWRlc2hvdy0tem9vbS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuNSkKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXpvb20tbW9kZSAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1zbGlkZXNob3ctLXpvb20tbW9kZSAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICBvcGFjaXR5OiAwOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXNoYXJlLW1vZGUgLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLW1lbnUgewogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDB2dzsKICAgIGhlaWdodDogMTAwdmg7CiAgICBvcGFjaXR5OiAxOwogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuNSkKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXNoYXJlLW1vZGUgLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXNoYXJlLW1vZGUgLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzLAouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSB7CiAgICBvcGFjaXR5OiAxCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZWljb24tdHdpdHRlciB7CiAgICBjb2xvcjogIzFkYTFmMgp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgLmVpY29uLWZhY2Vib29rIHsKICAgIGNvbG9yOiAjM2I1OTk4Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZWljb24tcGludGVyZXN0IHsKICAgIGNvbG9yOiAjYmQwODFjCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZWljb24tZG93bmxvYWQtYm9sZCB7CiAgICBjb2xvcjogIzlkYTVhZQp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgLmUtZWljb24tdHdpdHRlciB7CiAgICBmaWxsOiAjMWRhMWYyCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZS1laWNvbi1mYWNlYm9vayB7CiAgICBmaWxsOiAjM2I1OTk4Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZS1laWNvbi1waW50ZXJlc3QgewogICAgZmlsbDogI2JkMDgxYwp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgLmUtZWljb24tZG93bmxvYWQtYm9sZCB7CiAgICBmaWxsOiAjOWRhNWFlCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5laWNvbi1zaGFyZS1hcnJvdyB7CiAgICB6LWluZGV4OiAyCn0KCi5hbmltYXRlZCB7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDEuMjVzCn0KCi5hbmltYXRlZC5hbmltYXRlZC1zbG93IHsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMnMKfQoKLmFuaW1hdGVkLmFuaW1hdGVkLWZhc3QgewogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuNzVzCn0KCi5hbmltYXRlZC5pbmZpbml0ZSB7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZQp9CgouYW5pbWF0ZWQucmV2ZXJzZSB7CiAgICBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOwogICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHMKfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSkgewogICAgLmFuaW1hdGVkIHsKICAgICAgICBhbmltYXRpb246IG5vbmUKICAgIH0KfQoKLmVsZW1lbnRvci1zaGFwZSB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICBkaXJlY3Rpb246IGx0cgp9CgouZWxlbWVudG9yLXNoYXBlLXRvcCB7CiAgICB0b3A6IC0xcHgKfQoKLmVsZW1lbnRvci1zaGFwZS10b3A6bm90KFtkYXRhLW5lZ2F0aXZlPWZhbHNlXSkgc3ZnIHsKICAgIHotaW5kZXg6IC0xCn0KCi5lbGVtZW50b3Itc2hhcGUtYm90dG9tIHsKICAgIGJvdHRvbTogLTFweAp9CgouZWxlbWVudG9yLXNoYXBlLWJvdHRvbTpub3QoW2RhdGEtbmVnYXRpdmU9dHJ1ZV0pIHN2ZyB7CiAgICB6LWluZGV4OiAtMQp9CgouZWxlbWVudG9yLXNoYXBlW2RhdGEtbmVnYXRpdmU9ZmFsc2VdLmVsZW1lbnRvci1zaGFwZS1ib3R0b20sCi5lbGVtZW50b3Itc2hhcGVbZGF0YS1uZWdhdGl2ZT10cnVlXS5lbGVtZW50b3Itc2hhcGUtdG9wIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykKfQoKLmVsZW1lbnRvci1zaGFwZSBzdmcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogY2FsYygxMDAlICsgMS4zcHgpOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpCn0KCi5lbGVtZW50b3Itc2hhcGUgLmVsZW1lbnRvci1zaGFwZS1maWxsIHsKICAgIGZpbGw6ICNmZmY7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZykKfQoKI3dwLWFkbWluLWJhci1lbGVtZW50b3JfZWRpdF9wYWdlPi5hYi1pdGVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU4MTMiOwogICAgZm9udC1mYW1pbHk6IGVpY29uczsKICAgIHRvcDogM3B4OwogICAgZm9udC1zaXplOiAxOHB4Cn0KCiN3cC1hZG1pbi1iYXItZWxlbWVudG9yX2VkaXRfcGFnZSAuYWItc3VibWVudSAuYWItaXRlbSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgd2lkdGg6IDIwMHB4Cn0KCiN3cC1hZG1pbi1iYXItZWxlbWVudG9yX2VkaXRfcGFnZSAuZWxlbWVudG9yLWVkaXQtbGluay10aXRsZSB7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgd2lkdGg6IDEwMCUKfQoKI3dwLWFkbWluLWJhci1lbGVtZW50b3JfZWRpdF9wYWdlIC5lbGVtZW50b3ItZWRpdC1saW5rLXR5cGUgewogICAgYmFja2dyb3VuZDogIzNmNDQ0YjsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGxpbmUtaGVpZ2h0OiA5cHg7CiAgICBtYXJnaW4tdG9wOiA2cHg7CiAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogM3B4Cn0KCiN3cC1hZG1pbi1iYXItZWxlbWVudG9yX2luc3BlY3Rvcj4uYWItaXRlbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzQ4IjsKICAgIHRvcDogMnB4Cn0KCiN3cGFkbWluYmFyICogewogICAgZm9udC1zdHlsZTogbm9ybWFsCn0KCi5wYWdlLXRlbXBsYXRlLWVsZW1lbnRvcl9jYW52YXMuZWxlbWVudG9yLXBhZ2U6YmVmb3JlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWxfX2xpbmsgewogICAgdHJhbnNpdGlvbjogbm9uZQp9CgojbGVmdC1hcmVhIHVsLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMsCi5lbGVtZW50b3ItZWRpdC1hcmVhIC5lbGVtZW50b3ItZWxlbWVudCB1bC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLAouZWxlbWVudG9yIC5lbGVtZW50b3ItZWxlbWVudCB1bC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zIHsKICAgIHBhZGRpbmc6IDAKfQoKLmUtLXVhLWFwcGxlV2Via2l0LnJ0bCB7CiAgICAtLWZsZXgtcmlnaHQ6IGZsZXgtc3RhcnQKfQoKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tcmlnaHQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXJpZ2h0IHsKICAgIC0tanVzdGlmeS1jb250ZW50OiB2YXIoLS1mbGV4LXJpZ2h0LCBmbGV4LWVuZCkKfQoKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tY2VudGVyLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1jZW50ZXIgewogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgp9CgouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1ncmlkLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1ncmlkIHsKICAgIHdpZHRoOiBhdXRvOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tanVzdGlmeS1jb250ZW50LCBzcGFjZS1iZXR3ZWVuKTsKICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC0uNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpOwogICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0uNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpCn0KCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItZ3JpZC1pdGVtLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItZ3JpZC1pdGVtLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC41ICogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKSk7CiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKQp9CgouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMAp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtdGFibGV0LS1hbGlnbi1yaWdodCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1yaWdodCB7CiAgICAgICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLWZsZXgtcmlnaHQsIGZsZXgtZW5kKQogICAgfQogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy10YWJsZXQtLWFsaWduLWNlbnRlciwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1jZW50ZXIgewogICAgICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tdGFibGV0LWNlbnRlciAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLXRhYmxldC1qdXN0aWZ5IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tdGFibGV0LXJpZ2h0IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LWNlbnRlciAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1yaWdodCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tanVzdGlmeS1jb250ZW50LCBzcGFjZS1iZXR3ZWVuKTsKICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLS41ICogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKSkKICAgIH0KICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tdGFibGV0LWNlbnRlciAuZWxlbWVudG9yLWdyaWQtaXRlbSwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tdGFibGV0LWp1c3RpZnkgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLXRhYmxldC1yaWdodCAuZWxlbWVudG9yLWdyaWQtaXRlbSwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LWNlbnRlciAuZWxlbWVudG9yLWdyaWQtaXRlbSwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LXJpZ2h0IC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgICAgICBtYXJnaW4tbGVmdDogY2FsYyguNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpOwogICAgICAgIG1hcmdpbi1yaWdodDogY2FsYyguNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtdGFibGV0LS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LWxlZnQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKICAgIH0KICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy10YWJsZXQtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLXRhYmxldC0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWdyaWQtaXRlbSwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LWxlZnQgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi10YWJsZXQtbGVmdCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLW1vYmlsZS0tYWxpZ24tcmlnaHQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtcmlnaHQgewogICAgICAgIC0tanVzdGlmeS1jb250ZW50OiB2YXIoLS1mbGV4LXJpZ2h0LCBmbGV4LWVuZCkKICAgIH0KICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtbW9iaWxlLS1hbGlnbi1jZW50ZXIsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtY2VudGVyIHsKICAgICAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLW1vYmlsZS1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1tb2JpbGUtanVzdGlmeSAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLW1vYmlsZS1yaWdodCAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtcmlnaHQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLWp1c3RpZnktY29udGVudCwgc3BhY2UtYmV0d2Vlbik7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLS41ICogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKSk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0uNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLW1vYmlsZS1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLW1vYmlsZS1qdXN0aWZ5IC5lbGVtZW50b3ItZ3JpZC1pdGVtLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1tb2JpbGUtcmlnaHQgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1yaWdodCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKQogICAgfQogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLW1vYmlsZS0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1sZWZ0IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtbW9iaWxlLS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy1tb2JpbGUtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1sZWZ0IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tbW9iaWxlLWxlZnQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgICAgIG1hcmdpbi1yaWdodDogMAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvciAuZWxlbWVudG9yLWhpZGRlbi1tb2JpbGUsCiAgICAuZWxlbWVudG9yIC5lbGVtZW50b3ItaGlkZGVuLXBob25lIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOi0xKSBhbmQgKG1heC13aWR0aDotMSkgewogICAgLmVsZW1lbnRvciAuZWxlbWVudG9yLWhpZGRlbi1tb2JpbGVfZXh0cmEgewogICAgICAgIGRpc3BsYXk6IG5vbmUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvciAuZWxlbWVudG9yLWhpZGRlbi10YWJsZXQgewogICAgICAgIGRpc3BsYXk6IG5vbmUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6LTEpIGFuZCAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yIC5lbGVtZW50b3ItaGlkZGVuLWxhcHRvcCwKICAgIC5lbGVtZW50b3IgLmVsZW1lbnRvci1oaWRkZW4tdGFibGV0X2V4dHJhIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjVweCkgYW5kIChtYXgtd2lkdGg6OTk5OTlweCkgewogICAgLmVsZW1lbnRvciAuZWxlbWVudG9yLWhpZGRlbi1kZXNrdG9wIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yIC5lbGVtZW50b3ItaGlkZGVuLXdpZGVzY3JlZW4gewogICAgICAgIGRpc3BsYXk6IG5vbmUKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1wYXRoIHsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIHRleHQtYWxpZ246IHZhcigtLWFsaWdubWVudCwgbGVmdCkKfQoKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1wYXRoIHN2ZyB7CiAgICB3aWR0aDogdmFyKC0td2lkdGgpOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICB3b3JkLXNwYWNpbmc6IHZhcigtLXdvcmQtc3BhY2luZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1yb3RhdGUsIDApKSBzY2FsZVgodmFyKC0tc2NhbGUteCwgMSkpIHNjYWxlWSh2YXIoLS1zY2FsZS15LCAxKSkKfQoKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1wYXRoIHN2ZyBwYXRoIHsKICAgIHZlY3Rvci1lZmZlY3Q6IG5vbi1zY2FsaW5nLXN0cm9rZTsKICAgIGZpbGw6IHZhcigtLXBhdGgtZmlsbCwgdHJhbnNwYXJlbnQpOwogICAgc3Ryb2tlOiB2YXIoLS1zdHJva2UtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgIHN0cm9rZS13aWR0aDogdmFyKC0tc3Ryb2tlLXdpZHRoLCAxcHgpOwogICAgdHJhbnNpdGlvbjogdmFyKC0tc3Ryb2tlLXRyYW5zaXRpb24pIHN0cm9rZSwgdmFyKC0tc3Ryb2tlLXRyYW5zaXRpb24pIGZpbGwKfQoKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1wYXRoIHN2Zzpob3ZlciBwYXRoIHsKICAgIC0tcGF0aC1maWxsOiB2YXIoLS1wYXRoLWZpbGwtaG92ZXIpOwogICAgLS1zdHJva2UtY29sb3I6IHZhcigtLXN0cm9rZS1jb2xvci1ob3Zlcik7CiAgICAtLXN0cm9rZS13aWR0aDogdmFyKC0tc3Ryb2tlLXdpZHRoLWhvdmVyKQp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggc3ZnIHRleHQgewogICAgLS1maWxsOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIGZpbGw6IHZhcigtLWZpbGwpOwogICAgZGlyZWN0aW9uOiB2YXIoLS1kaXJlY3Rpb24sIGx0cik7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uKSBzdHJva2UsIHZhcigtLXRyYW5zaXRpb24pIHN0cm9rZS13aWR0aCwgdmFyKC0tdHJhbnNpdGlvbikgZmlsbAp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggc3ZnIHRleHQ6aG92ZXIgewogICAgLS1jb2xvcjogdmFyKC0tdGV4dC1jb2xvci1ob3ZlciwgdmFyKC0tdGV4dC1jb2xvcikpOwogICAgLS1maWxsOiB2YXIoLS1jb2xvcik7CiAgICBjb2xvcjogdmFyKC0tY29sb3IpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyB7CiAgICAtLW4tdGFicy1jb2xvci1hY2NlbnQtZmFsbGJhY2s6ICM2MWNlNzA7CiAgICAtLW4tdGFicy1jb2xvci1zZWNvbmRhcnktZmFsbGJhY2s6ICM1NDU5NWY7CiAgICAtLW4tdGFicy1kZWZhdWx0LXBhZGRpbmctYmxvY2s6IDE1cHg7CiAgICAtLW4tdGFicy1kZWZhdWx0LXBhZGRpbmctaW5saW5lOiAzNXB4OwogICAgLS1uLXRhYnMtYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAtLW4tdGFicy1kaXNwbGF5OiBmbGV4OwogICAgLS1uLXRhYnMtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLW4tdGFicy1nYXA6IDEwcHg7CiAgICAtLW4tdGFicy1oZWFkaW5nLWRpc3BsYXk6IGZsZXg7CiAgICAtLW4tdGFicy1oZWFkaW5nLWRpcmVjdGlvbjogcm93OwogICAgLS1uLXRhYnMtaGVhZGluZy1ncm93OiBpbml0aWFsOwogICAgLS1uLXRhYnMtaGVhZGluZy1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tbi10YWJzLWhlYWRpbmctd2lkdGg6IGluaXRpYWw7CiAgICAtLW4tdGFicy1oZWFkaW5nLW92ZXJmbG93LXg6IGluaXRpYWw7CiAgICAtLW4tdGFicy1oZWFkaW5nLXdyYXA6IG5vd3JhcDsKICAgIC0tbi10YWJzLWJvcmRlci13aWR0aDogMXB4OwogICAgLS1uLXRhYnMtYm9yZGVyLWNvbG9yOiAjZDVkOGRjOwogICAgLS1uLXRhYnMtY29udGVudC1kaXNwbGF5OiBmbGV4OwogICAgLS1uLXRhYnMtdGl0bGUtY29sb3I6IHZhcigtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSwgdmFyKC0tbi10YWJzLWNvbG9yLXNlY29uZGFyeS1mYWxsYmFjaykpOwogICAgLS1uLXRhYnMtdGl0bGUtY29sb3ItaG92ZXI6ICNmZmY7CiAgICAtLW4tdGFicy10aXRsZS1jb2xvci1hY3RpdmU6ICNmZmY7CiAgICAtLW4tdGFicy10aXRsZS1iYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMmYzOwogICAgLS1uLXRhYnMtdGl0bGUtYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0tZS1nbG9iYWwtY29sb3ItYWNjZW50LCB2YXIoLS1uLXRhYnMtY29sb3ItYWNjZW50LWZhbGxiYWNrKSk7CiAgICAtLW4tdGFicy10aXRsZS1iYWNrZ3JvdW5kLWNvbG9yLWFjdGl2ZTogdmFyKC0tZS1nbG9iYWwtY29sb3ItYWNjZW50LCB2YXIoLS1uLXRhYnMtY29sb3ItYWNjZW50LWZhbGxiYWNrKSk7CiAgICAtLW4tdGFicy10aXRsZS13aWR0aDogaW5pdGlhbDsKICAgIC0tbi10YWJzLXRpdGxlLWhlaWdodDogaW5pdGlhbDsKICAgIC0tbi10YWJzLXRpdGxlLWZvbnQtc2l6ZTogMXJlbTsKICAgIC0tbi10YWJzLXRpdGxlLXdoaXRlLXNwYWNlOiBpbml0aWFsOwogICAgLS1uLXRhYnMtdGl0bGUtanVzdGlmeS1jb250ZW50LXRvZ2dsZTogaW5pdGlhbDsKICAgIC0tbi10YWJzLXRpdGxlLWFsaWduLWl0ZW1zLXRvZ2dsZTogY2VudGVyOwogICAgLS1uLXRhYnMtdGl0bGUtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLW4tdGFicy10aXRsZS1hbGlnbi1pdGVtczogY2VudGVyOwogICAgLS1uLXRhYnMtdGl0bGUtdGV4dC1hbGlnbjogY2VudGVyOwogICAgLS1uLXRhYnMtdGl0bGUtZGlyZWN0aW9uOiByb3c7CiAgICAtLW4tdGFicy10aXRsZS1nYXA6IDEwcHg7CiAgICAtLW4tdGFicy10aXRsZS1mbGV4LWdyb3c6IDA7CiAgICAtLW4tdGFicy10aXRsZS1mbGV4LWJhc2lzOiBjb250ZW50OwogICAgLS1uLXRhYnMtdGl0bGUtZmxleC1zaHJpbms6IGluaXRpYWw7CiAgICAtLW4tdGFicy10aXRsZS1vcmRlcjogaW5pdGlhbDsKICAgIC0tbi10YWJzLXRpdGxlLXBhZGRpbmctYmxvY2stc3RhcnQ6IHZhcigtLW4tdGFicy1kZWZhdWx0LXBhZGRpbmctYmxvY2spOwogICAgLS1uLXRhYnMtdGl0bGUtcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1uLXRhYnMtZGVmYXVsdC1wYWRkaW5nLWlubGluZSk7CiAgICAtLW4tdGFicy10aXRsZS1wYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0tbi10YWJzLWRlZmF1bHQtcGFkZGluZy1ibG9jayk7CiAgICAtLW4tdGFicy10aXRsZS1wYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0tbi10YWJzLWRlZmF1bHQtcGFkZGluZy1pbmxpbmUpOwogICAgLS1uLXRhYnMtdGl0bGUtYm9yZGVyLXJhZGl1czogaW5pdGlhbDsKICAgIC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLW4tdGFicy1pY29uLWNvbG9yOiB2YXIoLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnksIHZhcigtLW4tdGFicy1jb2xvci1zZWNvbmRhcnktZmFsbGJhY2spKTsKICAgIC0tbi10YWJzLWljb24tY29sb3ItaG92ZXI6IHZhcigtLW4tdGFicy10aXRsZS1jb2xvci1ob3Zlcik7CiAgICAtLW4tdGFicy1pY29uLWNvbG9yLWFjdGl2ZTogI2ZmZjsKICAgIC0tbi10YWJzLWljb24tZ2FwOiA1cHg7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWJzIHsKICAgIGRpc3BsYXk6IHZhcigtLW4tdGFicy1kaXNwbGF5KTsKICAgIGZsZXgtZGlyZWN0aW9uOiB2YXIoLS1uLXRhYnMtZGlyZWN0aW9uKTsKICAgIGdhcDogdmFyKC0tbi10YWJzLWdhcCk7CiAgICB0ZXh0LWFsaWduOiBzdGFydDsKICAgIG1pbi13aWR0aDogMAp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWJzLWhlYWRpbmcgewogICAgZGlzcGxheTogdmFyKC0tbi10YWJzLWhlYWRpbmctZGlzcGxheSk7CiAgICBmbGV4LWJhc2lzOiB2YXIoLS1uLXRhYnMtaGVhZGluZy13aWR0aCk7CiAgICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tbi10YWJzLWhlYWRpbmctZGlyZWN0aW9uKTsKICAgIGZsZXgtc2hyaW5rOiAwOwogICAganVzdGlmeS1jb250ZW50OiB2YXIoLS1uLXRhYnMtaGVhZGluZy1qdXN0aWZ5LWNvbnRlbnQpOwogICAgZ2FwOiB2YXIoLS1uLXRhYnMtdGl0bGUtZ2FwKTsKICAgIG92ZXJmbG93LXg6IHZhcigtLW4tdGFicy1oZWFkaW5nLW92ZXJmbG93LXgpOwogICAgZmxleC13cmFwOiB2YXIoLS1uLXRhYnMtaGVhZGluZy13cmFwKTsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsKICAgIHNjcm9sbGJhci13aWR0aDogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWJzLWhlYWRpbmc6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFicy1oZWFkaW5nLmUtc2Nyb2xsIHsKICAgIGN1cnNvcjogZ3JhYmJpbmc7CiAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmcKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFicy1oZWFkaW5nLmUtc2Nyb2xsLWFjdGl2ZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFicy1oZWFkaW5nLmUtc2Nyb2xsLWFjdGl2ZTpiZWZvcmUgewogICAgY29udGVudDogIiI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBpbnNldC1ibG9jazogMDsKICAgIGluc2V0LWlubGluZTogLTEwMDB2dzsKICAgIHotaW5kZXg6IDIKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFicy1jb250ZW50IHsKICAgIGRpc3BsYXk6IHZhcigtLW4tdGFicy1jb250ZW50LWRpc3BsYXkpOwogICAgZmxleC1ncm93OiAxOwogICAgbWluLXdpZHRoOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYnMtY29udGVudD4uZS1jb246bm90KC5lLWFjdGl2ZSkgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWJzOm5vdCguZS1hY3RpdmF0ZWQpPi5lLW4tdGFicy1jb250ZW50Pi5lLWNvbjpmaXJzdC1jaGlsZCB7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZSB7CiAgICBhbGw6IHVuc2V0OwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogdmFyKC0tbi10YWJzLXRpdGxlLWFsaWduLWl0ZW1zLXRvZ2dsZSwgdmFyKC0tbi10YWJzLXRpdGxlLWFsaWduLWl0ZW1zKSk7CiAgICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tbi10YWJzLXRpdGxlLWRpcmVjdGlvbik7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLW4tdGFicy10aXRsZS1qdXN0aWZ5LWNvbnRlbnQtdG9nZ2xlLCB2YXIoLS1uLXRhYnMtdGl0bGUtanVzdGlmeS1jb250ZW50KSk7CiAgICBnYXA6IHZhcigtLW4tdGFicy1pY29uLWdhcCk7CiAgICBib3JkZXItd2lkdGg6IHZhcigtLW4tdGFicy1ib3JkZXItd2lkdGgpOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3V0bGluZTogbm9uZTsKICAgIGZsZXgtZ3JvdzogdmFyKC0tbi10YWJzLXRpdGxlLWZsZXgtZ3Jvdyk7CiAgICBmbGV4LWJhc2lzOiB2YXIoLS1uLXRhYnMtdGl0bGUtZmxleC1iYXNpcyk7CiAgICBmbGV4LXNocmluazogdmFyKC0tbi10YWJzLXRpdGxlLWZsZXgtc2hyaW5rKTsKICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IHZhcigtLW4tdGFicy10aXRsZS1wYWRkaW5nLWJsb2NrLXN0YXJ0KTsKICAgIHBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0tbi10YWJzLXRpdGxlLXBhZGRpbmctaW5saW5lLWVuZCk7CiAgICBwYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0tbi10YWJzLXRpdGxlLXBhZGRpbmctYmxvY2stZW5kKTsKICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1uLXRhYnMtdGl0bGUtcGFkZGluZy1pbmxpbmUtc3RhcnQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbi10YWJzLXRpdGxlLWJvcmRlci1yYWRpdXMpOwogICAgaGVpZ2h0OiB2YXIoLS1uLXRhYnMtdGl0bGUtaGVpZ2h0KTsKICAgIHdpZHRoOiB2YXIoLS1uLXRhYnMtdGl0bGUtd2lkdGgpOwogICAgd2hpdGUtc3BhY2U6IHZhcigtLW4tdGFicy10aXRsZS13aGl0ZS1zcGFjZSk7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLW4tdGFicy10aXRsZS10cmFuc2l0aW9uKSwgY29sb3IgdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pLCBib3JkZXIgdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pLCBib3gtc2hhZG93IHZhcigtLW4tdGFicy10aXRsZS10cmFuc2l0aW9uKSwgdGV4dC1zaGFkb3cgdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pLCBzdHJva2UgdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pLCBzdHJva2Utd2lkdGggdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pLCAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoIHZhcigtLW4tdGFicy10aXRsZS10cmFuc2l0aW9uKSwgLXdlYmtpdC10ZXh0LXN0cm9rZS1jb2xvciB2YXIoLS1uLXRhYnMtdGl0bGUtdHJhbnNpdGlvbiksIHRyYW5zZm9ybSB2YXIoLS1uLXRhYnMtdGl0bGUtdHJhbnNpdGlvbikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlOmZvY3VzLXZpc2libGUgewogICAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZSBzcGFuIGksCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZSBzcGFuIHN2ZyB7CiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1uLXRhYnMtdGl0bGUtdHJhbnNpdGlvbiksIGZpbGwgdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZS10ZXh0IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1uLXRhYnMtdGl0bGUtZm9udC1zaXplKTsKICAgIHRleHQtYWxpZ246IHZhcigtLW4tdGFicy10aXRsZS10ZXh0LWFsaWduKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGUgLmUtbi10YWItaWNvbiB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBmbGV4LXNocmluazogMDsKICAgIG9yZGVyOiB2YXIoLS1uLXRhYnMtaWNvbi1vcmRlcik7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZSAuZS1uLXRhYi1pY29uIGkgewogICAgZm9udC1zaXplOiB2YXIoLS1uLXRhYnMtaWNvbi1zaXplLCB2YXIoLS1uLXRhYnMtdGl0bGUtZm9udC1zaXplKSkKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlIC5lLW4tdGFiLWljb24gc3ZnIHsKICAgIHdpZHRoOiB2YXIoLS1uLXRhYnMtaWNvbi1zaXplLCB2YXIoLS1uLXRhYnMtdGl0bGUtZm9udC1zaXplKSk7CiAgICBoZWlnaHQ6IHZhcigtLW4tdGFicy1pY29uLXNpemUsIHZhcigtLW4tdGFicy10aXRsZS1mb250LXNpemUpKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGUgLmUtbi10YWItaWNvbjplbXB0eSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uLXRhYnMtdGl0bGUtYmFja2dyb3VuZC1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdLAouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV0gYSB7CiAgICBjb2xvcjogdmFyKC0tbi10YWJzLXRpdGxlLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV0gLmUtbi10YWItaWNvbiBpIHsKICAgIGNvbG9yOiB2YXIoLS1uLXRhYnMtaWNvbi1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdIC5lLW4tdGFiLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhcigtLW4tdGFicy1pY29uLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV0gLmUtbi10YWItaWNvbiBpOmxhc3QtY2hpbGQsCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXSAuZS1uLXRhYi1pY29uIHN2ZzpsYXN0LWNoaWxkIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwdmgpOwogICAgaGVpZ2h0OiAwOwogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD10cnVlXSwKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0gYSB7CiAgICBjb2xvcjogdmFyKC0tbi10YWJzLXRpdGxlLWNvbG9yLWFjdGl2ZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0gLmUtbi10YWItaWNvbiBpIHsKICAgIGNvbG9yOiB2YXIoLS1uLXRhYnMtaWNvbi1jb2xvci1hY3RpdmUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPXRydWVdIC5lLW4tdGFiLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhcigtLW4tdGFicy1pY29uLWNvbG9yLWFjdGl2ZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0gLmUtbi10YWItaWNvbiBpOmZpcnN0LWNoaWxkLAouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD10cnVlXSAuZS1uLXRhYi1pY29uIHN2ZzpmaXJzdC1jaGlsZCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMHZoKTsKICAgIGhlaWdodDogMDsKICAgIG9wYWNpdHk6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV1bY2xhc3MqPWVsZW1lbnRvci1hbmltYXRpb24tXTphY3RpdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPXRydWVdW2NsYXNzKj1lbGVtZW50b3ItYW5pbWF0aW9uLV06Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPXRydWVdW2NsYXNzKj1lbGVtZW50b3ItYW5pbWF0aW9uLV06aG92ZXIgewogICAgdHJhbnNmb3JtOiBub25lOwogICAgYW5pbWF0aW9uOiBpbml0aWFsCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPWZhbHNlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIFtkYXRhLXRvdWNoLW1vZGU9ZmFsc2VdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyIGEgewogICAgY29sb3I6IHZhcigtLW4tdGFicy10aXRsZS1jb2xvci1ob3ZlcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIFtkYXRhLXRvdWNoLW1vZGU9ZmFsc2VdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyIC5lLW4tdGFiLWljb24gaSB7CiAgICBjb2xvcjogdmFyKC0tbi10YWJzLWljb24tY29sb3ItaG92ZXIpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPWZhbHNlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlciAuZS1uLXRhYi1pY29uIHN2ZyB7CiAgICBmaWxsOiB2YXIoLS1uLXRhYnMtaWNvbi1jb2xvci1ob3ZlcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIFtkYXRhLXRvdWNoLW1vZGU9dHJ1ZV0gLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV06aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPXRydWVdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyIGEgewogICAgY29sb3I6IHZhcigtLW4tdGFicy10aXRsZS1jb2xvci1hY3RpdmUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPXRydWVdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyIC5lLW4tdGFiLWljb24gaSB7CiAgICBjb2xvcjogdmFyKC0tbi10YWJzLWljb24tY29sb3ItYWN0aXZlKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgW2RhdGEtdG91Y2gtbW9kZT10cnVlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlciAuZS1uLXRhYi1pY29uIHN2ZyB7CiAgICBmaWxsOiB2YXIoLS1uLXRhYnMtaWNvbi1jb2xvci1hY3RpdmUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPXRydWVdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyIC5lLW4tdGFiLWljb24gaTpmaXJzdC1jaGlsZCwKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIFtkYXRhLXRvdWNoLW1vZGU9dHJ1ZV0gLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV06aG92ZXIgLmUtbi10YWItaWNvbiBzdmc6Zmlyc3QtY2hpbGQgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDB2aCk7CiAgICBoZWlnaHQ6IDA7CiAgICBvcGFjaXR5OiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPXRydWVdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyW2NsYXNzKj1lbGVtZW50b3ItYW5pbWF0aW9uLV06YWN0aXZlLAouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgW2RhdGEtdG91Y2gtbW9kZT10cnVlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlcltjbGFzcyo9ZWxlbWVudG9yLWFuaW1hdGlvbi1dOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgW2RhdGEtdG91Y2gtbW9kZT10cnVlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlcltjbGFzcyo9ZWxlbWVudG9yLWFuaW1hdGlvbi1dOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogbm9uZTsKICAgIGFuaW1hdGlvbjogaW5pdGlhbAp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgW2RhdGEtdG91Y2gtbW9kZT10cnVlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlciAuZS1uLXRhYi1pY29uIGk6bGFzdC1jaGlsZCwKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIFtkYXRhLXRvdWNoLW1vZGU9dHJ1ZV0gLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV06aG92ZXIgLmUtbi10YWItaWNvbiBzdmc6bGFzdC1jaGlsZCB7CiAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBvcGFjaXR5OiAxCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci13aWRnZXQtbi10YWJzPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lcj4uZS1uLXRhYnNbZGF0YS10b3VjaC1tb2RlPWZhbHNlXT4uZS1uLXRhYnMtaGVhZGluZyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uLXRhYnMtdGl0bGUtYmFja2dyb3VuZC1jb2xvci1ob3Zlcik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci13aWRnZXQtbi10YWJzPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lcj4uZS1uLXRhYnM+LmUtbi10YWJzLWhlYWRpbmcgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD10cnVlXSwKLmVsZW1lbnRvciAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldC1uLXRhYnM+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyPi5lLW4tdGFic1tkYXRhLXRvdWNoLW1vZGU9dHJ1ZV0+LmUtbi10YWJzLWhlYWRpbmcgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV06aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbi10YWJzLXRpdGxlLWJhY2tncm91bmQtY29sb3ItYWN0aXZlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUKfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy1tb2JpbGUgewogICAgICAgIC0tbi10YWJzLWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIC0tbi10YWJzLWhlYWRpbmctZGlzcGxheTogY29udGVudHM7CiAgICAgICAgLS1uLXRhYnMtY29udGVudC1kaXNwbGF5OiBjb250ZW50cwogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLW1vYmlsZSAuZS1uLXRhYnMgewogICAgICAgIGdhcDogMAogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLW1vYmlsZSAuZS1uLXRhYnMtY29udGVudD4uZS1jb24gewogICAgICAgIG9yZGVyOiB2YXIoLS1uLXRhYnMtdGl0bGUtb3JkZXIpCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbW9iaWxlIC5lLW4tdGFiLXRpdGxlIHsKICAgICAgICBvcmRlcjogdmFyKC0tbi10YWJzLXRpdGxlLW9yZGVyKTsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLW1vYmlsZSAuZS1uLXRhYi10aXRsZTpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1uLXRhYnMtdGl0bGUtZ2FwKQogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLW1vYmlsZSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPXRydWVdIHsKICAgICAgICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS1uLXRhYnMtZ2FwKQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMSkgewogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLW1vYmlsZV9leHRyYSB7CiAgICAgICAgLS1uLXRhYnMtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgLS1uLXRhYnMtaGVhZGluZy1kaXNwbGF5OiBjb250ZW50czsKICAgICAgICAtLW4tdGFicy1jb250ZW50LWRpc3BsYXk6IGNvbnRlbnRzCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbW9iaWxlX2V4dHJhIC5lLW4tdGFicyB7CiAgICAgICAgZ2FwOiAwCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbW9iaWxlX2V4dHJhIC5lLW4tdGFicy1jb250ZW50Pi5lLWNvbiB7CiAgICAgICAgb3JkZXI6IHZhcigtLW4tdGFicy10aXRsZS1vcmRlcikKICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy1tb2JpbGVfZXh0cmEgLmUtbi10YWItdGl0bGUgewogICAgICAgIG9yZGVyOiB2YXIoLS1uLXRhYnMtdGl0bGUtb3JkZXIpOwogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbW9iaWxlX2V4dHJhIC5lLW4tdGFiLXRpdGxlOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLW4tdGFicy10aXRsZS1nYXApCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbW9iaWxlX2V4dHJhIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0gewogICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLW4tdGFicy1nYXApCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLXRhYmxldCB7CiAgICAgICAgLS1uLXRhYnMtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgLS1uLXRhYnMtaGVhZGluZy1kaXNwbGF5OiBjb250ZW50czsKICAgICAgICAtLW4tdGFicy1jb250ZW50LWRpc3BsYXk6IGNvbnRlbnRzCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtdGFibGV0IC5lLW4tdGFicyB7CiAgICAgICAgZ2FwOiAwCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtdGFibGV0IC5lLW4tdGFicy1jb250ZW50Pi5lLWNvbiB7CiAgICAgICAgb3JkZXI6IHZhcigtLW4tdGFicy10aXRsZS1vcmRlcikKICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy10YWJsZXQgLmUtbi10YWItdGl0bGUgewogICAgICAgIG9yZGVyOiB2YXIoLS1uLXRhYnMtdGl0bGUtb3JkZXIpOwogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtdGFibGV0IC5lLW4tdGFiLXRpdGxlOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLW4tdGFicy10aXRsZS1nYXApCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtdGFibGV0IC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0gewogICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLW4tdGFicy1nYXApCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtdGFibGV0X2V4dHJhIHsKICAgICAgICAtLW4tdGFicy1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAtLW4tdGFicy1oZWFkaW5nLWRpc3BsYXk6IGNvbnRlbnRzOwogICAgICAgIC0tbi10YWJzLWNvbnRlbnQtZGlzcGxheTogY29udGVudHMKICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy10YWJsZXRfZXh0cmEgLmUtbi10YWJzIHsKICAgICAgICBnYXA6IDAKICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy10YWJsZXRfZXh0cmEgLmUtbi10YWJzLWNvbnRlbnQ+LmUtY29uIHsKICAgICAgICBvcmRlcjogdmFyKC0tbi10YWJzLXRpdGxlLW9yZGVyKQogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLXRhYmxldF9leHRyYSAuZS1uLXRhYi10aXRsZSB7CiAgICAgICAgb3JkZXI6IHZhcigtLW4tdGFicy10aXRsZS1vcmRlcik7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy10YWJsZXRfZXh0cmEgLmUtbi10YWItdGl0bGU6bm90KDpmaXJzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tbi10YWJzLXRpdGxlLWdhcCkKICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy10YWJsZXRfZXh0cmEgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD10cnVlXSB7CiAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tbi10YWJzLWdhcCkKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy1sYXB0b3AgewogICAgICAgIC0tbi10YWJzLWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIC0tbi10YWJzLWhlYWRpbmctZGlzcGxheTogY29udGVudHM7CiAgICAgICAgLS1uLXRhYnMtY29udGVudC1kaXNwbGF5OiBjb250ZW50cwogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLWxhcHRvcCAuZS1uLXRhYnMgewogICAgICAgIGdhcDogMAogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLWxhcHRvcCAuZS1uLXRhYnMtY29udGVudD4uZS1jb24gewogICAgICAgIG9yZGVyOiB2YXIoLS1uLXRhYnMtdGl0bGUtb3JkZXIpCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbGFwdG9wIC5lLW4tdGFiLXRpdGxlIHsKICAgICAgICBvcmRlcjogdmFyKC0tbi10YWJzLXRpdGxlLW9yZGVyKTsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLWxhcHRvcCAuZS1uLXRhYi10aXRsZTpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1uLXRhYnMtdGl0bGUtZ2FwKQogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLWxhcHRvcCAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPXRydWVdIHsKICAgICAgICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS1uLXRhYnMtZ2FwKQogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiB7CiAgICAtLW4tYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZTogMjBweDsKICAgIC0tbi1hY2NvcmRpb24tdGl0bGUtZmxleC1ncm93OiBpbml0aWFsOwogICAgLS1uLWFjY29yZGlvbi10aXRsZS1qdXN0aWZ5LWNvbnRlbnQ6IGluaXRpYWw7CiAgICAtLW4tYWNjb3JkaW9uLXRpdGxlLWljb24tb3JkZXI6IC0xOwogICAgLS1uLWFjY29yZGlvbi1ib3JkZXItd2lkdGg6IDFweDsKICAgIC0tbi1hY2NvcmRpb24tYm9yZGVyLWNvbG9yOiAjZDVkOGRjOwogICAgLS1uLWFjY29yZGlvbi1ib3JkZXItc3R5bGU6IHNvbGlkOwogICAgLS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWZsZXgtZ3JvdzogaW5pdGlhbDsKICAgIC0tbi1hY2NvcmRpb24taXRlbS10aXRsZS1zcGFjZS1iZXR3ZWVuOiAwcHg7CiAgICAtLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtZGlzdGFuY2UtZnJvbS1jb250ZW50OiAwcHg7CiAgICAtLW4tYWNjb3JkaW9uLXBhZGRpbmc6IDEwcHg7CiAgICAtLW4tYWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6IDBweDsKICAgIC0tbi1hY2NvcmRpb24taWNvbi1zaXplOiAxNXB4OwogICAgLS1uLWFjY29yZGlvbi10aXRsZS1ub3JtYWwtY29sb3I6ICMxZjIxMjQ7CiAgICAtLW4tYWNjb3JkaW9uLXRpdGxlLWhvdmVyLWNvbG9yOiAjMWYyMTI0OwogICAgLS1uLWFjY29yZGlvbi10aXRsZS1hY3RpdmUtY29sb3I6ICMxZjIxMjQ7CiAgICAtLW4tYWNjb3JkaW9uLWljb24tbm9ybWFsLWNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi10aXRsZS1ub3JtYWwtY29sb3IpOwogICAgLS1uLWFjY29yZGlvbi1pY29uLWhvdmVyLWNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi10aXRsZS1ob3Zlci1jb2xvcik7CiAgICAtLW4tYWNjb3JkaW9uLWljb24tYWN0aXZlLWNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi10aXRsZS1hY3RpdmUtY29sb3IpOwogICAgLS1uLWFjY29yZGlvbi1pY29uLWdhcDogMCAxMHB4OwogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24gZGV0YWlscz5zdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2VyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tbi1hY2NvcmRpb24taXRlbS10aXRsZS1zcGFjZS1iZXR3ZWVuKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLAo6d2hlcmUoLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbT4uZS1jb24pIHsKICAgIGJvcmRlcjogdmFyKC0tbi1hY2NvcmRpb24tYm9yZGVyLXdpZHRoKSB2YXIoLS1uLWFjY29yZGlvbi1ib3JkZXItc3R5bGUpIHZhcigtLW4tYWNjb3JkaW9uLWJvcmRlci1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiB2YXIoLS1uLWFjY29yZGlvbi1wYWRkaW5nKTsKICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tbi1hY2NvcmRpb24tdGl0bGUtanVzdGlmeS1jb250ZW50KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLW4tYWNjb3JkaW9uLWJvcmRlci1yYWRpdXMpOwogICAgZmxleC1ncm93OiB2YXIoLS1uLW1lbnUtdGl0bGUtZmxleC1ncm93KTsKICAgIGdhcDogdmFyKC0tbi1hY2NvcmRpb24taWNvbi1nYXApOwogICAgY29sb3I6IHZhcigtLW4tYWNjb3JkaW9uLXRpdGxlLW5vcm1hbC1jb2xvcik7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgY3Vyc29yOiBwb2ludGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaGVhZGVyIHsKICAgIGRpc3BsYXk6IGZsZXgKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZS1oZWFkZXIgaDEsCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaGVhZGVyIGgyLAouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWhlYWRlciBoMywKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZS1oZWFkZXIgaDQsCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaGVhZGVyIGg1LAouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWhlYWRlciBoNiwKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZS1oZWFkZXIgcCB7CiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IDA7CiAgICBtYXJnaW4tYmxvY2stZW5kOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtdGV4dCB7CiAgICBmb250LXNpemU6IHZhcigtLW4tYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZSk7CiAgICBhbGlnbi1pdGVtczogY2VudGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBvcmRlcjogdmFyKC0tbi1hY2NvcmRpb24tdGl0bGUtaWNvbi1vcmRlcik7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogLW1vei1maXQtY29udGVudDsKICAgIHdpZHRoOiBmaXQtY29udGVudAp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWljb24gc3BhbiB7CiAgICBoZWlnaHQ6IHZhcigtLW4tYWNjb3JkaW9uLWljb24tc2l6ZSk7CiAgICB3aWR0aDogYXV0bwp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWljb24gc3Bhbj5pIHsKICAgIGNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLW5vcm1hbC1jb2xvcik7CiAgICBmb250LXNpemU6IHZhcigtLW4tYWNjb3JkaW9uLWljb24tc2l6ZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZS1pY29uIHNwYW4+c3ZnIHsKICAgIGZpbGw6IHZhcigtLW4tYWNjb3JkaW9uLWljb24tbm9ybWFsLWNvbG9yKTsKICAgIGhlaWdodDogdmFyKC0tbi1hY2NvcmRpb24taWNvbi1zaXplKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlPnNwYW4gewogICAgY3Vyc29yOiBwb2ludGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW1bb3Blbl0gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZSB7CiAgICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWRpc3RhbmNlLWZyb20tY29udGVudCk7CiAgICBjb2xvcjogdmFyKC0tbi1hY2NvcmRpb24tdGl0bGUtYWN0aXZlLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtW29wZW5dIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiAuZS1vcGVuZWQgewogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtW29wZW5dIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiAuZS1jbG9zZWQgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtW29wZW5dIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiBzcGFuPmkgewogICAgY29sb3I6IHZhcigtLW4tYWNjb3JkaW9uLWljb24tYWN0aXZlLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtW29wZW5dIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiBzcGFuPnN2ZyB7CiAgICBmaWxsOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLWFjdGl2ZS1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbTpub3QoW29wZW5dKTpob3ZlciAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi10aXRsZS1ob3Zlci1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbTpub3QoW29wZW5dKTpob3ZlciAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWljb24gc3Bhbj5pIHsKICAgIGNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLWhvdmVyLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtOm5vdChbb3Blbl0pOmhvdmVyIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiBzcGFuPnN2ZyB7CiAgICBmaWxsOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLWhvdmVyLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiAuZS1vcGVuZWQgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiAuZS1jbG9zZWQgewogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiBzcGFuPnN2ZyB7CiAgICBmaWxsOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLW5vcm1hbC1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbSAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWljb24gc3Bhbj5pIHsKICAgIGNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLW5vcm1hbC1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbT5zcGFuIHsKICAgIGN1cnNvcjogcG9pbnRlcgp9"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/css2/custom.css","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.998Z","timestamp":1785130089998,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/css2/custom.css HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Ftz4hA%2FnfZR%2Bnp%2FQDrsDcTAeL%2BXv%2Fs%2BUWlQPUBZLfRdEJ2ntom7Su03IvljDkv%2BzMmvZtWXp2lMefTgTjfFw6TfRNXlozRFFXxjq7jjdnhF2eQOrPtoZ7iIB0bWmznDOa%2FMIpsKTyg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d367e37120a-OSL\r\ncontent-length: 1025\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":3978,"size_decoded":1847,"mime_type":"text/css","magic":"ASCII text, with CRLF line terminators","md5":"2462d0465891b1fbf5d11b3ff7d34df9","sha1":"276f069288fbb8b50febd06a6732c262d0627e08","sha256":"331ca63bd8628ae93360601f60e5860727b113e4089df392360b99339d7cf28f","sha512":"c688813b19e540ee31646826dd4bbef46f4eb247b1cd67dbb2cfa51f00b8959959cc2cb919afe8823c77c128c8327c24a9d099fb823f47abe369e402203b9c01","ssdeep":"","tlshash":"d781ee5ad6050087b133a6b4ab7207aaf5b95427c70242797bdcb3949ff91bd8520fcc","first_seen":"2026-07-27T04:11:05.653125Z","last_seen":"2026-07-27T05:30:59.790997Z","times_seen":3,"resource_available":false,"data":"LmNvbC00IHsNCiAgICB3aWR0aDogNDklOw0KICAgIGJhY2tncm91bmQ6ICMyYTJkMzY7DQogICAgYm9yZGVyLXJhZGl1czogMTBweDsNCiAgICBwYWRkaW5nOiAzMHB4IDE1cHggMTVweCAxNXB4Ow0KfQ0KDQouY29sLTggew0KICAgIHdpZHRoOiA0OSU7DQogICAgYmFja2dyb3VuZDogIzJhMmQzNjsNCiAgICBib3JkZXItcmFkaXVzOiAxMHB4Ow0KICAgIHBhZGRpbmc6IDUwcHggMTVweCAxNXB4IDE1cHg7DQogICAgZGlzcGxheTogZmxleDsNCiAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KfQ0KDQoucm93IHsNCiAgICBkaXNwbGF5OiBmbGV4Ow0KICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgICBmbGV4LXdyYXA6IHdyYXA7DQp9DQoNCi5wbGFuLWJveCB7DQogICAgYmFja2dyb3VuZDogIzFhMWMyNDsNCiAgICBib3JkZXItcmFkaXVzOiAxMHB4Ow0KICAgIHBhZGRpbmc6IDIwcHg7DQp9DQoNCi5wbGFuLWltZyB7DQogICAgbWF4LXdpZHRoOiA2NXB4ICFpbXBvcnRhbnQ7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIHRvcDogNTAlOw0KICAgIGxlZnQ6IDUwJTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsNCn0NCg0KLmltZy1ib3ggew0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICB3aWR0aDogMTAwJTsNCn0NCg0KLmJveC10aXRsZSB7DQogICAgY29sb3I6IHdoaXRlOw0KICAgIGZvbnQtc2l6ZTogMjJweCAhaW1wb3J0YW50Ow0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICBwYWRkaW5nLXRvcDogMzBweDsNCn0NCg0KLnBsYW4tYm94MiB7DQogICAgY29sb3I6ICNmZmY7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzJhMmQzNjsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIHBhZGRpbmc6IDhweCAxNXB4Ow0KICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICBmb250LXNpemU6IDE1cHg7DQogICAgZGlzcGxheTogZmxleDsNCiAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgIG1hcmdpbi10b3A6IDEwcHg7DQp9DQoNCi5wbGFuLWJveDItdGl0bGUgew0KICAgIG1hcmdpbi1sZWZ0OiAxMHB4Ow0KfQ0KDQouZGVzYy1ib3gtcm93IHsNCiAgICBkaXNwbGF5OiBmbGV4Ow0KICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgICBmbGV4LXdyYXA6IHdyYXA7DQogICAgd2lkdGg6IDgwJTsNCn0NCg0KLmRlc2MtY29sLTQgew0KICAgIHdpZHRoOiAxMDAlOw0KfQ0KDQouZGVzYy1jb2wtOCB7DQogICAgd2lkdGg6IDY2JTsNCn0NCg0KLmRlc2MtYm94LXRpdGxlIHsNCiAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIGNvbG9yOiAjZmZmZmZmOw0KICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSg5LCA1MywgMTAxLCAwKSAzJSwgcmdiKDM4IDU2IDk0KSAzJSwgcmdiYSg2LCAzNiwgNzUsIDEpIDQ4JSwgcmdiKDM4IDU2IDk0KSA5NyUsIHJnYmEoOSwgNjAsIDEyMCwgMCkgOTclKTsNCiAgICBwYWRkaW5nOiAwcHg7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgIGxpbmUtaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5wZXJjZW50LXRpdGxlIHsNCiAgICBtYXJnaW46IDMwcHggMHB4Ow0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgY29sb3I6IHdoaXRlOw0KICAgIHotaW5kZXg6IDEwOw0KICAgIGZvbnQtc2l6ZTogMjBweCAhaW1wb3J0YW50Ow0KfQ0KDQoucGVyY2VudC10aXRsZTo6YmVmb3JlIHsNCiAgICBjb250ZW50OiAiIjsNCiAgICBiYWNrZ3JvdW5kOiB1cmwodGhlbWUvcHJvdG9uL2Fzc2V0cy9pbWFnZXMvcGxhbmltZy1iZy5wbmcpOw0KICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOw0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGhlaWdodDogMTAwcHg7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIG1heC13aWR0aDogMTAwcHg7DQogICAgaW5zZXQ6IDA7DQogICAgdG9wOiA1cHg7DQogICAgbWFyZ2luOiBhdXRvOw0KICAgIHotaW5kZXg6IC0xOw0KfQ0KDQouZGVzYy1wbGFuLWRlc2Mgew0KICAgIG1hcmdpbjogMTVweCAwcHggMHB4Ow0KICAgIGJhY2tncm91bmQ6ICMxZjIxMmI7DQogICAgcGFkZGluZzogMTBweDsNCiAgICBib3JkZXItcmFkaXVzOiA1cHg7DQp9DQoNCi5kZXNjLXNwYW4gew0KICAgIGZsb2F0OiByaWdodDsNCiAgICBjb2xvcjogIzUwYWNmZjsNCn0NCg0KLmRlc2MtcCB7DQogICAgY29sb3I6ICNmZmZmZmY4YTsNCiAgICBmb250LXNpemU6IDE0cHg7DQp9DQoNCi5kZXNjMi1wIHsNCiAgICB0ZXh0LWFsaWduOiBqdXN0aWZ5Ow0KICAgIGZvbnQtc2l6ZTogMTNweDsNCiAgICBmb250LXdlaWdodDogMzAwOw0KICAgIHBhZGRpbmc6IDhweCAwcHg7DQogICAgbGluZS1oZWlnaHQ6IDIzcHg7DQogICAgY29sb3I6ICNmZmZmZmY4YTsNCiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsNCn0NCg0KLmRlc2MyLXBvaW50IHsNCiAgICB3aWR0aDogMTZweCAhaW1wb3J0YW50Ow0KICAgIGhlaWdodDogMTZweCAhaW1wb3J0YW50Ow0KICAgIG1hcmdpbi10b3A6IDZweDsNCiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7DQp9DQoNCkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkgew0KICAgIC5jb2wtNCB7DQogICAgICAgIHdpZHRoOiAxMDAlOw0KICAgIH0NCiAgICAuY29sLTggew0KICAgICAgICB3aWR0aDogMTAwJTsNCiAgICAgICAgbWFyZ2luLXRvcDogMjBweDsNCiAgICB9DQogICAgLnBsYW4tYm94MiB7DQogICAgICAgIHdpZHRoOiAzMCU7DQogICAgICAgIG1hcmdpbjogNXB4Ow0KICAgIH0NCiAgICAucGxhbi1ib3gtcm93IHsNCiAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgZmxleC13cmFwOiB3cmFwOw0KICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsNCiAgICB9DQp9DQoNCkBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgew0KICAgIC5wbGFuLWJveDIgew0KICAgICAgICB3aWR0aDogNDUlOw0KICAgICAgICBtYXJnaW46IDRweDsNCiAgICB9DQogICAgLnBsYW4tYm94Mi10aXRsZSB7DQogICAgICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgICB9DQogICAgLmRlc2MtY29sLTQgew0KICAgICAgICB3aWR0aDogMTAwJTsNCiAgICB9DQogICAgLmRlc2MtY29sLTggew0KICAgICAgICB3aWR0aDogMTAwJTsNCiAgICB9DQogICAgLmhlYWQtYnV0IHsNCiAgICAgICAgcGFkZGluZzogOHB4IDEycHggOHB4IDEycHggIWltcG9ydGFudDsNCiAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7DQogICAgfQ0KfQ0KDQouaGVhZC1idXQgew0KICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiB2YXIoLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOw0KICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXdlaWdodCk7DQogICAgbGluZS1oZWlnaHQ6IHZhcigtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTIwZGVnLCAjODJFOEZGIC00LjM4JSwgIzEyNjJGRiA2NS43OSUpOw0KICAgIGJveC1zaGFkb3c6IDBweCAwcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjI1KTsNCiAgICBib3JkZXItcmFkaXVzOiA2cHggNnB4IDZweCA2cHg7DQogICAgcGFkZGluZzogOHB4IDI0cHggOHB4IDI0cHg7DQogICAgY29sb3I6IHdoaXRlOw0KfQ0KDQouYm94LXN0YXQgew0KICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmZmZmYzZDsNCiAgICBwYWRkaW5nOiAyMHB4Ow0KICAgIGJvcmRlci1yYWRpdXM6IDEycHg7DQp9"}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css?family=Work+Sans%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic\u0026display=auto\u0026ver=6.4.3","fqdn":"fonts.googleapis.com","domain":"fonts.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.74","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.001Z","timestamp":1785130090001,"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 /css?family=Work+Sans%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic\u0026display=auto\u0026ver=6.4.3 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://dreamspinfluence.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 05:28:10 GMT\r\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncache-control: private, max-age=86400\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin-allow-popups\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":21357,"size_decoded":1457,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"36e08acf9200466f4b7773c2ca332e5e","sha1":"38c4271ed5e97029d248d8a8535f4b05c4cc7326","sha256":"4e42ea0caa5739b2adb380749531f497b0df9fb97efc4f8fb489a4fd9cd68c9f","sha512":"757f5e0899b5f9bec02e6f6cf4e6cd68d59566eb72daeedd1331985077e20c9d7898ebf05ae8a218f5957e6a1a32be28d81ab3aa33208ef7e4eda1027b7b5a19","ssdeep":"384:cm3h3A3+m05bmnyYmyrlmVMCmoFvmLOsmW3Jmp4W3nEF50TeFwfx:Z90inEK","tlshash":"d6a2fe51443aa154a7432ed673de3d329e9eb190b085c434bffe2c89fc6ac2a627570c","first_seen":"2025-09-21T16:47:34.875014Z","last_seen":"2026-08-01T15:38:08.000046Z","times_seen":404,"resource_available":false,"data":"LyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0K"}},"time_used":82,"timings":{"blocked":-1,"dns":2,"connect":15,"send":0,"wait":32,"receive":0,"ssl":32},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/header-footer-elementor/inc/js/frontend.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.023Z","timestamp":1785130090023,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/header-footer-elementor/inc/js/frontend.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=QhhAxrAZInhUCt%2F3h8BI6IpHMQp0MZcEKRV4ofg%2FDA902JgjxXrUfWO40p9VgCgZ%2Fjn42zfszNXq27%2BWviR1gahy7V1xc50okkwoKNdIfBP4FQMdanMyhIw3ak9IR8JciXbGYONeoQ%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ae45120a-OSL\r\ncontent-length: 3546\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":32902,"size_decoded":4374,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text","md5":"3795fe978ac942853382ac785c65ce0c","sha1":"e91c9e696ce04456b44d04065c87cc5482b147f3","sha256":"5259252aa576fa67ab78c1b54a39c090391f5f96998d14fd4767d25210b341eb","sha512":"c1670f7293d1f7cb7c02884404e36307cc7fe3086358747afac9a69a01556213753650a4c0d818e60e20415536b3a4d88d570f7384177a8f81ecd27e0ff2c6da","ssdeep":"192:85w33nAI6LNlyurLDvQaNZLVnnEhIHTEUBGESCuy6rJRvCAd7UQXN10dnNiYGUf9:dAK8FFnfed4QXN81eEL","tlshash":"8ae2008935e71031603f3a6fa6ebc09c73164067c5169a5cbdac45e85fe0a1473f2eba","first_seen":"2025-07-04T20:26:13.202425Z","last_seen":"2026-07-27T05:30:59.809236Z","times_seen":7,"resource_available":true,"data":"KGZ1bmN0aW9uKCQpIHsKCiAgICAvKioKICAgICAqIFNlYXJjaCB3aWRnZXQgSlMKICAgICAqLwoKICAgIHZhciBXaWRnZXRoZmVTZWFyY2hCdXR0b24gPSBmdW5jdGlvbigkc2NvcGUsICQpIHsKCiAgICAgICAgaWYgKCd1bmRlZmluZWQnID09IHR5cGVvZiAkc2NvcGUpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgdmFyICRpbnB1dCA9ICRzY29wZS5maW5kKCJpbnB1dC5oZmUtc2VhcmNoLWZvcm1fX2lucHV0Iik7CiAgICAgICAgdmFyICRjbGVhciA9ICRzY29wZS5maW5kKCJidXR0b24jY2xlYXIiKTsKICAgICAgICB2YXIgJGNsZWFyX3dpdGhfYnV0dG9uID0gJHNjb3BlLmZpbmQoImJ1dHRvbiNjbGVhci13aXRoLWJ1dHRvbiIpOwogICAgICAgIHZhciAkc2VhcmNoX2J1dHRvbiA9ICRzY29wZS5maW5kKCIuaGZlLXNlYXJjaC1zdWJtaXQiKTsKICAgICAgICB2YXIgJHRvZ2dsZV9zZWFyY2ggPSAkc2NvcGUuZmluZCgiLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUgaW5wdXQiKTsKCiAgICAgICAgJHNjb3BlLmZpbmQoJy5oZmUtc2VhcmNoLWljb24tdG9nZ2xlJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICRzY29wZS5maW5kKCIuaGZlLXNlYXJjaC1mb3JtX19pbnB1dCIpLnRyaWdnZXIoJ2ZvY3VzJyk7CiAgICAgICAgfSk7CgogICAgICAgICRzY29wZS5maW5kKCIuaGZlLXNlYXJjaC1mb3JtX19pbnB1dCIpLm9uKCdmb2N1cycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkc2NvcGUuZmluZCgiLmhmZS1zZWFyY2gtYnV0dG9uLXdyYXBwZXIiKS5hZGRDbGFzcygiaGZlLWlucHV0LWZvY3VzIik7CiAgICAgICAgfSk7CgogICAgICAgICRzY29wZS5maW5kKCIuaGZlLXNlYXJjaC1mb3JtX19pbnB1dCIpLmJsdXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICRzY29wZS5maW5kKCIuaGZlLXNlYXJjaC1idXR0b24td3JhcHBlciIpLnJlbW92ZUNsYXNzKCJoZmUtaW5wdXQtZm9jdXMiKTsKICAgICAgICB9KTsKCgogICAgICAgICRzZWFyY2hfYnV0dG9uLm9uKCd0b3VjaHN0YXJ0IGNsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICRpbnB1dC5zdWJtaXQoKTsKICAgICAgICB9KTsKCiAgICAgICAgJHRvZ2dsZV9zZWFyY2guY3NzKCdwYWRkaW5nLXJpZ2h0JywgJHRvZ2dsZV9zZWFyY2gubmV4dCgpLm91dGVyV2lkdGgoKSArICdweCcpOwoKCiAgICAgICAgJGlucHV0Lm9uKCdrZXl1cCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkY2xlYXIuc3R5bGUgPSAodGhpcy52YWx1ZS5sZW5ndGgpID8gJGNsZWFyLmNzcygndmlzaWJpbGl0eScsICd2aXNpYmxlJykgOiAkY2xlYXIuY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOwogICAgICAgICAgICAkY2xlYXJfd2l0aF9idXR0b24uc3R5bGUgPSAodGhpcy52YWx1ZS5sZW5ndGgpID8gJGNsZWFyX3dpdGhfYnV0dG9uLmNzcygndmlzaWJpbGl0eScsICd2aXNpYmxlJykgOiAkY2xlYXJfd2l0aF9idXR0b24uY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOwogICAgICAgICAgICAkY2xlYXJfd2l0aF9idXR0b24uY3NzKCdyaWdodCcsICRzZWFyY2hfYnV0dG9uLm91dGVyV2lkdGgoKSArICdweCcpOwogICAgICAgIH0pOwoKICAgICAgICAkY2xlYXIub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuc3R5bGUgPSAkY2xlYXIuY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOwogICAgICAgICAgICAkaW5wdXQudmFsdWUgPSAiIjsKICAgICAgICB9KTsKICAgICAgICAkY2xlYXJfd2l0aF9idXR0b24ub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuc3R5bGUgPSAkY2xlYXJfd2l0aF9idXR0b24uY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOwogICAgICAgICAgICAkaW5wdXQudmFsdWUgPSAiIjsKICAgICAgICB9KTsKCiAgICB9OwogICAgLyoqCiAgICAgKiBOYXYgTWVudSBoYW5kbGVyIEZ1bmN0aW9uLgogICAgICoKICAgICAqLwogICAgdmFyIFdpZGdldGhmZU5hdk1lbnVIYW5kbGVyID0gZnVuY3Rpb24oJHNjb3BlLCAkKSB7CgogICAgICAgIGlmICgndW5kZWZpbmVkJyA9PSB0eXBlb2YgJHNjb3BlKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIHZhciBpZCA9ICRzY29wZS5kYXRhKCdpZCcpOwogICAgICAgIHZhciB3cmFwcGVyID0gJHNjb3BlLmZpbmQoJy5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudSAnKTsKICAgICAgICB2YXIgbGF5b3V0ID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudScpLmRhdGEoJ2xheW91dCcpOwogICAgICAgIHZhciBmbHlvdXRfZGF0YSA9ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtZmx5b3V0LXdyYXBwZXInKS5kYXRhKCdmbHlvdXQtY2xhc3MnKTsKICAgICAgICB2YXIgbGFzdF9pdGVtID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudScpLmRhdGEoJ2xhc3QtaXRlbScpOwogICAgICAgIHZhciBsYXN0X2l0ZW1fZmx5b3V0ID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1mbHlvdXQtd3JhcHBlcicpLmRhdGEoJ2xhc3QtaXRlbScpOwoKICAgICAgICB2YXIgbWVudV9pdGVtc19saW5rcyA9ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbmF2LW1lbnUgbmF2IGxpIGEnKTsKICAgICAgICB2YXIgbWVudV9pdGVtc19saW5rc19mbHlvdXQgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLWZseW91dC13cmFwcGVyIGxpIGEnKTsKICAgICAgICBpZiAobWVudV9pdGVtc19saW5rcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIF9oYW5kbGVfY3VycmVudF9tZW51X2l0ZW1fY2xhc3MobWVudV9pdGVtc19saW5rcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAobWVudV9pdGVtc19saW5rc19mbHlvdXQubGVuZ3RoID4gMCkgewogICAgICAgICAgICBfaGFuZGxlX2N1cnJlbnRfbWVudV9pdGVtX2NsYXNzKG1lbnVfaXRlbXNfbGlua3NfZmx5b3V0KTsKICAgICAgICB9CgogICAgICAgICQoJ2Rpdi5oZmUtaGFzLXN1Ym1lbnUtY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ3N1Yi1tZW51LWFjdGl2ZScpOwoKICAgICAgICBfdG9nZ2xlQ2xpY2soaWQpOwoKICAgICAgICBfaGFuZGxlUG9seWxhbmdTd2l0Y2hlcigkc2NvcGUpOwoKICAgICAgICBfaGFuZGxlU2luZ2xlUGFnZU1lbnUoaWQsIGxheW91dCk7CgogICAgICAgIGlmICgnaG9yaXpvbnRhbCcgIT09IGxheW91dCkgewoKICAgICAgICAgICAgX2V2ZW50Q2xpY2soaWQpOwogICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiA3NjdweCApIikubWF0Y2hlcykgewoKICAgICAgICAgICAgX2V2ZW50Q2xpY2soaWQpOwogICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgIF9ldmVudENsaWNrKGlkKTsKICAgICAgICB9CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtZmx5b3V0LXRyaWdnZXIgLmhmZS1uYXYtbWVudS1pY29uJykub2ZmKCdjbGljayBrZXl1cCcpLm9uKCdjbGljayBrZXl1cCcsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgX29wZW5NZW51KGlkKTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1mbHlvdXQtY2xvc2UnKS5vZmYoJ2NsaWNrIGtleXVwJykub24oJ2NsaWNrIGtleXVwJywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICBfY2xvc2VNZW51KGlkKTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1mbHlvdXQtb3ZlcmxheScpLm9mZignY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIF9jbG9zZU1lbnUoaWQpOwogICAgICAgIH0pOwoKCiAgICAgICAgJHNjb3BlLmZpbmQoJy5zdWItbWVudScpLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgICAgICB2YXIgcGFyZW50ID0gJCh0aGlzKS5jbG9zZXN0KCcubWVudS1pdGVtJyk7CgogICAgICAgICAgICAkc2NvcGUuZmluZChwYXJlbnQpLmFkZENsYXNzKCdwYXJlbnQtaGFzLWNoaWxkJyk7CiAgICAgICAgICAgICRzY29wZS5maW5kKHBhcmVudCkucmVtb3ZlQ2xhc3MoJ3BhcmVudC1oYXMtbm8tY2hpbGQnKTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKCgnY3RhJyA9PSBsYXN0X2l0ZW0gfHwgJ2N0YScgPT0gbGFzdF9pdGVtX2ZseW91dCkgJiYgJ2V4cGFuZGlibGUnICE9IGxheW91dCkgewogICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBsaS5tZW51LWl0ZW06bGFzdC1jaGlsZCBhLmhmZS1tZW51LWl0ZW0nKS5wYXJlbnQoKS5hZGRDbGFzcygnZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyJyk7CiAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGxpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLmFkZENsYXNzKCdlbGVtZW50b3ItYnV0dG9uJyk7CiAgICAgICAgfQoKICAgICAgICBfYm9yZGVyQ2xhc3MoaWQpOwoKICAgICAgICAkKHdpbmRvdykub24oJ3Jlc2l6ZScsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgaWYgKCdob3Jpem9udGFsJyAhPT0gbGF5b3V0KSB7CgogICAgICAgICAgICAgICAgX2V2ZW50Q2xpY2soaWQpOwogICAgICAgICAgICB9IGVsc2UgaWYgKCdob3Jpem9udGFsJyA9PT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgICAgICBfZXZlbnRDbGljayhpZCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgICAgICBfZXZlbnRDbGljayhpZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgnaG9yaXpvbnRhbCcgPT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1pbi13aWR0aDogOTc3cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBkaXYuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lcicpLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgnZXhwYW5kaWJsZScgPT0gbGF5b3V0IHx8ICdmbHlvdXQnID09IGxheW91dCkgewoKICAgICAgICAgICAgICAgIF90b2dnbGVDbGljayhpZCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJ3ZlcnRpY2FsJyA9PSBsYXlvdXQgfHwgJ2hvcml6b250YWwnID09IGxheW91dCkgewogICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMgJiYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUnKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgX3RvZ2dsZUNsaWNrKGlkKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMgJiYgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQnKSkgewoKICAgICAgICAgICAgICAgICAgICBfdG9nZ2xlQ2xpY2soaWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBfYm9yZGVyQ2xhc3MoaWQpOwoKICAgICAgICB9KTsKCiAgICAgICAgLy8gQWNlc3NpYmlsaXR5IGZ1bmN0aW9ucwoKICAgICAgICAkc2NvcGUuZmluZCgnLnBhcmVudC1oYXMtY2hpbGQgLmhmZS1oYXMtc3VibWVudS1jb250YWluZXIgYScpLmF0dHIoJ2FyaWEtaGFzcG9wdXAnLCAndHJ1ZScpOwogICAgICAgICRzY29wZS5maW5kKCcucGFyZW50LWhhcy1jaGlsZCAuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lciBhJykuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwoKICAgICAgICB2YXIgaGVmX25hdm1lbnVfdG9nZ2xlID0gJHNjb3BlLmZpbmQoJy5oZmUtbmF2LW1lbnVfX3RvZ2dsZScpOwogICAgICAgIGhlZl9uYXZtZW51X3RvZ2dsZS5hdHRyKCdhcmlhLWhhc3BvcHVwJywgJ3RydWUnKTsKICAgICAgICBoZWZfbmF2bWVudV90b2dnbGUuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwoKICAgICAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMgJiYgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQnKSkgewogICAgICAgICAgICBoZWZfbmF2bWVudV90b2dnbGUuZmluZCgnaScpLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7CiAgICAgICAgfQogICAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYSgiKCBtYXgtd2lkdGg6IDc2OHB4ICkiKS5tYXRjaGVzICYmICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlJykpIHsKICAgICAgICAgICAgaGVmX25hdm1lbnVfdG9nZ2xlLmZpbmQoJ2knKS5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5kIG9mIGFjY2Vzc2liaWxpdHkgZnVuY3Rpb25zCgogICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoJ2hmZV9uYXZfbWVudV9pbml0JywgaWQpOwoKICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBkaXYuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lcicpLm9uKCdrZXl1cCcsIGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMucGFyZW50KCkuaGFzQ2xhc3MoJ21lbnUtYWN0aXZlJykpIHsKCiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5yZW1vdmVDbGFzcygnbWVudS1hY3RpdmUnKTsKCiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5uZXh0KCkuZmluZCgndWwnKS5jc3MoewogICAgICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5JzogJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknOiAnMCcsCiAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6ICcwJwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5wcmV2KCkuZmluZCgndWwnKS5jc3MoewogICAgICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5JzogJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknOiAnMCcsCiAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6ICcwJwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkubmV4dCgpLmZpbmQoJ2Rpdi5oZmUtaGFzLXN1Ym1lbnUtY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ3N1Yi1tZW51LWFjdGl2ZScpOwogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucHJldigpLmZpbmQoJ2Rpdi5oZmUtaGFzLXN1Ym1lbnUtY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ3N1Yi1tZW51LWFjdGl2ZScpOwogICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLm5leHQoKS5maW5kKCd1bCcpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAnaGlkZGVuJywKICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogJzAnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnByZXYoKS5maW5kKCd1bCcpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAnaGlkZGVuJywKICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogJzAnCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5uZXh0KCkuZmluZCgnZGl2LmhmZS1oYXMtc3VibWVudS1jb250YWluZXInKS5yZW1vdmVDbGFzcygnc3ViLW1lbnUtYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5wcmV2KCkuZmluZCgnZGl2LmhmZS1oYXMtc3VibWVudS1jb250YWluZXInKS5yZW1vdmVDbGFzcygnc3ViLW1lbnUtYWN0aXZlJyk7CgogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkuc2libGluZ3MoKS5maW5kKCcuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lciBhJykuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwoKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLm5leHQoKS5yZW1vdmVDbGFzcygnbWVudS1hY3RpdmUnKTsKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnByZXYoKS5yZW1vdmVDbGFzcygnbWVudS1hY3RpdmUnKTsKCiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLmFkZENsYXNzKCdtZW51LWFjdGl2ZScpOwoKICAgICAgICAgICAgICAgIGlmICgnaG9yaXpvbnRhbCcgIT09IGxheW91dCkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdzdWItbWVudS1hY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy5maW5kKCdhJykuYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7CgogICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAndmlzaWJsZScsCiAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknOiAnMScsCiAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6ICdhdXRvJwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgaWYgKCdob3Jpem9udGFsJyAhPT0gbGF5b3V0KSB7CgogICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdob3Jpem9udGFsJyA9PT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMgJiYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUnKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZScpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5uZXh0KCkuY3NzKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBsaS5tZW51LWl0ZW0nKS5vbigna2V5dXAnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CgogICAgICAgICAgICAkdGhpcy5uZXh0KCkuZmluZCgnYScpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsKICAgICAgICAgICAgJHRoaXMucHJldigpLmZpbmQoJ2EnKS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7CgogICAgICAgICAgICAkdGhpcy5uZXh0KCkuZmluZCgndWwnKS5jc3MoewogICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAnaGlkZGVuJywKICAgICAgICAgICAgICAgICdvcGFjaXR5JzogJzAnLAogICAgICAgICAgICAgICAgJ2hlaWdodCc6ICcwJwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJHRoaXMucHJldigpLmZpbmQoJ3VsJykuY3NzKHsKICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5JzogJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICdoZWlnaHQnOiAnMCcKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkdGhpcy5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKCdtZW51LWFjdGl2ZScpOwogICAgICAgICAgICAkdGhpcy5uZXh0KCkuZmluZCgnZGl2LmhmZS1oYXMtc3VibWVudS1jb250YWluZXInKS5yZW1vdmVDbGFzcygnc3ViLW1lbnUtYWN0aXZlJyk7CiAgICAgICAgICAgICR0aGlzLnByZXYoKS5maW5kKCdkaXYuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdzdWItbWVudS1hY3RpdmUnKTsKCiAgICAgICAgfSk7CiAgICB9OwoKICAgIGZ1bmN0aW9uIF9oYW5kbGVfY3VycmVudF9tZW51X2l0ZW1fY2xhc3MobGF5b3V0X2xpbmtzKSB7CiAgICAgICAgbGF5b3V0X2xpbmtzLmVhY2goCiAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy5pcygnW2hyZWYqPSIjIl0nKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBtZW51X2l0ZW1fcGFyZW50ID0gJHRoaXMucGFyZW50KCk7CiAgICAgICAgICAgICAgICAgICAgbWVudV9pdGVtX3BhcmVudC5yZW1vdmVDbGFzcygnY3VycmVudC1tZW51LWl0ZW0gY3VycmVudC1tZW51LWFuY2VzdG9yJyk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xpY2soCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRfaW5kZXggPSBtZW51X2l0ZW1fcGFyZW50LmluZGV4KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X2VsZW1lbnQgPSAkdGhpcy5jbG9zZXN0KCd1bCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X2VsZW1lbnQuZmluZCgnbGknKS5ub3QoJzplcSgnICsgY3VycmVudF9pbmRleCArICcpJykucmVtb3ZlQ2xhc3MoJ2N1cnJlbnQtbWVudS1pdGVtIGN1cnJlbnQtbWVudS1hbmNlc3RvcicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9pdGVtX3BhcmVudC5hZGRDbGFzcygnY3VycmVudC1tZW51LWl0ZW0gY3VycmVudC1tZW51LWFuY2VzdG9yJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKICAgIGZ1bmN0aW9uIF9vcGVuTWVudShpZCkgewoKICAgICAgICB2YXIgZmx5b3V0X2NvbnRlbnQgPSAkKCcjaGZlLWZseW91dC1jb250ZW50LWlkLScgKyBpZCk7CiAgICAgICAgdmFyIGxheW91dCA9ICQoJyNoZmUtZmx5b3V0LWNvbnRlbnQtaWQtJyArIGlkKS5kYXRhKCdsYXlvdXQnKTsKICAgICAgICB2YXIgbGF5b3V0X3R5cGUgPSAkKCcjaGZlLWZseW91dC1jb250ZW50LWlkLScgKyBpZCkuZGF0YSgnZmx5b3V0LXR5cGUnKTsKICAgICAgICB2YXIgd3JhcF93aWR0aCA9IGZseW91dF9jb250ZW50LndpZHRoKCkgKyAncHgnOwogICAgICAgIHZhciBjb250YWluZXIgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLWZseW91dC1jb250YWluZXIgLmhmZS1zaWRlLmhmZS1mbHlvdXQtJyArIGxheW91dCk7CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtZmx5b3V0LW92ZXJsYXknKS5mYWRlSW4oMTAwKTsKCiAgICAgICAgaWYgKCdsZWZ0JyA9PSBsYXlvdXQpIHsKCiAgICAgICAgICAgICQoJ2JvZHknKS5jc3MoJ21hcmdpbi1sZWZ0JywgJzAnKTsKICAgICAgICAgICAgY29udGFpbmVyLmNzcygnbGVmdCcsICcwJyk7CgogICAgICAgICAgICBpZiAoJ3B1c2gnID09IGxheW91dF90eXBlKSB7CgogICAgICAgICAgICAgICAgJCgnYm9keScpLmFkZENsYXNzKCdoZmUtZmx5b3V0LWFuaW1hdGluZycpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQnOiB3cmFwX3dpZHRoLAogICAgICAgICAgICAgICAgICAgICdtYXJnaW4tcmlnaHQnOiAnYXV0bycKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIuYWRkQ2xhc3MoJ2hmZS1mbHlvdXQtc2hvdycpOwogICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAkKCdib2R5JykuY3NzKCdtYXJnaW4tcmlnaHQnLCAnMCcpOwogICAgICAgICAgICBjb250YWluZXIuY3NzKCdyaWdodCcsICcwJyk7CgogICAgICAgICAgICBpZiAoJ3B1c2gnID09IGxheW91dF90eXBlKSB7CgogICAgICAgICAgICAgICAgJCgnYm9keScpLmFkZENsYXNzKCdoZmUtZmx5b3V0LWFuaW1hdGluZycpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQnOiAnLScgKyB3cmFwX3dpZHRoLAogICAgICAgICAgICAgICAgICAgICdtYXJnaW4tcmlnaHQnOiAnYXV0bycsCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyLmFkZENsYXNzKCdoZmUtZmx5b3V0LXNob3cnKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gX2Nsb3NlTWVudShpZCkgewoKICAgICAgICB2YXIgZmx5b3V0X2NvbnRlbnQgPSAkKCcjaGZlLWZseW91dC1jb250ZW50LWlkLScgKyBpZCk7CiAgICAgICAgdmFyIGxheW91dCA9ICQoJyNoZmUtZmx5b3V0LWNvbnRlbnQtaWQtJyArIGlkKS5kYXRhKCdsYXlvdXQnKTsKICAgICAgICB2YXIgd3JhcF93aWR0aCA9IGZseW91dF9jb250ZW50LndpZHRoKCkgKyAncHgnOwogICAgICAgIHZhciBsYXlvdXRfdHlwZSA9ICQoJyNoZmUtZmx5b3V0LWNvbnRlbnQtaWQtJyArIGlkKS5kYXRhKCdmbHlvdXQtdHlwZScpOwogICAgICAgIHZhciBjb250YWluZXIgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLWZseW91dC1jb250YWluZXIgLmhmZS1zaWRlLmhmZS1mbHlvdXQtJyArIGxheW91dCk7CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtZmx5b3V0LW92ZXJsYXknKS5mYWRlT3V0KDEwMCk7CgogICAgICAgIGlmICgnbGVmdCcgPT0gbGF5b3V0KSB7CgogICAgICAgICAgICBjb250YWluZXIuY3NzKCdsZWZ0JywgJy0nICsgd3JhcF93aWR0aCk7CgogICAgICAgICAgICBpZiAoJ3B1c2gnID09IGxheW91dF90eXBlKSB7CgogICAgICAgICAgICAgICAgJCgnYm9keScpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICcnLAogICAgICAgICAgICAgICAgICAgICdtYXJnaW4tbGVmdCc6ICcnLAogICAgICAgICAgICAgICAgICAgICdtYXJnaW4tcmlnaHQnOiAnJywKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdoZmUtZmx5b3V0LWFuaW1hdGluZycpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnJywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIucmVtb3ZlQ2xhc3MoJ2hmZS1mbHlvdXQtc2hvdycpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnRhaW5lci5jc3MoJ3JpZ2h0JywgJy0nICsgd3JhcF93aWR0aCk7CgogICAgICAgICAgICBpZiAoJ3B1c2gnID09IGxheW91dF90eXBlKSB7CgogICAgICAgICAgICAgICAgJCgnYm9keScpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICcnLAogICAgICAgICAgICAgICAgICAgICdtYXJnaW4tcmlnaHQnOiAnJywKICAgICAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQnOiAnJywKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdoZmUtZmx5b3V0LWFuaW1hdGluZycpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnJywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDbGFzcygnaGZlLWZseW91dC1zaG93Jyk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIF9ldmVudENsaWNrKGlkKSB7CgogICAgICAgIHZhciBsYXlvdXQgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLW5hdi1tZW51JykuZGF0YSgnbGF5b3V0Jyk7CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGRpdi5oZmUtaGFzLXN1Ym1lbnUtY29udGFpbmVyJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KSB7CgogICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwoKICAgICAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbGluay1yZWRpcmVjdC1jaGlsZCcpKSB7CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKCdzdWItbWVudS1hY3RpdmUnKSkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLm5leHQoKS5oYXNDbGFzcygnc3ViLW1lbnUtb3BlbicpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5maW5kKCdhJykuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdob3Jpem9udGFsJyAhPT0gbGF5b3V0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5uZXh0KCkuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdob3Jpem9udGFsJyA9PT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMgJiYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUnKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMgJiYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUnKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdzdWItbWVudS1hY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykucmVtb3ZlQ2xhc3MoJ3N1Yi1tZW51LW9wZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5JzogJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnOiAnMCcKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHRBbGwoJy5zdWItbWVudScpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbic6ICdub25lJwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuZmluZCgnYScpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdzdWItbWVudS1hY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykucmVtb3ZlQ2xhc3MoJ3N1Yi1tZW51LW9wZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5JzogJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnOiAnMCcKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHRBbGwoJy5zdWItbWVudScpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbic6ICdub25lJwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnaG9yaXpvbnRhbCcgIT09IGxheW91dCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiA3NjdweCApIikubWF0Y2hlcyAmJiAoJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQnKSB8fCAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdob3Jpem9udGFsJyA9PT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogMTAyNHB4ICkiKS5tYXRjaGVzICYmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCcpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlJykpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmNzcygncG9zaXRpb24nLCAnYWJzb2x1dGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICR0aGlzLmZpbmQoJ2EnKS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJ2hvcml6b250YWwnICE9PSBsYXlvdXQpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnaG9yaXpvbnRhbCcgPT09IGxheW91dCAmJiB3aW5kb3cubWF0Y2hNZWRpYSgiKCBtYXgtd2lkdGg6IDc2N3B4ICkiKS5tYXRjaGVzICYmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCcpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlJykpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5uZXh0KCkuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCcpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZScpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmNzcygncG9zaXRpb24nLCAnYWJzb2x1dGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ3N1Yi1tZW51LWFjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHRBbGwoJy5zdWItbWVudScpLmFkZENsYXNzKCdzdWItbWVudS1vcGVuJyk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAndmlzaWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5JzogJzEnLAogICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogJ2F1dG8nCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24nOiAnMC4zcyBlYXNlJwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbWVudS10b2dnbGUnKS5vZmYoJ2NsaWNrIGtleXVwJykub24oJ2NsaWNrIGtleXVwJywgZnVuY3Rpb24oZXZlbnQpIHsKCiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMucGFyZW50KCkucGFyZW50KCkuaGFzQ2xhc3MoJ21lbnUtYWN0aXZlJykpIHsKCiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdtZW51LWFjdGl2ZScpOwogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkubmV4dCgpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAnaGlkZGVuJywKICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogJzAnCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBpZiAoJ2hvcml6b250YWwnICE9PSBsYXlvdXQpIHsKCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkubmV4dCgpLmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiA3NjdweCApIikubWF0Y2hlcyAmJiAoJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQnKSB8fCAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpKSkgewoKICAgICAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5wYXJlbnQoKS5uZXh0KCkuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnaG9yaXpvbnRhbCcgPT09IGxheW91dCAmJiB3aW5kb3cubWF0Y2hNZWRpYSgiKCBtYXgtd2lkdGg6IDEwMjRweCApIikubWF0Y2hlcykgewoKICAgICAgICAgICAgICAgICAgICBpZiAoJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQnKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkubmV4dCgpLmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlJykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lJykpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnBhcmVudCgpLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkuYWRkQ2xhc3MoJ21lbnUtYWN0aXZlJyk7CgogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkubmV4dCgpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAndmlzaWJsZScsCiAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknOiAnMScsCiAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6ICdhdXRvJwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgaWYgKCdob3Jpem9udGFsJyAhPT0gbGF5b3V0KSB7CgogICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnBhcmVudCgpLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdob3Jpem9udGFsJyA9PT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMgJiYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUnKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkubmV4dCgpLmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnBhcmVudCgpLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZScpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5wYXJlbnQoKS5uZXh0KCkuY3NzKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIF9ib3JkZXJDbGFzcyhpZCkgewoKICAgICAgICB2YXIgbGFzdF9pdGVtID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudScpLmRhdGEoJ2xhc3QtaXRlbScpOwogICAgICAgIHZhciBsYXN0X2l0ZW1fZmx5b3V0ID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1mbHlvdXQtd3JhcHBlcicpLmRhdGEoJ2xhc3QtaXRlbScpOwogICAgICAgIHZhciBsYXlvdXQgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLW5hdi1tZW51JykuZGF0YSgnbGF5b3V0Jyk7CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIG5hdicpLnJlbW92ZUNsYXNzKCdoZmUtZHJvcGRvd24nKTsKCiAgICAgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgIGlmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykpIHsKCiAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBuYXYnKS5hZGRDbGFzcygnaGZlLWRyb3Bkb3duJyk7CiAgICAgICAgICAgICAgICBpZiAoKCdjdGEnID09IGxhc3RfaXRlbSB8fCAnY3RhJyA9PSBsYXN0X2l0ZW1fZmx5b3V0KSAmJiAnZXhwYW5kaWJsZScgIT0gbGF5b3V0KSB7CiAgICAgICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbGkubWVudS1pdGVtOmxhc3QtY2hpbGQgYS5oZmUtbWVudS1pdGVtJykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2VsZW1lbnRvci1idXR0b24td3JhcHBlcicpOwogICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGxpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLnJlbW92ZUNsYXNzKCdlbGVtZW50b3ItYnV0dG9uJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbmF2JykucmVtb3ZlQ2xhc3MoJ2hmZS1kcm9wZG93bicpOwogICAgICAgICAgICAgICAgaWYgKCgnY3RhJyA9PSBsYXN0X2l0ZW0gfHwgJ2N0YScgPT0gbGFzdF9pdGVtX2ZseW91dCkgJiYgJ2V4cGFuZGlibGUnICE9IGxheW91dCkgewogICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGxpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLnBhcmVudCgpLmFkZENsYXNzKCdlbGVtZW50b3ItYnV0dG9uLXdyYXBwZXInKTsKICAgICAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBsaS5tZW51LWl0ZW06bGFzdC1jaGlsZCBhLmhmZS1tZW51LWl0ZW0nKS5hZGRDbGFzcygnZWxlbWVudG9yLWJ1dHRvbicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cubWF0Y2hNZWRpYSgiKCBtYXgtd2lkdGg6IDEwMjRweCApIikubWF0Y2hlcykgewoKICAgICAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykpIHsKCiAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBuYXYnKS5hZGRDbGFzcygnaGZlLWRyb3Bkb3duJyk7CiAgICAgICAgICAgICAgICBpZiAoKCdjdGEnID09IGxhc3RfaXRlbSB8fCAnY3RhJyA9PSBsYXN0X2l0ZW1fZmx5b3V0KSAmJiAnZXhwYW5kaWJsZScgIT0gbGF5b3V0KSB7CiAgICAgICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbGkubWVudS1pdGVtOmxhc3QtY2hpbGQgYS5oZmUtbWVudS1pdGVtJykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2VsZW1lbnRvci1idXR0b24td3JhcHBlcicpOwogICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGxpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLnJlbW92ZUNsYXNzKCdlbGVtZW50b3ItYnV0dG9uJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbmF2JykucmVtb3ZlQ2xhc3MoJ2hmZS1kcm9wZG93bicpOwogICAgICAgICAgICAgICAgaWYgKCgnY3RhJyA9PSBsYXN0X2l0ZW0gfHwgJ2N0YScgPT0gbGFzdF9pdGVtX2ZseW91dCkgJiYgJ2V4cGFuZGlibGUnICE9IGxheW91dCkgewogICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGxpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLnBhcmVudCgpLmFkZENsYXNzKCdlbGVtZW50b3ItYnV0dG9uLXdyYXBwZXInKTsKICAgICAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBsaS5tZW51LWl0ZW06bGFzdC1jaGlsZCBhLmhmZS1tZW51LWl0ZW0nKS5hZGRDbGFzcygnZWxlbWVudG9yLWJ1dHRvbicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyICRwYXJlbnRfZWxlbWVudCA9ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpOwogICAgICAgICAgICAkcGFyZW50X2VsZW1lbnQuZmluZCgnbmF2JykucmVtb3ZlQ2xhc3MoJ2hmZS1kcm9wZG93bicpOwogICAgICAgICAgICBpZiAoKCdjdGEnID09IGxhc3RfaXRlbSB8fCAnY3RhJyA9PSBsYXN0X2l0ZW1fZmx5b3V0KSAmJiAnZXhwYW5kaWJsZScgIT0gbGF5b3V0KSB7CiAgICAgICAgICAgICAgICAkcGFyZW50X2VsZW1lbnQuZmluZCgnbGkubWVudS1pdGVtOmxhc3QtY2hpbGQgYS5oZmUtbWVudS1pdGVtJykucGFyZW50KCkuYWRkQ2xhc3MoJ2VsZW1lbnRvci1idXR0b24td3JhcHBlcicpOwogICAgICAgICAgICAgICAgJHBhcmVudF9lbGVtZW50LmZpbmQoJ2xpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLmFkZENsYXNzKCdlbGVtZW50b3ItYnV0dG9uJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBsYXlvdXQgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLW5hdi1tZW51JykuZGF0YSgnbGF5b3V0Jyk7CiAgICAgICAgaWYgKCdleHBhbmRpYmxlJyA9PSBsYXlvdXQpIHsKICAgICAgICAgICAgaWYgKCgnY3RhJyA9PSBsYXN0X2l0ZW0gfHwgJ2N0YScgPT0gbGFzdF9pdGVtX2ZseW91dCkgJiYgJ2V4cGFuZGlibGUnICE9IGxheW91dCkgewogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbGkubWVudS1pdGVtOmxhc3QtY2hpbGQgYS5oZmUtbWVudS1pdGVtJykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2VsZW1lbnRvci1idXR0b24td3JhcHBlcicpOwogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbGkubWVudS1pdGVtOmxhc3QtY2hpbGQgYS5oZmUtbWVudS1pdGVtJykucmVtb3ZlQ2xhc3MoJ2VsZW1lbnRvci1idXR0b24nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBfdG9nZ2xlQ2xpY2soaWQpIHsKCiAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZScpLmhhc0NsYXNzKCdoZmUtYWN0aXZlLW1lbnUtZnVsbC13aWR0aCcpKSB7CgogICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLW5hdi1tZW51X190b2dnbGUnKS5uZXh0KCkuY3NzKCdsZWZ0JywgJzAnKTsKCiAgICAgICAgICAgIHZhciB3aWR0aCA9ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmNsb3Nlc3QoJy5lbGVtZW50b3Itc2VjdGlvbicpLm91dGVyV2lkdGgoKTsKICAgICAgICAgICAgdmFyIHNlY19wb3MgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5jbG9zZXN0KCcuZWxlbWVudG9yLXNlY3Rpb24nKS5vZmZzZXQoKS5sZWZ0IC0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudV9fdG9nZ2xlJykubmV4dCgpLm9mZnNldCgpLmxlZnQ7CiAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZScpLm5leHQoKS5jc3MoJ3dpZHRoJywgd2lkdGggKyAncHgnKTsKICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudV9fdG9nZ2xlJykubmV4dCgpLmNzcygnbGVmdCcsIHNlY19wb3MgKyAncHgnKTsKICAgICAgICB9CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZScpLm9mZignY2xpY2sga2V5dXAnKS5vbignY2xpY2sga2V5dXAnLCBmdW5jdGlvbihldmVudCkgewoKICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgdmFyICRzZWxlY3RvciA9ICR0aGlzLm5leHQoKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy5oYXNDbGFzcygnaGZlLWFjdGl2ZS1tZW51JykpIHsKCiAgICAgICAgICAgICAgICB2YXIgbGF5b3V0ID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudScpLmRhdGEoJ2xheW91dCcpOwogICAgICAgICAgICAgICAgdmFyIGZ1bGxfd2lkdGggPSAkc2VsZWN0b3IuZGF0YSgnZnVsbC13aWR0aCcpOwogICAgICAgICAgICAgICAgdmFyIHRvZ2dsZV9pY29uID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbmF2JykuZGF0YSgndG9nZ2xlLWljb24nKTsKCiAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5maW5kKCcuaGZlLW5hdi1tZW51LWljb24nKS5odG1sKHRvZ2dsZV9pY29uKTsKCiAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnaGZlLWFjdGl2ZS1tZW51Jyk7CiAgICAgICAgICAgICAgICAkdGhpcy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7CgogICAgICAgICAgICAgICAgaWYgKCd5ZXMnID09IGZ1bGxfd2lkdGgpIHsKCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2hmZS1hY3RpdmUtbWVudS1mdWxsLXdpZHRoJyk7CgogICAgICAgICAgICAgICAgICAgICRzZWxlY3Rvci5jc3MoJ3dpZHRoJywgJ2F1dG8nKTsKICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3IuY3NzKCdsZWZ0JywgJzAnKTsKICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3IuY3NzKCd6LWluZGV4JywgJzAnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICB2YXIgbGF5b3V0ID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudScpLmRhdGEoJ2xheW91dCcpOwogICAgICAgICAgICAgICAgdmFyIGZ1bGxfd2lkdGggPSAkc2VsZWN0b3IuZGF0YSgnZnVsbC13aWR0aCcpOwogICAgICAgICAgICAgICAgdmFyIGNsb3NlX2ljb24gPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBuYXYnKS5kYXRhKCdjbG9zZS1pY29uJyk7CgogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuZmluZCgnLmhmZS1uYXYtbWVudS1pY29uJykuaHRtbChjbG9zZV9pY29uKTsKCiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnaGZlLWFjdGl2ZS1tZW51Jyk7CiAgICAgICAgICAgICAgICAkdGhpcy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTsKCiAgICAgICAgICAgICAgICBpZiAoJ3llcycgPT0gZnVsbF93aWR0aCkgewoKICAgICAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnaGZlLWFjdGl2ZS1tZW51LWZ1bGwtd2lkdGgnKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuY2xvc2VzdCgnLmVsZW1lbnRvci1zZWN0aW9uJykub3V0ZXJXaWR0aCgpOwogICAgICAgICAgICAgICAgICAgIHZhciBzZWNfcG9zID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuY2xvc2VzdCgnLmVsZW1lbnRvci1zZWN0aW9uJykub2Zmc2V0KCkubGVmdCAtICRzZWxlY3Rvci5vZmZzZXQoKS5sZWZ0OwoKICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3IuY3NzKCd3aWR0aCcsIHdpZHRoICsgJ3B4Jyk7CiAgICAgICAgICAgICAgICAgICAgJHNlbGVjdG9yLmNzcygnbGVmdCcsIHNlY19wb3MgKyAncHgnKTsKICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3IuY3NzKCd6LWluZGV4JywgJzk5OTknKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIG5hdicpLmhhc0NsYXNzKCdtZW51LWlzLWFjdGl2ZScpKSB7CgogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbmF2JykucmVtb3ZlQ2xhc3MoJ21lbnUtaXMtYWN0aXZlJyk7CiAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbmF2JykuYWRkQ2xhc3MoJ21lbnUtaXMtYWN0aXZlJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBfaGFuZGxlU2luZ2xlUGFnZU1lbnUoaWQsIGxheW91dCkgewogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIHVsLmhmZS1uYXYtbWVudSBsaSBhJykub24oCiAgICAgICAgICAgICdjbGljaycsCiAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgIHZhciBsaW5rID0gJHRoaXMuYXR0cignaHJlZicpOwogICAgICAgICAgICAgICAgdmFyIGxpbmtWYWx1ZSA9ICcnOwogICAgICAgICAgICAgICAgaWYgKGxpbmsuaW5jbHVkZXMoJyMnKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGxpbmsuaW5kZXhPZignIycpOwogICAgICAgICAgICAgICAgICAgIGxpbmtWYWx1ZSA9IGxpbmsuc2xpY2UoaW5kZXggKyAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChsaW5rVmFsdWUubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIGlmICgnZXhwYW5kaWJsZScgPT0gbGF5b3V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZScpLnRyaWdnZXIoImNsaWNrIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy5oYXNDbGFzcygnaGZlLXN1Yi1tZW51LWl0ZW0nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1tZW51LXRvZ2dsZScpLnRyaWdnZXIoImNsaWNrIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDEwMjRweCknKS5tYXRjaGVzICYmICgnaG9yaXpvbnRhbCcgPT0gbGF5b3V0IHx8ICd2ZXJ0aWNhbCcgPT0gbGF5b3V0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudV9fdG9nZ2xlJykudHJpZ2dlcigiY2xpY2siKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy5oYXNDbGFzcygnaGZlLXN1Yi1tZW51LWl0ZW0nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbWVudS10b2dnbGUnKS50cmlnZ2VyKCJjbGljayIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKCdoZmUtc3ViLW1lbnUtaXRlbScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Nsb3NlTWVudShpZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1tZW51LXRvZ2dsZScpLnRyaWdnZXIoImNsaWNrIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xvc2VNZW51KGlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgcG9seWxhbmcgcGx1Z2luJ3MgbGFuZyBzd2l0Y2hlciBpZiBwcmVzZW50IGluIHRoZSBtZW51LgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0fSAkc2NvcGUgVGhlIGN1cnJlbnQgZWxlbWVudChoZmUgbmF2IG1lbnUpIHdyYXBwZWQgd2l0aCBqUXVlcnkuCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9oYW5kbGVQb2x5bGFuZ1N3aXRjaGVyKCRzY29wZSkgewogICAgICAgIHZhciBwb2x5bGFuZ1N3aXRjaGVyID0gJHNjb3BlLmZpbmQoJy5oZmUtbmF2LW1lbnUgbmF2IC5wbGwtcGFyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0nKTsKICAgICAgICB2YXIgaHJlZlByb3BlcnR5ID0gcG9seWxhbmdTd2l0Y2hlci5wcm9wKCdocmVmJyk7CiAgICAgICAgaWYgKHVuZGVmaW5lZCAhPT0gaHJlZlByb3BlcnR5ICYmIGhyZWZQcm9wZXJ0eS5pbmNsdWRlcygnIycpKSB7CiAgICAgICAgICAgIHZhciBpbmRleCA9IGhyZWZQcm9wZXJ0eS5pbmRleE9mKCcjJyk7CiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGhyZWZQcm9wZXJ0eS5zbGljZShpbmRleCk7CiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJyNwbGxfc3dpdGNoZXInKSB7CiAgICAgICAgICAgICAgICBwb2x5bGFuZ1N3aXRjaGVyLnByb3AoJ2hyZWYnLCAnIycpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICQod2luZG93KS5vbignZWxlbWVudG9yL2Zyb250ZW5kL2luaXQnLCBmdW5jdGlvbigpIHsKCiAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuYWRkQWN0aW9uKCdmcm9udGVuZC9lbGVtZW50X3JlYWR5L25hdmlnYXRpb24tbWVudS5kZWZhdWx0JywgV2lkZ2V0aGZlTmF2TWVudUhhbmRsZXIpOwogICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmFkZEFjdGlvbignZnJvbnRlbmQvZWxlbWVudF9yZWFkeS9oZmUtc2VhcmNoLWJ1dHRvbi5kZWZhdWx0JywgV2lkZ2V0aGZlU2VhcmNoQnV0dG9uKTsKICAgIH0pOwp9KShqUXVlcnkpOw=="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/images/tab_img5.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.082Z","timestamp":1785130090082,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/images/tab_img5.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=hka6ldYtEjO0koKzruFLM4dBp8FEu1x4FyVebWlMmJoi4RNGNOoR7RIe8JVZyrANXEuf3XVFaga1htQ1eEmrctIUQxZOgH83cfkMyA7sc2fezUFHAUwhfKO4zVN88yja5y6FhWY6pw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d370e63120a-OSL\r\ncontent-length: 4168\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":4168,"size_decoded":4927,"mime_type":"image/png","magic":"PNG image data, 20 x 20, 8-bit/color RGBA, non-interlaced","md5":"7268e9bd079e3a039680ca39d8241d87","sha1":"5b5153672c96c04e6d7fd2c43955ffacc2b1e09d","sha256":"1a55bf50dec87c5e182392aaca5f159991f328c1a5e79081d30465ac6021b29d","sha512":"a8e77dbc033b6dd39d9be4509cd920dcb69d499c73affc15f74e08636d0ff84ba4e9b6ef4fa934b45e381281f6b49db24a0fb89ff9025ee17f5b442d03c8af7c","ssdeep":"96:VllcHitlIxv9vk7C1+I4wWHLihk/xEjYuGDT9Z7hOE:uIIHUCD4wav9Zdv","tlshash":"1b815e8aed149401204dca5a38fbd5160917ef809394fd58fdeec10f8a249b52d756db","first_seen":"2026-07-27T04:11:05.71319Z","last_seen":"2026-07-27T05:30:59.828747Z","times_seen":3,"resource_available":false,"data":"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UmVhZHlxyWU8AAADfWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuZGFiYWNiYiwgMjAyMS8wNC8xNC0wMDozOTo0NCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5QzkwNDI1QTc5NkRFOTExQjkyNkY0QUYxMUQxRTNEQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozMkFEQTM1MDhGNEMxMUVFQUE1MzkyNTdFN0YxMzA0RiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMkFEQTM0RjhGNEMxMUVFQUE1MzkyNTdFN0YxMzA0RiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU4ZDQ5ZmVjLTVkNWUtNmU0NC1hNDVlLWZlZDA0ZjU0MjRhZiIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhkMjk5NDE5LTNjNmYtZmU0MS05ZWE1LTZmZmRmMDBlODU0NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnpE8CwAAAISSURBVHjahNRLSFVBHMfx66OHVIZiaYIoLsQQFxpFIYmBm5I29jByp4i6FxWhhNq5cJNIbYoiJUx3oWYYCYnRQrRcRKIiFGg+yRAf6O07+Tsxjed0Bz7cOefM+Z+5/5n/hMLhcCiCUnzGQ6RFGh8dCm5xaEMtVjCNDtTjYNBLQQHz8RrfcR2LaMENnEIvTvq+6TPtKoziPFLQjSlde2M+4rHfX3ZvmBzN4A3u4x2u4QxGkKBxJtgi8iMFbEadXhzHRetZDYZxD0No1OwDF+UQCtGlRRjDV+v5MDbwBbt4jyXcDsphCZ6qH4VU/drP29SvwB2kox/RfjM0X3qh/hFcMt+znptV/an+KE5jFjv2insBM5CCQV1vY8jZEMmYV9+k4jgO4wfS3YBleIstax82OQHNLObUX8cqsjGFTDdgMZ5bLyciF2nWvaOajdcmcFazzXYDbiLeGnwFk3iEdpxTXuesMSaPeSrJDDdgD6rVNzPLQgVu4oPqt8DKYUjbKlVbJ9EN2K1Ax1CDTt3/hWeq5z6UWgHntS9P2GeC11nDAFqV/E6fsn+AW849k5bKf1Jhbdzk8F67+5/z7glakafrAmyh0hsT6/yFcuWtS9voFb5ZY6K0gLVaRLN9Dqgs9wb8OSH2n5EXcBU5WNb5t4BmNKjmzYeT8BKNqhjfgHYzlVCEy/pIDMbFHA6fVFV/228BBgCI4t2oZdLcmAAAAABJRU5ErkJggg=="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.322Z","timestamp":1785130090322,"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/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.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://dreamspinfluence.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: 50316\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 04:26:34 GMT\r\nexpires: Fri, 23 Jul 2027 04:26:34 GMT\r\ncache-control: public, max-age=31536000\r\nage: 349296\r\nlast-modified: Wed, 10 Sep 2025 16:23:20 GMT\r\ncontent-type: font/woff2\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":50316,"size_decoded":51129,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 50316, version 1.0","md5":"97b33529e13b04b2205144e28a17a1d6","sha1":"9eaf3fe571af16f72a84dbadc1fce0128dff4486","sha256":"1dd49afc07fb2231b2ff686cbf007725fb2742271bb1f28ebd98f22a0d817343","sha512":"ce731a26fac8fd5583137450138d71fc36a9a0c4b79257a5af74be21cc2773b6e3a1ead61055411ec1c2cc857b8b0e6cbc94971f5f0b51820b458d9146af89bf","ssdeep":"768:etWz8e4bJ7xYqUBOYPc1NmWL7TDGrAZrIzcbWomWEjoyW6Md/AE1wBje34U:eZdhUQN5ToAZrIz7uEjR7udw5e34U","tlshash":"a33301e2882ca65cfe1ba7f8c422cc65e3336044f63d461d5766ff6ee470605e83a016","first_seen":"2025-09-12T00:12:40.161531Z","last_seen":"2026-08-02T16:46:21.571857Z","times_seen":23285,"resource_available":false,"data":"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"}},"time_used":91,"timings":{"blocked":2,"dns":0,"connect":30,"send":0,"wait":18,"receive":41,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/_/translate_http/_/ss/k=translate_http.tr.B7Dih9Jyjnw.L.F4.O/am=BIAABw/d=0/rs=AN8SPfpC04vrrzQXgs_TCM5EtruwfPzNtQ/m=el_main_css","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:12.000Z","timestamp":1785130092000,"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 /_/translate_http/_/ss/k=translate_http.tr.B7Dih9Jyjnw.L.F4.O/am=BIAABw/d=0/rs=AN8SPfpC04vrrzQXgs_TCM5EtruwfPzNtQ/m=el_main_css HTTP/1.1\r\nHost: www.gstatic.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://dreamspinfluence.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/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/rosetta\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"rosetta\"\r\nreport-to: {\"group\":\"rosetta\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/rosetta\"}]}\r\ncontent-length: 3967\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:44 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:44 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 09 Apr 2026 01:12:55 GMT\r\ncontent-type: text/css; charset=UTF-8\r\nvary: Accept-Encoding\r\nage: 404248\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":20284,"size_decoded":4799,"mime_type":"text/css; charset=UTF-8","magic":"ASCII text, with very long lines (20284), with no line terminators","md5":"fde4f72b90fe807270db3c332dd058df","sha1":"7ef4d70af01c38a7f80a7650be25f63aff4ba751","sha256":"ab31c9be358d2107fc1158434c7aeaaf15f82e3e405ed67ab236b5ac232ed159","sha512":"9bef39350af557afeb10cb71068426ab28befaf5295359954787be06a5ce0993d69e8f5018a5a17c44311d294dd1a87a6f82edd0f5743df0149b8e4e53061695","ssdeep":"192:nvqx/EhZINcrXsfg0SgG8CqA3uku9SJFzvQVMbnUIfIxIVVpTrecfzPtcmt4v78l:gMF8Sb3i0JFzourUqWMVpTrdfzPtcBG","tlshash":"c492872057aed01967efa82364d36dff71d444db90123eeaaf5a7352cd821f231ea214","first_seen":"2026-04-13T20:43:22.641436Z","last_seen":"2026-08-02T16:42:24.418748Z","times_seen":19077,"resource_available":false,"data":"LlZJcGdKZC1aVmk5b2QtT1JIYi1PRVZtY2R7bGVmdDowO3RvcDowO2hlaWdodDozOXB4O3dpZHRoOjEwMCU7ei1pbmRleDoxMDAwMDAwMTtwb3NpdGlvbjpmaXhlZDtib3JkZXI6bm9uZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNkI5MERBO21hcmdpbjowO2JveC1zaGFkb3c6MCAwIDhweCAxcHggIzk5OX0uVklwZ0pkLVpWaTlvZC14bDA3T2ItT0VWbWNke3otaW5kZXg6MTAwMDAwMDI7Ym9yZGVyOm5vbmU7cG9zaXRpb246Zml4ZWQ7Ym94LXNoYWRvdzowIDNweCA4cHggMnB4ICM5OTl9LlZJcGdKZC1aVmk5b2QtU21mWi1PRVZtY2R7ei1pbmRleDoxMDAwMDAwMDtib3JkZXI6bm9uZTttYXJnaW46MH0uZ29vZy10ZS1nYWRnZXR7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjExcHg7Y29sb3I6IzY2Njt3aGl0ZS1zcGFjZTpub3dyYXB9Lmdvb2ctdGUtZ2FkZ2V0IGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOm5vbmV9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNENUQ1RDU7Ym9yZGVyLXRvcDoxcHggc29saWQgIzlCOUI5Qjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRThFOEU4O2JvcmRlci1yaWdodDoxcHggc29saWQgI0Q1RDVENTtmb250LXNpemU6MTBwdDtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MnB4O2N1cnNvcjpwb2ludGVyfS5nb29nLXRlLWdhZGdldC1pY29ue21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4O3dpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7Ym9yZGVyOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWNvbWJve21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5nb29nLXRlLWdhZGdldCAuZ29vZy10ZS1jb21ib3ttYXJnaW46NHB4IDB9LlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDphY3RpdmUsLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkOmhvdmVyLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDpsaW5rLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDp2aXNpdGVke2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojNDQ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLU9SSGIgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkLC5WSXBnSmQtWlZpOW9kLVR2RDlQYy1oU1JHUGR7ZGlzcGxheTpibG9jazttYXJnaW46MCAxMHB4fS5WSXBnSmQtWlZpOW9kLU9SSGIgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1Bke3BhZGRpbmctdG9wOjJweDtwYWRkaW5nLWxlZnQ6NHB4fS5WSXBnSmQtWlZpOW9kLU9SSGIgKiwuVklwZ0pkLVpWaTlvZC1TbWZaICosLlZJcGdKZC1aVmk5b2QtbDl4a3RmICosLlZJcGdKZC1aVmk5b2QtdkgxR21mICosLlZJcGdKZC1aVmk5b2QteGwwN09iICosLmdvb2ctdGUtY29tYm97Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjEwcHR9LlZJcGdKZC1aVmk5b2QtT1JIYnttYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9yOiNFNEVGRkI7b3ZlcmZsb3c6aGlkZGVufS5WSXBnSmQtWlZpOW9kLU9SSGIgaW1ne2JvcmRlcjpub25lfS5WSXBnSmQtWlZpOW9kLU9SSGItYk45N1Bje2NvbG9yOiMwMDB9LlZJcGdKZC1aVmk5b2QtT1JIYi1iTjk3UGMgaW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uVklwZ0pkLVpWaTlvZC1PUkhiLVRzd3YxYntjb2xvcjojNjY2O3ZlcnRpY2FsLWFsaWduOnRvcDttYXJnaW4tdG9wOjA7Zm9udC1zaXplOjdwdH0uVklwZ0pkLVpWaTlvZC1PUkhiLUtFNnZxZXt3aWR0aDo4cHh9LlZJcGdKZC1aVmk5b2QtTGdic1Nle2JvcmRlci1jb2xvcjojRTdFN0U3O2JvcmRlci1zdHlsZTpub25lIHNvbGlkIHNvbGlkIG5vbmU7Ym9yZGVyLXdpZHRoOjAgMXB4IDFweCAwfS5WSXBnSmQtWlZpOW9kLUxnYnNTZSBkaXZ7Ym9yZGVyLWNvbG9yOiNDQ0MgIzk5OSAjOTk5ICNDQ0M7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjOTk5O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2hlaWdodDoyMHB4fS5WSXBnSmQtWlZpOW9kLUxnYnNTZSBidXR0b257YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MjBweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luOjA7dmVydGljYWwtYWxpZ246dG9wO3doaXRlLXNwYWNlOm5vd3JhcH0uVklwZ0pkLVpWaTlvZC1MZ2JzU2UgYnV0dG9uOmFjdGl2ZXtiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgI0NDQ30uVklwZ0pkLVpWaTlvZC1TbWZae21hcmdpbjowO2JhY2tncm91bmQtY29sb3I6I0ZGRjt3aGl0ZS1zcGFjZTpub3dyYXB9LlZJcGdKZC1aVmk5b2QtU21mWi1oU1JHUGR7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMHB0O2JvcmRlcjoxcHggb3V0c2V0ICM4ODg7cGFkZGluZzo2cHggMTBweDt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowfS5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1BkIGltZ3ttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweDt3aWR0aDoxOXB4O2hlaWdodDoxOXB4O2JvcmRlcjpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uVklwZ0pkLVpWaTlvZC1TbWZaLWhTUkdQZCBzcGFue3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7bWFyZ2luLWxlZnQ6MnB4O21hcmdpbi1yaWdodDoycHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWZsb2F0LXRvcCAuVklwZ0pkLVpWaTlvZC1TbWZaLWhTUkdQZHtwYWRkaW5nOjJweDtib3JkZXItdG9wLXdpZHRoOjB9Lmdvb2ctdGUtZmxvYXQtYm90dG9tIC5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1Bke3BhZGRpbmc6MnB4O2JvcmRlci1ib3R0b20td2lkdGg6MH0uVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVke3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMwMEM7d2hpdGUtc3BhY2U6bm93cmFwO21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4fS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWQgc3Bhbnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWQgaW1ne21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4fS5nb29nLXRlLWdhZGdldC1zaW1wbGUgLlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZHtjb2xvcjojMDAwfS5nb29nLXRlLWdhZGdldC1zaW1wbGUgLlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZCBzcGFue3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYntiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjJweCBzb2xpZCAjQzNEOUZGO292ZXJmbG93LXk6c2Nyb2xsO292ZXJmbG93LXg6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MH0uVklwZ0pkLVpWaTlvZC14bDA3T2ItaWJuQzZie3BhZGRpbmc6M3B4O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmIsLlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2YjpsaW5re2NvbG9yOiMwMEM7YmFja2dyb3VuZDojRkZGfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6dmlzaXRlZHtjb2xvcjojNTUxQThCfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6aG92ZXJ7YmFja2dyb3VuZDojQzNEOUZGfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6YWN0aXZle2NvbG9yOiMwMEN9LlZJcGdKZC1aVmk5b2QtdkgxR21me2JhY2tncm91bmQtY29sb3I6I0ZGRjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNvbGlkICM2QjkwREE7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6NHB4fS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1LcmhQTmJ7d2lkdGg6MTZweH0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaGdEVXdle21hcmdpbjo2cHggMDtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6I2FhYTtvdmVyZmxvdzpoaWRkZW59LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YiBkaXYsLlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQgZGl2e3BhZGRpbmc6NHB4fS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmIgLnVERUZnZXtkaXNwbGF5Om5vbmV9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQgLmZtY21Te3BhZGRpbmctbGVmdDo0cHg7cGFkZGluZy1yaWdodDo0cHh9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZHt0ZXh0LWRlY29yYXRpb246bm9uZX0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiOmFjdGl2ZSBkaXYsLlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YjpsaW5rIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiOnZpc2l0ZWQgZGl2e2NvbG9yOiMwMEM7YmFja2dyb3VuZDojRkZGfS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmI6aG92ZXIgZGl2e2NvbG9yOiNGRkY7YmFja2dyb3VuZDojMzZDfS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDphY3RpdmUgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kOmhvdmVyIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDpsaW5rIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDp2aXNpdGVkIGRpdntjb2xvcjojMDAwO2ZvbnQtd2VpZ2h0OjcwMH0uVklwZ0pkLVpWaTlvZC1sOXhrdGZ7YmFja2dyb3VuZC1jb2xvcjojRkZGO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjhweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjEwcHh9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLU9FVm1jZHtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjNkI5MERBO2JveC1zaGFkb3c6MCAzcHggOHB4IDJweCAjOTk5O2JvcmRlci1yYWRpdXM6OHB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0ZiBpbWd7Ym9yZGVyOm5vbmV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLWZtY21Te21hcmdpbi10b3A6NnB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGN7bWFyZ2luLXRvcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwfS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGMgKnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuRFVHSmlle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X21pbnVzX3NtLmdpZil9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuVGR5VERle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X3BsdXNfc20uZ2lmKX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtVmd3SmxjIHNwYW57Y29sb3I6IzAwQzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyO21hcmdpbjowIDRweH0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtSTlHTHB7bWFyZ2luOjZweCAwIDB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm17bWFyZ2luOjB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm0gdGV4dGFyZWF7bWFyZ2luLWJvdHRvbTo0cHg7d2lkdGg6MTAwJX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYteWVQZTVje21hcmdpbjo2cHggMCA0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLXdPSE15Znt6LWluZGV4OjEwMDA7cG9zaXRpb246Zml4ZWQ7dHJhbnNpdGlvbi1kZWxheTouNnM7bGVmdDotMTAwMHB4O3RvcDotMTAwMHB4fS5WSXBnSmQtWlZpOW9kLWFaMndFZS13T0hNeWYtdGk2aEdje3RyYW5zaXRpb24tZGVsYXk6MHM7bGVmdDotMTRweDt0b3A6LTE0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPe2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxMDRweDtoZWlnaHQ6MTA0cHg7Ym9yZGVyLXJhZGl1czo1MHB4O2JhY2tncm91bmQ6I0ZGRiB1cmwoaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL3Byb2R1Y3QvMngvdHJhbnNsYXRlXzI0ZHAucG5nKSA1MCUgNTAlIG5vLXJlcGVhdDt0cmFuc2l0aW9uOmFsbCAuNnMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKC40KTtvcGFjaXR5OjB9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPLXRpNmhHY3t0cmFuc2Zvcm06c2NhbGUoLjUpO29wYWNpdHk6MX0uVklwZ0pkLVpWaTlvZC1hWjJ3RWV7bWFyZ2luOjJweCAwIDAgMnB4O2FuaW1hdGlvbjpzcGlubmVyLXJvdGF0b3IgMS40cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyBzcGlubmVyLXJvdGF0b3J7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3t0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9fS5WSXBnSmQtWlZpOW9kLWFaMndFZS1KdDVjS3tzdHJva2UtZGFzaGFycmF5OjE4NztzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZTojNDI4NUY0O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO2FuaW1hdGlvbjpzcGlubmVyLWRhc2ggMS40cyBlYXNlLWluLW91dCBpbmZpbml0ZX1Aa2V5ZnJhbWVzIHNwaW5uZXItZGFzaHswJXtzdHJva2UtZGFzaG9mZnNldDoxODd9NTAle3N0cm9rZS1kYXNob2Zmc2V0OjQ2Ljc1O3RyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKX10b3tzdHJva2UtZGFzaG9mZnNldDoxODc7dHJhbnNmb3JtOnJvdGF0ZSg0NTBkZWcpfX0uVklwZ0pkLXlBV05FYi1MN2xia2IgYSwuVklwZ0pkLXlBV05FYi1MN2xia2IgYm9keSwuVklwZ0pkLXlBV05FYi1MN2xia2IgZGl2LC5WSXBnSmQteUFXTkViLUw3bGJrYiBmb3JtLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoMSwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDIsLlZJcGdKZC15QVdORWItTDdsYmtiIGgzLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoNCwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDUsLlZJcGdKZC15QVdORWItTDdsYmtiIGg2LC5WSXBnSmQteUFXTkViLUw3bGJrYiBodG1sLC5WSXBnSmQteUFXTkViLUw3bGJrYiBpZnJhbWUsLlZJcGdKZC15QVdORWItTDdsYmtiIGltZywuVklwZ0pkLXlBV05FYi1MN2xia2IgbGksLlZJcGdKZC15QVdORWItTDdsYmtiIG9sLC5WSXBnSmQteUFXTkViLUw3bGJrYiBwLC5WSXBnSmQteUFXTkViLUw3bGJrYiBzcGFuLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0YWJsZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgdGJvZHksLlZJcGdKZC15QVdORWItTDdsYmtiIHRkLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0ciwuVklwZ0pkLXlBV05FYi1MN2xia2IgdWx7YWxsOnVuc2V0O2ZvbnQtc2l6ZToxMDAlO2xpbmUtaGVpZ2h0Om5vcm1hbH0uVklwZ0pkLXlBV05FYi1MN2xia2Igb2wsLlZJcGdKZC15QVdORWItTDdsYmtiIHVse2xpc3Qtc3R5bGU6bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjB9LlZJcGdKZC15QVdORWItTDdsYmtiIGNhcHRpb24sLlZJcGdKZC15QVdORWItTDdsYmtiIHRkLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0aHt0ZXh0LWFsaWduOmxlZnQ7Zm9udC13ZWlnaHQ6NDAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiBpbnB1dDo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH1kaXY+LlZJcGdKZC15QVdORWItTDdsYmtie3BhZGRpbmc6MTBweCAxNHB4fS5WSXBnSmQteUFXTkViLUw3bGJrYntjb2xvcjojMjIyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlZWU7Ym94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpOy1tb3otYm94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpOy13ZWJraXQtYm94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpO2Rpc3BsYXk6bm9uZTtmb250LWZhbWlseTphcmlhbDtmb250LXNpemU6MTBwdDt3aWR0aDo0MjBweDtwYWRkaW5nOjEycHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwMH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItblZNZmNkLWZtY21TLC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtcGJUVFlle2NsZWFyOmJvdGg7Zm9udC1zaXplOjEwcHQ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpqdXN0aWZ5O3dpZHRoOjEwMCV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXI0bmtle2NvbG9yOiM5OTk7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjttYXJnaW46NHB4IDA7dGV4dC1hbGlnbjpsZWZ0fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UdkQ5UGMtTGdic1Nle2Rpc3BsYXk6bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItbDRlSFh7ZmxvYXQ6bGVmdDttYXJnaW46MH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItWjBBcnFmLVBMRGJiZntkaXNwbGF5OmlubGluZS1ibG9ja30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItZnc0MlplLVowQXJxZi1oYUFjbGZ7ZGlzcGxheTpub25lO3dpZHRoOjEwMCV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1IOXREdHttYXJnaW4tdG9wOjIwcHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUxLNXl1e2Zsb2F0OmxlZnR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXF3VThNZXtmbG9hdDpyaWdodH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItY0dNSTJie21pbi1oZWlnaHQ6MTVweDtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MSV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLWpPZmtNYi1OZTNzRmZ7YmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjMjk5MTBkIDAsIzIwYWYwZSAxMDAlKTtiYWNrZ3JvdW5kOiMyOTkxMGQ7Ym9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6aW5zZXQgMCAycHggMnB4ICMxZTY2MDk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMnB4IDJweCAjMWU2NjA5Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDJweCAycHggIzFlNjYwOTtjb2xvcjp3aGl0ZTtmb250LXNpemU6OXB0O2ZvbnQtd2VpZ2h0OmJvbGRlcjttYXJnaW4tdG9wOjEycHg7cGFkZGluZzo2cHg7dGV4dC1zaGFkb3c6MXB4IDFweCAxcHggIzFlNjYwOX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItWjBBcnFmLWhTUkdQZHtjb2xvcjojMTVjO2N1cnNvcjpwb2ludGVyO2ZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQtc2l6ZToxMXB4O21hcmdpbi1yaWdodDoxNXB4O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYj50ZXh0YXJlYXtmb250LWZhbWlseTphcmlhbDtyZXNpemU6dmVydGljYWw7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjEwcHg7Ym9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O2JvcmRlci10b3A6MXB4IHNvbGlkIHNpbHZlcjtmb250LXNpemU6MTNweDtoZWlnaHQ6YXV0bztvdmVyZmxvdy15OmF1dG87cGFkZGluZzoxcHh9LlZJcGdKZC15QVdORWItTDdsYmtiIHRleHRhcmVhOmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjMpO2JvcmRlcjoxcHggc29saWQgIzRkOTBmZTtvdXRsaW5lOm5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1JYkUwU3ttYXJnaW4tcmlnaHQ6MTBweH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwe21pbi1oZWlnaHQ6MjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZy10b3A6OHB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwe21hcmdpbi1ib3R0b206NXB4O21hcmdpbi1ib3R0b206MH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dHtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6NTRweDsqbWluLXdpZHRoOjcwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZGNkY2RjO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzQ0NDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7aGVpZ2h0OjI3cHg7b3V0bGluZTowO3BhZGRpbmc6MCA4cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjI3cHg7bWFyZ2luOjAgMTZweCAwIDA7Ym94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMSk7LW1vei1ib3gtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpO2JvcmRlci1yYWRpdXM6MnB4O3RyYW5zaXRpb246YWxsIC4yMThzO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2Y1ZjVmNSwjZjFmMWYxKTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmhvdmVye2JvcmRlcjoxcHggc29saWQgI2M2YzZjNjtjb2xvcjojMjIyO3RyYW5zaXRpb246YWxsIDBzO2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDphY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjYzZjNmM2O2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZjZmNmY2O2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmZvY3VzIC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LkFIbXV3ZSAuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDphY3RpdmUsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6Zm9jdXM6YWN0aXZle2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC41KX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dC5BSG11d2UsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlcjoxcHggc29saWQgIzRkOTBmZTt6LWluZGV4OjQhaW1wb3J0YW50fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LmdrNlNNZHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCNlZWUsI2UwZTBlMCk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwuMSk7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2NvbG9yOiMzMzN9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZntjb2xvcjp3aGl0ZTtib3JkZXItY29sb3I6IzMwNzllZDtiYWNrZ3JvdW5kLWNvbG9yOiM0ZDkwZmU7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzQ3ODdlZCl9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZi5BSG11d2UgLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjphY3RpdmUsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjpob3ZlciAuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmZvY3Vze2JvcmRlci1jb2xvcjojMzA3OWVkO2JhY2tncm91bmQtY29sb3I6IzM1N2FlODtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjMzU3YWU4KX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmhvdmVye2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmYsMCAxcHggMXB4IHJnYmEoMCwwLDAsLjEpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZiwwIDFweCAxcHggcmdiYSgwLDAsMCwuMSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmLDAgMXB4IDFweCByZ2JhKDAsMCwwLC4xKX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmLkFIbXV3ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmZvY3VzLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0IC5WSXBnSmQteUFXTkViLVowQXJxZi1zRmVCcWY6aG92ZXIsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQuQUhtdXdlLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDpmb2N1cywuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDpob3Zlcntib3JkZXItY29sb3I6IzMwNzllZH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItbXJ4UGdle2NvbG9yOiM5OTk7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZn0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLVcwdkpvLWZtY21Te2NvbG9yOiM5OTk7Zm9udC1zaXplOjExcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjttYXJnaW46MTVweCAwIDVweH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXUwcGpvZS1mbWNtU3tjb2xvcjojODAwO2Rpc3BsYXk6bm9uZTtmb250LXNpemU6OXB0fS5WSXBnSmQteUFXTkViLVZJcGdKZC1mbWNtUy1zbjU0UXtiYWNrZ3JvdW5kLWNvbG9yOiNjOWQ3ZjE7Ym94LXNoYWRvdzoycHggMnB4IDRweCAjOTlhO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQteGwwN09ie2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym94LXNoYWRvdzowIDJweCA0cHggIzk5YTttaW4td2lkdGg6MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MjAwMH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQtajdMRmxie2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MnB4IDVweCA1cHg7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLXN0eWxlOm5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC14bDA3T2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYjpob3ZlcntiYWNrZ3JvdW5kOiNkZGR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC14bDA3T2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYiBoMXtmb250LXNpemU6MTAwJTtmb250LXdlaWdodDo3MDA7bWFyZ2luOjRweCAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQteGwwN09iIC5WSXBnSmQteUFXTkViLVZJcGdKZC1qN0xGbGIgc3Ryb25ne2NvbG9yOiMzNDVhYWR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVZJcGdKZC1lS201RmMtaEZzYm97dGV4dC1hbGlnbjpyaWdodDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6YXV0b30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYi1TSXNyVGQgLlZJcGdKZC15QVdORWItVklwZ0pkLWVLbTVGYy1oRnNib3t0ZXh0LWFsaWduOmxlZnQ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OmF1dG99LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVRWTHc5Yy1wcEhscmYtc241NFEsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtZm1jbVN7YmFja2dyb3VuZC1jb2xvcjojZjFlYTAwO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93OjNweCAzcHggNHB4IHJnYmEoMCwwLDAsLjUpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZjFlYTAwO2N1cnNvcjpwb2ludGVyO21hcmdpbjotMnB4IC0ycHggLTJweCAtM3B4O3BhZGRpbmc6MnB4IDJweCAycHggM3B4O3Bvc2l0aW9uOnJlbGF0aXZlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2NvbG9yOiMyMjJ9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtcGJUVFlle2NvbG9yOndoaXRlO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2JhY2tncm91bmQtY29sb3I6I2M5ZDdmMTtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDstbW96LWJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7Ym94LXNoYWRvdzozcHggM3B4IDRweCByZ2JhKDAsMCwwLC41KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOi0ycHggLTJweCAtMnB4IC0zcHg7cGFkZGluZzoycHggMnB4IDNweCAzcHg7cG9zaXRpb246cmVsYXRpdmV9LlZJcGdKZC15QVdORWItTDdsYmtiIHNwYW46Zm9jdXN7b3V0bGluZTpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtRHlWREF7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmU7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO21hcmdpbjotMnB4O3BhZGRpbmc6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi15QVdORWItVFZMdzljLXNuNTRRLUx6WDNlZntib3JkZXItbGVmdDoycHggc29saWQgcmVkO21hcmdpbi1sZWZ0Oi0ycHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1UVkx3OWMtc241NFEtWUlBaUlie2JvcmRlci1yaWdodDoycHggc29saWQgcmVkO21hcmdpbi1yaWdodDotMnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJme3BhZGRpbmc6MnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21Te2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDJweCAzcHg7bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMzMzM7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O2JvcmRlci10b3A6MXB4IHNvbGlkICNjMGMwYzA7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wO2hlaWdodDoyMXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJvcmRlci1yYWRpdXM6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmhvdmVye2JvcmRlcjoxcHggc29saWQgI2I5YjliOTtib3JkZXItdG9wOjFweCBzb2xpZCAjYTBhMGEwO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjMpO291dGxpbmU6bm9uZTtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC1ZUHFqYmYtc0ZlQnFme2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDZweCAzcHg7bWFyZ2luOjAgMCAwIDJweDtoZWlnaHQ6MjFweH0uVklwZ0pkLXlBV05FYi1MN2xia2I+ZGl2e2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LWZhbWlseTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtVWQ3ZnJ7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtYWxpZ246ZW5kO2FsaWduLWl0ZW1zOmVuZDttYXJnaW46MTRweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLUl1aXpXYy1TSXNyVGR7bWFyZ2luLXJpZ2h0OjE0cHg7Y29sb3I6Izc0Nzc3NTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1JdWl6V2MtaTNqTThje21hcmdpbi1sZWZ0OjE0cHg7Y29sb3I6Izc0Nzc3NTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1rNzdJaWZ7bWFyZ2luOjAgMTZweCAxNnB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYXhBVjF7d2lkdGg6YXV0bztjb2xvcjojMWYxZjFmO2ZvbnQtc2l6ZToxNnB4O3RleHQtYWxpZ246aW5pdGlhbH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWF4QVYxIC5WSXBnSmQteUFXTkViLVNJc3JUZHt0ZXh0LWFsaWduOnJpZ2h0fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlke2JvcmRlci1yYWRpdXM6MCAwIDEycHggMTJweDttYXJnaW46MDtiYWNrZ3JvdW5kOiNmMWY0Zjk7cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDo1MHB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkIC5WSXBnSmQteUFXTkViLVNJc3JUZHt0ZXh0LWFsaWduOnJpZ2h0fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkLUI3STRPZHtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1vcmllbnQ6dmVydGljYWw7LW1vei1ib3gtZGlyZWN0aW9uOm5vcm1hbDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6NzclO3BhZGRpbmc6MTJweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLU43RXFpZC1CN0k0T2QgLlZJcGdKZC15QVdORWItU0lzclRke3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1VVHVqQ2J7Y29sb3I6IzFmMWYxZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9kIC5WSXBnSmQteUFXTkViLVNJc3JUZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtVVR1akNie3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1lTzltS2V7Y29sb3I6IzQ0NDc0Njtmb250LXNpemU6MTJweDtwYWRkaW5nLXRvcDo0cHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9kIC5WSXBnSmQteUFXTkViLVNJc3JUZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtZU85bUtle3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC14Z292NXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTBweDtyaWdodDo1cHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC14Z292NSAuVklwZ0pkLXlBV05FYi1TSXNyVGR7bGVmdDo1cHg7cmlnaHQ6YXV0b30uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLVRISTZWYntmaWxsOiMwYjU3ZDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1iZ202c2Z7bWFyZ2luOi00cHggMnB4IDAgMDtwYWRkaW5nOjJweCAwIDA7d2lkdGg6NDhweDtoZWlnaHQ6NDhweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjI0cHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDpub25lfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYmdtNnNmOmhvdmVye2JhY2tncm91bmQ6I2U4ZWJlY30uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWFYWVRjZXtkaXNwbGF5Om5vbmV9c2VudGluZWx7fQ=="}},"time_used":17,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":17,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/global.css?ver=1706574922","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.983Z","timestamp":1785130089983,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/elementor/css/global.css?ver=1706574922 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=C1IA6yW2t8MubC4SncLRGQr60jJ7fzYPI9BMgPnIf01yf2rwei%2FXMW%2BnAWjH5xvusyojwCU5SVh5JhDGWlw%2FOeBmmcQx79n2IR6ypLjykWjM7WgpibNXSX97FQY9qjJuQB6Wv5HbEw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d366e2b120a-OSL\r\ncontent-length: 7218\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":160345,"size_decoded":8030,"mime_type":"text/css","magic":"ASCII text","md5":"28bca58ce55a5105e5e66402ad389b94","sha1":"227b3d832cc7bfadf69c0d2025cd372c6907142e","sha256":"05ffc7eec97d5d5e48486b27fc94ca11359989245363cc338d28dd121392ec86","sha512":"16fa78c7b1b4c028092fa1bf1e831145f79d28cf3cbaf184e094b23d22683a888f6d56aced731c10509053178816245ca284583d7fc78555ba31bd95d3138922","ssdeep":"1536:q3o9HJ/ky63b1dbbLQCg6j/XGnoHtVR6RO5EOI6RO5EO9:CiHJ3","tlshash":"33f377047c32d262e82f077fa28fd1982d8c64cbdc298f96f99c91564fdcb2a6331595","first_seen":"2026-07-27T03:56:42.477606Z","last_seen":"2026-07-27T05:30:59.806313Z","times_seen":6,"resource_available":false,"data":"LmVsZW1lbnRvci13aWRnZXQtaGVhZGluZyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UgLndpZGdldC1pbWFnZS1jYXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvci5lbGVtZW50b3ItZHJvcC1jYXAtdmlldy1zdGFja2VkIC5lbGVtZW50b3ItZHJvcC1jYXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvci5lbGVtZW50b3ItZHJvcC1jYXAtdmlldy1mcmFtZWQgLmVsZW1lbnRvci1kcm9wLWNhcCwKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IuZWxlbWVudG9yLWRyb3AtY2FwLXZpZXctZGVmYXVsdCAuZWxlbWVudG9yLWRyb3AtY2FwIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC13ZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItYWNjZW50KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlciB7CiAgICAtLWRpdmlkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyIC5lbGVtZW50b3ItZGl2aWRlcl9fdGV4dCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLmVsZW1lbnRvci12aWV3LXN0YWNrZWQgLmVsZW1lbnRvci1pY29uIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLmVsZW1lbnRvci12aWV3LWZyYW1lZCAuZWxlbWVudG9yLWljb24sCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXIuZWxlbWVudG9yLXZpZXctZGVmYXVsdCAuZWxlbWVudG9yLWljb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3Itc2Vjb25kYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci5lbGVtZW50b3Itdmlldy1mcmFtZWQgLmVsZW1lbnRvci1pY29uLAouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLmVsZW1lbnRvci12aWV3LWRlZmF1bHQgLmVsZW1lbnRvci1pY29uIHN2ZyB7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3Itc2Vjb25kYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWljb24uZWxlbWVudG9yLXZpZXctc3RhY2tlZCAuZWxlbWVudG9yLWljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLmVsZW1lbnRvci12aWV3LWZyYW1lZCAuZWxlbWVudG9yLWljb24sCi5lbGVtZW50b3Itd2lkZ2V0LWljb24uZWxlbWVudG9yLXZpZXctZGVmYXVsdCAuZWxlbWVudG9yLWljb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLmVsZW1lbnRvci12aWV3LWZyYW1lZCAuZWxlbWVudG9yLWljb24sCi5lbGVtZW50b3Itd2lkZ2V0LWljb24uZWxlbWVudG9yLXZpZXctZGVmYXVsdCAuZWxlbWVudG9yLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXZpZXctc3RhY2tlZCAuZWxlbWVudG9yLWljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3Itdmlldy1mcmFtZWQgLmVsZW1lbnRvci1pY29uLAouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3Itdmlldy1kZWZhdWx0IC5lbGVtZW50b3ItaWNvbiB7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94IC5lbGVtZW50b3ItaWNvbi1ib3gtdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3ggLmVsZW1lbnRvci1pY29uLWJveC10aXRsZSwKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3ggLmVsZW1lbnRvci1pY29uLWJveC10aXRsZSBhIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3ggLmVsZW1lbnRvci1pY29uLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXN0YXItcmF0aW5nIC5lbGVtZW50b3Itc3Rhci1yYXRpbmdfX3RpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS1pdGVtIC5nYWxsZXJ5LWNhcHRpb24gewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1saXN0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06bm90KDpsYXN0LWNoaWxkKTphZnRlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1saXN0IC5lbGVtZW50b3ItaWNvbi1saXN0LWljb24gaSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiBzdmcgewogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbT4uZWxlbWVudG9yLWljb24tbGlzdC10ZXh0LAouZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbT5hIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWNvdW50ZXIgLmVsZW1lbnRvci1jb3VudGVyLW51bWJlci13cmFwcGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWNvdW50ZXIgLmVsZW1lbnRvci1jb3VudGVyLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3Itc2Vjb25kYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXByb2dyZXNzIC5lbGVtZW50b3ItcHJvZ3Jlc3Mtd3JhcHBlciAuZWxlbWVudG9yLXByb2dyZXNzLWJhciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXByb2dyZXNzIC5lbGVtZW50b3ItdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLWNvbnRlbnQgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLW5hbWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdGVzdGltb25pYWwgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC1qb2IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi10aXRsZSwKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi10aXRsZSBhIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMgLmVsZW1lbnRvci10YWItdGl0bGUuZWxlbWVudG9yLWFjdGl2ZSwKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi10aXRsZS5lbGVtZW50b3ItYWN0aXZlIGEgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC10YWJzIC5lbGVtZW50b3ItdGFiLXRpdGxlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtYWNjb3JkaW9uIC5lbGVtZW50b3ItYWNjb3JkaW9uLWljb24sCi5lbGVtZW50b3Itd2lkZ2V0LWFjY29yZGlvbiAuZWxlbWVudG9yLWFjY29yZGlvbi10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1hY2NvcmRpb24gLmVsZW1lbnRvci1hY2NvcmRpb24taWNvbiBzdmcgewogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1hY2NvcmRpb24gLmVsZW1lbnRvci1hY3RpdmUgLmVsZW1lbnRvci1hY2NvcmRpb24taWNvbiwKLmVsZW1lbnRvci13aWRnZXQtYWNjb3JkaW9uIC5lbGVtZW50b3ItYWN0aXZlIC5lbGVtZW50b3ItYWNjb3JkaW9uLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItYWNjZW50KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtYWNjb3JkaW9uIC5lbGVtZW50b3ItYWN0aXZlIC5lbGVtZW50b3ItYWNjb3JkaW9uLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1hY2NvcmRpb24gLmVsZW1lbnRvci1hY2NvcmRpb24tdGl0bGUgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItY29udGVudCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRvZ2dsZSAuZWxlbWVudG9yLXRvZ2dsZS10aXRsZSwKLmVsZW1lbnRvci13aWRnZXQtdG9nZ2xlIC5lbGVtZW50b3ItdG9nZ2xlLWljb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdG9nZ2xlIC5lbGVtZW50b3ItdG9nZ2xlLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdG9nZ2xlIC5lbGVtZW50b3ItdGFiLXRpdGxlLmVsZW1lbnRvci1hY3RpdmUgYSwKLmVsZW1lbnRvci13aWRnZXQtdG9nZ2xlIC5lbGVtZW50b3ItdGFiLXRpdGxlLmVsZW1lbnRvci1hY3RpdmUgLmVsZW1lbnRvci10b2dnbGUtaWNvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLWFjY2VudCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRvZ2dsZSAuZWxlbWVudG9yLXRvZ2dsZS10aXRsZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRvZ2dsZSAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtYWxlcnQgLmVsZW1lbnRvci1hbGVydC10aXRsZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWFsZXJ0IC5lbGVtZW50b3ItYWxlcnQtZGVzY3JpcHRpb24gewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldGluYSAuaGZlLXJldGluYS1pbWFnZS1jb250YWluZXIgLmhmZS1yZXRpbmEtaW1nIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1yZXRpbmEgLndpZGdldC1pbWFnZS1jYXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtY29weXJpZ2h0IC5oZmUtY29weXJpZ2h0LXdyYXBwZXIgYSwKLmVsZW1lbnRvci13aWRnZXQtY29weXJpZ2h0IC5oZmUtY29weXJpZ2h0LXdyYXBwZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtY29weXJpZ2h0IC5oZmUtY29weXJpZ2h0LXdyYXBwZXIsCi5lbGVtZW50b3Itd2lkZ2V0LWNvcHlyaWdodCAuaGZlLWNvcHlyaWdodC13cmFwcGVyIGEgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSAubWVudS1pdGVtLmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkLAouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLmhmZS1uYXYtbWVudS1sYXlvdXQ6bm90KC5oZmUtcG9pbnRlcl9fZnJhbWVkKSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLmhmZS1uYXYtbWVudS1sYXlvdXQ6bm90KC5oZmUtcG9pbnRlcl9fZnJhbWVkKSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLWFjY2VudCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSAuaGZlLW5hdi1tZW51LWxheW91dDpub3QoLmhmZS1wb2ludGVyX19mcmFtZWQpIC5tZW51LWl0ZW0ucGFyZW50IC5zdWItbWVudSAuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lciBhOmFmdGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLmhmZS1wb2ludGVyX19mcmFtZWQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLnN1Yi1tZW51IGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0uZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLWFjY2VudCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1wYWdlLXRpdGxlIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSwKLmVsZW1lbnRvci13aWRnZXQtcGFnZS10aXRsZSAuaGZlLXBhZ2UtdGl0bGUgYSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1wYWdlLXRpdGxlIC5oZmUtcGFnZS10aXRsZS1pY29uIGkgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtcGFnZS10aXRsZSAuaGZlLXBhZ2UtdGl0bGUtaWNvbiBzdmcgewogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1oZmUtc2l0ZS10aXRsZSAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUsCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zaXRlLXRpdGxlIC5oZmUtaGVhZGluZyBhIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNpdGUtdGl0bGUgLmhmZS1oZWFkaW5nLXRleHQgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNpdGUtdGl0bGUgLmhmZS1pY29uIGkgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNpdGUtdGl0bGUgLmhmZS1pY29uIHN2ZyB7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zaXRlLXRhZ2xpbmUgLmhmZS1zaXRlLXRhZ2xpbmUgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3Itc2Vjb25kYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNpdGUtdGFnbGluZSAuaGZlLWljb24gaSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1oZmUtc2l0ZS10YWdsaW5lIC5oZmUtaWNvbiBzdmcgewogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1zaXRlLWxvZ28gLmhmZS1zaXRlLWxvZ28tY29udGFpbmVyIC5oZmUtc2l0ZS1sb2dvLWltZyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtc2l0ZS1sb2dvIC53aWRnZXQtaW1hZ2UtY2FwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zZWFyY2gtYnV0dG9uIGlucHV0W3R5cGU9InNlYXJjaCJdLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zZWFyY2gtYnV0dG9uIC5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNlYXJjaC1idXR0b24gLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNlYXJjaC1idXR0b24gLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zZWFyY2gtYnV0dG9uIC5oZmUtc2VhcmNoLWZvcm1fX2NvbnRhaW5lciwKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNlYXJjaC1idXR0b24gLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUgLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zZWFyY2gtYnV0dG9uIC5oZmUtaW5wdXQtZm9jdXMgLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUgLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zZWFyY2gtYnV0dG9uIC5oZmUtc2VhcmNoLWZvcm1fX2lucHV0OmZvY3VzOjpwbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1oZmUtc2VhcmNoLWJ1dHRvbiAuaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIgYnV0dG9uI2NsZWFyLXdpdGgtYnV0dG9uLAouZWxlbWVudG9yLXdpZGdldC1oZmUtc2VhcmNoLWJ1dHRvbiAuaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIgYnV0dG9uI2NsZWFyLAouZWxlbWVudG9yLXdpZGdldC1oZmUtc2VhcmNoLWJ1dHRvbiAuaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSBidXR0b24jY2xlYXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtYnV0dG9uIC5tZi1idG4td3JhcGVyIHN2ZyB7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWJ1dHRvbiAubWYtYnRuLXdyYXBlciBpIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWJ1dHRvbiAubWV0Zm9ybS1idG46aG92ZXIgc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtYnV0dG9uIC5tZXRmb3JtLWJ0bjpob3ZlciBpIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LXJlcXVpcmVkLWluZGljYXRvciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtZXJyb3ItbWVzc2FnZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLWZyb20sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLmlycy0tcm91bmQgLmlycy1oYW5kbGUgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZTpiZWZvcmUgewogICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fdHJhY2stLWFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6aG92ZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlciwgLnRleHQpLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIpIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuaXJzLS1yb3VuZCAuaXJzLXRvLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ6aG92ZXIgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mX211bHRpc2VsZWN0X19vcHRpb246Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0OjpwbGFjZWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5pcnMtLXJvdW5kIC5pcnMtdG8sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5pcnMtLXJvdW5kIC5pcnMtZnJvbTpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dDpob3ZlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6aG92ZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dD4ubWZfc2VsZWN0X19jb250cm9sLS1pcy1mb2N1c2VkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWZfbXVsdGlzZWxlY3RfX29wdGlvbjpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5pcnMtLXJvdW5kIC5pcnMtYmFyLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5pcnMtLXJvdW5kIC5pcnMtdG86YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LXdyYXBwZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0OmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbWFnZS1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtYmFyLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAuaXJzLS1yb3VuZCAuaXJzLXRvLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtdG86YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0OmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQ6aG92ZXIgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbWFnZS1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mX211bHRpc2VsZWN0X19vcHRpb246Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgLmZsYXRwaWNrci1jYWxlbmRhciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0OjpwbGFjZWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1sYWJlbCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0Lm1mLWludmFsaWQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy1iYXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5pcnMtLXJvdW5kIC5pcnMtdG8sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5pcnMtLXJvdW5kIC5pcnMtZnJvbTpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy10bzpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtd3JhcHBlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQ6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dDpob3ZlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6aG92ZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWltYWdlLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dD4ubWZfc2VsZWN0X19jb250cm9sLS1pcy1mb2N1c2VkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWZfbXVsdGlzZWxlY3RfX29wdGlvbjpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dDotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtYmFyLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtdG86YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0OmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbWFnZS1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1maWxlLXVwbG9hZC1jb250YWluZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX29wdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19vcHRpb246aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1zZWxlY3QgLm1mX3NlbGVjdF9fb3B0aW9uLm1mX3NlbGVjdF9fb3B0aW9uLS1pcy1zZWxlY3RlZCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtYmFyLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtdG86YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0OmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbWFnZS1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1maWxlLXVwbG9hZC1jb250YWluZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuaXJzLS1yb3VuZCAuaXJzLXRvLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ6aG92ZXIgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mX211bHRpc2VsZWN0X19vcHRpb246Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0OjpwbGFjZWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtY2hlY2tib3ggLm1mLWlucHV0LXJlcXVpcmVkLWluZGljYXRvciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWNoZWNrYm94IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtZXJyb3ItbWVzc2FnZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtY2hlY2tib3gtb3B0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWNoZWNrYm94IC5tZi1jaGVja2JveC1vcHRpb24gaW5wdXRbdHlwZT0iY2hlY2tib3giXStzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCtzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtY2hlY2tib3gsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWNoZWNrYm94IC5tZi1jaGVja2JveC1vcHRpb24gaW5wdXRbdHlwZT0iY2hlY2tib3giXStzcGFuOmJlZm9yZSB7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWNoZWNrYm94IC5tZi1jaGVja2JveCwKLmVsZW1lbnRvci13aWRnZXQtbWYtY2hlY2tib3ggLm1mLWNoZWNrYm94LW9wdGlvbiBpbnB1dFt0eXBlPSJjaGVja2JveCJdK3NwYW4gewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFkaW8gLm1mLWlucHV0LXJlcXVpcmVkLWluZGljYXRvciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhZGlvIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtZXJyb3ItbWVzc2FnZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtcmFkaW8tb3B0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhZGlvIC5tZi1yYWRpby1vcHRpb24gaW5wdXRbdHlwZT0icmFkaW8iXStzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtcmFkaW8tb3B0aW9uIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCtzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtcmFkaW8sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhZGlvIC5tZi1yYWRpby1vcHRpb24gaW5wdXRbdHlwZT0icmFkaW8iXStzcGFuOmJlZm9yZSB7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhZGlvIC5tZi1yYWRpbywKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFkaW8gLm1mLXJhZGlvLW9wdGlvbiBpbnB1dFt0eXBlPSJyYWRpbyJdK3NwYW4gewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zd2l0Y2ggLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc3dpdGNoIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtc3dpdGNoIC5tZi1pbnB1dC1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtY29udHJvbC1sYWJlbDo6YWZ0ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtY29udHJvbDpjaGVja2Vkfi5tZi1pbnB1dC1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtc3dpdGNoIC5tZi1pbnB1dC1jb250cm9sOmNoZWNrZWR+Lm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zd2l0Y2ggLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuaXJzLS1yb3VuZCAuaXJzLXRvLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQ6aG92ZXIgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mX211bHRpc2VsZWN0X19vcHRpb246Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5pcnMtLXJvdW5kIC5pcnMtdG8sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5pcnMtLXJvdW5kIC5pcnMtZnJvbTpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dDpob3ZlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6aG92ZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dD4ubWZfc2VsZWN0X19jb250cm9sLS1pcy1mb2N1c2VkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWZfbXVsdGlzZWxlY3RfX29wdGlvbjpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC1sYWJlbCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0Lm1mLWludmFsaWQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmlycy0tcm91bmQgLmlycy1iYXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmlycy0tcm91bmQgLmlycy1zaW5nbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmlycy0tcm91bmQgLmlycy10bzpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtd3JhcHBlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQ6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWltYWdlLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dDotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtYmFyLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAuaXJzLS1yb3VuZCAuaXJzLXRvLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtdG86YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LXdyYXBwZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0OmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQ6aG92ZXIgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbWFnZS1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mX211bHRpc2VsZWN0X19vcHRpb246Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0OjpwbGFjZWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1sYWJlbCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0Lm1mLWludmFsaWQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy1iYXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5pcnMtLXJvdW5kIC5pcnMtdG8sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5pcnMtLXJvdW5kIC5pcnMtZnJvbTpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy10bzpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtd3JhcHBlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQ6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dDpob3ZlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6aG92ZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWltYWdlLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dD4ubWZfc2VsZWN0X19jb250cm9sLS1pcy1mb2N1c2VkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWZfbXVsdGlzZWxlY3RfX29wdGlvbjpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dDotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3Rpbmctb3B0aW4gLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3Rpbmctb3B0aW4gLm1mLWlucHV0LXJlcXVpcmVkLWluZGljYXRvciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLW9wdGluIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtZXJyb3ItbWVzc2FnZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLW9wdGluIC5tZi1jaGVja2JveC1vcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il0rc3BhbjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCtzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLW9wdGluIC5tZi1jaGVja2JveCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il0rc3BhbjpiZWZvcmUgewogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLW9wdGluIC5tZi1jaGVja2JveCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il0rc3BhbiB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3Rpbmctb3B0aW4gLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1pbnB1dC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1pbnB1dC1sYWJlbCBpbnB1dFt0eXBlPSJjaGVja2JveCJdK3NwYW46YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWdkcHItY29uc2VudCAubWYtaW5wdXQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWdkcHItY29uc2VudCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQtbGFiZWwgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1nZHByLWNvbnNlbnQgLm1mLWlucHV0LXJlcXVpcmVkLWluZGljYXRvciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1nZHByLWNvbnNlbnQgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1jaGVja2JveC1vcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1jaGVja2JveC1vcHRpb24gaW5wdXRbdHlwZT0iY2hlY2tib3giXStzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1nZHByLWNvbnNlbnQgLm1mLWNoZWNrYm94LW9wdGlvbiBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQrc3BhbjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1jaGVja2JveCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1jaGVja2JveC1vcHRpb24gaW5wdXRbdHlwZT0iY2hlY2tib3giXStzcGFuOmJlZm9yZSB7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWdkcHItY29uc2VudCAubWYtY2hlY2tib3gsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWdkcHItY29uc2VudCAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il0rc3BhbiB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWdkcHItY29uc2VudCAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yZWNhcHRjaGEgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2ltcGxlLWNhcHRjaGEgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2ltcGxlLWNhcHRjaGEgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtZXJyb3ItbWVzc2FnZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtcmVmcmVzaC1jYXB0Y2hhIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlciwgLnRleHQpLAouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2ltcGxlLWNhcHRjaGEgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2ltcGxlLWNhcHRjaGEgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIpIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhdGluZyAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYXRpbmcgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1yYXRpbmdzOm5vdCguaXMtc2VsZWN0ZWQpLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYXRpbmcgLm1mLXJhdGluZ3MuaXMtc2VsZWN0ZWQ6bm90KDpob3Zlcik+aW5wdXQ6Y2hlY2tlZCtsYWJlbH5sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1yYXRpbmdzLmlzLXNlbGVjdGVkPmxhYmVsOmhvdmVyfmxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYXRpbmcgLm1mLXJhdGluZ3M6bm90KC5pcy1zZWxlY3RlZCk+bGFiZWw6aG92ZXJ+bGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1yYXRpbmdzLmlzLXNlbGVjdGVkPmxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYXRpbmcgLm1mLXJhdGluZ3M6bm90KC5pcy1zZWxlY3RlZCk6aG92ZXI+bGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC1sYWJlbCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0Lm1mLWludmFsaWQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmlycy0tcm91bmQgLmlycy1iYXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmlycy0tcm91bmQgLmlycy1zaW5nbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmlycy0tcm91bmQgLmlycy10bzpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtd3JhcHBlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQ6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWltYWdlLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWZpbGUtbmFtZSBzcGFuIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc3VtbWFyeSAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc3VtbWFyeSAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCkBtZWRpYShtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZSAud2lkZ2V0LWltYWdlLWNhcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1idXR0b24gLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94IC5lbGVtZW50b3ItaWNvbi1ib3gtZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXN0YXItcmF0aW5nIC5lbGVtZW50b3Itc3Rhci1yYXRpbmdfX3RpdGxlIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LWl0ZW0gLmdhbGxlcnktY2FwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tbGlzdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtPi5lbGVtZW50b3ItaWNvbi1saXN0LXRleHQsCiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbT5hIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1wcm9ncmVzcyAuZWxlbWVudG9yLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLWNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXRhYnMgLmVsZW1lbnRvci10YWItY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtYWNjb3JkaW9uIC5lbGVtZW50b3ItdGFiLWNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXRvZ2dsZSAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1hbGVydCAuZWxlbWVudG9yLWFsZXJ0LWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1yZXRpbmEgLndpZGdldC1pbWFnZS1jYXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1jb3B5cmlnaHQgLmhmZS1jb3B5cmlnaHQtd3JhcHBlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWNvcHlyaWdodCAuaGZlLWNvcHlyaWdodC13cmFwcGVyIGEgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSAuc3ViLW1lbnUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgbmF2LmhmZS1kcm9wZG93biBsaSBhLmhmZS1tZW51LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgbmF2LmhmZS1kcm9wZG93bi1leHBhbmRpYmxlIGxpIGEuaGZlLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtc2l0ZS1sb2dvIC53aWRnZXQtaW1hZ2UtY2FwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdGV4dC1wYXRoIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9Cn0KCkBtZWRpYShtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlIC53aWRnZXQtaW1hZ2UtY2FwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3ggLmVsZW1lbnRvci1pY29uLWJveC1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtc3Rhci1yYXRpbmcgLmVsZW1lbnRvci1zdGFyLXJhdGluZ19fdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWdhbGxlcnkgLmdhbGxlcnktaXRlbSAuZ2FsbGVyeS1jYXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1saXN0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0+LmVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tbGlzdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtPmEgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXByb2dyZXNzIC5lbGVtZW50b3ItdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXRlc3RpbW9uaWFsIC5lbGVtZW50b3ItdGVzdGltb25pYWwtY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdG9nZ2xlIC5lbGVtZW50b3ItdGFiLWNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWFsZXJ0IC5lbGVtZW50b3ItYWxlcnQtZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXJldGluYSAud2lkZ2V0LWltYWdlLWNhcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWNvcHlyaWdodCAuaGZlLWNvcHlyaWdodC13cmFwcGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtY29weXJpZ2h0IC5oZmUtY29weXJpZ2h0LXdyYXBwZXIgYSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5zdWItbWVudSBsaSBhLmhmZS1zdWItbWVudS1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IG5hdi5oZmUtZHJvcGRvd24gbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtbWVudS1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1zaXRlLWxvZ28gLndpZGdldC1pbWFnZS1jYXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KfQ=="}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":8,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/metform/public/assets/css/metform-ui.css?ver=3.8.2","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.017Z","timestamp":1785130090017,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/metform/public/assets/css/metform-ui.css?ver=3.8.2 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Mz07IlcgqV0Qbz%2BGzQMxrmqSfgD9%2FwaWrFp96%2Favrt3e82HTs8%2BuRILdEHHSn8ILgFgrwdqvWyPb%2FYmz4jIH2xVY22d5X4un%2FHYZ3J8oPq41Op3IyYsYc7Rwx7ikwUgjIWnN0DJRRA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d369e40120a-OSL\r\ncontent-length: 15816\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":139172,"size_decoded":16635,"mime_type":"text/css","magic":"ASCII text","md5":"f6a247fa74298be45b564dc27564b4fc","sha1":"50d8df92f04889d4f9d72ffe37662daf4647cb36","sha256":"4d39ce01ff468cc58697ed8a917effa81ec72b8422b217a590f15a1c0d254af9","sha512":"6662a36f182341d4a98f9a2513e1b2cd3b6b38248f99aca451ebc2824539ac2b049235127f0b0e7a92e9650e2c98ab314d45af9d3c4255c86ccc4af1690cc077","ssdeep":"3072:KdO6a+OqkPAVRhlzN/TjPRWhtle4hzYPkFmOI7OFRB1DfPjT/R0jXZVBt1IKUwK:KdO6a+OqkPAVRhlzN/TjPRWhtleezYP2","tlshash":"fad33311aee23947b95e454cf6e89651e3148083e51edebebb8e3a978f485810433f4f","first_seen":"2026-07-27T03:56:42.599956Z","last_seen":"2026-07-27T05:30:59.781963Z","times_seen":6,"resource_available":false,"data":"LmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbT5hPmltZywKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbT5pbWcsCi5hdHRyLWltZy1yZXNwb25zaXZlLAouYXR0ci10aHVtYm5haWwgYT5pbWcsCi5hdHRyLXRodW1ibmFpbD5pbWcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLmF0dHItaW1nLXJvdW5kZWQgewogICAgYm9yZGVyLXJhZGl1czogNnB4Cn0KCi5hdHRyLWltZy10aHVtYm5haWwgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgcGFkZGluZzogNHB4OwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZS1pbi1vdXQKfQoKLmF0dHItaW1nLWNpcmNsZSB7CiAgICBib3JkZXItcmFkaXVzOiA1MCUKfQoKLmF0dHItc3Itb25seSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMXB4OwogICAgaGVpZ2h0OiAxcHg7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAtMXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7CiAgICBib3JkZXI6IDAKfQoKLmF0dHItc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLAouYXR0ci1zci1vbmx5LWZvY3VzYWJsZTpmb2N1cyB7CiAgICBwb3NpdGlvbjogc3RhdGljOwogICAgd2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXJnaW46IDA7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIGNsaXA6IGF1dG8KfQoKLmF0dHItaDEsCi5hdHRyLWgyLAouYXR0ci1oMywKLmF0dHItaDQsCi5hdHRyLWg1LAouYXR0ci1oNiB7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBsaW5lLWhlaWdodDogMS4xOwogICAgY29sb3I6IGluaGVyaXQKfQoKLmF0dHItaDEgLmF0dHItc21hbGwsCi5hdHRyLWgxIHNtYWxsLAouYXR0ci1oMiAuYXR0ci1zbWFsbCwKLmF0dHItaDIgc21hbGwsCi5hdHRyLWgzIC5hdHRyLXNtYWxsLAouYXR0ci1oMyBzbWFsbCwKLmF0dHItaDQgLmF0dHItc21hbGwsCi5hdHRyLWg0IHNtYWxsLAouYXR0ci1oNSAuYXR0ci1zbWFsbCwKLmF0dHItaDUgc21hbGwsCi5hdHRyLWg2IC5hdHRyLXNtYWxsLAouYXR0ci1oNiBzbWFsbCwKaDEgLmF0dHItc21hbGwsCmgyIC5hdHRyLXNtYWxsLApoMyAuYXR0ci1zbWFsbCwKaDQgLmF0dHItc21hbGwsCmg1IC5hdHRyLXNtYWxsLApoNiAuYXR0ci1zbWFsbCB7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjb2xvcjogIzc3Nwp9CgouYXR0ci1oMSwKLmF0dHItaDIsCi5hdHRyLWgzIHsKICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Cn0KCi5hdHRyLWgxIC5hdHRyLXNtYWxsLAouYXR0ci1oMSBzbWFsbCwKLmF0dHItaDIgLmF0dHItc21hbGwsCi5hdHRyLWgyIHNtYWxsLAouYXR0ci1oMyAuYXR0ci1zbWFsbCwKLmF0dHItaDMgc21hbGwsCmgxIC5hdHRyLXNtYWxsLApoMiAuYXR0ci1zbWFsbCwKaDMgLmF0dHItc21hbGwgewogICAgZm9udC1zaXplOiA2NSUKfQoKLmF0dHItaDQsCi5hdHRyLWg1LAouYXR0ci1oNiB7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTBweAp9CgouYXR0ci1oNCAuYXR0ci1zbWFsbCwKLmF0dHItaDQgc21hbGwsCi5hdHRyLWg1IC5hdHRyLXNtYWxsLAouYXR0ci1oNSBzbWFsbCwKLmF0dHItaDYgLmF0dHItc21hbGwsCi5hdHRyLWg2IHNtYWxsLApoNCAuYXR0ci1zbWFsbCwKaDUgLmF0dHItc21hbGwsCmg2IC5hdHRyLXNtYWxsIHsKICAgIGZvbnQtc2l6ZTogNzUlCn0KCi5hdHRyLWgxIHsKICAgIGZvbnQtc2l6ZTogMzZweAp9CgouYXR0ci1oMiB7CiAgICBmb250LXNpemU6IDMwcHgKfQoKLmF0dHItaDMgewogICAgZm9udC1zaXplOiAyNHB4Cn0KCi5hdHRyLWg0IHsKICAgIGZvbnQtc2l6ZTogMThweAp9CgouYXR0ci1oNSB7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLmF0dHItaDYgewogICAgZm9udC1zaXplOiAxMnB4Cn0KCi5hdHRyLWxlYWQgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiAzMDA7CiAgICBsaW5lLWhlaWdodDogMS40Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1sZWFkIHsKICAgICAgICBmb250LXNpemU6IDIxcHgKICAgIH0KfQoKLmF0dHItc21hbGwgewogICAgZm9udC1zaXplOiA4NSUKfQoKLmF0dHItbWFyayB7CiAgICBwYWRkaW5nOiAuMmVtOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMwp9CgouYXR0ci10ZXh0LWxlZnQgewogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouYXR0ci10ZXh0LXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Cn0KCi5hdHRyLXRleHQtY2VudGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouYXR0ci10ZXh0LWp1c3RpZnkgewogICAgdGV4dC1hbGlnbjoganVzdGlmeQp9CgouYXR0ci10ZXh0LW5vd3JhcCB7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwCn0KCi5hdHRyLXRleHQtbG93ZXJjYXNlIHsKICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UKfQoKLmF0dHItdGV4dC11cHBlcmNhc2UgewogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZQp9CgouYXR0ci10ZXh0LWNhcGl0YWxpemUgewogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUKfQoKLmF0dHItdGV4dC1tdXRlZCB7CiAgICBjb2xvcjogIzc3Nwp9CgouYXR0ci10ZXh0LXByaW1hcnkgewogICAgY29sb3I6ICMzMzdhYjcKfQoKYS5hdHRyLXRleHQtcHJpbWFyeTpmb2N1cywKYS5hdHRyLXRleHQtcHJpbWFyeTpob3ZlciB7CiAgICBjb2xvcjogIzI4NjA5MAp9CgouYXR0ci10ZXh0LXN1Y2Nlc3MgewogICAgY29sb3I6ICMzYzc2M2QKfQoKYS5hdHRyLXRleHQtc3VjY2Vzczpmb2N1cywKYS5hdHRyLXRleHQtc3VjY2Vzczpob3ZlciB7CiAgICBjb2xvcjogIzJiNTQyYwp9CgouYXR0ci10ZXh0LWluZm8gewogICAgY29sb3I6ICMzMTcwOGYKfQoKYS5hdHRyLXRleHQtaW5mbzpmb2N1cywKYS5hdHRyLXRleHQtaW5mbzpob3ZlciB7CiAgICBjb2xvcjogIzI0NTI2OQp9CgouYXR0ci10ZXh0LXdhcm5pbmcgewogICAgY29sb3I6ICM4YTZkM2IKfQoKYS5hdHRyLXRleHQtd2FybmluZzpmb2N1cywKYS5hdHRyLXRleHQtd2FybmluZzpob3ZlciB7CiAgICBjb2xvcjogIzY2NTEyYwp9CgouYXR0ci10ZXh0LWRhbmdlciB7CiAgICBjb2xvcjogI2E5NDQ0Mgp9CgphLmF0dHItdGV4dC1kYW5nZXI6Zm9jdXMsCmEuYXR0ci10ZXh0LWRhbmdlcjpob3ZlciB7CiAgICBjb2xvcjogIzg0MzUzNAp9CgouYXR0ci1iZy1wcmltYXJ5IHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzN2FiNwp9CgphLmF0dHItYmctcHJpbWFyeTpmb2N1cywKYS5hdHRyLWJnLXByaW1hcnk6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI4NjA5MAp9CgouYXR0ci1iZy1zdWNjZXNzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDgKfQoKYS5hdHRyLWJnLXN1Y2Nlc3M6Zm9jdXMsCmEuYXR0ci1iZy1zdWNjZXNzOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjMWUyYjMKfQoKLmF0dHItYmctaW5mbyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3Cn0KCmEuYXR0ci1iZy1pbmZvOmZvY3VzLAphLmF0dHItYmctaW5mbzpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWZkOWVlCn0KCi5hdHRyLWJnLXdhcm5pbmcgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMwp9CgphLmF0dHItYmctd2FybmluZzpmb2N1cywKYS5hdHRyLWJnLXdhcm5pbmc6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZWNiNQp9CgouYXR0ci1iZy1kYW5nZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZQp9CgphLmF0dHItYmctZGFuZ2VyOmZvY3VzLAphLmF0dHItYmctZGFuZ2VyOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNGI5YjkKfQoKLmF0dHItcGFnZS1oZWFkZXIgewogICAgcGFkZGluZy1ib3R0b206IDlweDsKICAgIG1hcmdpbjogNDBweCAwIDIwcHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZQp9CgouYXR0ci1saXN0LXVuc3R5bGVkIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmUKfQoKLmF0dHItbGlzdC1pbmxpbmUgewogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgbWFyZ2luLWxlZnQ6IC01cHg7CiAgICBsaXN0LXN0eWxlOiBub25lCn0KCi5hdHRyLWxpc3QtaW5saW5lPmxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKICAgIHBhZGRpbmctbGVmdDogNXB4Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1kbC1ob3Jpem9udGFsIGR0IHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICB3aWR0aDogMTYwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBjbGVhcjogbGVmdDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwCiAgICB9CiAgICAuYXR0ci1kbC1ob3Jpem9udGFsIGRkIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTgwcHgKICAgIH0KfQoKLmF0dHItaW5pdGlhbGlzbSB7CiAgICBmb250LXNpemU6IDkwJTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UKfQoKLmF0dHItcHJlLXNjcm9sbGFibGUgewogICAgbWF4LWhlaWdodDogMzQwcHg7CiAgICBvdmVyZmxvdy15OiBzY3JvbGwKfQoKLmF0dHItY29udGFpbmVyIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tbGVmdDogYXV0bwp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogNzUwcHgKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6OTkycHgpIHsKICAgIC5hdHRyLWNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDk3MHB4CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEyMDBweCkgewogICAgLmF0dHItY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTE3MHB4CiAgICB9Cn0KCi5hdHRyLWNvbnRhaW5lci1mbHVpZCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IGF1dG8KfQoKLmF0dHItcm93IHsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICBtYXJnaW4tbGVmdDogLTE1cHgKfQoKLmF0dHItY29sLWxnLTEsCi5hdHRyLWNvbC1sZy0xMCwKLmF0dHItY29sLWxnLTExLAouYXR0ci1jb2wtbGctMTIsCi5hdHRyLWNvbC1sZy0yLAouYXR0ci1jb2wtbGctMywKLmF0dHItY29sLWxnLTQsCi5hdHRyLWNvbC1sZy01LAouYXR0ci1jb2wtbGctNiwKLmF0dHItY29sLWxnLTcsCi5hdHRyLWNvbC1sZy04LAouYXR0ci1jb2wtbGctOSwKLmF0dHItY29sLW1kLTEsCi5hdHRyLWNvbC1tZC0xMCwKLmF0dHItY29sLW1kLTExLAouYXR0ci1jb2wtbWQtMTIsCi5hdHRyLWNvbC1tZC0yLAouYXR0ci1jb2wtbWQtMywKLmF0dHItY29sLW1kLTQsCi5hdHRyLWNvbC1tZC01LAouYXR0ci1jb2wtbWQtNiwKLmF0dHItY29sLW1kLTcsCi5hdHRyLWNvbC1tZC04LAouYXR0ci1jb2wtbWQtOSwKLmF0dHItY29sLXNtLTEsCi5hdHRyLWNvbC1zbS0xMCwKLmF0dHItY29sLXNtLTExLAouYXR0ci1jb2wtc20tMTIsCi5hdHRyLWNvbC1zbS0yLAouYXR0ci1jb2wtc20tMywKLmF0dHItY29sLXNtLTQsCi5hdHRyLWNvbC1zbS01LAouYXR0ci1jb2wtc20tNiwKLmF0dHItY29sLXNtLTcsCi5hdHRyLWNvbC1zbS04LAouYXR0ci1jb2wtc20tOSwKLmF0dHItY29sLXhzLTEsCi5hdHRyLWNvbC14cy0xMCwKLmF0dHItY29sLXhzLTExLAouYXR0ci1jb2wteHMtMTIsCi5hdHRyLWNvbC14cy0yLAouYXR0ci1jb2wteHMtMywKLmF0dHItY29sLXhzLTQsCi5hdHRyLWNvbC14cy01LAouYXR0ci1jb2wteHMtNiwKLmF0dHItY29sLXhzLTcsCi5hdHRyLWNvbC14cy04LAouYXR0ci1jb2wteHMtOSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBtaW4taGVpZ2h0OiAxcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiAxNXB4Cn0KCi5hdHRyLWNvbC14cy0xLAouYXR0ci1jb2wteHMtMTAsCi5hdHRyLWNvbC14cy0xMSwKLmF0dHItY29sLXhzLTEyLAouYXR0ci1jb2wteHMtMiwKLmF0dHItY29sLXhzLTMsCi5hdHRyLWNvbC14cy00LAouYXR0ci1jb2wteHMtNSwKLmF0dHItY29sLXhzLTYsCi5hdHRyLWNvbC14cy03LAouYXR0ci1jb2wteHMtOCwKLmF0dHItY29sLXhzLTkgewogICAgZmxvYXQ6IGxlZnQKfQoKLmF0dHItY29sLXhzLTEyIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5hdHRyLWNvbC14cy0xMSB7CiAgICB3aWR0aDogOTEuNjY2NjY2NjclCn0KCi5hdHRyLWNvbC14cy0xMCB7CiAgICB3aWR0aDogODMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy05IHsKICAgIHdpZHRoOiA3NSUKfQoKLmF0dHItY29sLXhzLTggewogICAgd2lkdGg6IDY2LjY2NjY2NjY3JQp9CgouYXR0ci1jb2wteHMtNyB7CiAgICB3aWR0aDogNTguMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy02IHsKICAgIHdpZHRoOiA1MCUKfQoKLmF0dHItY29sLXhzLTUgewogICAgd2lkdGg6IDQxLjY2NjY2NjY3JQp9CgouYXR0ci1jb2wteHMtNCB7CiAgICB3aWR0aDogMzMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy0zIHsKICAgIHdpZHRoOiAyNSUKfQoKLmF0dHItY29sLXhzLTIgewogICAgd2lkdGg6IDE2LjY2NjY2NjY3JQp9CgouYXR0ci1jb2wteHMtMSB7CiAgICB3aWR0aDogOC4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLXB1bGwtMTIgewogICAgcmlnaHQ6IDEwMCUKfQoKLmF0dHItY29sLXhzLXB1bGwtMTEgewogICAgcmlnaHQ6IDkxLjY2NjY2NjY3JQp9CgouYXR0ci1jb2wteHMtcHVsbC0xMCB7CiAgICByaWdodDogODMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1wdWxsLTkgewogICAgcmlnaHQ6IDc1JQp9CgouYXR0ci1jb2wteHMtcHVsbC04IHsKICAgIHJpZ2h0OiA2Ni42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1bGwtNyB7CiAgICByaWdodDogNTguMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1wdWxsLTYgewogICAgcmlnaHQ6IDUwJQp9CgouYXR0ci1jb2wteHMtcHVsbC01IHsKICAgIHJpZ2h0OiA0MS42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1bGwtNCB7CiAgICByaWdodDogMzMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1wdWxsLTMgewogICAgcmlnaHQ6IDI1JQp9CgouYXR0ci1jb2wteHMtcHVsbC0yIHsKICAgIHJpZ2h0OiAxNi42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1bGwtMSB7CiAgICByaWdodDogOC4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLXB1bGwtMCB7CiAgICByaWdodDogYXV0bwp9CgouYXR0ci1jb2wteHMtcHVzaC0xMiB7CiAgICBsZWZ0OiAxMDAlCn0KCi5hdHRyLWNvbC14cy1wdXNoLTExIHsKICAgIGxlZnQ6IDkxLjY2NjY2NjY3JQp9CgouYXR0ci1jb2wteHMtcHVzaC0xMCB7CiAgICBsZWZ0OiA4My4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLXB1c2gtOSB7CiAgICBsZWZ0OiA3NSUKfQoKLmF0dHItY29sLXhzLXB1c2gtOCB7CiAgICBsZWZ0OiA2Ni42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1c2gtNyB7CiAgICBsZWZ0OiA1OC4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLXB1c2gtNiB7CiAgICBsZWZ0OiA1MCUKfQoKLmF0dHItY29sLXhzLXB1c2gtNSB7CiAgICBsZWZ0OiA0MS42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1c2gtNCB7CiAgICBsZWZ0OiAzMy4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLXB1c2gtMyB7CiAgICBsZWZ0OiAyNSUKfQoKLmF0dHItY29sLXhzLXB1c2gtMiB7CiAgICBsZWZ0OiAxNi42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1c2gtMSB7CiAgICBsZWZ0OiA4LjMzMzMzMzMzJQp9CgouYXR0ci1jb2wteHMtcHVzaC0wIHsKICAgIGxlZnQ6IGF1dG8KfQoKLmF0dHItY29sLXhzLW9mZnNldC0xMiB7CiAgICBtYXJnaW4tbGVmdDogMTAwJQp9CgouYXR0ci1jb2wteHMtb2Zmc2V0LTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLW9mZnNldC0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtOSB7CiAgICBtYXJnaW4tbGVmdDogNzUlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtNiB7CiAgICBtYXJnaW4tbGVmdDogNTAlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtNCB7CiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLW9mZnNldC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1jb2wtc20tMSwKICAgIC5hdHRyLWNvbC1zbS0xMCwKICAgIC5hdHRyLWNvbC1zbS0xMSwKICAgIC5hdHRyLWNvbC1zbS0xMiwKICAgIC5hdHRyLWNvbC1zbS0yLAogICAgLmF0dHItY29sLXNtLTMsCiAgICAuYXR0ci1jb2wtc20tNCwKICAgIC5hdHRyLWNvbC1zbS01LAogICAgLmF0dHItY29sLXNtLTYsCiAgICAuYXR0ci1jb2wtc20tNywKICAgIC5hdHRyLWNvbC1zbS04LAogICAgLmF0dHItY29sLXNtLTkgewogICAgICAgIGZsb2F0OiBsZWZ0CiAgICB9CiAgICAuYXR0ci1jb2wtc20tMTIgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9CiAgICAuYXR0ci1jb2wtc20tMTEgewogICAgICAgIHdpZHRoOiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS0xMCB7CiAgICAgICAgd2lkdGg6IDgzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLTkgewogICAgICAgIHdpZHRoOiA3NSUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS04IHsKICAgICAgICB3aWR0aDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tNyB7CiAgICAgICAgd2lkdGg6IDU4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLTYgewogICAgICAgIHdpZHRoOiA1MCUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS01IHsKICAgICAgICB3aWR0aDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tNCB7CiAgICAgICAgd2lkdGg6IDMzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLTMgewogICAgICAgIHdpZHRoOiAyNSUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS0yIHsKICAgICAgICB3aWR0aDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tMSB7CiAgICAgICAgd2lkdGg6IDguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVsbC0xMiB7CiAgICAgICAgcmlnaHQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdWxsLTExIHsKICAgICAgICByaWdodDogOTEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVsbC0xMCB7CiAgICAgICAgcmlnaHQ6IDgzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtOSB7CiAgICAgICAgcmlnaHQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtOCB7CiAgICAgICAgcmlnaHQ6IDY2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtNyB7CiAgICAgICAgcmlnaHQ6IDU4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtNiB7CiAgICAgICAgcmlnaHQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtNSB7CiAgICAgICAgcmlnaHQ6IDQxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtNCB7CiAgICAgICAgcmlnaHQ6IDMzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtMyB7CiAgICAgICAgcmlnaHQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtMiB7CiAgICAgICAgcmlnaHQ6IDE2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtMSB7CiAgICAgICAgcmlnaHQ6IDguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVsbC0wIHsKICAgICAgICByaWdodDogYXV0bwogICAgfQogICAgLmF0dHItY29sLXNtLXB1c2gtMTIgewogICAgICAgIGxlZnQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdXNoLTExIHsKICAgICAgICBsZWZ0OiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdXNoLTEwIHsKICAgICAgICBsZWZ0OiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdXNoLTkgewogICAgICAgIGxlZnQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1c2gtOCB7CiAgICAgICAgbGVmdDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVzaC03IHsKICAgICAgICBsZWZ0OiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdXNoLTYgewogICAgICAgIGxlZnQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1c2gtNSB7CiAgICAgICAgbGVmdDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVzaC00IHsKICAgICAgICBsZWZ0OiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdXNoLTMgewogICAgICAgIGxlZnQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1c2gtMiB7CiAgICAgICAgbGVmdDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVzaC0xIHsKICAgICAgICBsZWZ0OiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1c2gtMCB7CiAgICAgICAgbGVmdDogYXV0bwogICAgfQogICAgLmF0dHItY29sLXNtLW9mZnNldC0xMiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1vZmZzZXQtMTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1vZmZzZXQtMTAgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1vZmZzZXQtOSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLXNtLW9mZnNldC04IHsKICAgICAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tb2Zmc2V0LTcgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1vZmZzZXQtNiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLXNtLW9mZnNldC01IHsKICAgICAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tb2Zmc2V0LTQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1vZmZzZXQtMyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLXNtLW9mZnNldC0yIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tb2Zmc2V0LTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLW9mZnNldC0wIHsKICAgICAgICBtYXJnaW4tbGVmdDogMAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgewogICAgLmF0dHItY29sLW1kLTEsCiAgICAuYXR0ci1jb2wtbWQtMTAsCiAgICAuYXR0ci1jb2wtbWQtMTEsCiAgICAuYXR0ci1jb2wtbWQtMTIsCiAgICAuYXR0ci1jb2wtbWQtMiwKICAgIC5hdHRyLWNvbC1tZC0zLAogICAgLmF0dHItY29sLW1kLTQsCiAgICAuYXR0ci1jb2wtbWQtNSwKICAgIC5hdHRyLWNvbC1tZC02LAogICAgLmF0dHItY29sLW1kLTcsCiAgICAuYXR0ci1jb2wtbWQtOCwKICAgIC5hdHRyLWNvbC1tZC05IHsKICAgICAgICBmbG9hdDogbGVmdAogICAgfQogICAgLmF0dHItY29sLW1kLTEyIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQogICAgLmF0dHItY29sLW1kLTExIHsKICAgICAgICB3aWR0aDogOTEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtMTAgewogICAgICAgIHdpZHRoOiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC05IHsKICAgICAgICB3aWR0aDogNzUlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtOCB7CiAgICAgICAgd2lkdGg6IDY2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLTcgewogICAgICAgIHdpZHRoOiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC02IHsKICAgICAgICB3aWR0aDogNTAlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtNSB7CiAgICAgICAgd2lkdGg6IDQxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLTQgewogICAgICAgIHdpZHRoOiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC0zIHsKICAgICAgICB3aWR0aDogMjUlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtMiB7CiAgICAgICAgd2lkdGg6IDE2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLTEgewogICAgICAgIHdpZHRoOiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLW1kLXB1bGwtMTIgewogICAgICAgIHJpZ2h0OiAxMDAlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVsbC0xMSB7CiAgICAgICAgcmlnaHQ6IDkxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLXB1bGwtMTAgewogICAgICAgIHJpZ2h0OiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTkgewogICAgICAgIHJpZ2h0OiA3NSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTggewogICAgICAgIHJpZ2h0OiA2Ni42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTcgewogICAgICAgIHJpZ2h0OiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTYgewogICAgICAgIHJpZ2h0OiA1MCUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTUgewogICAgICAgIHJpZ2h0OiA0MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTQgewogICAgICAgIHJpZ2h0OiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTMgewogICAgICAgIHJpZ2h0OiAyNSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTIgewogICAgICAgIHJpZ2h0OiAxNi42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTEgewogICAgICAgIHJpZ2h0OiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLW1kLXB1bGwtMCB7CiAgICAgICAgcmlnaHQ6IGF1dG8KICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdXNoLTEyIHsKICAgICAgICBsZWZ0OiAxMDAlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVzaC0xMSB7CiAgICAgICAgbGVmdDogOTEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVzaC0xMCB7CiAgICAgICAgbGVmdDogODMuMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVzaC05IHsKICAgICAgICBsZWZ0OiA3NSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdXNoLTggewogICAgICAgIGxlZnQ6IDY2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLXB1c2gtNyB7CiAgICAgICAgbGVmdDogNTguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVzaC02IHsKICAgICAgICBsZWZ0OiA1MCUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdXNoLTUgewogICAgICAgIGxlZnQ6IDQxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLXB1c2gtNCB7CiAgICAgICAgbGVmdDogMzMuMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVzaC0zIHsKICAgICAgICBsZWZ0OiAyNSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdXNoLTIgewogICAgICAgIGxlZnQ6IDE2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLXB1c2gtMSB7CiAgICAgICAgbGVmdDogOC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdXNoLTAgewogICAgICAgIGxlZnQ6IGF1dG8KICAgIH0KICAgIC5hdHRyLWNvbC1tZC1vZmZzZXQtMTIgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMDAlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtb2Zmc2V0LTExIHsKICAgICAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtb2Zmc2V0LTEwIHsKICAgICAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtb2Zmc2V0LTkgewogICAgICAgIG1hcmdpbi1sZWZ0OiA3NSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1vZmZzZXQtOCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLW9mZnNldC03IHsKICAgICAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtb2Zmc2V0LTYgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1MCUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1vZmZzZXQtNSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLW9mZnNldC00IHsKICAgICAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtb2Zmc2V0LTMgewogICAgICAgIG1hcmdpbi1sZWZ0OiAyNSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1vZmZzZXQtMiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLW9mZnNldC0xIHsKICAgICAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1vZmZzZXQtMCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDAKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KSB7CiAgICAuYXR0ci1jb2wtbGctMSwKICAgIC5hdHRyLWNvbC1sZy0xMCwKICAgIC5hdHRyLWNvbC1sZy0xMSwKICAgIC5hdHRyLWNvbC1sZy0xMiwKICAgIC5hdHRyLWNvbC1sZy0yLAogICAgLmF0dHItY29sLWxnLTMsCiAgICAuYXR0ci1jb2wtbGctNCwKICAgIC5hdHRyLWNvbC1sZy01LAogICAgLmF0dHItY29sLWxnLTYsCiAgICAuYXR0ci1jb2wtbGctNywKICAgIC5hdHRyLWNvbC1sZy04LAogICAgLmF0dHItY29sLWxnLTkgewogICAgICAgIGZsb2F0OiBsZWZ0CiAgICB9CiAgICAuYXR0ci1jb2wtbGctMTIgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9CiAgICAuYXR0ci1jb2wtbGctMTEgewogICAgICAgIHdpZHRoOiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy0xMCB7CiAgICAgICAgd2lkdGg6IDgzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLTkgewogICAgICAgIHdpZHRoOiA3NSUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy04IHsKICAgICAgICB3aWR0aDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctNyB7CiAgICAgICAgd2lkdGg6IDU4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLTYgewogICAgICAgIHdpZHRoOiA1MCUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy01IHsKICAgICAgICB3aWR0aDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctNCB7CiAgICAgICAgd2lkdGg6IDMzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLTMgewogICAgICAgIHdpZHRoOiAyNSUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy0yIHsKICAgICAgICB3aWR0aDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctMSB7CiAgICAgICAgd2lkdGg6IDguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVsbC0xMiB7CiAgICAgICAgcmlnaHQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdWxsLTExIHsKICAgICAgICByaWdodDogOTEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVsbC0xMCB7CiAgICAgICAgcmlnaHQ6IDgzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtOSB7CiAgICAgICAgcmlnaHQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtOCB7CiAgICAgICAgcmlnaHQ6IDY2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtNyB7CiAgICAgICAgcmlnaHQ6IDU4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtNiB7CiAgICAgICAgcmlnaHQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtNSB7CiAgICAgICAgcmlnaHQ6IDQxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtNCB7CiAgICAgICAgcmlnaHQ6IDMzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtMyB7CiAgICAgICAgcmlnaHQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtMiB7CiAgICAgICAgcmlnaHQ6IDE2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtMSB7CiAgICAgICAgcmlnaHQ6IDguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVsbC0wIHsKICAgICAgICByaWdodDogYXV0bwogICAgfQogICAgLmF0dHItY29sLWxnLXB1c2gtMTIgewogICAgICAgIGxlZnQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdXNoLTExIHsKICAgICAgICBsZWZ0OiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdXNoLTEwIHsKICAgICAgICBsZWZ0OiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdXNoLTkgewogICAgICAgIGxlZnQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1c2gtOCB7CiAgICAgICAgbGVmdDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVzaC03IHsKICAgICAgICBsZWZ0OiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdXNoLTYgewogICAgICAgIGxlZnQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1c2gtNSB7CiAgICAgICAgbGVmdDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVzaC00IHsKICAgICAgICBsZWZ0OiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdXNoLTMgewogICAgICAgIGxlZnQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1c2gtMiB7CiAgICAgICAgbGVmdDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVzaC0xIHsKICAgICAgICBsZWZ0OiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1c2gtMCB7CiAgICAgICAgbGVmdDogYXV0bwogICAgfQogICAgLmF0dHItY29sLWxnLW9mZnNldC0xMiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1vZmZzZXQtMTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1vZmZzZXQtMTAgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1vZmZzZXQtOSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLWxnLW9mZnNldC04IHsKICAgICAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctb2Zmc2V0LTcgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1vZmZzZXQtNiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLWxnLW9mZnNldC01IHsKICAgICAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctb2Zmc2V0LTQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1vZmZzZXQtMyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLWxnLW9mZnNldC0yIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctb2Zmc2V0LTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLW9mZnNldC0wIHsKICAgICAgICBtYXJnaW4tbGVmdDogMAogICAgfQp9CgouYXR0ci10YWJsZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDIwcHgKfQoKLmF0dHItdGFibGU+dGJvZHk+dHI+dGQsCi5hdHRyLXRhYmxlPnRib2R5PnRyPnRoLAouYXR0ci10YWJsZT50Zm9vdD50cj50ZCwKLmF0dHItdGFibGU+dGZvb3Q+dHI+dGgsCi5hdHRyLXRhYmxlPnRoZWFkPnRyPnRkLAouYXR0ci10YWJsZT50aGVhZD50cj50aCB7CiAgICBwYWRkaW5nOiA4cHg7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZAp9CgouYXR0ci10YWJsZT50aGVhZD50cj50aCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNkZGQKfQoKLmF0dHItdGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwKLmF0dHItdGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50aCwKLmF0dHItdGFibGU+Y29sZ3JvdXArdGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsCi5hdHRyLXRhYmxlPmNvbGdyb3VwK3RoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLAouYXR0ci10YWJsZT50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZD50ZCwKLmF0dHItdGFibGU+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQ+dGggewogICAgYm9yZGVyLXRvcDogMAp9CgouYXR0ci10YWJsZT50Ym9keSt0Ym9keSB7CiAgICBib3JkZXItdG9wOiAycHggc29saWQgI2RkZAp9CgouYXR0ci10YWJsZSAuYXR0ci10YWJsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5hdHRyLXRhYmxlLWNvbmRlbnNlZD50Ym9keT50cj50ZCwKLmF0dHItdGFibGUtY29uZGVuc2VkPnRib2R5PnRyPnRoLAouYXR0ci10YWJsZS1jb25kZW5zZWQ+dGZvb3Q+dHI+dGQsCi5hdHRyLXRhYmxlLWNvbmRlbnNlZD50Zm9vdD50cj50aCwKLmF0dHItdGFibGUtY29uZGVuc2VkPnRoZWFkPnRyPnRkLAouYXR0ci10YWJsZS1jb25kZW5zZWQ+dGhlYWQ+dHI+dGggewogICAgcGFkZGluZzogNXB4Cn0KCi5hdHRyLXRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQKfQoKLmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQsCi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoLAouYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZCwKLmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGgsCi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkLAouYXR0ci10YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkCn0KCi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkLAouYXR0ci10YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aCB7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHgKfQoKLmF0dHItdGFibGUtc3RyaXBlZD50Ym9keT50cjpudGgtb2YtdHlwZShvZGQpIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5ZjkKfQoKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHI6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNQp9CgouYXR0ci10YWJsZT50Ym9keT50ci5hdHRyLWFjdGl2ZT50ZCwKLmF0dHItdGFibGU+dGJvZHk+dHIuYXR0ci1hY3RpdmU+dGgsCi5hdHRyLXRhYmxlPnRib2R5PnRyPnRkLmF0dHItYWN0aXZlLAouYXR0ci10YWJsZT50Ym9keT50cj50aC5hdHRyLWFjdGl2ZSwKLmF0dHItdGFibGU+dGZvb3Q+dHIuYXR0ci1hY3RpdmU+dGQsCi5hdHRyLXRhYmxlPnRmb290PnRyLmF0dHItYWN0aXZlPnRoLAouYXR0ci10YWJsZT50Zm9vdD50cj50ZC5hdHRyLWFjdGl2ZSwKLmF0dHItdGFibGU+dGZvb3Q+dHI+dGguYXR0ci1hY3RpdmUsCi5hdHRyLXRhYmxlPnRoZWFkPnRyLmF0dHItYWN0aXZlPnRkLAouYXR0ci10YWJsZT50aGVhZD50ci5hdHRyLWFjdGl2ZT50aCwKLmF0dHItdGFibGU+dGhlYWQ+dHI+dGQuYXR0ci1hY3RpdmUsCi5hdHRyLXRhYmxlPnRoZWFkPnRyPnRoLmF0dHItYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjUKfQoKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHIuYXR0ci1hY3RpdmU6aG92ZXI+dGQsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyLmF0dHItYWN0aXZlOmhvdmVyPnRoLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50cjpob3Zlcj4uYXR0ci1hY3RpdmUsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50cj50aC5hdHRyLWFjdGl2ZTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlOGU4Cn0KCi5hdHRyLXRhYmxlPnRib2R5PnRyLmF0dHItc3VjY2Vzcz50ZCwKLmF0dHItdGFibGU+dGJvZHk+dHIuYXR0ci1zdWNjZXNzPnRoLAouYXR0ci10YWJsZT50Ym9keT50cj50ZC5hdHRyLXN1Y2Nlc3MsCi5hdHRyLXRhYmxlPnRib2R5PnRyPnRoLmF0dHItc3VjY2VzcywKLmF0dHItdGFibGU+dGZvb3Q+dHIuYXR0ci1zdWNjZXNzPnRkLAouYXR0ci10YWJsZT50Zm9vdD50ci5hdHRyLXN1Y2Nlc3M+dGgsCi5hdHRyLXRhYmxlPnRmb290PnRyPnRkLmF0dHItc3VjY2VzcywKLmF0dHItdGFibGU+dGZvb3Q+dHI+dGguYXR0ci1zdWNjZXNzLAouYXR0ci10YWJsZT50aGVhZD50ci5hdHRyLXN1Y2Nlc3M+dGQsCi5hdHRyLXRhYmxlPnRoZWFkPnRyLmF0dHItc3VjY2Vzcz50aCwKLmF0dHItdGFibGU+dGhlYWQ+dHI+dGQuYXR0ci1zdWNjZXNzLAouYXR0ci10YWJsZT50aGVhZD50cj50aC5hdHRyLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkOAp9CgouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50ci5hdHRyLXN1Y2Nlc3M6aG92ZXI+dGQsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyLmF0dHItc3VjY2Vzczpob3Zlcj50aCwKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHI6aG92ZXI+LmF0dHItc3VjY2VzcywKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHI+dGQuYXR0ci1zdWNjZXNzOmhvdmVyLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50cj50aC5hdHRyLXN1Y2Nlc3M6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2QwZTljNgp9CgouYXR0ci10YWJsZT50Ym9keT50ci5hdHRyLWluZm8+dGQsCi5hdHRyLXRhYmxlPnRib2R5PnRyLmF0dHItaW5mbz50aCwKLmF0dHItdGFibGU+dGJvZHk+dHI+dGQuYXR0ci1pbmZvLAouYXR0ci10YWJsZT50Ym9keT50cj50aC5hdHRyLWluZm8sCi5hdHRyLXRhYmxlPnRmb290PnRyLmF0dHItaW5mbz50ZCwKLmF0dHItdGFibGU+dGZvb3Q+dHIuYXR0ci1pbmZvPnRoLAouYXR0ci10YWJsZT50Zm9vdD50cj50ZC5hdHRyLWluZm8sCi5hdHRyLXRhYmxlPnRmb290PnRyPnRoLmF0dHItaW5mbywKLmF0dHItdGFibGU+dGhlYWQ+dHIuYXR0ci1pbmZvPnRkLAouYXR0ci10YWJsZT50aGVhZD50ci5hdHRyLWluZm8+dGgsCi5hdHRyLXRhYmxlPnRoZWFkPnRyPnRkLmF0dHItaW5mbywKLmF0dHItdGFibGU+dGhlYWQ+dHI+dGguYXR0ci1pbmZvIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOWVkZjcKfQoKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHIuYXR0ci1pbmZvOmhvdmVyPnRkLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50ci5hdHRyLWluZm86aG92ZXI+dGgsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5hdHRyLWluZm8sCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLmF0dHItaW5mbzpob3ZlciwKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHI+dGguYXR0ci1pbmZvOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjNGUzZjMKfQoKLmF0dHItdGFibGU+dGJvZHk+dHIuYXR0ci13YXJuaW5nPnRkLAouYXR0ci10YWJsZT50Ym9keT50ci5hdHRyLXdhcm5pbmc+dGgsCi5hdHRyLXRhYmxlPnRib2R5PnRyPnRkLmF0dHItd2FybmluZywKLmF0dHItdGFibGU+dGJvZHk+dHI+dGguYXR0ci13YXJuaW5nLAouYXR0ci10YWJsZT50Zm9vdD50ci5hdHRyLXdhcm5pbmc+dGQsCi5hdHRyLXRhYmxlPnRmb290PnRyLmF0dHItd2FybmluZz50aCwKLmF0dHItdGFibGU+dGZvb3Q+dHI+dGQuYXR0ci13YXJuaW5nLAouYXR0ci10YWJsZT50Zm9vdD50cj50aC5hdHRyLXdhcm5pbmcsCi5hdHRyLXRhYmxlPnRoZWFkPnRyLmF0dHItd2FybmluZz50ZCwKLmF0dHItdGFibGU+dGhlYWQ+dHIuYXR0ci13YXJuaW5nPnRoLAouYXR0ci10YWJsZT50aGVhZD50cj50ZC5hdHRyLXdhcm5pbmcsCi5hdHRyLXRhYmxlPnRoZWFkPnRyPnRoLmF0dHItd2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzCn0KCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyLmF0dHItd2FybmluZzpob3Zlcj50ZCwKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHIuYXR0ci13YXJuaW5nOmhvdmVyPnRoLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50cjpob3Zlcj4uYXR0ci13YXJuaW5nLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50cj50ZC5hdHRyLXdhcm5pbmc6aG92ZXIsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLmF0dHItd2FybmluZzpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmMmNjCn0KCi5hdHRyLXRhYmxlPnRib2R5PnRyLmF0dHItZGFuZ2VyPnRkLAouYXR0ci10YWJsZT50Ym9keT50ci5hdHRyLWRhbmdlcj50aCwKLmF0dHItdGFibGU+dGJvZHk+dHI+dGQuYXR0ci1kYW5nZXIsCi5hdHRyLXRhYmxlPnRib2R5PnRyPnRoLmF0dHItZGFuZ2VyLAouYXR0ci10YWJsZT50Zm9vdD50ci5hdHRyLWRhbmdlcj50ZCwKLmF0dHItdGFibGU+dGZvb3Q+dHIuYXR0ci1kYW5nZXI+dGgsCi5hdHRyLXRhYmxlPnRmb290PnRyPnRkLmF0dHItZGFuZ2VyLAouYXR0ci10YWJsZT50Zm9vdD50cj50aC5hdHRyLWRhbmdlciwKLmF0dHItdGFibGU+dGhlYWQ+dHIuYXR0ci1kYW5nZXI+dGQsCi5hdHRyLXRhYmxlPnRoZWFkPnRyLmF0dHItZGFuZ2VyPnRoLAouYXR0ci10YWJsZT50aGVhZD50cj50ZC5hdHRyLWRhbmdlciwKLmF0dHItdGFibGU+dGhlYWQ+dHI+dGguYXR0ci1kYW5nZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZQp9CgouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50ci5hdHRyLWRhbmdlcjpob3Zlcj50ZCwKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHIuYXR0ci1kYW5nZXI6aG92ZXI+dGgsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5hdHRyLWRhbmdlciwKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHI+dGQuYXR0ci1kYW5nZXI6aG92ZXIsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLmF0dHItZGFuZ2VyOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmNjY2MKfQoKLmF0dHItdGFibGUtcmVzcG9uc2l2ZSB7CiAgICBtaW4taGVpZ2h0OiAuMDElOwogICAgb3ZlcmZsb3cteDogYXV0bwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKICAgICAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkCiAgICB9CiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwCiAgICB9CiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlPnRib2R5PnRyPnRkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZT50Ym9keT50cj50aCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGU+dGZvb3Q+dHI+dGQsCiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlPnRmb290PnRyPnRoLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZT50aGVhZD50cj50ZCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGU+dGhlYWQ+dHI+dGggewogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAKICAgIH0KICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQgewogICAgICAgIGJvcmRlcjogMAogICAgfQogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6Zmlyc3QtY2hpbGQsCiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmZpcnN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGQ6Zmlyc3QtY2hpbGQsCiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmZpcnN0LWNoaWxkIHsKICAgICAgICBib3JkZXItbGVmdDogMAogICAgfQogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpsYXN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpsYXN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZDpsYXN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpsYXN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpsYXN0LWNoaWxkIHsKICAgICAgICBib3JkZXItcmlnaHQ6IDAKICAgIH0KICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50ZCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50aCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50aCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMAogICAgfQp9CgouYXR0ci1mb3JtLWNvbnRyb2wgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMzRweDsKICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgICBjb2xvcjogIzU1NTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA3NSk7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOwogICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOwogICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1cywgLXdlYmtpdC1ib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7CiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cywgYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzLCAtd2Via2l0LWJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1cwp9CgouYXR0ci1mb3JtLWNvbnRyb2w6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjNjZhZmU5OwogICAgb3V0bGluZTogMDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA3NSksIDAgMCA4cHggcmdiYSgxMDIsIDE3NSwgMjMzLCAuNik7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KSwgMCAwIDhweCByZ2JhKDEwMiwgMTc1LCAyMzMsIC42KQp9CgouYXR0ci1mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICM5OTk7CiAgICBvcGFjaXR5OiAxCn0KCi5hdHRyLWZvcm0tY29udHJvbDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICM5OTkKfQoKLmF0dHItZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiAjOTk5Cn0KCi5hdHRyLWZvcm0tY29udHJvbDo6LW1zLWV4cGFuZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMAp9CgouYXR0ci1mb3JtLWNvbnRyb2xbZGlzYWJsZWRdLAouYXR0ci1mb3JtLWNvbnRyb2xbcmVhZG9ubHldLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItZm9ybS1jb250cm9sIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICBvcGFjaXR5OiAxCn0KCi5hdHRyLWZvcm0tY29udHJvbFtkaXNhYmxlZF0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZAp9Cgp0ZXh0YXJlYS5hdHRyLWZvcm0tY29udHJvbCB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7CiAgICBpbnB1dFt0eXBlPWRhdGVdLmF0dHItZm9ybS1jb250cm9sLAogICAgaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0uYXR0ci1mb3JtLWNvbnRyb2wsCiAgICBpbnB1dFt0eXBlPW1vbnRoXS5hdHRyLWZvcm0tY29udHJvbCwKICAgIGlucHV0W3R5cGU9dGltZV0uYXR0ci1mb3JtLWNvbnRyb2wgewogICAgICAgIGxpbmUtaGVpZ2h0OiAzNHB4CiAgICB9CiAgICAuYXR0ci1pbnB1dC1ncm91cC1zbSBpbnB1dFt0eXBlPWRhdGVdLAogICAgLmF0dHItaW5wdXQtZ3JvdXAtc20gaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0sCiAgICAuYXR0ci1pbnB1dC1ncm91cC1zbSBpbnB1dFt0eXBlPW1vbnRoXSwKICAgIC5hdHRyLWlucHV0LWdyb3VwLXNtIGlucHV0W3R5cGU9dGltZV0sCiAgICBpbnB1dFt0eXBlPWRhdGVdLmF0dHItaW5wdXQtc20sCiAgICBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXS5hdHRyLWlucHV0LXNtLAogICAgaW5wdXRbdHlwZT1tb250aF0uYXR0ci1pbnB1dC1zbSwKICAgIGlucHV0W3R5cGU9dGltZV0uYXR0ci1pbnB1dC1zbSB7CiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHgKICAgIH0KICAgIC5hdHRyLWlucHV0LWdyb3VwLWxnIGlucHV0W3R5cGU9ZGF0ZV0sCiAgICAuYXR0ci1pbnB1dC1ncm91cC1sZyBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXSwKICAgIC5hdHRyLWlucHV0LWdyb3VwLWxnIGlucHV0W3R5cGU9bW9udGhdLAogICAgLmF0dHItaW5wdXQtZ3JvdXAtbGcgaW5wdXRbdHlwZT10aW1lXSwKICAgIGlucHV0W3R5cGU9ZGF0ZV0uYXR0ci1pbnB1dC1sZywKICAgIGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdLmF0dHItaW5wdXQtbGcsCiAgICBpbnB1dFt0eXBlPW1vbnRoXS5hdHRyLWlucHV0LWxnLAogICAgaW5wdXRbdHlwZT10aW1lXS5hdHRyLWlucHV0LWxnIHsKICAgICAgICBsaW5lLWhlaWdodDogNDZweAogICAgfQp9CgouYXR0ci1mb3JtLWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDE1cHgKfQoKLmF0dHItY2hlY2tib3gsCi5hdHRyLXJhZGlvIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHgKfQoKLmF0dHItY2hlY2tib3ggbGFiZWwsCi5hdHRyLXJhZGlvIGxhYmVsIHsKICAgIG1pbi1oZWlnaHQ6IDIwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgouYXR0ci1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSwKLmF0dHItY2hlY2tib3gtaW5saW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdLAouYXR0ci1yYWRpbyBpbnB1dFt0eXBlPXJhZGlvXSwKLmF0dHItcmFkaW8taW5saW5lIGlucHV0W3R5cGU9cmFkaW9dIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG1hcmdpbi1sZWZ0OiAtMjBweAp9CgouYXR0ci1jaGVja2JveCsuYXR0ci1jaGVja2JveCwKLmF0dHItcmFkaW8rLmF0dHItcmFkaW8gewogICAgbWFyZ2luLXRvcDogLTVweAp9CgouYXR0ci1jaGVja2JveC1pbmxpbmUsCi5hdHRyLXJhZGlvLWlubGluZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmF0dHItY2hlY2tib3gtaW5saW5lKy5hdHRyLWNoZWNrYm94LWlubGluZSwKLmF0dHItcmFkaW8taW5saW5lKy5hdHRyLXJhZGlvLWlubGluZSB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWxlZnQ6IDEwcHgKfQoKZmllbGRzZXRbZGlzYWJsZWRdIGlucHV0W3R5cGU9Y2hlY2tib3hdLApmaWVsZHNldFtkaXNhYmxlZF0gaW5wdXRbdHlwZT1yYWRpb10sCmlucHV0W3R5cGU9Y2hlY2tib3hdLmF0dHItZGlzYWJsZWQsCmlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXSwKaW5wdXRbdHlwZT1yYWRpb10uYXR0ci1kaXNhYmxlZCwKaW5wdXRbdHlwZT1yYWRpb11bZGlzYWJsZWRdIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQKfQoKLmF0dHItY2hlY2tib3gtaW5saW5lLmF0dHItZGlzYWJsZWQsCi5hdHRyLXJhZGlvLWlubGluZS5hdHRyLWRpc2FibGVkLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItY2hlY2tib3gtaW5saW5lLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItcmFkaW8taW5saW5lIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQKfQoKLmF0dHItY2hlY2tib3guYXR0ci1kaXNhYmxlZCBsYWJlbCwKLmF0dHItcmFkaW8uYXR0ci1kaXNhYmxlZCBsYWJlbCwKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWNoZWNrYm94IGxhYmVsLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItcmFkaW8gbGFiZWwgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZAp9CgouYXR0ci1mb3JtLWNvbnRyb2wtc3RhdGljIHsKICAgIG1pbi1oZWlnaHQ6IDM0cHg7CiAgICBwYWRkaW5nLXRvcDogN3B4OwogICAgcGFkZGluZy1ib3R0b206IDdweDsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmF0dHItZm9ybS1jb250cm9sLXN0YXRpYy5hdHRyLWlucHV0LWxnLAouYXR0ci1mb3JtLWNvbnRyb2wtc3RhdGljLmF0dHItaW5wdXQtc20gewogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogMAp9CgouYXR0ci1pbnB1dC1zbSB7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICBwYWRkaW5nOiA1cHggMTBweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBib3JkZXItcmFkaXVzOiAzcHgKfQoKc2VsZWN0LmF0dHItaW5wdXQtc20gewogICAgaGVpZ2h0OiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDMwcHgKfQoKc2VsZWN0W211bHRpcGxlXS5hdHRyLWlucHV0LXNtLAp0ZXh0YXJlYS5hdHRyLWlucHV0LXNtIHsKICAgIGhlaWdodDogYXV0bwp9CgouYXR0ci1mb3JtLWdyb3VwLXNtIC5hdHRyLWZvcm0tY29udHJvbCB7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICBwYWRkaW5nOiA1cHggMTBweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBib3JkZXItcmFkaXVzOiAzcHgKfQoKLmF0dHItZm9ybS1ncm91cC1zbSBzZWxlY3QuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgaGVpZ2h0OiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDMwcHgKfQoKLmF0dHItZm9ybS1ncm91cC1zbSBzZWxlY3RbbXVsdGlwbGVdLmF0dHItZm9ybS1jb250cm9sLAouYXR0ci1mb3JtLWdyb3VwLXNtIHRleHRhcmVhLmF0dHItZm9ybS1jb250cm9sIHsKICAgIGhlaWdodDogYXV0bwp9CgouYXR0ci1mb3JtLWdyb3VwLXNtIC5hdHRyLWZvcm0tY29udHJvbC1zdGF0aWMgewogICAgaGVpZ2h0OiAzMHB4OwogICAgbWluLWhlaWdodDogMzJweDsKICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNQp9CgouYXR0ci1pbnB1dC1sZyB7CiAgICBoZWlnaHQ6IDQ2cHg7CiAgICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMS4zMzMzMzMzOwogICAgYm9yZGVyLXJhZGl1czogNnB4Cn0KCnNlbGVjdC5hdHRyLWlucHV0LWxnIHsKICAgIGhlaWdodDogNDZweDsKICAgIGxpbmUtaGVpZ2h0OiA0NnB4Cn0KCnNlbGVjdFttdWx0aXBsZV0uYXR0ci1pbnB1dC1sZywKdGV4dGFyZWEuYXR0ci1pbnB1dC1sZyB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLmF0dHItZm9ybS1ncm91cC1sZyAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgaGVpZ2h0OiA0NnB4OwogICAgcGFkZGluZzogMTBweCAxNnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzMzMzsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgouYXR0ci1mb3JtLWdyb3VwLWxnIHNlbGVjdC5hdHRyLWZvcm0tY29udHJvbCB7CiAgICBoZWlnaHQ6IDQ2cHg7CiAgICBsaW5lLWhlaWdodDogNDZweAp9CgouYXR0ci1mb3JtLWdyb3VwLWxnIHNlbGVjdFttdWx0aXBsZV0uYXR0ci1mb3JtLWNvbnRyb2wsCi5hdHRyLWZvcm0tZ3JvdXAtbGcgdGV4dGFyZWEuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgaGVpZ2h0OiBhdXRvCn0KCi5hdHRyLWZvcm0tZ3JvdXAtbGcgLmF0dHItZm9ybS1jb250cm9sLXN0YXRpYyB7CiAgICBoZWlnaHQ6IDQ2cHg7CiAgICBtaW4taGVpZ2h0OiAzOHB4OwogICAgcGFkZGluZzogMTFweCAxNnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzMzMwp9CgouYXR0ci1oYXMtZmVlZGJhY2sgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5hdHRyLWhhcy1mZWVkYmFjayAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgcGFkZGluZy1yaWdodDogNDIuNXB4Cn0KCi5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIHotaW5kZXg6IDI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAzNHB4OwogICAgaGVpZ2h0OiAzNHB4OwogICAgbGluZS1oZWlnaHQ6IDM0cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgouYXR0ci1mb3JtLWdyb3VwLWxnIC5hdHRyLWZvcm0tY29udHJvbCsuYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2ssCi5hdHRyLWlucHV0LWdyb3VwLWxnKy5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjaywKLmF0dHItaW5wdXQtbGcrLmF0dHItZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgIHdpZHRoOiA0NnB4OwogICAgaGVpZ2h0OiA0NnB4OwogICAgbGluZS1oZWlnaHQ6IDQ2cHgKfQoKLmF0dHItZm9ybS1ncm91cC1zbSAuYXR0ci1mb3JtLWNvbnRyb2wrLmF0dHItZm9ybS1jb250cm9sLWZlZWRiYWNrLAouYXR0ci1pbnB1dC1ncm91cC1zbSsuYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2ssCi5hdHRyLWlucHV0LXNtKy5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICB3aWR0aDogMzBweDsKICAgIGhlaWdodDogMzBweDsKICAgIGxpbmUtaGVpZ2h0OiAzMHB4Cn0KCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLWNoZWNrYm94LAouYXR0ci1oYXMtc3VjY2VzcyAuYXR0ci1jaGVja2JveC1pbmxpbmUsCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLWNvbnRyb2wtbGFiZWwsCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLWhlbHAtYmxvY2ssCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLXJhZGlvLAouYXR0ci1oYXMtc3VjY2VzcyAuYXR0ci1yYWRpby1pbmxpbmUsCi5hdHRyLWhhcy1zdWNjZXNzLmF0dHItY2hlY2tib3ggbGFiZWwsCi5hdHRyLWhhcy1zdWNjZXNzLmF0dHItY2hlY2tib3gtaW5saW5lIGxhYmVsLAouYXR0ci1oYXMtc3VjY2Vzcy5hdHRyLXJhZGlvIGxhYmVsLAouYXR0ci1oYXMtc3VjY2Vzcy5hdHRyLXJhZGlvLWlubGluZSBsYWJlbCB7CiAgICBjb2xvcjogIzNjNzYzZAp9CgouYXR0ci1oYXMtc3VjY2VzcyAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNzUpCn0KCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLWZvcm0tY29udHJvbDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICMyYjU0MmM7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNzUpLCAwIDAgNnB4ICM2N2IxNjg7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KSwgMCAwIDZweCAjNjdiMTY4Cn0KCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLWlucHV0LWdyb3VwLWFkZG9uIHsKICAgIGNvbG9yOiAjM2M3NjNkOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKICAgIGJvcmRlci1jb2xvcjogIzNjNzYzZAp9CgouYXR0ci1oYXMtc3VjY2VzcyAuYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgY29sb3I6ICMzYzc2M2QKfQoKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItY2hlY2tib3gsCi5hdHRyLWhhcy13YXJuaW5nIC5hdHRyLWNoZWNrYm94LWlubGluZSwKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItY29udHJvbC1sYWJlbCwKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItaGVscC1ibG9jaywKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItcmFkaW8sCi5hdHRyLWhhcy13YXJuaW5nIC5hdHRyLXJhZGlvLWlubGluZSwKLmF0dHItaGFzLXdhcm5pbmcuYXR0ci1jaGVja2JveCBsYWJlbCwKLmF0dHItaGFzLXdhcm5pbmcuYXR0ci1jaGVja2JveC1pbmxpbmUgbGFiZWwsCi5hdHRyLWhhcy13YXJuaW5nLmF0dHItcmFkaW8gbGFiZWwsCi5hdHRyLWhhcy13YXJuaW5nLmF0dHItcmFkaW8taW5saW5lIGxhYmVsIHsKICAgIGNvbG9yOiAjOGE2ZDNiCn0KCi5hdHRyLWhhcy13YXJuaW5nIC5hdHRyLWZvcm0tY29udHJvbCB7CiAgICBib3JkZXItY29sb3I6ICM4YTZkM2I7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNzUpOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA3NSkKfQoKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItZm9ybS1jb250cm9sOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogIzY2NTEyYzsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA3NSksIDAgMCA2cHggI2MwYTE2YjsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNzUpLCAwIDAgNnB4ICNjMGExNmIKfQoKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItaW5wdXQtZ3JvdXAtYWRkb24gewogICAgY29sb3I6ICM4YTZkM2I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwogICAgYm9yZGVyLWNvbG9yOiAjOGE2ZDNiCn0KCi5hdHRyLWhhcy13YXJuaW5nIC5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICBjb2xvcjogIzhhNmQzYgp9CgouYXR0ci1oYXMtZXJyb3IgLmF0dHItY2hlY2tib3gsCi5hdHRyLWhhcy1lcnJvciAuYXR0ci1jaGVja2JveC1pbmxpbmUsCi5hdHRyLWhhcy1lcnJvciAuYXR0ci1jb250cm9sLWxhYmVsLAouYXR0ci1oYXMtZXJyb3IgLmF0dHItaGVscC1ibG9jaywKLmF0dHItaGFzLWVycm9yIC5hdHRyLXJhZGlvLAouYXR0ci1oYXMtZXJyb3IgLmF0dHItcmFkaW8taW5saW5lLAouYXR0ci1oYXMtZXJyb3IuYXR0ci1jaGVja2JveCBsYWJlbCwKLmF0dHItaGFzLWVycm9yLmF0dHItY2hlY2tib3gtaW5saW5lIGxhYmVsLAouYXR0ci1oYXMtZXJyb3IuYXR0ci1yYWRpbyBsYWJlbCwKLmF0dHItaGFzLWVycm9yLmF0dHItcmFkaW8taW5saW5lIGxhYmVsIHsKICAgIGNvbG9yOiAjYTk0NDQyCn0KCi5hdHRyLWhhcy1lcnJvciAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgYm9yZGVyLWNvbG9yOiAjYTk0NDQyOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNzUpCn0KCi5hdHRyLWhhcy1lcnJvciAuYXR0ci1mb3JtLWNvbnRyb2w6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjODQzNTM0OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KSwgMCAwIDZweCAjY2U4NDgzOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA3NSksIDAgMCA2cHggI2NlODQ4Mwp9CgouYXR0ci1oYXMtZXJyb3IgLmF0dHItaW5wdXQtZ3JvdXAtYWRkb24gewogICAgY29sb3I6ICNhOTQ0NDI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJkZWRlOwogICAgYm9yZGVyLWNvbG9yOiAjYTk0NDQyCn0KCi5hdHRyLWhhcy1lcnJvciAuYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgY29sb3I6ICNhOTQ0NDIKfQoKLmF0dHItaGFzLWZlZWRiYWNrIGxhYmVsfi5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICB0b3A6IDI1cHgKfQoKLmF0dHItaGFzLWZlZWRiYWNrIGxhYmVsLmF0dHItc3Itb25seX4uYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgdG9wOiAwCn0KCi5hdHRyLWhlbHAtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgY29sb3I6ICM3MzczNzMKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWZvcm0tZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKICAgIH0KICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWZvcm0tY29udHJvbCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKICAgIH0KICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWZvcm0tY29udHJvbC1zdGF0aWMgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawogICAgfQogICAgLmF0dHItZm9ybS1pbmxpbmUgLmF0dHItaW5wdXQtZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGlubGluZS10YWJsZTsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCiAgICB9CiAgICAuYXR0ci1mb3JtLWlubGluZSAuYXR0ci1pbnB1dC1ncm91cCAuYXR0ci1mb3JtLWNvbnRyb2wsCiAgICAuYXR0ci1mb3JtLWlubGluZSAuYXR0ci1pbnB1dC1ncm91cCAuYXR0ci1pbnB1dC1ncm91cC1hZGRvbiwKICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWlucHV0LWdyb3VwIC5hdHRyLWlucHV0LWdyb3VwLWJ0biB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWlucHV0LWdyb3VwPi5hdHRyLWZvcm0tY29udHJvbCB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWNvbnRyb2wtbGFiZWwgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQogICAgfQogICAgLmF0dHItZm9ybS1pbmxpbmUgLmF0dHItY2hlY2tib3gsCiAgICAuYXR0ci1mb3JtLWlubGluZSAuYXR0ci1yYWRpbyB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCiAgICB9CiAgICAuYXR0ci1mb3JtLWlubGluZSAuYXR0ci1jaGVja2JveCBsYWJlbCwKICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLXJhZGlvIGxhYmVsIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDAKICAgIH0KICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdLAogICAgLmF0dHItZm9ybS1pbmxpbmUgLmF0dHItcmFkaW8gaW5wdXRbdHlwZT1yYWRpb10gewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW4tbGVmdDogMAogICAgfQogICAgLmF0dHItZm9ybS1pbmxpbmUgLmF0dHItaGFzLWZlZWRiYWNrIC5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICAgICAgdG9wOiAwCiAgICB9Cn0KCi5hdHRyLWZvcm0taG9yaXpvbnRhbCAuYXR0ci1jaGVja2JveCwKLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLWNoZWNrYm94LWlubGluZSwKLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLXJhZGlvLAouYXR0ci1mb3JtLWhvcml6b250YWwgLmF0dHItcmFkaW8taW5saW5lIHsKICAgIHBhZGRpbmctdG9wOiA3cHg7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMAp9CgouYXR0ci1mb3JtLWhvcml6b250YWwgLmF0dHItY2hlY2tib3gsCi5hdHRyLWZvcm0taG9yaXpvbnRhbCAuYXR0ci1yYWRpbyB7CiAgICBtaW4taGVpZ2h0OiAyN3B4Cn0KCi5hdHRyLWZvcm0taG9yaXpvbnRhbCAuYXR0ci1mb3JtLWdyb3VwIHsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICBtYXJnaW4tbGVmdDogLTE1cHgKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLWZvcm0taG9yaXpvbnRhbCAuYXR0ci1jb250cm9sLWxhYmVsIHsKICAgICAgICBwYWRkaW5nLXRvcDogN3B4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KfQoKLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLWhhcy1mZWVkYmFjayAuYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgcmlnaHQ6IDE1cHgKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLWZvcm0taG9yaXpvbnRhbCAuYXR0ci1mb3JtLWdyb3VwLWxnIC5hdHRyLWNvbnRyb2wtbGFiZWwgewogICAgICAgIHBhZGRpbmctdG9wOiAxMXB4OwogICAgICAgIGZvbnQtc2l6ZTogMThweAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLWZvcm0tZ3JvdXAtc20gLmF0dHItY29udHJvbC1sYWJlbCB7CiAgICAgICAgcGFkZGluZy10b3A6IDZweDsKICAgICAgICBmb250LXNpemU6IDEycHgKICAgIH0KfQoKLmF0dHItYnRuIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgLW1zLXRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOwogICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogNHB4Cn0KCi5hdHRyLWJ0bi5hdHRyLWFjdGl2ZS5hdHRyLWZvY3VzLAouYXR0ci1idG4uYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi5hdHRyLWZvY3VzLAouYXR0ci1idG46YWN0aXZlLmF0dHItZm9jdXMsCi5hdHRyLWJ0bjphY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bjpmb2N1cyB7CiAgICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgICBvdXRsaW5lLW9mZnNldDogLTJweAp9CgouYXR0ci1idG4uYXR0ci1mb2N1cywKLmF0dHItYnRuOmZvY3VzLAouYXR0ci1idG46aG92ZXIgewogICAgY29sb3I6ICMzMzM7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKLmF0dHItYnRuLmF0dHItYWN0aXZlLAouYXR0ci1idG46YWN0aXZlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICBvdXRsaW5lOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAuMTI1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIC4xMjUpCn0KCi5hdHRyLWJ0bi5hdHRyLWRpc2FibGVkLAouYXR0ci1idG5bZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgb3BhY2l0eTogLjY1Cn0KCmEuYXR0ci1idG4uYXR0ci1kaXNhYmxlZCwKZmllbGRzZXRbZGlzYWJsZWRdIGEuYXR0ci1idG4gewogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmF0dHItYnRuLWRlZmF1bHQgewogICAgY29sb3I6ICMzMzM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiAjY2NjCn0KCi5hdHRyLWJ0bi1kZWZhdWx0LmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1kZWZhdWx0OmZvY3VzIHsKICAgIGNvbG9yOiAjMzMzOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsKICAgIGJvcmRlci1jb2xvcjogIzhjOGM4Ywp9CgouYXR0ci1idG4tZGVmYXVsdDpob3ZlciB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7CiAgICBib3JkZXItY29sb3I6ICNhZGFkYWQKfQoKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGVmYXVsdCB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7CiAgICBib3JkZXItY29sb3I6ICNhZGFkYWQKfQoKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1hY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi1kZWZhdWx0LmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci1idG4tZGVmYXVsdDphY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLWRlZmF1bHQ6YWN0aXZlOmZvY3VzLAouYXR0ci1idG4tZGVmYXVsdDphY3RpdmU6aG92ZXIsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1mb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGVmYXVsdDpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGVmYXVsdDpob3ZlciB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkNGQ0ZDQ7CiAgICBib3JkZXItY29sb3I6ICM4YzhjOGMKfQoKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGVmYXVsdCB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5hdHRyLWJ0bi1kZWZhdWx0LmF0dHItZGlzYWJsZWQuYXR0ci1mb2N1cywKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1kaXNhYmxlZDpob3ZlciwKLmF0dHItYnRuLWRlZmF1bHRbZGlzYWJsZWRdLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1kZWZhdWx0W2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLWRlZmF1bHRbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1mb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi1kZWZhdWx0OmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWRlZmF1bHQ6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1jb2xvcjogI2NjYwp9CgouYXR0ci1idG4tZGVmYXVsdCAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzMKfQoKLmF0dHItYnRuLXByaW1hcnkgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM3YWI3OwogICAgYm9yZGVyLWNvbG9yOiAjMmU2ZGE0Cn0KCi5hdHRyLWJ0bi1wcmltYXJ5LmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1wcmltYXJ5OmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzI4NjA5MDsKICAgIGJvcmRlci1jb2xvcjogIzEyMmI0MAp9CgouYXR0ci1idG4tcHJpbWFyeTpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyODYwOTA7CiAgICBib3JkZXItY29sb3I6ICMyMDRkNzQKfQoKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tcHJpbWFyeSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyODYwOTA7CiAgICBib3JkZXItY29sb3I6ICMyMDRkNzQKfQoKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1hY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi1wcmltYXJ5LmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci1idG4tcHJpbWFyeTphY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXByaW1hcnk6YWN0aXZlOmZvY3VzLAouYXR0ci1idG4tcHJpbWFyeTphY3RpdmU6aG92ZXIsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLXByaW1hcnkuYXR0ci1mb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tcHJpbWFyeTpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tcHJpbWFyeTpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyMDRkNzQ7CiAgICBib3JkZXItY29sb3I6ICMxMjJiNDAKfQoKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tcHJpbWFyeSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5hdHRyLWJ0bi1wcmltYXJ5LmF0dHItZGlzYWJsZWQuYXR0ci1mb2N1cywKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1kaXNhYmxlZDpob3ZlciwKLmF0dHItYnRuLXByaW1hcnlbZGlzYWJsZWRdLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1wcmltYXJ5W2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLXByaW1hcnlbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXByaW1hcnkuYXR0ci1mb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi1wcmltYXJ5OmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXByaW1hcnk6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzN2FiNzsKICAgIGJvcmRlci1jb2xvcjogIzJlNmRhNAp9CgouYXR0ci1idG4tcHJpbWFyeSAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogIzMzN2FiNzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKLmF0dHItYnRuLXN1Y2Nlc3MgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNiODVjOwogICAgYm9yZGVyLWNvbG9yOiAjNGNhZTRjCn0KCi5hdHRyLWJ0bi1zdWNjZXNzLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1zdWNjZXNzOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzQ0OWQ0NDsKICAgIGJvcmRlci1jb2xvcjogIzI1NTYyNQp9CgouYXR0ci1idG4tc3VjY2Vzczpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0NDlkNDQ7CiAgICBib3JkZXItY29sb3I6ICMzOTg0MzkKfQoKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tc3VjY2VzcyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0NDlkNDQ7CiAgICBib3JkZXItY29sb3I6ICMzOTg0MzkKfQoKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1hY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi1zdWNjZXNzLmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci1idG4tc3VjY2VzczphY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXN1Y2Nlc3M6YWN0aXZlOmZvY3VzLAouYXR0ci1idG4tc3VjY2VzczphY3RpdmU6aG92ZXIsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1mb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tc3VjY2Vzczpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tc3VjY2Vzczpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzOTg0Mzk7CiAgICBib3JkZXItY29sb3I6ICMyNTU2MjUKfQoKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tc3VjY2VzcyB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5hdHRyLWJ0bi1zdWNjZXNzLmF0dHItZGlzYWJsZWQuYXR0ci1mb2N1cywKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1kaXNhYmxlZDpob3ZlciwKLmF0dHItYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1zdWNjZXNzW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1mb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi1zdWNjZXNzOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXN1Y2Nlc3M6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1YzsKICAgIGJvcmRlci1jb2xvcjogIzRjYWU0Ywp9CgouYXR0ci1idG4tc3VjY2VzcyAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogIzVjYjg1YzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKLmF0dHItYnRuLWluZm8gewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOwogICAgYm9yZGVyLWNvbG9yOiAjNDZiOGRhCn0KCi5hdHRyLWJ0bi1pbmZvLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1pbmZvOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMxYjBkNTsKICAgIGJvcmRlci1jb2xvcjogIzFiNmQ4NQp9CgouYXR0ci1idG4taW5mbzpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMWIwZDU7CiAgICBib3JkZXItY29sb3I6ICMyNjlhYmMKfQoKLmF0dHItYnRuLWluZm8uYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1pbmZvOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4taW5mbyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMWIwZDU7CiAgICBib3JkZXItY29sb3I6ICMyNjlhYmMKfQoKLmF0dHItYnRuLWluZm8uYXR0ci1hY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLWluZm8uYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi1pbmZvLmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci1idG4taW5mbzphY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLWluZm86YWN0aXZlOmZvY3VzLAouYXR0ci1idG4taW5mbzphY3RpdmU6aG92ZXIsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLWluZm8uYXR0ci1mb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4taW5mbzpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4taW5mbzpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyNjlhYmM7CiAgICBib3JkZXItY29sb3I6ICMxYjZkODUKfQoKLmF0dHItYnRuLWluZm8uYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1pbmZvOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4taW5mbyB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5hdHRyLWJ0bi1pbmZvLmF0dHItZGlzYWJsZWQuYXR0ci1mb2N1cywKLmF0dHItYnRuLWluZm8uYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLWluZm8uYXR0ci1kaXNhYmxlZDpob3ZlciwKLmF0dHItYnRuLWluZm9bZGlzYWJsZWRdLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1pbmZvW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLWluZm9bZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWluZm8uYXR0ci1mb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi1pbmZvOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWluZm86aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTsKICAgIGJvcmRlci1jb2xvcjogIzQ2YjhkYQp9CgouYXR0ci1idG4taW5mbyAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogIzViYzBkZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKLmF0dHItYnRuLXdhcm5pbmcgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlOwogICAgYm9yZGVyLWNvbG9yOiAjZWVhMjM2Cn0KCi5hdHRyLWJ0bi13YXJuaW5nLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi13YXJuaW5nOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VjOTcxZjsKICAgIGJvcmRlci1jb2xvcjogIzk4NWYwZAp9CgouYXR0ci1idG4td2FybmluZzpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYzk3MWY7CiAgICBib3JkZXItY29sb3I6ICNkNTg1MTIKfQoKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi13YXJuaW5nOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4td2FybmluZyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYzk3MWY7CiAgICBib3JkZXItY29sb3I6ICNkNTg1MTIKfQoKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1hY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi13YXJuaW5nLmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci1idG4td2FybmluZzphY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXdhcm5pbmc6YWN0aXZlOmZvY3VzLAouYXR0ci1idG4td2FybmluZzphY3RpdmU6aG92ZXIsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1mb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4td2FybmluZzpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4td2FybmluZzpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkNTg1MTI7CiAgICBib3JkZXItY29sb3I6ICM5ODVmMGQKfQoKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi13YXJuaW5nOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4td2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5hdHRyLWJ0bi13YXJuaW5nLmF0dHItZGlzYWJsZWQuYXR0ci1mb2N1cywKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1kaXNhYmxlZDpob3ZlciwKLmF0dHItYnRuLXdhcm5pbmdbZGlzYWJsZWRdLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi13YXJuaW5nW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1mb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi13YXJuaW5nOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXdhcm5pbmc6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2YwYWQ0ZTsKICAgIGJvcmRlci1jb2xvcjogI2VlYTIzNgp9CgouYXR0ci1idG4td2FybmluZyAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogI2YwYWQ0ZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKLmF0dHItYnRuLWRhbmdlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOTUzNGY7CiAgICBib3JkZXItY29sb3I6ICNkNDNmM2EKfQoKLmF0dHItYnRuLWRhbmdlci5hdHRyLWZvY3VzLAouYXR0ci1idG4tZGFuZ2VyOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2M5MzAyYzsKICAgIGJvcmRlci1jb2xvcjogIzc2MWMxOQp9CgouYXR0ci1idG4tZGFuZ2VyOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2M5MzAyYzsKICAgIGJvcmRlci1jb2xvcjogI2FjMjkyNQp9CgouYXR0ci1idG4tZGFuZ2VyLmF0dHItYWN0aXZlLAouYXR0ci1idG4tZGFuZ2VyOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGFuZ2VyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2M5MzAyYzsKICAgIGJvcmRlci1jb2xvcjogI2FjMjkyNQp9CgouYXR0ci1idG4tZGFuZ2VyLmF0dHItYWN0aXZlLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1kYW5nZXIuYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi1kYW5nZXIuYXR0ci1hY3RpdmU6aG92ZXIsCi5hdHRyLWJ0bi1kYW5nZXI6YWN0aXZlLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1kYW5nZXI6YWN0aXZlOmZvY3VzLAouYXR0ci1idG4tZGFuZ2VyOmFjdGl2ZTpob3ZlciwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGFuZ2VyLmF0dHItZm9jdXMsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLWRhbmdlcjpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGFuZ2VyOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2FjMjkyNTsKICAgIGJvcmRlci1jb2xvcjogIzc2MWMxOQp9CgouYXR0ci1idG4tZGFuZ2VyLmF0dHItYWN0aXZlLAouYXR0ci1idG4tZGFuZ2VyOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGFuZ2VyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUKfQoKLmF0dHItYnRuLWRhbmdlci5hdHRyLWRpc2FibGVkLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1kYW5nZXIuYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLWRhbmdlci5hdHRyLWRpc2FibGVkOmhvdmVyLAouYXR0ci1idG4tZGFuZ2VyW2Rpc2FibGVkXS5hdHRyLWZvY3VzLAouYXR0ci1idG4tZGFuZ2VyW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLWRhbmdlcltkaXNhYmxlZF06aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYXR0ci1idG4tZGFuZ2VyLmF0dHItZm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYXR0ci1idG4tZGFuZ2VyOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWRhbmdlcjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmOwogICAgYm9yZGVyLWNvbG9yOiAjZDQzZjNhCn0KCi5hdHRyLWJ0bi1kYW5nZXIgLmF0dHItYmFkZ2UgewogICAgY29sb3I6ICNkOTUzNGY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5hdHRyLWJ0bi1saW5rIHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBjb2xvcjogIzMzN2FiNzsKICAgIGJvcmRlci1yYWRpdXM6IDAKfQoKLmF0dHItYnRuLWxpbmssCi5hdHRyLWJ0bi1saW5rLmF0dHItYWN0aXZlLAouYXR0ci1idG4tbGluazphY3RpdmUsCi5hdHRyLWJ0bi1saW5rW2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi1saW5rIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZQp9CgouYXR0ci1idG4tbGluaywKLmF0dHItYnRuLWxpbms6YWN0aXZlLAouYXR0ci1idG4tbGluazpmb2N1cywKLmF0dHItYnRuLWxpbms6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouYXR0ci1idG4tbGluazpmb2N1cywKLmF0dHItYnRuLWxpbms6aG92ZXIgewogICAgY29sb3I6ICMyMzUyN2M7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5hdHRyLWJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLWxpbmtbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWxpbms6Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYXR0ci1idG4tbGluazpob3ZlciB7CiAgICBjb2xvcjogIzc3NzsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZQp9CgouYXR0ci1idG4tZ3JvdXAtbGc+LmF0dHItYnRuLAouYXR0ci1idG4tbGcgewogICAgcGFkZGluZzogMTBweCAxNnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzMzMzsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgouYXR0ci1idG4tZ3JvdXAtc20+LmF0dHItYnRuLAouYXR0ci1idG4tc20gewogICAgcGFkZGluZzogNXB4IDEwcHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgYm9yZGVyLXJhZGl1czogM3B4Cn0KCi5hdHRyLWJ0bi1ncm91cC14cz4uYXR0ci1idG4sCi5hdHRyLWJ0bi14cyB7CiAgICBwYWRkaW5nOiAxcHggNXB4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIGJvcmRlci1yYWRpdXM6IDNweAp9CgouYXR0ci1idG4tYmxvY2sgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJQp9CgouYXR0ci1idG4tYmxvY2srLmF0dHItYnRuLWJsb2NrIHsKICAgIG1hcmdpbi10b3A6IDVweAp9CgppbnB1dFt0eXBlPWJ1dHRvbl0uYXR0ci1idG4tYmxvY2ssCmlucHV0W3R5cGU9cmVzZXRdLmF0dHItYnRuLWJsb2NrLAppbnB1dFt0eXBlPXN1Ym1pdF0uYXR0ci1idG4tYmxvY2sgewogICAgd2lkdGg6IDEwMCUKfQoKLmF0dHItZmFkZSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXMgbGluZWFyOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzIGxpbmVhcgp9CgouYXR0ci1mYWRlLmF0dHItaW4gewogICAgb3BhY2l0eTogMQp9CgouYXR0ci1jb2xsYXBzZSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5hdHRyLWNvbGxhcHNlLmF0dHItaW4gewogICAgZGlzcGxheTogYmxvY2sKfQoKdHIuYXR0ci1jb2xsYXBzZS5hdHRyLWluIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdwp9Cgp0Ym9keS5hdHRyLWNvbGxhcHNlLmF0dHItaW4gewogICAgZGlzcGxheTogdGFibGUtcm93LWdyb3VwCn0KCi5hdHRyLWNvbGxhcHNpbmcgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgaGVpZ2h0OiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7CiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogLjM1czsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC4zNXM7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGhlaWdodCwgdmlzaWJpbGl0eTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGhlaWdodCwgdmlzaWJpbGl0eQp9CgouYXR0ci1jYXJldCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgYm9yZGVyLXRvcDogNHB4IGRhc2hlZDsKICAgIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudAp9CgouYXR0ci1kcm9wZG93biwKLmF0dHItZHJvcHVwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouYXR0ci1kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogICAgb3V0bGluZTogMAp9CgouYXR0ci1kcm9wZG93bi1tZW51IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxMDAwOwogICAgZGlzcGxheTogbm9uZTsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWluLXdpZHRoOiAxNjBweDsKICAgIHBhZGRpbmc6IDVweCAwOwogICAgbWFyZ2luOiAycHggMCAwOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4xNSk7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLCAwLCAwLCAuMTc1KTsKICAgIGJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLCAwLCAwLCAuMTc1KQp9CgouYXR0ci1kcm9wZG93bi1tZW51LmF0dHItcHVsbC1yaWdodCB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG8KfQoKLmF0dHItZHJvcGRvd24tbWVudSAuYXR0ci1kaXZpZGVyIHsKICAgIGhlaWdodDogMXB4OwogICAgbWFyZ2luOiA5cHggMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlNWU1Cn0KCi5hdHRyLWRyb3Bkb3duLW1lbnU+bGk+YSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDNweCAyMHB4OwogICAgY2xlYXI6IGJvdGg7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgICBjb2xvcjogIzMzMzsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXAKfQoKLmF0dHItZHJvcGRvd24tbWVudT5saT5hOmZvY3VzLAouYXR0ci1kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIgewogICAgY29sb3I6ICMyNjI2MjY7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Cn0KCi5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItYWN0aXZlPmEsCi5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM3YWI3OwogICAgb3V0bGluZTogMAp9CgouYXR0ci1kcm9wZG93bi1tZW51Pi5hdHRyLWRpc2FibGVkPmEsCi5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItZGlzYWJsZWQ+YTpmb2N1cywKLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1kaXNhYmxlZD5hOmhvdmVyIHsKICAgIGNvbG9yOiAjNzc3Cn0KCi5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItZGlzYWJsZWQ+YTpmb2N1cywKLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1kaXNhYmxlZD5hOmhvdmVyIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUKfQoKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi1tZW51IHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5hdHRyLW9wZW4+YSB7CiAgICBvdXRsaW5lOiAwCn0KCi5hdHRyLWRyb3Bkb3duLW1lbnUtcmlnaHQgewogICAgcmlnaHQ6IDA7CiAgICBsZWZ0OiBhdXRvCn0KCi5hdHRyLWRyb3Bkb3duLW1lbnUtbGVmdCB7CiAgICByaWdodDogYXV0bzsKICAgIGxlZnQ6IDAKfQoKLmF0dHItZHJvcGRvd24taGVhZGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogM3B4IDIwcHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIGNvbG9yOiAjNzc3OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcAp9CgouYXR0ci1kcm9wZG93bi1iYWNrZHJvcCB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiA5OTAKfQoKLmF0dHItcHVsbC1yaWdodD4uYXR0ci1kcm9wZG93bi1tZW51IHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bwp9CgouYXR0ci1kcm9wdXAgLmF0dHItY2FyZXQsCi5hdHRyLW5hdmJhci1maXhlZC1ib3R0b20gLmF0dHItZHJvcGRvd24gLmF0dHItY2FyZXQgewogICAgY29udGVudDogIiI7CiAgICBib3JkZXItdG9wOiAwOwogICAgYm9yZGVyLWJvdHRvbTogNHB4IGRhc2hlZAp9CgouYXR0ci1kcm9wdXAgLmF0dHItZHJvcGRvd24tbWVudSwKLmF0dHItbmF2YmFyLWZpeGVkLWJvdHRvbSAuYXR0ci1kcm9wZG93biAuYXR0ci1kcm9wZG93bi1tZW51IHsKICAgIHRvcDogYXV0bzsKICAgIGJvdHRvbTogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDJweAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2YmFyLXJpZ2h0IC5hdHRyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGxlZnQ6IGF1dG8KICAgIH0KICAgIC5hdHRyLW5hdmJhci1yaWdodCAuYXR0ci1kcm9wZG93bi1tZW51LWxlZnQgewogICAgICAgIHJpZ2h0OiBhdXRvOwogICAgICAgIGxlZnQ6IDAKICAgIH0KfQoKLmF0dHItYnRuLWdyb3VwLAouYXR0ci1idG4tZ3JvdXAtdmVydGljYWwgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuLAouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZsb2F0OiBsZWZ0Cn0KCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4uYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG46YWN0aXZlLAouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuOmZvY3VzLAouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuOmhvdmVyLAouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuLmF0dHItYWN0aXZlLAouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuOmFjdGl2ZSwKLmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0bjpmb2N1cywKLmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0bjpob3ZlciB7CiAgICB6LWluZGV4OiAyCn0KCi5hdHRyLWJ0bi1ncm91cCAuYXR0ci1idG4rLmF0dHItYnRuLAouYXR0ci1idG4tZ3JvdXAgLmF0dHItYnRuKy5hdHRyLWJ0bi1ncm91cCwKLmF0dHItYnRuLWdyb3VwIC5hdHRyLWJ0bi1ncm91cCsuYXR0ci1idG4sCi5hdHRyLWJ0bi1ncm91cCAuYXR0ci1idG4tZ3JvdXArLmF0dHItYnRuLWdyb3VwIHsKICAgIG1hcmdpbi1sZWZ0OiAtMXB4Cn0KCi5hdHRyLWJ0bi10b29sYmFyIHsKICAgIG1hcmdpbi1sZWZ0OiAtNXB4Cn0KCi5hdHRyLWJ0bi10b29sYmFyIC5hdHRyLWJ0biwKLmF0dHItYnRuLXRvb2xiYXIgLmF0dHItYnRuLWdyb3VwLAouYXR0ci1idG4tdG9vbGJhciAuYXR0ci1pbnB1dC1ncm91cCB7CiAgICBmbG9hdDogbGVmdAp9CgouYXR0ci1idG4tdG9vbGJhcj4uYXR0ci1idG4sCi5hdHRyLWJ0bi10b29sYmFyPi5hdHRyLWJ0bi1ncm91cCwKLmF0dHItYnRuLXRvb2xiYXI+LmF0dHItaW5wdXQtZ3JvdXAgewogICAgbWFyZ2luLWxlZnQ6IDVweAp9CgouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5hdHRyLWRyb3Bkb3duLXRvZ2dsZSkgewogICAgYm9yZGVyLXJhZGl1czogMAp9CgouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuOmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwCn0KCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG46Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKTpub3QoLmF0dHItZHJvcGRvd24tdG9nZ2xlKSB7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwCn0KCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG46bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSwKLmF0dHItYnRuLWdyb3VwPi5hdHRyLWRyb3Bkb3duLXRvZ2dsZTpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMAp9CgouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuLWdyb3VwIHsKICAgIGZsb2F0OiBsZWZ0Cn0KCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKT4uYXR0ci1idG4gewogICAgYm9yZGVyLXJhZGl1czogMAp9CgouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCk+LmF0dHItYnRuOmxhc3QtY2hpbGQsCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKT4uYXR0ci1kcm9wZG93bi10b2dnbGUgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMAp9CgouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuLWdyb3VwOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCk+LmF0dHItYnRuOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwCn0KCi5hdHRyLWJ0bi1ncm91cCAuYXR0ci1kcm9wZG93bi10b2dnbGU6YWN0aXZlLAouYXR0ci1idG4tZ3JvdXAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLXRvZ2dsZSB7CiAgICBvdXRsaW5lOiAwCn0KCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG4rLmF0dHItZHJvcGRvd24tdG9nZ2xlIHsKICAgIHBhZGRpbmctcmlnaHQ6IDhweDsKICAgIHBhZGRpbmctbGVmdDogOHB4Cn0KCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG4tbGcrLmF0dHItZHJvcGRvd24tdG9nZ2xlIHsKICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7CiAgICBwYWRkaW5nLWxlZnQ6IDEycHgKfQoKLmF0dHItYnRuLWdyb3VwLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi10b2dnbGUgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAuMTI1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIC4xMjUpCn0KCi5hdHRyLWJ0bi1ncm91cC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLWxpbmsgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZQp9CgouYXR0ci1idG4gLmF0dHItY2FyZXQgewogICAgbWFyZ2luLWxlZnQ6IDAKfQoKLmF0dHItYnRuLWxnIC5hdHRyLWNhcmV0IHsKICAgIGJvcmRlci13aWR0aDogNXB4IDVweCAwOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMAp9CgouYXR0ci1kcm9wdXAgLmF0dHItYnRuLWxnIC5hdHRyLWNhcmV0IHsKICAgIGJvcmRlci13aWR0aDogMCA1cHggNXB4Cn0KCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4sCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4tZ3JvdXAsCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IG5vbmU7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJQp9CgouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0biB7CiAgICBmbG9hdDogbm9uZQp9CgouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuKy5hdHRyLWJ0biwKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bisuYXR0ci1idG4tZ3JvdXAsCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4tZ3JvdXArLmF0dHItYnRuLAouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuLWdyb3VwKy5hdHRyLWJ0bi1ncm91cCB7CiAgICBtYXJnaW4tdG9wOiAtMXB4OwogICAgbWFyZ2luLWxlZnQ6IDAKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci1yYWRpdXM6IDAKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHgKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpPi5hdHRyLWJ0biB7CiAgICBib3JkZXItcmFkaXVzOiAwCn0KCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKT4uYXR0ci1idG46bGFzdC1jaGlsZCwKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpPi5hdHRyLWRyb3Bkb3duLXRvZ2dsZSB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpPi5hdHRyLWJ0bjpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAKfQoKLmF0dHItYnRuLWdyb3VwLWp1c3RpZmllZCB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICAgIHdpZHRoOiAxMDAlOwogICAgdGFibGUtbGF5b3V0OiBmaXhlZDsKICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUKfQoKLmF0dHItYnRuLWdyb3VwLWp1c3RpZmllZD4uYXR0ci1idG4sCi5hdHRyLWJ0bi1ncm91cC1qdXN0aWZpZWQ+LmF0dHItYnRuLWdyb3VwIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICBmbG9hdDogbm9uZTsKICAgIHdpZHRoOiAxJQp9CgouYXR0ci1idG4tZ3JvdXAtanVzdGlmaWVkPi5hdHRyLWJ0bi1ncm91cCAuYXR0ci1idG4gewogICAgd2lkdGg6IDEwMCUKfQoKLmF0dHItYnRuLWdyb3VwLWp1c3RpZmllZD4uYXR0ci1idG4tZ3JvdXAgLmF0dHItZHJvcGRvd24tbWVudSB7CiAgICBsZWZ0OiBhdXRvCn0KCltkYXRhLXRvZ2dsZT1idXR0b25zXT4uYXR0ci1idG4gaW5wdXRbdHlwZT1jaGVja2JveF0sCltkYXRhLXRvZ2dsZT1idXR0b25zXT4uYXR0ci1idG4gaW5wdXRbdHlwZT1yYWRpb10sCltkYXRhLXRvZ2dsZT1idXR0b25zXT4uYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdLApbZGF0YS10b2dnbGU9YnV0dG9uc10+LmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0biBpbnB1dFt0eXBlPXJhZGlvXSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmF0dHItaW5wdXQtZ3JvdXAgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogdGFibGU7CiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlCn0KCi5hdHRyLWlucHV0LWdyb3VwW2NsYXNzKj1hdHRyLWNvbC1dIHsKICAgIGZsb2F0OiBub25lOwogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogMAp9CgouYXR0ci1pbnB1dC1ncm91cCAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMjsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDEwMCU7CiAgICBtYXJnaW4tYm90dG9tOiAwCn0KCi5hdHRyLWlucHV0LWdyb3VwIC5hdHRyLWZvcm0tY29udHJvbDpmb2N1cyB7CiAgICB6LWluZGV4OiAzCn0KCi5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWZvcm0tY29udHJvbCwKLmF0dHItaW5wdXQtZ3JvdXAtbGc+LmF0dHItaW5wdXQtZ3JvdXAtYWRkb24sCi5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG4gewogICAgaGVpZ2h0OiA0NnB4OwogICAgcGFkZGluZzogMTBweCAxNnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzMzMzsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgpzZWxlY3QuYXR0ci1pbnB1dC1ncm91cC1sZz4uYXR0ci1mb3JtLWNvbnRyb2wsCnNlbGVjdC5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uLApzZWxlY3QuYXR0ci1pbnB1dC1ncm91cC1sZz4uYXR0ci1pbnB1dC1ncm91cC1idG4+LmF0dHItYnRuIHsKICAgIGhlaWdodDogNDZweDsKICAgIGxpbmUtaGVpZ2h0OiA0NnB4Cn0KCnNlbGVjdFttdWx0aXBsZV0uYXR0ci1pbnB1dC1ncm91cC1sZz4uYXR0ci1mb3JtLWNvbnRyb2wsCnNlbGVjdFttdWx0aXBsZV0uYXR0ci1pbnB1dC1ncm91cC1sZz4uYXR0ci1pbnB1dC1ncm91cC1hZGRvbiwKc2VsZWN0W211bHRpcGxlXS5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG4sCnRleHRhcmVhLmF0dHItaW5wdXQtZ3JvdXAtbGc+LmF0dHItZm9ybS1jb250cm9sLAp0ZXh0YXJlYS5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uLAp0ZXh0YXJlYS5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG4gewogICAgaGVpZ2h0OiBhdXRvCn0KCi5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWZvcm0tY29udHJvbCwKLmF0dHItaW5wdXQtZ3JvdXAtc20+LmF0dHItaW5wdXQtZ3JvdXAtYWRkb24sCi5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG4gewogICAgaGVpZ2h0OiAzMHB4OwogICAgcGFkZGluZzogNXB4IDEwcHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgYm9yZGVyLXJhZGl1czogM3B4Cn0KCnNlbGVjdC5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWZvcm0tY29udHJvbCwKc2VsZWN0LmF0dHItaW5wdXQtZ3JvdXAtc20+LmF0dHItaW5wdXQtZ3JvdXAtYWRkb24sCnNlbGVjdC5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG4gewogICAgaGVpZ2h0OiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDMwcHgKfQoKc2VsZWN0W211bHRpcGxlXS5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWZvcm0tY29udHJvbCwKc2VsZWN0W211bHRpcGxlXS5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uLApzZWxlY3RbbXVsdGlwbGVdLmF0dHItaW5wdXQtZ3JvdXAtc20+LmF0dHItaW5wdXQtZ3JvdXAtYnRuPi5hdHRyLWJ0biwKdGV4dGFyZWEuYXR0ci1pbnB1dC1ncm91cC1zbT4uYXR0ci1mb3JtLWNvbnRyb2wsCnRleHRhcmVhLmF0dHItaW5wdXQtZ3JvdXAtc20+LmF0dHItaW5wdXQtZ3JvdXAtYWRkb24sCnRleHRhcmVhLmF0dHItaW5wdXQtZ3JvdXAtc20+LmF0dHItaW5wdXQtZ3JvdXAtYnRuPi5hdHRyLWJ0biB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLmF0dHItaW5wdXQtZ3JvdXAgLmF0dHItZm9ybS1jb250cm9sLAouYXR0ci1pbnB1dC1ncm91cC1hZGRvbiwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwKfQoKLmF0dHItaW5wdXQtZ3JvdXAgLmF0dHItZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksCi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksCi5hdHRyLWlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci1yYWRpdXM6IDAKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYWRkb24sCi5hdHRyLWlucHV0LWdyb3VwLWJ0biB7CiAgICB3aWR0aDogMSU7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgouYXR0ci1pbnB1dC1ncm91cC1hZGRvbiB7CiAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGNvbG9yOiAjNTU1OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICBib3JkZXItcmFkaXVzOiA0cHgKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYWRkb24uYXR0ci1pbnB1dC1zbSB7CiAgICBwYWRkaW5nOiA1cHggMTBweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweAp9CgouYXR0ci1pbnB1dC1ncm91cC1hZGRvbi5hdHRyLWlucHV0LWxnIHsKICAgIHBhZGRpbmc6IDEwcHggMTZweDsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgouYXR0ci1pbnB1dC1ncm91cC1hZGRvbiBpbnB1dFt0eXBlPWNoZWNrYm94XSwKLmF0dHItaW5wdXQtZ3JvdXAtYWRkb24gaW5wdXRbdHlwZT1yYWRpb10gewogICAgbWFyZ2luLXRvcDogMAp9CgouYXR0ci1pbnB1dC1ncm91cCAuYXR0ci1mb3JtLWNvbnRyb2w6Zmlyc3QtY2hpbGQsCi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkLAouYXR0ci1pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmF0dHItYnRuLAouYXR0ci1pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0biwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5hdHRyLWRyb3Bkb3duLXRvZ2dsZSwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmF0dHItYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCk+LmF0dHItYnRuLAouYXR0ci1pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYXR0ci1idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmF0dHItZHJvcGRvd24tdG9nZ2xlKSB7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwCn0KCi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci1yaWdodDogMAp9CgouYXR0ci1pbnB1dC1ncm91cCAuYXR0ci1mb3JtLWNvbnRyb2w6bGFzdC1jaGlsZCwKLmF0dHItaW5wdXQtZ3JvdXAtYWRkb246bGFzdC1jaGlsZCwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5hdHRyLWJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKT4uYXR0ci1idG4sCi5hdHRyLWlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uYXR0ci1idG46bm90KDpmaXJzdC1jaGlsZCksCi5hdHRyLWlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5hdHRyLWJ0biwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0biwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmF0dHItZHJvcGRvd24tdG9nZ2xlIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwCn0KCi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLWxlZnQ6IDAKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYnRuIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZvbnQtc2l6ZTogMDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXAKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYnRuPi5hdHRyLWJ0biB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYnRuPi5hdHRyLWJ0bisuYXR0ci1idG4gewogICAgbWFyZ2luLWxlZnQ6IC0xcHgKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYnRuPi5hdHRyLWJ0bjphY3RpdmUsCi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG46Zm9jdXMsCi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG46aG92ZXIgewogICAgei1pbmRleDogMgp9CgouYXR0ci1pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmF0dHItYnRuLAouYXR0ci1pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmF0dHItYnRuLWdyb3VwIHsKICAgIG1hcmdpbi1yaWdodDogLTFweAp9CgouYXR0ci1pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYXR0ci1idG4sCi5hdHRyLWlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5hdHRyLWJ0bi1ncm91cCB7CiAgICB6LWluZGV4OiAyOwogICAgbWFyZ2luLWxlZnQ6IC0xcHgKfQoKLmF0dHItbmF2IHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBsaXN0LXN0eWxlOiBub25lCn0KCi5hdHRyLW5hdj5saSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jawp9CgouYXR0ci1uYXY+bGk+YSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDEwcHggMTVweAp9CgouYXR0ci1uYXY+bGk+YTpmb2N1cywKLmF0dHItbmF2PmxpPmE6aG92ZXIgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZQp9CgouYXR0ci1uYXY+bGkuYXR0ci1kaXNhYmxlZD5hIHsKICAgIGNvbG9yOiAjNzc3Cn0KCi5hdHRyLW5hdj5saS5hdHRyLWRpc2FibGVkPmE6Zm9jdXMsCi5hdHRyLW5hdj5saS5hdHRyLWRpc2FibGVkPmE6aG92ZXIgewogICAgY29sb3I6ICM3Nzc7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQKfQoKLmF0dHItbmF2IC5hdHRyLW9wZW4+YSwKLmF0dHItbmF2IC5hdHRyLW9wZW4+YTpmb2N1cywKLmF0dHItbmF2IC5hdHRyLW9wZW4+YTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogICAgYm9yZGVyLWNvbG9yOiAjMzM3YWI3Cn0KCi5hdHRyLW5hdiAuYXR0ci1uYXYtZGl2aWRlciB7CiAgICBoZWlnaHQ6IDFweDsKICAgIG1hcmdpbjogOXB4IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNQp9CgouYXR0ci1uYXY+bGk+YT5pbWcgewogICAgbWF4LXdpZHRoOiBub25lCn0KCi5hdHRyLW5hdi10YWJzIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkCn0KCi5hdHRyLW5hdi10YWJzPmxpIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWJvdHRvbTogLTFweAp9CgouYXR0ci1uYXYtdGFicz5saT5hIHsKICAgIG1hcmdpbi1yaWdodDogMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwCn0KCi5hdHRyLW5hdi10YWJzPmxpPmE6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiAjZWVlICNlZWUgI2RkZAp9CgouYXR0ci1uYXYtdGFicz5saS5hdHRyLWFjdGl2ZT5hLAouYXR0ci1uYXYtdGFicz5saS5hdHRyLWFjdGl2ZT5hOmZvY3VzLAouYXR0ci1uYXYtdGFicz5saS5hdHRyLWFjdGl2ZT5hOmhvdmVyIHsKICAgIGNvbG9yOiAjNTU1OwogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQgewogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXItYm90dG9tOiAwCn0KCi5hdHRyLW5hdi10YWJzLmF0dHItbmF2LWp1c3RpZmllZD5saSB7CiAgICBmbG9hdDogbm9uZQp9CgouYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQ+bGk+YSB7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPi5hdHRyLWRyb3Bkb3duIC5hdHRyLWRyb3Bkb3duLW1lbnUgewogICAgdG9wOiBhdXRvOwogICAgbGVmdDogYXV0bwp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPmxpIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgICAgIHdpZHRoOiAxJQogICAgfQogICAgLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPmxpPmEgewogICAgICAgIG1hcmdpbi1ib3R0b206IDAKICAgIH0KfQoKLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPmxpPmEgewogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgYm9yZGVyLXJhZGl1czogNHB4Cn0KCi5hdHRyLW5hdi10YWJzLmF0dHItbmF2LWp1c3RpZmllZD4uYXR0ci1hY3RpdmU+YSwKLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPi5hdHRyLWFjdGl2ZT5hOmZvY3VzLAouYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQ+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPmxpPmEgewogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwCiAgICB9CiAgICAuYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQ+LmF0dHItYWN0aXZlPmEsCiAgICAuYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQ+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCiAgICAuYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQ+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmYKICAgIH0KfQoKLmF0dHItbmF2LXBpbGxzPmxpIHsKICAgIGZsb2F0OiBsZWZ0Cn0KCi5hdHRyLW5hdi1waWxscz5saT5hIHsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci1uYXYtcGlsbHM+bGkrbGkgewogICAgbWFyZ2luLWxlZnQ6IDJweAp9CgouYXR0ci1uYXYtcGlsbHM+bGkuYXR0ci1hY3RpdmU+YSwKLmF0dHItbmF2LXBpbGxzPmxpLmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLW5hdi1waWxscz5saS5hdHRyLWFjdGl2ZT5hOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzN2FiNwp9CgouYXR0ci1uYXYtc3RhY2tlZD5saSB7CiAgICBmbG9hdDogbm9uZQp9CgouYXR0ci1uYXYtc3RhY2tlZD5saStsaSB7CiAgICBtYXJnaW4tdG9wOiAycHg7CiAgICBtYXJnaW4tbGVmdDogMAp9CgouYXR0ci1uYXYtanVzdGlmaWVkIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5hdHRyLW5hdi1qdXN0aWZpZWQ+bGkgewogICAgZmxvYXQ6IG5vbmUKfQoKLmF0dHItbmF2LWp1c3RpZmllZD5saT5hIHsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouYXR0ci1uYXYtanVzdGlmaWVkPi5hdHRyLWRyb3Bkb3duIC5hdHRyLWRyb3Bkb3duLW1lbnUgewogICAgdG9wOiBhdXRvOwogICAgbGVmdDogYXV0bwp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2LWp1c3RpZmllZD5saSB7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgICAgICB3aWR0aDogMSUKICAgIH0KICAgIC5hdHRyLW5hdi1qdXN0aWZpZWQ+bGk+YSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMAogICAgfQp9CgouYXR0ci1uYXYtdGFicy1qdXN0aWZpZWQgewogICAgYm9yZGVyLWJvdHRvbTogMAp9CgouYXR0ci1uYXYtdGFicy1qdXN0aWZpZWQ+bGk+YSB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBib3JkZXItcmFkaXVzOiA0cHgKfQoKLmF0dHItbmF2LXRhYnMtanVzdGlmaWVkPi5hdHRyLWFjdGl2ZT5hLAouYXR0ci1uYXYtdGFicy1qdXN0aWZpZWQ+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLW5hdi10YWJzLWp1c3RpZmllZD4uYXR0ci1hY3RpdmU+YTpob3ZlciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1uYXYtdGFicy1qdXN0aWZpZWQ+bGk+YSB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDAKICAgIH0KICAgIC5hdHRyLW5hdi10YWJzLWp1c3RpZmllZD4uYXR0ci1hY3RpdmU+YSwKICAgIC5hdHRyLW5hdi10YWJzLWp1c3RpZmllZD4uYXR0ci1hY3RpdmU+YTpmb2N1cywKICAgIC5hdHRyLW5hdi10YWJzLWp1c3RpZmllZD4uYXR0ci1hY3RpdmU+YTpob3ZlciB7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZgogICAgfQp9CgouYXR0ci10YWItY29udGVudD4uYXR0ci10YWItcGFuZSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5hdHRyLXRhYi1jb250ZW50Pi5hdHRyLWFjdGl2ZSB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouYXR0ci1uYXYtdGFicyAuYXR0ci1kcm9wZG93bi1tZW51IHsKICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAKfQoKLmF0dHItbmF2YmFyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1pbi1oZWlnaHQ6IDUwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLW5hdmJhciB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1uYXZiYXItaGVhZGVyIHsKICAgICAgICBmbG9hdDogbGVmdAogICAgfQp9CgouYXR0ci1uYXZiYXItY29sbGFwc2UgewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIG92ZXJmbG93LXg6IHZpc2libGU7CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMSk7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjEpCn0KCi5hdHRyLW5hdmJhci1jb2xsYXBzZS5hdHRyLWluIHsKICAgIG92ZXJmbG93LXk6IGF1dG8KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLW5hdmJhci1jb2xsYXBzZSB7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgYm9yZGVyLXRvcDogMDsKICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZQogICAgfQogICAgLmF0dHItbmF2YmFyLWNvbGxhcHNlLmF0dHItY29sbGFwc2UgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudAogICAgfQogICAgLmF0dHItbmF2YmFyLWNvbGxhcHNlLmF0dHItaW4gewogICAgICAgIG92ZXJmbG93LXk6IHZpc2libGUKICAgIH0KICAgIC5hdHRyLW5hdmJhci1maXhlZC1ib3R0b20gLmF0dHItbmF2YmFyLWNvbGxhcHNlLAogICAgLmF0dHItbmF2YmFyLWZpeGVkLXRvcCAuYXR0ci1uYXZiYXItY29sbGFwc2UsCiAgICAuYXR0ci1uYXZiYXItc3RhdGljLXRvcCAuYXR0ci1uYXZiYXItY29sbGFwc2UgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAwCiAgICB9Cn0KCi5hdHRyLW5hdmJhci1maXhlZC1ib3R0b20gLmF0dHItbmF2YmFyLWNvbGxhcHNlLAouYXR0ci1uYXZiYXItZml4ZWQtdG9wIC5hdHRyLW5hdmJhci1jb2xsYXBzZSB7CiAgICBtYXgtaGVpZ2h0OiAzNDBweAp9CgpAbWVkaWEgKG1heC1kZXZpY2Utd2lkdGg6NDgwcHgpIGFuZCAob3JpZW50YXRpb246bGFuZHNjYXBlKSB7CiAgICAuYXR0ci1uYXZiYXItZml4ZWQtYm90dG9tIC5hdHRyLW5hdmJhci1jb2xsYXBzZSwKICAgIC5hdHRyLW5hdmJhci1maXhlZC10b3AgLmF0dHItbmF2YmFyLWNvbGxhcHNlIHsKICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweAogICAgfQp9CgouYXR0ci1jb250YWluZXItZmx1aWQ+LmF0dHItbmF2YmFyLWNvbGxhcHNlLAouYXR0ci1jb250YWluZXItZmx1aWQ+LmF0dHItbmF2YmFyLWhlYWRlciwKLmF0dHItY29udGFpbmVyPi5hdHRyLW5hdmJhci1jb2xsYXBzZSwKLmF0dHItY29udGFpbmVyPi5hdHRyLW5hdmJhci1oZWFkZXIgewogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIG1hcmdpbi1sZWZ0OiAtMTVweAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItY29udGFpbmVyLWZsdWlkPi5hdHRyLW5hdmJhci1jb2xsYXBzZSwKICAgIC5hdHRyLWNvbnRhaW5lci1mbHVpZD4uYXR0ci1uYXZiYXItaGVhZGVyLAogICAgLmF0dHItY29udGFpbmVyPi5hdHRyLW5hdmJhci1jb2xsYXBzZSwKICAgIC5hdHRyLWNvbnRhaW5lcj4uYXR0ci1uYXZiYXItaGVhZGVyIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDAKICAgIH0KfQoKLmF0dHItbmF2YmFyLXN0YXRpYy10b3AgewogICAgei1pbmRleDogMTAwMDsKICAgIGJvcmRlci13aWR0aDogMCAwIDFweAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2YmFyLXN0YXRpYy10b3AgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDAKICAgIH0KfQoKLmF0dHItbmF2YmFyLWZpeGVkLWJvdHRvbSwKLmF0dHItbmF2YmFyLWZpeGVkLXRvcCB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxMDMwCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1uYXZiYXItZml4ZWQtYm90dG9tLAogICAgLmF0dHItbmF2YmFyLWZpeGVkLXRvcCB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMAogICAgfQp9CgouYXR0ci1uYXZiYXItZml4ZWQtdG9wIHsKICAgIHRvcDogMDsKICAgIGJvcmRlci13aWR0aDogMCAwIDFweAp9CgouYXR0ci1uYXZiYXItZml4ZWQtYm90dG9tIHsKICAgIGJvdHRvbTogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBib3JkZXItd2lkdGg6IDFweCAwIDAKfQoKLmF0dHItbmF2YmFyLWJyYW5kIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgaGVpZ2h0OiA1MHB4OwogICAgcGFkZGluZzogMTVweCAxNXB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDIwcHgKfQoKLmF0dHItbmF2YmFyLWJyYW5kOmZvY3VzLAouYXR0ci1uYXZiYXItYnJhbmQ6aG92ZXIgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lCn0KCi5hdHRyLW5hdmJhci1icmFuZD5pbWcgewogICAgZGlzcGxheTogYmxvY2sKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLW5hdmJhcj4uYXR0ci1jb250YWluZXIgLmF0dHItbmF2YmFyLWJyYW5kLAogICAgLmF0dHItbmF2YmFyPi5hdHRyLWNvbnRhaW5lci1mbHVpZCAuYXR0ci1uYXZiYXItYnJhbmQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAtMTVweAogICAgfQp9CgouYXR0ci1uYXZiYXItdG9nZ2xlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZsb2F0OiByaWdodDsKICAgIHBhZGRpbmc6IDlweCAxMHB4OwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiA0cHgKfQoKLmF0dHItbmF2YmFyLXRvZ2dsZTpmb2N1cyB7CiAgICBvdXRsaW5lOiAwCn0KCi5hdHRyLW5hdmJhci10b2dnbGUgLmF0dHItaWNvbi1iYXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMjJweDsKICAgIGhlaWdodDogMnB4OwogICAgYm9yZGVyLXJhZGl1czogMXB4Cn0KCi5hdHRyLW5hdmJhci10b2dnbGUgLmF0dHItaWNvbi1iYXIrLmF0dHItaWNvbi1iYXIgewogICAgbWFyZ2luLXRvcDogNHB4Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1uYXZiYXItdG9nZ2xlIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCi5hdHRyLW5hdmJhci1uYXYgewogICAgbWFyZ2luOiA3LjVweCAtMTVweAp9CgouYXR0ci1uYXZiYXItbmF2PmxpPmEgewogICAgcGFkZGluZy10b3A6IDEwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgIGxpbmUtaGVpZ2h0OiAyMHB4Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudSB7CiAgICAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICAgICBmbG9hdDogbm9uZTsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZQogICAgfQogICAgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnUgLmF0dHItZHJvcGRvd24taGVhZGVyLAogICAgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+bGk+YSB7CiAgICAgICAgcGFkZGluZzogNXB4IDE1cHggNXB4IDI1cHgKICAgIH0KICAgIC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51PmxpPmEgewogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4CiAgICB9CiAgICAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT5saT5hOmZvY3VzLAogICAgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+bGk+YTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2YmFyLW5hdiB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgbWFyZ2luOiAwCiAgICB9CiAgICAuYXR0ci1uYXZiYXItbmF2PmxpIHsKICAgICAgICBmbG9hdDogbGVmdAogICAgfQogICAgLmF0dHItbmF2YmFyLW5hdj5saT5hIHsKICAgICAgICBwYWRkaW5nLXRvcDogMTVweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTVweAogICAgfQp9CgouYXR0ci1uYXZiYXItZm9ybSB7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4OwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjEpLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjEpOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xKSwgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xKQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItZm9ybS1ncm91cCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItZm9ybS1jb250cm9sIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItZm9ybS1jb250cm9sLXN0YXRpYyB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrCiAgICB9CiAgICAuYXR0ci1uYXZiYXItZm9ybSAuYXR0ci1pbnB1dC1ncm91cCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLXRhYmxlOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKICAgIH0KICAgIC5hdHRyLW5hdmJhci1mb3JtIC5hdHRyLWlucHV0LWdyb3VwIC5hdHRyLWZvcm0tY29udHJvbCwKICAgIC5hdHRyLW5hdmJhci1mb3JtIC5hdHRyLWlucHV0LWdyb3VwIC5hdHRyLWlucHV0LWdyb3VwLWFkZG9uLAogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItaW5wdXQtZ3JvdXAgLmF0dHItaW5wdXQtZ3JvdXAtYnRuIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItaW5wdXQtZ3JvdXA+LmF0dHItZm9ybS1jb250cm9sIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItY29udHJvbC1sYWJlbCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCiAgICB9CiAgICAuYXR0ci1uYXZiYXItZm9ybSAuYXR0ci1jaGVja2JveCwKICAgIC5hdHRyLW5hdmJhci1mb3JtIC5hdHRyLXJhZGlvIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKICAgIH0KICAgIC5hdHRyLW5hdmJhci1mb3JtIC5hdHRyLWNoZWNrYm94IGxhYmVsLAogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItcmFkaW8gbGFiZWwgewogICAgICAgIHBhZGRpbmctbGVmdDogMAogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0sCiAgICAuYXR0ci1uYXZiYXItZm9ybSAuYXR0ci1yYWRpbyBpbnB1dFt0eXBlPXJhZGlvXSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAwCiAgICB9CiAgICAuYXR0ci1uYXZiYXItZm9ybSAuYXR0ci1oYXMtZmVlZGJhY2sgLmF0dHItZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgICAgICB0b3A6IDAKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5hdHRyLW5hdmJhci1mb3JtIC5hdHRyLWZvcm0tZ3JvdXAgewogICAgICAgIG1hcmdpbi1ib3R0b206IDVweAogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItZm9ybS1ncm91cDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1uYXZiYXItZm9ybSB7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgcGFkZGluZy10b3A6IDA7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZQogICAgfQp9CgouYXR0ci1uYXZiYXItbmF2PmxpPi5hdHRyLWRyb3Bkb3duLW1lbnUgewogICAgbWFyZ2luLXRvcDogMDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMAp9CgouYXR0ci1uYXZiYXItZml4ZWQtYm90dG9tIC5hdHRyLW5hdmJhci1uYXY+bGk+LmF0dHItZHJvcGRvd24tbWVudSB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMAp9CgouYXR0ci1uYXZiYXItYnRuIHsKICAgIG1hcmdpbi10b3A6IDhweDsKICAgIG1hcmdpbi1ib3R0b206IDhweAp9CgouYXR0ci1uYXZiYXItYnRuLmF0dHItYnRuLXNtIHsKICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Cn0KCi5hdHRyLW5hdmJhci1idG4uYXR0ci1idG4teHMgewogICAgbWFyZ2luLXRvcDogMTRweDsKICAgIG1hcmdpbi1ib3R0b206IDE0cHgKfQoKLmF0dHItbmF2YmFyLXRleHQgewogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDE1cHgKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLW5hdmJhci10ZXh0IHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHgKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLW5hdmJhci1sZWZ0IHsKICAgICAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50CiAgICB9CiAgICAuYXR0ci1uYXZiYXItcmlnaHQgewogICAgICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1yaWdodDogLTE1cHgKICAgIH0KICAgIC5hdHRyLW5hdmJhci1yaWdodH4uYXR0ci1uYXZiYXItcmlnaHQgewogICAgICAgIG1hcmdpbi1yaWdodDogMAogICAgfQp9CgouYXR0ci1uYXZiYXItZGVmYXVsdCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4OwogICAgYm9yZGVyLWNvbG9yOiAjZTdlN2U3Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1icmFuZCB7CiAgICBjb2xvcjogIzc3Nwp9CgouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItYnJhbmQ6Zm9jdXMsCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1icmFuZDpob3ZlciB7CiAgICBjb2xvcjogIzVlNWU1ZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci10ZXh0IHsKICAgIGNvbG9yOiAjNzc3Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+bGk+YSB7CiAgICBjb2xvcjogIzc3Nwp9CgouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2PmxpPmE6Zm9jdXMsCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+bGk+YTpob3ZlciB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmEsCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgY29sb3I6ICM1NTU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdlN2U3Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+LmF0dHItZGlzYWJsZWQ+YSwKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLW5hdj4uYXR0ci1kaXNhYmxlZD5hOmZvY3VzLAouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2Pi5hdHRyLWRpc2FibGVkPmE6aG92ZXIgewogICAgY29sb3I6ICNjY2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItdG9nZ2xlIHsKICAgIGJvcmRlci1jb2xvcjogI2RkZAp9CgouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItdG9nZ2xlOmZvY3VzLAouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItdG9nZ2xlOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGQKfQoKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLXRvZ2dsZSAuYXR0ci1pY29uLWJhciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODg4Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1jb2xsYXBzZSwKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLWZvcm0gewogICAgYm9yZGVyLWNvbG9yOiAjZTdlN2U3Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+LmF0dHItb3Blbj5hLAouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2Pi5hdHRyLW9wZW4+YTpmb2N1cywKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLW5hdj4uYXR0ci1vcGVuPmE6aG92ZXIgewogICAgY29sb3I6ICM1NTU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdlN2U3Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT5saT5hIHsKICAgICAgICBjb2xvcjogIzc3NwogICAgfQogICAgLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1cywKICAgIC5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIgewogICAgICAgIGNvbG9yOiAjMzMzOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50CiAgICB9CiAgICAuYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1hY3RpdmU+YSwKICAgIC5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51Pi5hdHRyLWFjdGl2ZT5hOmZvY3VzLAogICAgLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgICAgIGNvbG9yOiAjNTU1OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlN2U3ZTcKICAgIH0KICAgIC5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51Pi5hdHRyLWRpc2FibGVkPmEsCiAgICAuYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1kaXNhYmxlZD5hOmZvY3VzLAogICAgLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItZGlzYWJsZWQ+YTpob3ZlciB7CiAgICAgICAgY29sb3I6ICNjY2M7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQKICAgIH0KfQoKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLWxpbmsgewogICAgY29sb3I6ICM3NzcKfQoKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLWxpbms6aG92ZXIgewogICAgY29sb3I6ICMzMzMKfQoKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItYnRuLWxpbmsgewogICAgY29sb3I6ICM3NzcKfQoKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItYnRuLWxpbms6Zm9jdXMsCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLWJ0bi1saW5rOmhvdmVyIHsKICAgIGNvbG9yOiAjMzMzCn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLWJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItYnRuLWxpbmtbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItYnRuLWxpbms6Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1idG4tbGluazpob3ZlciB7CiAgICBjb2xvcjogI2NjYwp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOwogICAgYm9yZGVyLWNvbG9yOiAjMDgwODA4Cn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1icmFuZCB7CiAgICBjb2xvcjogIzlkOWQ5ZAp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItYnJhbmQ6Zm9jdXMsCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1icmFuZDpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci10ZXh0IHsKICAgIGNvbG9yOiAjOWQ5ZDlkCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+bGk+YSB7CiAgICBjb2xvcjogIzlkOWQ5ZAp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2PmxpPmE6Zm9jdXMsCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+bGk+YTpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmEsCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4Cn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+LmF0dHItZGlzYWJsZWQ+YSwKLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdj4uYXR0ci1kaXNhYmxlZD5hOmZvY3VzLAouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2Pi5hdHRyLWRpc2FibGVkPmE6aG92ZXIgewogICAgY29sb3I6ICM0NDQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItdG9nZ2xlIHsKICAgIGJvcmRlci1jb2xvcjogIzMzMwp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItdG9nZ2xlOmZvY3VzLAouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItdG9nZ2xlOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzMKfQoKLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLXRvZ2dsZSAuYXR0ci1pY29uLWJhciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1jb2xsYXBzZSwKLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLWZvcm0gewogICAgYm9yZGVyLWNvbG9yOiAjMTAxMDEwCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+LmF0dHItb3Blbj5hLAouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2Pi5hdHRyLW9wZW4+YTpmb2N1cywKLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdj4uYXR0ci1vcGVuPmE6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1kcm9wZG93bi1oZWFkZXIgewogICAgICAgIGJvcmRlci1jb2xvcjogIzA4MDgwOAogICAgfQogICAgLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnUgLmF0dHItZGl2aWRlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA4MDgwOAogICAgfQogICAgLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+bGk+YSB7CiAgICAgICAgY29sb3I6ICM5ZDlkOWQKICAgIH0KICAgIC5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51PmxpPmE6Zm9jdXMsCiAgICAuYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT5saT5hOmhvdmVyIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAogICAgfQogICAgLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItYWN0aXZlPmEsCiAgICAuYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1hY3RpdmU+YTpmb2N1cywKICAgIC5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51Pi5hdHRyLWFjdGl2ZT5hOmhvdmVyIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4CiAgICB9CiAgICAuYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1kaXNhYmxlZD5hLAogICAgLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItZGlzYWJsZWQ+YTpmb2N1cywKICAgIC5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51Pi5hdHRyLWRpc2FibGVkPmE6aG92ZXIgewogICAgICAgIGNvbG9yOiAjNDQ0OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50CiAgICB9Cn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1saW5rIHsKICAgIGNvbG9yOiAjOWQ5ZDlkCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1saW5rOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLWJ0bi1saW5rIHsKICAgIGNvbG9yOiAjOWQ5ZDlkCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLWJ0bi1saW5rOmZvY3VzLAouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1idG4tbGluazpob3ZlciB7CiAgICBjb2xvcjogI2ZmZgp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1idG4tbGlua1tkaXNhYmxlZF06Zm9jdXMsCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLWJ0bi1saW5rW2Rpc2FibGVkXTpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLWJ0bi1saW5rOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItYnRuLWxpbms6aG92ZXIgewogICAgY29sb3I6ICM0NDQKfQoKLmF0dHItYnJlYWRjcnVtYiB7CiAgICBwYWRkaW5nOiA4cHggMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci1icmVhZGNydW1iPmxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouYXR0ci1icmVhZGNydW1iPmxpK2xpOmJlZm9yZSB7CiAgICBwYWRkaW5nOiAwIDVweDsKICAgIGNvbG9yOiAjY2NjOwogICAgY29udGVudDogIi9cMDBhMCIKfQoKLmF0dHItYnJlYWRjcnVtYj4uYXR0ci1hY3RpdmUgewogICAgY29sb3I6ICM3NzcKfQoKLmF0dHItcGFnaW5hdGlvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBtYXJnaW46IDIwcHggMDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci1wYWdpbmF0aW9uPmxpIHsKICAgIGRpc3BsYXk6IGlubGluZQp9CgouYXR0ci1wYWdpbmF0aW9uPmxpPmEsCi5hdHRyLXBhZ2luYXRpb24+bGk+c3BhbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgbWFyZ2luLWxlZnQ6IC0xcHg7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIGNvbG9yOiAjMzM3YWI3OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQKfQoKLmF0dHItcGFnaW5hdGlvbj5saTpmaXJzdC1jaGlsZD5hLAouYXR0ci1wYWdpbmF0aW9uPmxpOmZpcnN0LWNoaWxkPnNwYW4gewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHgKfQoKLmF0dHItcGFnaW5hdGlvbj5saTpsYXN0LWNoaWxkPmEsCi5hdHRyLXBhZ2luYXRpb24+bGk6bGFzdC1jaGlsZD5zcGFuIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4Cn0KCi5hdHRyLXBhZ2luYXRpb24+bGk+YTpmb2N1cywKLmF0dHItcGFnaW5hdGlvbj5saT5hOmhvdmVyLAouYXR0ci1wYWdpbmF0aW9uPmxpPnNwYW46Zm9jdXMsCi5hdHRyLXBhZ2luYXRpb24+bGk+c3Bhbjpob3ZlciB7CiAgICB6LWluZGV4OiAyOwogICAgY29sb3I6ICMyMzUyN2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogICAgYm9yZGVyLWNvbG9yOiAjZGRkCn0KCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPmEsCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPmE6aG92ZXIsCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPnNwYW4sCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPnNwYW46Zm9jdXMsCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPnNwYW46aG92ZXIgewogICAgei1pbmRleDogMzsKICAgIGNvbG9yOiAjZmZmOwogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzN2FiNzsKICAgIGJvcmRlci1jb2xvcjogIzMzN2FiNwp9CgouYXR0ci1wYWdpbmF0aW9uPi5hdHRyLWRpc2FibGVkPmEsCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItZGlzYWJsZWQ+YTpmb2N1cywKLmF0dHItcGFnaW5hdGlvbj4uYXR0ci1kaXNhYmxlZD5hOmhvdmVyLAouYXR0ci1wYWdpbmF0aW9uPi5hdHRyLWRpc2FibGVkPnNwYW4sCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItZGlzYWJsZWQ+c3Bhbjpmb2N1cywKLmF0dHItcGFnaW5hdGlvbj4uYXR0ci1kaXNhYmxlZD5zcGFuOmhvdmVyIHsKICAgIGNvbG9yOiAjNzc3OwogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICNkZGQKfQoKLmF0dHItcGFnaW5hdGlvbi1sZz5saT5hLAouYXR0ci1wYWdpbmF0aW9uLWxnPmxpPnNwYW4gewogICAgcGFkZGluZzogMTBweCAxNnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzMzMwp9CgouYXR0ci1wYWdpbmF0aW9uLWxnPmxpOmZpcnN0LWNoaWxkPmEsCi5hdHRyLXBhZ2luYXRpb24tbGc+bGk6Zmlyc3QtY2hpbGQ+c3BhbiB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA2cHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA2cHgKfQoKLmF0dHItcGFnaW5hdGlvbi1sZz5saTpsYXN0LWNoaWxkPmEsCi5hdHRyLXBhZ2luYXRpb24tbGc+bGk6bGFzdC1jaGlsZD5zcGFuIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA2cHg7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNnB4Cn0KCi5hdHRyLXBhZ2luYXRpb24tc20+bGk+YSwKLmF0dHItcGFnaW5hdGlvbi1zbT5saT5zcGFuIHsKICAgIHBhZGRpbmc6IDVweCAxMHB4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNQp9CgouYXR0ci1wYWdpbmF0aW9uLXNtPmxpOmZpcnN0LWNoaWxkPmEsCi5hdHRyLXBhZ2luYXRpb24tc20+bGk6Zmlyc3QtY2hpbGQ+c3BhbiB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHgKfQoKLmF0dHItcGFnaW5hdGlvbi1zbT5saTpsYXN0LWNoaWxkPmEsCi5hdHRyLXBhZ2luYXRpb24tc20+bGk6bGFzdC1jaGlsZD5zcGFuIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4Cn0KCi5hdHRyLXBhZ2VyIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIG1hcmdpbjogMjBweCAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbGlzdC1zdHlsZTogbm9uZQp9CgouYXR0ci1wYWdlciBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUKfQoKLmF0dHItcGFnZXIgbGk+YSwKLmF0dHItcGFnZXIgbGk+c3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiA1cHggMTRweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLXJhZGl1czogMTVweAp9CgouYXR0ci1wYWdlciBsaT5hOmZvY3VzLAouYXR0ci1wYWdlciBsaT5hOmhvdmVyIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWUKfQoKLmF0dHItcGFnZXIgLmF0dHItbmV4dD5hLAouYXR0ci1wYWdlciAuYXR0ci1uZXh0PnNwYW4gewogICAgZmxvYXQ6IHJpZ2h0Cn0KCi5hdHRyLXBhZ2VyIC5hdHRyLXByZXZpb3VzPmEsCi5hdHRyLXBhZ2VyIC5hdHRyLXByZXZpb3VzPnNwYW4gewogICAgZmxvYXQ6IGxlZnQKfQoKLmF0dHItcGFnZXIgLmF0dHItZGlzYWJsZWQ+YSwKLmF0dHItcGFnZXIgLmF0dHItZGlzYWJsZWQ+YTpmb2N1cywKLmF0dHItcGFnZXIgLmF0dHItZGlzYWJsZWQ+YTpob3ZlciwKLmF0dHItcGFnZXIgLmF0dHItZGlzYWJsZWQ+c3BhbiB7CiAgICBjb2xvcjogIzc3NzsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5hdHRyLWxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZTsKICAgIHBhZGRpbmc6IC4yZW0gLjZlbSAuM2VtOwogICAgZm9udC1zaXplOiA3NSU7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiAgICBib3JkZXItcmFkaXVzOiAuMjVlbQp9CgphLmF0dHItbGFiZWw6Zm9jdXMsCmEuYXR0ci1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgouYXR0ci1sYWJlbDplbXB0eSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5hdHRyLWJ0biAuYXR0ci1sYWJlbCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IC0xcHgKfQoKLmF0dHItbGFiZWwtZGVmYXVsdCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzc3Cn0KCi5hdHRyLWxhYmVsLWRlZmF1bHRbaHJlZl06Zm9jdXMsCi5hdHRyLWxhYmVsLWRlZmF1bHRbaHJlZl06aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVlNWU1ZQp9CgouYXR0ci1sYWJlbC1wcmltYXJ5IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzdhYjcKfQoKLmF0dHItbGFiZWwtcHJpbWFyeVtocmVmXTpmb2N1cywKLmF0dHItbGFiZWwtcHJpbWFyeVtocmVmXTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjg2MDkwCn0KCi5hdHRyLWxhYmVsLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1Ywp9CgouYXR0ci1sYWJlbC1zdWNjZXNzW2hyZWZdOmZvY3VzLAouYXR0ci1sYWJlbC1zdWNjZXNzW2hyZWZdOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0NDlkNDQKfQoKLmF0dHItbGFiZWwtaW5mbyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlCn0KCi5hdHRyLWxhYmVsLWluZm9baHJlZl06Zm9jdXMsCi5hdHRyLWxhYmVsLWluZm9baHJlZl06aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzMxYjBkNQp9CgouYXR0ci1sYWJlbC13YXJuaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGUKfQoKLmF0dHItbGFiZWwtd2FybmluZ1tocmVmXTpmb2N1cywKLmF0dHItbGFiZWwtd2FybmluZ1tocmVmXTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWM5NzFmCn0KCi5hdHRyLWxhYmVsLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmCn0KCi5hdHRyLWxhYmVsLWRhbmdlcltocmVmXTpmb2N1cywKLmF0dHItbGFiZWwtZGFuZ2VyW2hyZWZdOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjOTMwMmMKfQoKLmF0dHItYmFkZ2UgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWluLXdpZHRoOiAxMHB4OwogICAgcGFkZGluZzogM3B4IDdweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGNvbG9yOiAjZmZmOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzc3OwogICAgYm9yZGVyLXJhZGl1czogMTBweAp9CgouYXR0ci1iYWRnZTplbXB0eSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5hdHRyLWJ0biAuYXR0ci1iYWRnZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IC0xcHgKfQoKLmF0dHItYnRuLWdyb3VwLXhzPi5hdHRyLWJ0biAuYXR0ci1iYWRnZSwKLmF0dHItYnRuLXhzIC5hdHRyLWJhZGdlIHsKICAgIHRvcDogMDsKICAgIHBhZGRpbmc6IDFweCA1cHgKfQoKYS5hdHRyLWJhZGdlOmZvY3VzLAphLmF0dHItYmFkZ2U6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlPi5hdHRyLWJhZGdlLAouYXR0ci1uYXYtcGlsbHM+LmF0dHItYWN0aXZlPmE+LmF0dHItYmFkZ2UgewogICAgY29sb3I6ICMzMzdhYjc7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbT4uYXR0ci1iYWRnZSB7CiAgICBmbG9hdDogcmlnaHQKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtPi5hdHRyLWJhZGdlKy5hdHRyLWJhZGdlIHsKICAgIG1hcmdpbi1yaWdodDogNXB4Cn0KCi5hdHRyLW5hdi1waWxscz5saT5hPi5hdHRyLWJhZGdlIHsKICAgIG1hcmdpbi1sZWZ0OiAzcHgKfQoKLmF0dHItanVtYm90cm9uIHsKICAgIHBhZGRpbmctdG9wOiAzMHB4OwogICAgcGFkZGluZy1ib3R0b206IDMwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgY29sb3I6IGluaGVyaXQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlCn0KCi5hdHRyLWp1bWJvdHJvbiAuYXR0ci1oMSwKLmF0dHItanVtYm90cm9uIGgxIHsKICAgIGNvbG9yOiBpbmhlcml0Cn0KCi5hdHRyLWp1bWJvdHJvbiBwIHsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICBmb250LXNpemU6IDIxcHg7CiAgICBmb250LXdlaWdodDogMjAwCn0KCi5hdHRyLWp1bWJvdHJvbj5ociB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZDVkNWQ1Cn0KCi5hdHRyLWNvbnRhaW5lciAuYXR0ci1qdW1ib3Ryb24sCi5hdHRyLWNvbnRhaW5lci1mbHVpZCAuYXR0ci1qdW1ib3Ryb24gewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgouYXR0ci1qdW1ib3Ryb24gLmF0dHItY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogMTAwJQp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1qdW1ib3Ryb24gewogICAgICAgIHBhZGRpbmctdG9wOiA0OHB4OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA0OHB4CiAgICB9CiAgICAuYXR0ci1jb250YWluZXIgLmF0dHItanVtYm90cm9uLAogICAgLmF0dHItY29udGFpbmVyLWZsdWlkIC5hdHRyLWp1bWJvdHJvbiB7CiAgICAgICAgcGFkZGluZy1yaWdodDogNjBweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDYwcHgKICAgIH0KICAgIC5hdHRyLWp1bWJvdHJvbiAuYXR0ci1oMSwKICAgIC5hdHRyLWp1bWJvdHJvbiBoMSB7CiAgICAgICAgZm9udC1zaXplOiA2M3B4CiAgICB9Cn0KCi5hdHRyLXRodW1ibmFpbCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDRweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBib3JkZXIgLjJzIGVhc2UtaW4tb3V0OwogICAgdHJhbnNpdGlvbjogYm9yZGVyIC4ycyBlYXNlLWluLW91dAp9CgouYXR0ci10aHVtYm5haWwgYT5pbWcsCi5hdHRyLXRodW1ibmFpbD5pbWcgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IGF1dG8KfQoKYS5hdHRyLXRodW1ibmFpbC5hdHRyLWFjdGl2ZSwKYS5hdHRyLXRodW1ibmFpbDpmb2N1cywKYS5hdHRyLXRodW1ibmFpbDpob3ZlciB7CiAgICBib3JkZXItY29sb3I6ICMzMzdhYjcKfQoKLmF0dHItdGh1bWJuYWlsIC5hdHRyLWNhcHRpb24gewogICAgcGFkZGluZzogOXB4OwogICAgY29sb3I6ICMzMzMKfQoKLmF0dHItYWxlcnQgewogICAgcGFkZGluZzogMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci1hbGVydCBoNCB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgY29sb3I6IGluaGVyaXQKfQoKLmF0dHItYWxlcnQgLmF0dHItYWxlcnQtbGluayB7CiAgICBmb250LXdlaWdodDogNzAwCn0KCi5hdHRyLWFsZXJ0PnAsCi5hdHRyLWFsZXJ0PnVsIHsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmF0dHItYWxlcnQ+cCtwIHsKICAgIG1hcmdpbi10b3A6IDVweAp9CgouYXR0ci1hbGVydC1kaXNtaXNzYWJsZSwKLmF0dHItYWxlcnQtZGlzbWlzc2libGUgewogICAgcGFkZGluZy1yaWdodDogMzVweAp9CgouYXR0ci1hbGVydC1kaXNtaXNzYWJsZSAuYXR0ci1jbG9zZSwKLmF0dHItYWxlcnQtZGlzbWlzc2libGUgLmF0dHItY2xvc2UgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAtMnB4OwogICAgcmlnaHQ6IC0yMXB4OwogICAgY29sb3I6IGluaGVyaXQKfQoKLmF0dHItYWxlcnQtc3VjY2VzcyB7CiAgICBjb2xvcjogIzNjNzYzZDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7CiAgICBib3JkZXItY29sb3I6ICNkNmU5YzYKfQoKLmF0dHItYWxlcnQtc3VjY2VzcyBociB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjYzllMmIzCn0KCi5hdHRyLWFsZXJ0LXN1Y2Nlc3MgLmF0dHItYWxlcnQtbGluayB7CiAgICBjb2xvcjogIzJiNTQyYwp9CgouYXR0ci1hbGVydC1pbmZvIHsKICAgIGNvbG9yOiAjMzE3MDhmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNzsKICAgIGJvcmRlci1jb2xvcjogI2JjZThmMQp9CgouYXR0ci1hbGVydC1pbmZvIGhyIHsKICAgIGJvcmRlci10b3AtY29sb3I6ICNhNmUxZWMKfQoKLmF0dHItYWxlcnQtaW5mbyAuYXR0ci1hbGVydC1saW5rIHsKICAgIGNvbG9yOiAjMjQ1MjY5Cn0KCi5hdHRyLWFsZXJ0LXdhcm5pbmcgewogICAgY29sb3I6ICM4YTZkM2I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwogICAgYm9yZGVyLWNvbG9yOiAjZmFlYmNjCn0KCi5hdHRyLWFsZXJ0LXdhcm5pbmcgaHIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2Y3ZTFiNQp9CgouYXR0ci1hbGVydC13YXJuaW5nIC5hdHRyLWFsZXJ0LWxpbmsgewogICAgY29sb3I6ICM2NjUxMmMKfQoKLmF0dHItYWxlcnQtZGFuZ2VyIHsKICAgIGNvbG9yOiAjYTk0NDQyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKICAgIGJvcmRlci1jb2xvcjogI2ViY2NkMQp9CgouYXR0ci1hbGVydC1kYW5nZXIgaHIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2U0YjljMAp9CgouYXR0ci1hbGVydC1kYW5nZXIgLmF0dHItYWxlcnQtbGluayB7CiAgICBjb2xvcjogIzg0MzUzNAp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogICAgZnJvbSB7CiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwCiAgICB9CiAgICB0byB7CiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwCiAgICB9Cn0KCkBrZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogICAgZnJvbSB7CiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwCiAgICB9CiAgICB0byB7CiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwCiAgICB9Cn0KCi5hdHRyLXByb2dyZXNzIHsKICAgIGhlaWdodDogMjBweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgLjEpOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgLjEpCn0KCi5hdHRyLXByb2dyZXNzLWJhciB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzdhYjc7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgLjE1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgLjE1KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggLjZzIGVhc2U7CiAgICB0cmFuc2l0aW9uOiB3aWR0aCAuNnMgZWFzZQp9CgouYXR0ci1wcm9ncmVzcy1iYXItc3RyaXBlZCwKLmF0dHItcHJvZ3Jlc3Mtc3RyaXBlZCAuYXR0ci1wcm9ncmVzcy1iYXIgewogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDQwcHggNDBweAp9CgouYXR0ci1wcm9ncmVzcy1iYXIuYXR0ci1hY3RpdmUsCi5hdHRyLXByb2dyZXNzLmF0dHItYWN0aXZlIC5hdHRyLXByb2dyZXNzLWJhciB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGUKfQoKLmF0dHItcHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1Ywp9CgouYXR0ci1wcm9ncmVzcy1zdHJpcGVkIC5hdHRyLXByb2dyZXNzLWJhci1zdWNjZXNzIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpCn0KCi5hdHRyLXByb2dyZXNzLWJhci1pbmZvIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM1YmMwZGUKfQoKLmF0dHItcHJvZ3Jlc3Mtc3RyaXBlZCAuYXR0ci1wcm9ncmVzcy1iYXItaW5mbyB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KQp9CgouYXR0ci1wcm9ncmVzcy1iYXItd2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlCn0KCi5hdHRyLXByb2dyZXNzLXN0cmlwZWQgLmF0dHItcHJvZ3Jlc3MtYmFyLXdhcm5pbmcgewogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCkKfQoKLmF0dHItcHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmCn0KCi5hdHRyLXByb2dyZXNzLXN0cmlwZWQgLmF0dHItcHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KQp9CgouYXR0ci1tZWRpYSB7CiAgICBtYXJnaW4tdG9wOiAxNXB4Cn0KCi5hdHRyLW1lZGlhOmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbi10b3A6IDAKfQoKLmF0dHItbWVkaWEsCi5hdHRyLW1lZGlhLWJvZHkgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHpvb206IDEKfQoKLmF0dHItbWVkaWEtYm9keSB7CiAgICB3aWR0aDogMTAwMDBweAp9CgouYXR0ci1tZWRpYS1vYmplY3QgewogICAgZGlzcGxheTogYmxvY2sKfQoKLmF0dHItbWVkaWEtb2JqZWN0LmF0dHItaW1nLXRodW1ibmFpbCB7CiAgICBtYXgtd2lkdGg6IG5vbmUKfQoKLmF0dHItbWVkaWEtcmlnaHQsCi5hdHRyLW1lZGlhPi5hdHRyLXB1bGwtcmlnaHQgewogICAgcGFkZGluZy1sZWZ0OiAxMHB4Cn0KCi5hdHRyLW1lZGlhLWxlZnQsCi5hdHRyLW1lZGlhPi5hdHRyLXB1bGwtbGVmdCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4Cn0KCi5hdHRyLW1lZGlhLWJvZHksCi5hdHRyLW1lZGlhLWxlZnQsCi5hdHRyLW1lZGlhLXJpZ2h0IHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wCn0KCi5hdHRyLW1lZGlhLW1pZGRsZSB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCn0KCi5hdHRyLW1lZGlhLWJvdHRvbSB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tCn0KCi5hdHRyLW1lZGlhLWhlYWRpbmcgewogICAgbWFyZ2luLXRvcDogMDsKICAgIG1hcmdpbi1ib3R0b206IDVweAp9CgouYXR0ci1tZWRpYS1saXN0IHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmUKfQoKLmF0dHItbGlzdC1ncm91cCB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Cn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgIG1hcmdpbi1ib3R0b206IC0xcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZAp9CgouYXR0ci1saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweAp9CgouYXR0ci1saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweAp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0gewogICAgY29sb3I6ICM1NTUKfQoKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbSAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgIGNvbG9yOiAjMzMzCn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW06Zm9jdXMsCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW06aG92ZXIsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbTpmb2N1cywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtOmhvdmVyIHsKICAgIGNvbG9yOiAjNTU1OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNQp9CgpidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0gewogICAgd2lkdGg6IDEwMCU7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Cn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWRpc2FibGVkLAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItZGlzYWJsZWQ6aG92ZXIgewogICAgY29sb3I6ICM3Nzc7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZQp9CgouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1kaXNhYmxlZCAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItZGlzYWJsZWQ6Zm9jdXMgLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWRpc2FibGVkOmhvdmVyIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgIGNvbG9yOiBpbmhlcml0Cn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWRpc2FibGVkIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS10ZXh0LAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1kaXNhYmxlZDpmb2N1cyAuYXR0ci1saXN0LWdyb3VwLWl0ZW0tdGV4dCwKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItZGlzYWJsZWQ6aG92ZXIgLmF0dHItbGlzdC1ncm91cC1pdGVtLXRleHQgewogICAgY29sb3I6ICM3NzcKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlLAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWFjdGl2ZTpob3ZlciB7CiAgICB6LWluZGV4OiAyOwogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM3YWI3OwogICAgYm9yZGVyLWNvbG9yOiAjMzM3YWI3Cn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWFjdGl2ZSAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPi5hdHRyLXNtYWxsLAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1hY3RpdmUgLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+c21hbGwsCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWFjdGl2ZTpmb2N1cyAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlOmZvY3VzIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPi5hdHRyLXNtYWxsLAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1hY3RpdmU6Zm9jdXMgLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+c21hbGwsCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWFjdGl2ZTpob3ZlciAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlOmhvdmVyIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPi5hdHRyLXNtYWxsLAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1hY3RpdmU6aG92ZXIgLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+c21hbGwgewogICAgY29sb3I6IGluaGVyaXQKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS10ZXh0LAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1hY3RpdmU6Zm9jdXMgLmF0dHItbGlzdC1ncm91cC1pdGVtLXRleHQsCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWFjdGl2ZTpob3ZlciAuYXR0ci1saXN0LWdyb3VwLWl0ZW0tdGV4dCB7CiAgICBjb2xvcjogI2M3ZGRlZgp9CgouYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyB7CiAgICBjb2xvcjogIzNjNzYzZDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDgKfQoKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyB7CiAgICBjb2xvcjogIzNjNzYzZAp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MgLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgIGNvbG9yOiBpbmhlcml0Cn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzczpmb2N1cywKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzOmhvdmVyLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzczpmb2N1cywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6aG92ZXIgewogICAgY29sb3I6ICMzYzc2M2Q7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBlOWM2Cn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hdHRyLWFjdGl2ZSwKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmF0dHItYWN0aXZlOmZvY3VzLAphLmF0dHItbGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYXR0ci1hY3RpdmU6aG92ZXIsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmF0dHItYWN0aXZlLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hdHRyLWFjdGl2ZTpmb2N1cywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYXR0ci1hY3RpdmU6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2M3NjNkOwogICAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkCn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKICAgIGNvbG9yOiAjMzE3MDhmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNwp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLWluZm8sCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKICAgIGNvbG9yOiAjMzE3MDhmCn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0taW5mbyAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLWluZm8gLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogICAgY29sb3I6IGluaGVyaXQKfQoKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3VzLAphLmF0dHItbGlzdC1ncm91cC1pdGVtLWluZm86aG92ZXIsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3VzLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0taW5mbzpob3ZlciB7CiAgICBjb2xvcjogIzMxNzA4ZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjNGUzZjMKfQoKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvLmF0dHItYWN0aXZlLAphLmF0dHItbGlzdC1ncm91cC1pdGVtLWluZm8uYXR0ci1hY3RpdmU6Zm9jdXMsCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0taW5mby5hdHRyLWFjdGl2ZTpob3ZlciwKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLWluZm8uYXR0ci1hY3RpdmUsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvLmF0dHItYWN0aXZlOmZvY3VzLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0taW5mby5hdHRyLWFjdGl2ZTpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMTcwOGY7CiAgICBib3JkZXItY29sb3I6ICMzMTcwOGYKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmcgewogICAgY29sb3I6ICM4YTZkM2I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzCn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0td2FybmluZywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmcgewogICAgY29sb3I6ICM4YTZkM2IKfQoKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0td2FybmluZyAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgICBjb2xvcjogaW5oZXJpdAp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6Zm9jdXMsCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0td2FybmluZzpob3ZlciwKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6Zm9jdXMsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nOmhvdmVyIHsKICAgIGNvbG9yOiAjOGE2ZDNiOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZjJjYwp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYXR0ci1hY3RpdmUsCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hdHRyLWFjdGl2ZTpmb2N1cywKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmF0dHItYWN0aXZlOmhvdmVyLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hdHRyLWFjdGl2ZSwKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYXR0ci1hY3RpdmU6Zm9jdXMsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmF0dHItYWN0aXZlOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzhhNmQzYjsKICAgIGJvcmRlci1jb2xvcjogIzhhNmQzYgp9CgouYXR0ci1saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyIHsKICAgIGNvbG9yOiAjYTk0NDQyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZQp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlciwKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlciB7CiAgICBjb2xvcjogI2E5NDQ0Mgp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlciAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlciAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgICBjb2xvcjogaW5oZXJpdAp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlcjpmb2N1cywKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6aG92ZXIsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6Zm9jdXMsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6aG92ZXIgewogICAgY29sb3I6ICNhOTQ0NDI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJjY2NjCn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmF0dHItYWN0aXZlLAphLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlci5hdHRyLWFjdGl2ZTpmb2N1cywKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYXR0ci1hY3RpdmU6aG92ZXIsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYXR0ci1hY3RpdmUsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYXR0ci1hY3RpdmU6Zm9jdXMsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYXR0ci1hY3RpdmU6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTk0NDQyOwogICAgYm9yZGVyLWNvbG9yOiAjYTk0NDQyCn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tYm90dG9tOiA1cHgKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtLXRleHQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjMKfQoKLmF0dHItcGFuZWwgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA1KTsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNSkKfQoKLmF0dHItcGFuZWwtYm9keSB7CiAgICBwYWRkaW5nOiAxNXB4Cn0KCi5hdHRyLXBhbmVsLWhlYWRpbmcgewogICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbC1oZWFkaW5nPi5hdHRyLWRyb3Bkb3duIC5hdHRyLWRyb3Bkb3duLXRvZ2dsZSB7CiAgICBjb2xvcjogaW5oZXJpdAp9CgouYXR0ci1wYW5lbC10aXRsZSB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGNvbG9yOiBpbmhlcml0Cn0KCi5hdHRyLXBhbmVsLXRpdGxlPi5hdHRyLXNtYWxsLAouYXR0ci1wYW5lbC10aXRsZT4uYXR0ci1zbWFsbD5hLAouYXR0ci1wYW5lbC10aXRsZT5hLAouYXR0ci1wYW5lbC10aXRsZT5zbWFsbCwKLmF0dHItcGFuZWwtdGl0bGU+c21hbGw+YSB7CiAgICBjb2xvcjogaW5oZXJpdAp9CgouYXR0ci1wYW5lbC1mb290ZXIgewogICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci1saXN0LWdyb3VwLAouYXR0ci1wYW5lbD4uYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1saXN0LWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmF0dHItcGFuZWw+LmF0dHItbGlzdC1ncm91cCAuYXR0ci1saXN0LWdyb3VwLWl0ZW0sCi5hdHRyLXBhbmVsPi5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLWxpc3QtZ3JvdXAgLmF0dHItbGlzdC1ncm91cC1pdGVtIHsKICAgIGJvcmRlci13aWR0aDogMXB4IDA7CiAgICBib3JkZXItcmFkaXVzOiAwCn0KCi5hdHRyLXBhbmVsPi5hdHRyLWxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmF0dHItbGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1saXN0LWdyb3VwOmZpcnN0LWNoaWxkIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wOiAwOwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci1saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmF0dHItbGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLWxpc3QtZ3JvdXA6bGFzdC1jaGlsZCAuYXR0ci1saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYm90dG9tOiAwOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci1wYW5lbC1oZWFkaW5nKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLWxpc3QtZ3JvdXAgLmF0dHItbGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMAp9CgouYXR0ci1wYW5lbC1oZWFkaW5nKy5hdHRyLWxpc3QtZ3JvdXAgLmF0dHItbGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3Atd2lkdGg6IDAKfQoKLmF0dHItbGlzdC1ncm91cCsuYXR0ci1wYW5lbC1mb290ZXIgewogICAgYm9yZGVyLXRvcC13aWR0aDogMAp9CgouYXR0ci1wYW5lbD4uYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci10YWJsZSwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUgewogICAgbWFyZ2luLWJvdHRvbTogMAp9CgouYXR0ci1wYW5lbD4uYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci10YWJsZSBjYXB0aW9uLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZSBjYXB0aW9uLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlIGNhcHRpb24gewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogMTVweAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZTpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4Cn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4Cn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4uYXR0ci10YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LmF0dHItdGFibGU6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4Cn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4uYXR0ci10YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi5hdHRyLXRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4uYXR0ci10YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi5hdHRyLXRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi5hdHRyLXRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4uYXR0ci10YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4Cn0KCi5hdHRyLXBhbmVsPi5hdHRyLXBhbmVsLWJvZHkrLmF0dHItdGFibGUsCi5hdHRyLXBhbmVsPi5hdHRyLXBhbmVsLWJvZHkrLmF0dHItdGFibGUtcmVzcG9uc2l2ZSwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUrLmF0dHItcGFuZWwtYm9keSwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZSsuYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkCn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZT50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aCB7CiAgICBib3JkZXItdG9wOiAwCn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci1sZWZ0OiAwCn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQ6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpsYXN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGg6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLXJpZ2h0OiAwCn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmZpcnN0LWNoaWxkPnRkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cjpmaXJzdC1jaGlsZD50aCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmZpcnN0LWNoaWxkPnRkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmZpcnN0LWNoaWxkPnRoLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRoIHsKICAgIGJvcmRlci1ib3R0b206IDAKfQoKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50ZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50aCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50aCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGgsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRoIHsKICAgIGJvcmRlci1ib3R0b206IDAKfQoKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZSB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgYm9yZGVyOiAwCn0KCi5hdHRyLXBhbmVsLWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHgKfQoKLmF0dHItcGFuZWwtZ3JvdXAgLmF0dHItcGFuZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci1wYW5lbC1ncm91cCAuYXR0ci1wYW5lbCsuYXR0ci1wYW5lbCB7CiAgICBtYXJnaW4tdG9wOiA1cHgKfQoKLmF0dHItcGFuZWwtZ3JvdXAgLmF0dHItcGFuZWwtaGVhZGluZyB7CiAgICBib3JkZXItYm90dG9tOiAwCn0KCi5hdHRyLXBhbmVsLWdyb3VwIC5hdHRyLXBhbmVsLWhlYWRpbmcrLmF0dHItcGFuZWwtY29sbGFwc2U+LmF0dHItbGlzdC1ncm91cCwKLmF0dHItcGFuZWwtZ3JvdXAgLmF0dHItcGFuZWwtaGVhZGluZysuYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkCn0KCi5hdHRyLXBhbmVsLWdyb3VwIC5hdHRyLXBhbmVsLWZvb3RlciB7CiAgICBib3JkZXItdG9wOiAwCn0KCi5hdHRyLXBhbmVsLWdyb3VwIC5hdHRyLXBhbmVsLWZvb3RlcisuYXR0ci1wYW5lbC1jb2xsYXBzZSAuYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkCn0KCi5hdHRyLXBhbmVsLWRlZmF1bHQgewogICAgYm9yZGVyLWNvbG9yOiAjZGRkCn0KCi5hdHRyLXBhbmVsLWRlZmF1bHQ+LmF0dHItcGFuZWwtaGVhZGluZyB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgICBib3JkZXItY29sb3I6ICNkZGQKfQoKLmF0dHItcGFuZWwtZGVmYXVsdD4uYXR0ci1wYW5lbC1oZWFkaW5nKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLXBhbmVsLWJvZHkgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2RkZAp9CgouYXR0ci1wYW5lbC1kZWZhdWx0Pi5hdHRyLXBhbmVsLWhlYWRpbmcgLmF0dHItYmFkZ2UgewogICAgY29sb3I6ICNmNWY1ZjU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzCn0KCi5hdHRyLXBhbmVsLWRlZmF1bHQ+LmF0dHItcGFuZWwtZm9vdGVyKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLXBhbmVsLWJvZHkgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2RkZAp9CgouYXR0ci1wYW5lbC1wcmltYXJ5IHsKICAgIGJvcmRlci1jb2xvcjogIzMzN2FiNwp9CgouYXR0ci1wYW5lbC1wcmltYXJ5Pi5hdHRyLXBhbmVsLWhlYWRpbmcgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM3YWI3OwogICAgYm9yZGVyLWNvbG9yOiAjMzM3YWI3Cn0KCi5hdHRyLXBhbmVsLXByaW1hcnk+LmF0dHItcGFuZWwtaGVhZGluZysuYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci10b3AtY29sb3I6ICMzMzdhYjcKfQoKLmF0dHItcGFuZWwtcHJpbWFyeT4uYXR0ci1wYW5lbC1oZWFkaW5nIC5hdHRyLWJhZGdlIHsKICAgIGNvbG9yOiAjMzM3YWI3OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZgp9CgouYXR0ci1wYW5lbC1wcmltYXJ5Pi5hdHRyLXBhbmVsLWZvb3RlcisuYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMzMzdhYjcKfQoKLmF0dHItcGFuZWwtc3VjY2VzcyB7CiAgICBib3JkZXItY29sb3I6ICNkNmU5YzYKfQoKLmF0dHItcGFuZWwtc3VjY2Vzcz4uYXR0ci1wYW5lbC1oZWFkaW5nIHsKICAgIGNvbG9yOiAjM2M3NjNkOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKICAgIGJvcmRlci1jb2xvcjogI2Q2ZTljNgp9CgouYXR0ci1wYW5lbC1zdWNjZXNzPi5hdHRyLXBhbmVsLWhlYWRpbmcrLmF0dHItcGFuZWwtY29sbGFwc2U+LmF0dHItcGFuZWwtYm9keSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZDZlOWM2Cn0KCi5hdHRyLXBhbmVsLXN1Y2Nlc3M+LmF0dHItcGFuZWwtaGVhZGluZyAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogI2RmZjBkODsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzYzc2M2QKfQoKLmF0dHItcGFuZWwtc3VjY2Vzcz4uYXR0ci1wYW5lbC1mb290ZXIrLmF0dHItcGFuZWwtY29sbGFwc2U+LmF0dHItcGFuZWwtYm9keSB7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZDZlOWM2Cn0KCi5hdHRyLXBhbmVsLWluZm8gewogICAgYm9yZGVyLWNvbG9yOiAjYmNlOGYxCn0KCi5hdHRyLXBhbmVsLWluZm8+LmF0dHItcGFuZWwtaGVhZGluZyB7CiAgICBjb2xvcjogIzMxNzA4ZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOWVkZjc7CiAgICBib3JkZXItY29sb3I6ICNiY2U4ZjEKfQoKLmF0dHItcGFuZWwtaW5mbz4uYXR0ci1wYW5lbC1oZWFkaW5nKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLXBhbmVsLWJvZHkgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2JjZThmMQp9CgouYXR0ci1wYW5lbC1pbmZvPi5hdHRyLXBhbmVsLWhlYWRpbmcgLmF0dHItYmFkZ2UgewogICAgY29sb3I6ICNkOWVkZjc7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE3MDhmCn0KCi5hdHRyLXBhbmVsLWluZm8+LmF0dHItcGFuZWwtZm9vdGVyKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLXBhbmVsLWJvZHkgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2JjZThmMQp9CgouYXR0ci1wYW5lbC13YXJuaW5nIHsKICAgIGJvcmRlci1jb2xvcjogI2ZhZWJjYwp9CgouYXR0ci1wYW5lbC13YXJuaW5nPi5hdHRyLXBhbmVsLWhlYWRpbmcgewogICAgY29sb3I6ICM4YTZkM2I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwogICAgYm9yZGVyLWNvbG9yOiAjZmFlYmNjCn0KCi5hdHRyLXBhbmVsLXdhcm5pbmc+LmF0dHItcGFuZWwtaGVhZGluZysuYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci10b3AtY29sb3I6ICNmYWViY2MKfQoKLmF0dHItcGFuZWwtd2FybmluZz4uYXR0ci1wYW5lbC1oZWFkaW5nIC5hdHRyLWJhZGdlIHsKICAgIGNvbG9yOiAjZmNmOGUzOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzhhNmQzYgp9CgouYXR0ci1wYW5lbC13YXJuaW5nPi5hdHRyLXBhbmVsLWZvb3RlcisuYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmYWViY2MKfQoKLmF0dHItcGFuZWwtZGFuZ2VyIHsKICAgIGJvcmRlci1jb2xvcjogI2ViY2NkMQp9CgouYXR0ci1wYW5lbC1kYW5nZXI+LmF0dHItcGFuZWwtaGVhZGluZyB7CiAgICBjb2xvcjogI2E5NDQ0MjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7CiAgICBib3JkZXItY29sb3I6ICNlYmNjZDEKfQoKLmF0dHItcGFuZWwtZGFuZ2VyPi5hdHRyLXBhbmVsLWhlYWRpbmcrLmF0dHItcGFuZWwtY29sbGFwc2U+LmF0dHItcGFuZWwtYm9keSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZWJjY2QxCn0KCi5hdHRyLXBhbmVsLWRhbmdlcj4uYXR0ci1wYW5lbC1oZWFkaW5nIC5hdHRyLWJhZGdlIHsKICAgIGNvbG9yOiAjZjJkZWRlOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2E5NDQ0Mgp9CgouYXR0ci1wYW5lbC1kYW5nZXI+LmF0dHItcGFuZWwtZm9vdGVyKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLXBhbmVsLWJvZHkgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ViY2NkMQp9CgouYXR0ci1lbWJlZC1yZXNwb25zaXZlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAwOwogICAgcGFkZGluZzogMDsKICAgIG92ZXJmbG93OiBoaWRkZW4KfQoKLmF0dHItZW1iZWQtcmVzcG9uc2l2ZSAuYXR0ci1lbWJlZC1yZXNwb25zaXZlLWl0ZW0sCi5hdHRyLWVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsCi5hdHRyLWVtYmVkLXJlc3BvbnNpdmUgaWZyYW1lLAouYXR0ci1lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwKLmF0dHItZW1iZWQtcmVzcG9uc2l2ZSB2aWRlbyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXI6IDAKfQoKLmF0dHItZW1iZWQtcmVzcG9uc2l2ZS0xNmJ5OSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlCn0KCi5hdHRyLWVtYmVkLXJlc3BvbnNpdmUtNGJ5MyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNzUlCn0KCi5hdHRyLXdlbGwgewogICAgbWluLWhlaWdodDogMjBweDsKICAgIHBhZGRpbmc6IDE5cHg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlM2UzZTM7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNSk7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDUpCn0KCi5hdHRyLXdlbGwgYmxvY2txdW90ZSB7CiAgICBib3JkZXItY29sb3I6ICNkZGQ7CiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgLjE1KQp9CgouYXR0ci13ZWxsLWxnIHsKICAgIHBhZGRpbmc6IDI0cHg7CiAgICBib3JkZXItcmFkaXVzOiA2cHgKfQoKLmF0dHItd2VsbC1zbSB7CiAgICBwYWRkaW5nOiA5cHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHgKfQoKLmF0dHItY2xvc2UgewogICAgZmxvYXQ6IHJpZ2h0OwogICAgZm9udC1zaXplOiAyMXB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgY29sb3I6ICMwMDA7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwogICAgb3BhY2l0eTogLjIKfQoKLmF0dHItY2xvc2U6Zm9jdXMsCi5hdHRyLWNsb3NlOmhvdmVyIHsKICAgIGNvbG9yOiAjMDAwOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3BhY2l0eTogLjUKfQoKYnV0dG9uLmF0dHItY2xvc2UgewogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJhY2tncm91bmQ6IDAgMDsKICAgIGJvcmRlcjogMAp9CgouYXR0ci1tb2RhbC1vcGVuIHsKICAgIG92ZXJmbG93OiBoaWRkZW4KfQoKLmF0dHItbW9kYWwgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgei1pbmRleDogMTA1MDsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgb3V0bGluZTogMAp9CgouYXR0ci1tb2RhbC5hdHRyLWZhZGUgLmF0dHItbW9kYWwtZGlhbG9nIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0OwogICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0OwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4zcyBlYXNlLW91dDsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIC13ZWJraXQtdHJhbnNmb3JtIC4zcyBlYXNlLW91dDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0yNSUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTI1JSkKfQoKLmF0dHItbW9kYWwuYXR0ci1pbiAuYXR0ci1tb2RhbC1kaWFsb2cgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApCn0KCi5hdHRyLW1vZGFsLW9wZW4gLmF0dHItbW9kYWwgewogICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgb3ZlcmZsb3cteTogYXV0bwp9CgouYXR0ci1tb2RhbC1kaWFsb2cgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXJnaW46IDEwcHgKfQoKLmF0dHItbW9kYWwtY29udGVudCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIG91dGxpbmU6IDA7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIC41KTsKICAgIGJveC1zaGFkb3c6IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIC41KQp9CgouYXR0ci1tb2RhbC1iYWNrZHJvcCB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxMDQwOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMAp9CgouYXR0ci1tb2RhbC1iYWNrZHJvcC5hdHRyLWZhZGUgewogICAgb3BhY2l0eTogMAp9CgouYXR0ci1tb2RhbC1iYWNrZHJvcC5hdHRyLWluIHsKICAgIG9wYWNpdHk6IC41Cn0KCi5hdHRyLW1vZGFsLWhlYWRlciB7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTUKfQoKLmF0dHItbW9kYWwtaGVhZGVyIC5hdHRyLWNsb3NlIHsKICAgIG1hcmdpbi10b3A6IC0ycHgKfQoKLmF0dHItbW9kYWwtdGl0bGUgewogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDMKfQoKLmF0dHItbW9kYWwtYm9keSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBwYWRkaW5nOiAxNXB4Cn0KCi5hdHRyLW1vZGFsLWZvb3RlciB7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTVlNQp9CgouYXR0ci1tb2RhbC1mb290ZXIgLmF0dHItYnRuKy5hdHRyLWJ0biB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgbWFyZ2luLWxlZnQ6IDVweAp9CgouYXR0ci1tb2RhbC1mb290ZXIgLmF0dHItYnRuLWdyb3VwIC5hdHRyLWJ0bisuYXR0ci1idG4gewogICAgbWFyZ2luLWxlZnQ6IC0xcHgKfQoKLmF0dHItbW9kYWwtZm9vdGVyIC5hdHRyLWJ0bi1ibG9jaysuYXR0ci1idG4tYmxvY2sgewogICAgbWFyZ2luLWxlZnQ6IDAKfQoKLmF0dHItbW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAtOTk5OXB4OwogICAgd2lkdGg6IDUwcHg7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBvdmVyZmxvdzogc2Nyb2xsCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1tb2RhbC1kaWFsb2cgewogICAgICAgIHdpZHRoOiA2MDBweDsKICAgICAgICBtYXJnaW46IDMwcHggYXV0bwogICAgfQogICAgLmF0dHItbW9kYWwtY29udGVudCB7CiAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCAxNXB4IHJnYmEoMCwgMCwgMCwgLjUpOwogICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDE1cHggcmdiYSgwLCAwLCAwLCAuNSkKICAgIH0KICAgIC5hdHRyLW1vZGFsLXNtIHsKICAgICAgICB3aWR0aDogMzAwcHgKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6OTkycHgpIHsKICAgIC5hdHRyLW1vZGFsLWxnIHsKICAgICAgICB3aWR0aDogOTAwcHgKICAgIH0KfQoKLmF0dHItdG9vbHRpcCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiAxMDcwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB0ZXh0LWFsaWduOiBzdGFydDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIHRleHQtc2hhZG93OiBub25lOwogICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgd29yZC1icmVhazogbm9ybWFsOwogICAgd29yZC1zcGFjaW5nOiBub3JtYWw7CiAgICB3b3JkLXdyYXA6IG5vcm1hbDsKICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICBvcGFjaXR5OiAwOwogICAgbGluZS1icmVhazogYXV0bwp9CgouYXR0ci10b29sdGlwLmF0dHItaW4gewogICAgb3BhY2l0eTogLjkKfQoKLmF0dHItdG9vbHRpcC5hdHRyLXRvcCB7CiAgICBwYWRkaW5nOiA1cHggMDsKICAgIG1hcmdpbi10b3A6IC0zcHgKfQoKLmF0dHItdG9vbHRpcC5hdHRyLXJpZ2h0IHsKICAgIHBhZGRpbmc6IDAgNXB4OwogICAgbWFyZ2luLWxlZnQ6IDNweAp9CgouYXR0ci10b29sdGlwLmF0dHItYm90dG9tIHsKICAgIHBhZGRpbmc6IDVweCAwOwogICAgbWFyZ2luLXRvcDogM3B4Cn0KCi5hdHRyLXRvb2x0aXAuYXR0ci1sZWZ0IHsKICAgIHBhZGRpbmc6IDAgNXB4OwogICAgbWFyZ2luLWxlZnQ6IC0zcHgKfQoKLmF0dHItdG9vbHRpcC1pbm5lciB7CiAgICBtYXgtd2lkdGg6IDIwMHB4OwogICAgcGFkZGluZzogM3B4IDhweDsKICAgIGNvbG9yOiAjZmZmOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci10b29sdGlwLWFycm93IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAwOwogICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1zdHlsZTogc29saWQKfQoKLmF0dHItdG9vbHRpcC5hdHRyLXRvcCAuYXR0ci10b29sdGlwLWFycm93IHsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtNXB4OwogICAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwCn0KCi5hdHRyLXRvb2x0aXAuYXR0ci10b3AtbGVmdCAuYXR0ci10b29sdGlwLWFycm93IHsKICAgIHJpZ2h0OiA1cHg7CiAgICBib3R0b206IDA7CiAgICBtYXJnaW4tYm90dG9tOiAtNXB4OwogICAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwCn0KCi5hdHRyLXRvb2x0aXAuYXR0ci10b3AtcmlnaHQgLmF0dHItdG9vbHRpcC1hcnJvdyB7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAtNXB4OwogICAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwCn0KCi5hdHRyLXRvb2x0aXAuYXR0ci1yaWdodCAuYXR0ci10b29sdGlwLWFycm93IHsKICAgIHRvcDogNTAlOwogICAgbGVmdDogMDsKICAgIG1hcmdpbi10b3A6IC01cHg7CiAgICBib3JkZXItd2lkdGg6IDVweCA1cHggNXB4IDA7CiAgICBib3JkZXItcmlnaHQtY29sb3I6ICMwMDAKfQoKLmF0dHItdG9vbHRpcC5hdHRyLWxlZnQgLmF0dHItdG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAwOwogICAgbWFyZ2luLXRvcDogLTVweDsKICAgIGJvcmRlci13aWR0aDogNXB4IDAgNXB4IDVweDsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwCn0KCi5hdHRyLXRvb2x0aXAuYXR0ci1ib3R0b20gLmF0dHItdG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLTVweDsKICAgIGJvcmRlci13aWR0aDogMCA1cHggNXB4OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMAp9CgouYXR0ci10b29sdGlwLmF0dHItYm90dG9tLWxlZnQgLmF0dHItdG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDA7CiAgICByaWdodDogNXB4OwogICAgbWFyZ2luLXRvcDogLTVweDsKICAgIGJvcmRlci13aWR0aDogMCA1cHggNXB4OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMAp9CgouYXR0ci10b29sdGlwLmF0dHItYm90dG9tLXJpZ2h0IC5hdHRyLXRvb2x0aXAtYXJyb3cgewogICAgdG9wOiAwOwogICAgbGVmdDogNXB4OwogICAgbWFyZ2luLXRvcDogLTVweDsKICAgIGJvcmRlci13aWR0aDogMCA1cHggNXB4OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMAp9CgouYXR0ci1wb3BvdmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxMDYwOwogICAgZGlzcGxheTogbm9uZTsKICAgIG1heC13aWR0aDogMjc2cHg7CiAgICBwYWRkaW5nOiAxcHg7CiAgICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB0ZXh0LWFsaWduOiBzdGFydDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIHRleHQtc2hhZG93OiBub25lOwogICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgd29yZC1icmVhazogbm9ybWFsOwogICAgd29yZC1zcGFjaW5nOiBub3JtYWw7CiAgICB3b3JkLXdyYXA6IG5vcm1hbDsKICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCA1cHggMTBweCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgIGJveC1zaGFkb3c6IDAgNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAuMik7CiAgICBsaW5lLWJyZWFrOiBhdXRvCn0KCi5hdHRyLXBvcG92ZXIuYXR0ci10b3AgewogICAgbWFyZ2luLXRvcDogLTEwcHgKfQoKLmF0dHItcG9wb3Zlci5hdHRyLXJpZ2h0IHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4Cn0KCi5hdHRyLXBvcG92ZXIuYXR0ci1ib3R0b20gewogICAgbWFyZ2luLXRvcDogMTBweAp9CgouYXR0ci1wb3BvdmVyLmF0dHItbGVmdCB7CiAgICBtYXJnaW4tbGVmdDogLTEwcHgKfQoKLmF0dHItcG9wb3Zlci10aXRsZSB7CiAgICBwYWRkaW5nOiA4cHggMTRweDsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJvcmRlci1yYWRpdXM6IDVweCA1cHggMCAwCn0KCi5hdHRyLXBvcG92ZXItY29udGVudCB7CiAgICBwYWRkaW5nOiA5cHggMTRweAp9CgouYXR0ci1wb3BvdmVyPi5hdHRyLWFycm93LAouYXR0ci1wb3BvdmVyPi5hdHRyLWFycm93OmFmdGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDA7CiAgICBoZWlnaHQ6IDA7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZAp9CgouYXR0ci1wb3BvdmVyPi5hdHRyLWFycm93IHsKICAgIGJvcmRlci13aWR0aDogMTFweAp9CgouYXR0ci1wb3BvdmVyPi5hdHRyLWFycm93OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgYm9yZGVyLXdpZHRoOiAxMHB4Cn0KCi5hdHRyLXBvcG92ZXIuYXR0ci10b3A+LmF0dHItYXJyb3cgewogICAgYm90dG9tOiAtMTFweDsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMTFweDsKICAgIGJvcmRlci10b3AtY29sb3I6ICM5OTk7CiAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwCn0KCi5hdHRyLXBvcG92ZXIuYXR0ci10b3A+LmF0dHItYXJyb3c6YWZ0ZXIgewogICAgYm90dG9tOiAxcHg7CiAgICBtYXJnaW4tbGVmdDogLTEwcHg7CiAgICBjb250ZW50OiAiICI7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMAp9CgouYXR0ci1wb3BvdmVyLmF0dHItcmlnaHQ+LmF0dHItYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiAtMTFweDsKICAgIG1hcmdpbi10b3A6IC0xMXB4OwogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjOTk5OwogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7CiAgICBib3JkZXItbGVmdC13aWR0aDogMAp9CgouYXR0ci1wb3BvdmVyLmF0dHItcmlnaHQ+LmF0dHItYXJyb3c6YWZ0ZXIgewogICAgYm90dG9tOiAtMTBweDsKICAgIGxlZnQ6IDFweDsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwCn0KCi5hdHRyLXBvcG92ZXIuYXR0ci1ib3R0b20+LmF0dHItYXJyb3cgewogICAgdG9wOiAtMTFweDsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMTFweDsKICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjOTk5OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMjUpCn0KCi5hdHRyLXBvcG92ZXIuYXR0ci1ib3R0b20+LmF0dHItYXJyb3c6YWZ0ZXIgewogICAgdG9wOiAxcHg7CiAgICBtYXJnaW4tbGVmdDogLTEwcHg7CiAgICBjb250ZW50OiAiICI7CiAgICBib3JkZXItdG9wLXdpZHRoOiAwOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZgp9CgouYXR0ci1wb3BvdmVyLmF0dHItbGVmdD4uYXR0ci1hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAtMTFweDsKICAgIG1hcmdpbi10b3A6IC0xMXB4OwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgYm9yZGVyLWxlZnQtY29sb3I6ICM5OTk7CiAgICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMjUpCn0KCi5hdHRyLXBvcG92ZXIuYXR0ci1sZWZ0Pi5hdHRyLWFycm93OmFmdGVyIHsKICAgIHJpZ2h0OiAxcHg7CiAgICBib3R0b206IC0xMHB4OwogICAgY29udGVudDogIiAiOwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZmYKfQoKLmF0dHItY2Fyb3VzZWwgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5hdHRyLWNhcm91c2VsLWlubmVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbgp9CgouYXR0ci1jYXJvdXNlbC1pbm5lcj4uYXR0ci1pdGVtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC42cyBlYXNlLWluLW91dCBsZWZ0OwogICAgdHJhbnNpdGlvbjogLjZzIGVhc2UtaW4tb3V0IGxlZnQKfQoKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbT5hPmltZywKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbT5pbWcgewogICAgbGluZS1oZWlnaHQ6IDEKfQoKQG1lZGlhIGFsbCBhbmQgKHRyYW5zZm9ybS0zZCksCigtd2Via2l0LXRyYW5zZm9ybS0zZCkgewogICAgLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuNnMgZWFzZS1pbi1vdXQ7CiAgICAgICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0OwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNnMgZWFzZS1pbi1vdXQ7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC42cyBlYXNlLWluLW91dCwgLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0OwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAuNnMgZWFzZS1pbi1vdXQ7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC42cyBlYXNlLWluLW91dCwgLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0OwogICAgICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAxMDAwcHg7CiAgICAgICAgcGVyc3BlY3RpdmU6IDEwMDBweAogICAgfQogICAgLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbS5hdHRyLWFjdGl2ZS5hdHRyLXJpZ2h0LAogICAgLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbS5hdHRyLW5leHQgewogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkKICAgIH0KICAgIC5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLWl0ZW0uYXR0ci1hY3RpdmUuYXR0ci1sZWZ0LAogICAgLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbS5hdHRyLXByZXYgewogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKQogICAgfQogICAgLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbS5hdHRyLWFjdGl2ZSwKICAgIC5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLWl0ZW0uYXR0ci1uZXh0LmF0dHItbGVmdCwKICAgIC5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLWl0ZW0uYXR0ci1wcmV2LmF0dHItcmlnaHQgewogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCkKICAgIH0KfQoKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItYWN0aXZlLAouYXR0ci1jYXJvdXNlbC1pbm5lcj4uYXR0ci1uZXh0LAouYXR0ci1jYXJvdXNlbC1pbm5lcj4uYXR0ci1wcmV2IHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLWFjdGl2ZSB7CiAgICBsZWZ0OiAwCn0KCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLW5leHQsCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLXByZXYgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgd2lkdGg6IDEwMCUKfQoKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItbmV4dCB7CiAgICBsZWZ0OiAxMDAlCn0KCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLXByZXYgewogICAgbGVmdDogLTEwMCUKfQoKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItbmV4dC5hdHRyLWxlZnQsCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLXByZXYuYXR0ci1yaWdodCB7CiAgICBsZWZ0OiAwCn0KCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLWFjdGl2ZS5hdHRyLWxlZnQgewogICAgbGVmdDogLTEwMCUKfQoKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItYWN0aXZlLmF0dHItcmlnaHQgewogICAgbGVmdDogMTAwJQp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTUlOwogICAgZm9udC1zaXplOiAyMHB4OwogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgLjYpOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKICAgIG9wYWNpdHk6IC41Cn0KCi5hdHRyLWNhcm91c2VsLWNvbnRyb2wuYXR0ci1sZWZ0IHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBjb2xvci1zdG9wKDAsIHJnYmEoMCwgMCwgMCwgLjUpKSwgdG8ocmdiYSgwLCAwLCAwLCAuMDAwMSkpKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAuNSkgMCwgcmdiYSgwLCAwLCAwLCAuMDAwMSkgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXgKfQoKLmF0dHItY2Fyb3VzZWwtY29udHJvbC5hdHRyLXJpZ2h0IHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBjb2xvci1zdG9wKDAsIHJnYmEoMCwgMCwgMCwgLjAwMDEpKSwgdG8ocmdiYSgwLCAwLCAwLCAuNSkpKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAuMDAwMSkgMCwgcmdiYSgwLCAwLCAwLCAuNSkgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXgKfQoKLmF0dHItY2Fyb3VzZWwtY29udHJvbDpmb2N1cywKLmF0dHItY2Fyb3VzZWwtY29udHJvbDpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIG91dGxpbmU6IDA7CiAgICBvcGFjaXR5OiAuOQp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCi5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsCi5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItaWNvbi1uZXh0LAouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tcHJldiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIHotaW5kZXg6IDU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tdG9wOiAtMTBweAp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCi5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItaWNvbi1wcmV2IHsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMTBweAp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0LAouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tbmV4dCB7CiAgICByaWdodDogNTAlOwogICAgbWFyZ2luLXJpZ2h0OiAtMTBweAp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tbmV4dCwKLmF0dHItY2Fyb3VzZWwtY29udHJvbCAuYXR0ci1pY29uLXByZXYgewogICAgd2lkdGg6IDIwcHg7CiAgICBoZWlnaHQ6IDIwcHg7CiAgICBmb250LWZhbWlseTogc2VyaWY7CiAgICBsaW5lLWhlaWdodDogMQp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tcHJldjpiZWZvcmUgewogICAgY29udGVudDogJ1wyMDM5Jwp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tbmV4dDpiZWZvcmUgewogICAgY29udGVudDogJ1wyMDNhJwp9CgouYXR0ci1jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMTBweDsKICAgIGxlZnQ6IDUwJTsKICAgIHotaW5kZXg6IDE1OwogICAgd2lkdGg6IDYwJTsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIG1hcmdpbi1sZWZ0OiAtMzAlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbGlzdC1zdHlsZTogbm9uZQp9CgouYXR0ci1jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAxMHB4OwogICAgaGVpZ2h0OiAxMHB4OwogICAgbWFyZ2luOiAxcHg7CiAgICB0ZXh0LWluZGVudDogLTk5OXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4Cn0KCi5hdHRyLWNhcm91c2VsLWluZGljYXRvcnMgLmF0dHItYWN0aXZlIHsKICAgIHdpZHRoOiAxMnB4OwogICAgaGVpZ2h0OiAxMnB4OwogICAgbWFyZ2luOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZgp9CgouYXR0ci1jYXJvdXNlbC1jYXB0aW9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAxNSU7CiAgICBib3R0b206IDIwcHg7CiAgICBsZWZ0OiAxNSU7CiAgICB6LWluZGV4OiAxMDsKICAgIHBhZGRpbmctdG9wOiAyMHB4OwogICAgcGFkZGluZy1ib3R0b206IDIwcHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHRleHQtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAuNikKfQoKLmF0dHItY2Fyb3VzZWwtY2FwdGlvbiAuYXR0ci1idG4gewogICAgdGV4dC1zaGFkb3c6IG5vbmUKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItY2Fyb3VzZWwtY29udHJvbCAuYXR0ci1nbHlwaGljb24tY2hldnJvbi1sZWZ0LAogICAgLmF0dHItY2Fyb3VzZWwtY29udHJvbCAuYXR0ci1nbHlwaGljb24tY2hldnJvbi1yaWdodCwKICAgIC5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItaWNvbi1uZXh0LAogICAgLmF0dHItY2Fyb3VzZWwtY29udHJvbCAuYXR0ci1pY29uLXByZXYgewogICAgICAgIHdpZHRoOiAzMHB4OwogICAgICAgIGhlaWdodDogMzBweDsKICAgICAgICBtYXJnaW4tdG9wOiAtMTBweDsKICAgICAgICBmb250LXNpemU6IDMwcHgKICAgIH0KICAgIC5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItZ2x5cGhpY29uLWNoZXZyb24tbGVmdCwKICAgIC5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItaWNvbi1wcmV2IHsKICAgICAgICBtYXJnaW4tbGVmdDogLTEwcHgKICAgIH0KICAgIC5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsCiAgICAuYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tbmV4dCB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTBweAogICAgfQogICAgLmF0dHItY2Fyb3VzZWwtY2FwdGlvbiB7CiAgICAgICAgcmlnaHQ6IDIwJTsKICAgICAgICBsZWZ0OiAyMCU7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDMwcHgKICAgIH0KICAgIC5hdHRyLWNhcm91c2VsLWluZGljYXRvcnMgewogICAgICAgIGJvdHRvbTogMjBweAogICAgfQp9CgouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuLWdyb3VwOmFmdGVyLAouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuLWdyb3VwOmJlZm9yZSwKLmF0dHItYnRuLXRvb2xiYXI6YWZ0ZXIsCi5hdHRyLWJ0bi10b29sYmFyOmJlZm9yZSwKLmF0dHItY2xlYXJmaXg6YWZ0ZXIsCi5hdHRyLWNsZWFyZml4OmJlZm9yZSwKLmF0dHItY29udGFpbmVyLWZsdWlkOmFmdGVyLAouYXR0ci1jb250YWluZXItZmx1aWQ6YmVmb3JlLAouYXR0ci1jb250YWluZXI6YWZ0ZXIsCi5hdHRyLWNvbnRhaW5lcjpiZWZvcmUsCi5hdHRyLWRsLWhvcml6b250YWwgZGQ6YWZ0ZXIsCi5hdHRyLWRsLWhvcml6b250YWwgZGQ6YmVmb3JlLAouYXR0ci1mb3JtLWhvcml6b250YWwgLmF0dHItZm9ybS1ncm91cDphZnRlciwKLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLWZvcm0tZ3JvdXA6YmVmb3JlLAouYXR0ci1tb2RhbC1mb290ZXI6YWZ0ZXIsCi5hdHRyLW1vZGFsLWZvb3RlcjpiZWZvcmUsCi5hdHRyLW1vZGFsLWhlYWRlcjphZnRlciwKLmF0dHItbW9kYWwtaGVhZGVyOmJlZm9yZSwKLmF0dHItbmF2OmFmdGVyLAouYXR0ci1uYXY6YmVmb3JlLAouYXR0ci1uYXZiYXItY29sbGFwc2U6YWZ0ZXIsCi5hdHRyLW5hdmJhci1jb2xsYXBzZTpiZWZvcmUsCi5hdHRyLW5hdmJhci1oZWFkZXI6YWZ0ZXIsCi5hdHRyLW5hdmJhci1oZWFkZXI6YmVmb3JlLAouYXR0ci1uYXZiYXI6YWZ0ZXIsCi5hdHRyLW5hdmJhcjpiZWZvcmUsCi5hdHRyLXBhZ2VyOmFmdGVyLAouYXR0ci1wYWdlcjpiZWZvcmUsCi5hdHRyLXBhbmVsLWJvZHk6YWZ0ZXIsCi5hdHRyLXBhbmVsLWJvZHk6YmVmb3JlLAouYXR0ci1yb3c6YWZ0ZXIsCi5hdHRyLXJvdzpiZWZvcmUgewogICAgZGlzcGxheTogdGFibGU7CiAgICBjb250ZW50OiAiICIKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bi1ncm91cDphZnRlciwKLmF0dHItYnRuLXRvb2xiYXI6YWZ0ZXIsCi5hdHRyLWNsZWFyZml4OmFmdGVyLAouYXR0ci1jb250YWluZXItZmx1aWQ6YWZ0ZXIsCi5hdHRyLWNvbnRhaW5lcjphZnRlciwKLmF0dHItZGwtaG9yaXpvbnRhbCBkZDphZnRlciwKLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLWZvcm0tZ3JvdXA6YWZ0ZXIsCi5hdHRyLW1vZGFsLWZvb3RlcjphZnRlciwKLmF0dHItbW9kYWwtaGVhZGVyOmFmdGVyLAouYXR0ci1uYXY6YWZ0ZXIsCi5hdHRyLW5hdmJhci1jb2xsYXBzZTphZnRlciwKLmF0dHItbmF2YmFyLWhlYWRlcjphZnRlciwKLmF0dHItbmF2YmFyOmFmdGVyLAouYXR0ci1wYWdlcjphZnRlciwKLmF0dHItcGFuZWwtYm9keTphZnRlciwKLmF0dHItcm93OmFmdGVyIHsKICAgIGNsZWFyOiBib3RoCn0KCi5hdHRyLWNlbnRlci1ibG9jayB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvCn0KCi5hdHRyLXB1bGwtcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQKfQoKLmF0dHItcHVsbC1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQKfQoKLmF0dHItaGlkZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLmF0dHItc2hvdyB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Cn0KCi5hdHRyLWludmlzaWJsZSB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4KfQoKLmF0dHItdGV4dC1oaWRlIHsKICAgIGZvbnQ6IDAvMCBhOwogICAgY29sb3I6IHRyYW5zcGFyZW50OwogICAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMAp9CgouYXR0ci1oaWRkZW4gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5hdHRyLWFmZml4IHsKICAgIHBvc2l0aW9uOiBmaXhlZAp9CgpALW1zLXZpZXdwb3J0IHsKICAgIHdpZHRoOiBkZXZpY2Utd2lkdGgKfQoKLmF0dHItdmlzaWJsZS1sZywKLmF0dHItdmlzaWJsZS1tZCwKLmF0dHItdmlzaWJsZS1zbSwKLmF0dHItdmlzaWJsZS14cyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLmF0dHItdmlzaWJsZS1sZy1ibG9jaywKLmF0dHItdmlzaWJsZS1sZy1pbmxpbmUsCi5hdHRyLXZpc2libGUtbGctaW5saW5lLWJsb2NrLAouYXR0ci12aXNpYmxlLW1kLWJsb2NrLAouYXR0ci12aXNpYmxlLW1kLWlubGluZSwKLmF0dHItdmlzaWJsZS1tZC1pbmxpbmUtYmxvY2ssCi5hdHRyLXZpc2libGUtc20tYmxvY2ssCi5hdHRyLXZpc2libGUtc20taW5saW5lLAouYXR0ci12aXNpYmxlLXNtLWlubGluZS1ibG9jaywKLmF0dHItdmlzaWJsZS14cy1ibG9jaywKLmF0dHItdmlzaWJsZS14cy1pbmxpbmUsCi5hdHRyLXZpc2libGUteHMtaW5saW5lLWJsb2NrIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmF0dHItdmlzaWJsZS14cyB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudAogICAgfQogICAgdGFibGUuYXR0ci12aXNpYmxlLXhzIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50CiAgICB9CiAgICB0ci5hdHRyLXZpc2libGUteHMgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50CiAgICB9CiAgICB0ZC5hdHRyLXZpc2libGUteHMsCiAgICB0aC5hdHRyLXZpc2libGUteHMgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmF0dHItdmlzaWJsZS14cy1ibG9jayB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmF0dHItdmlzaWJsZS14cy1pbmxpbmUgewogICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci12aXNpYmxlLXhzLWlubGluZS1ibG9jayB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjk5MXB4KSB7CiAgICAuYXR0ci12aXNpYmxlLXNtIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50CiAgICB9CiAgICB0YWJsZS5hdHRyLXZpc2libGUtc20gewogICAgICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQKICAgIH0KICAgIHRyLmF0dHItdmlzaWJsZS1zbSB7CiAgICAgICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQKICAgIH0KICAgIHRkLmF0dHItdmlzaWJsZS1zbSwKICAgIHRoLmF0dHItdmlzaWJsZS1zbSB7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5OTFweCkgewogICAgLmF0dHItdmlzaWJsZS1zbS1ibG9jayB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpIHsKICAgIC5hdHRyLXZpc2libGUtc20taW5saW5lIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpIHsKICAgIC5hdHRyLXZpc2libGUtc20taW5saW5lLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgYW5kIChtYXgtd2lkdGg6MTE5OXB4KSB7CiAgICAuYXR0ci12aXNpYmxlLW1kIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50CiAgICB9CiAgICB0YWJsZS5hdHRyLXZpc2libGUtbWQgewogICAgICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQKICAgIH0KICAgIHRyLmF0dHItdmlzaWJsZS1tZCB7CiAgICAgICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQKICAgIH0KICAgIHRkLmF0dHItdmlzaWJsZS1tZCwKICAgIHRoLmF0dHItdmlzaWJsZS1tZCB7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpIHsKICAgIC5hdHRyLXZpc2libGUtbWQtYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6OTkycHgpIGFuZCAobWF4LXdpZHRoOjExOTlweCkgewogICAgLmF0dHItdmlzaWJsZS1tZC1pbmxpbmUgewogICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpIHsKICAgIC5hdHRyLXZpc2libGUtbWQtaW5saW5lLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpIHsKICAgIC5hdHRyLXZpc2libGUtbGcgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQKICAgIH0KICAgIHRhYmxlLmF0dHItdmlzaWJsZS1sZyB7CiAgICAgICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudAogICAgfQogICAgdHIuYXR0ci12aXNpYmxlLWxnIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudAogICAgfQogICAgdGQuYXR0ci12aXNpYmxlLWxnLAogICAgdGguYXR0ci12aXNpYmxlLWxnIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KSB7CiAgICAuYXR0ci12aXNpYmxlLWxnLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEyMDBweCkgewogICAgLmF0dHItdmlzaWJsZS1sZy1pbmxpbmUgewogICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEyMDBweCkgewogICAgLmF0dHItdmlzaWJsZS1sZy1pbmxpbmUtYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci1oaWRkZW4teHMgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpIHsKICAgIC5hdHRyLWhpZGRlbi1zbSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpIHsKICAgIC5hdHRyLWhpZGRlbi1tZCB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEyMDBweCkgewogICAgLmF0dHItaGlkZGVuLWxnIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKICAgIH0KfQoKLmF0dHItdmlzaWJsZS1wcmludCB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKQG1lZGlhIHByaW50IHsKICAgIC5hdHRyLXZpc2libGUtcHJpbnQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQKICAgIH0KICAgIHRhYmxlLmF0dHItdmlzaWJsZS1wcmludCB7CiAgICAgICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudAogICAgfQogICAgdHIuYXR0ci12aXNpYmxlLXByaW50IHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudAogICAgfQogICAgdGQuYXR0ci12aXNpYmxlLXByaW50LAogICAgdGguYXR0ci12aXNpYmxlLXByaW50IHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQKICAgIH0KfQoKLmF0dHItdmlzaWJsZS1wcmludC1ibG9jayB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKQG1lZGlhIHByaW50IHsKICAgIC5hdHRyLXZpc2libGUtcHJpbnQtYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQKICAgIH0KfQoKLmF0dHItdmlzaWJsZS1wcmludC1pbmxpbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCkBtZWRpYSBwcmludCB7CiAgICAuYXR0ci12aXNpYmxlLXByaW50LWlubGluZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQKICAgIH0KfQoKLmF0dHItdmlzaWJsZS1wcmludC1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCkBtZWRpYSBwcmludCB7CiAgICAuYXR0ci12aXNpYmxlLXByaW50LWlubGluZS1ibG9jayB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQKICAgIH0KfQoKQG1lZGlhIHByaW50IHsKICAgIC5hdHRyLWhpZGRlbi1wcmludCB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0="}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":8,"receive":0,"ssl":0},"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.11","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.272Z","timestamp":1785130090272,"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://dreamspinfluence.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 05:28:13 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: k99X234wd616IOebdnlZIb928zg8syQQarAYwqaXCjJf4wkFuzgeV8bX1OQ4Uqu6Twgkbi4\r\nx-77-nzt-ray: e2f754208412f8936dec666a430ec320\r\nx-77-cache: HIT\r\nx-77-age: 23\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":6042,"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-02T16:37:23.831149Z","times_seen":7923,"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":3284,"timings":{"blocked":0,"dns":3,"connect":8,"send":0,"wait":8,"receive":0,"ssl":3265},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/themes/hello-elementor/theme.min.css?ver=2.9.0","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.997Z","timestamp":1785130089997,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/themes/hello-elementor/theme.min.css?ver=2.9.0 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=FvjNsPXWByKgQCYYD9AUAi5uO%2B8lRRqrlkE6g4XxwdnRlsmkCeTfSMgHe1mmuou%2BkYH83E5Nb%2B2Q4Zo3BjFB4dpIpQ27a3wOFccileEkS8AsY%2Fu8iNwwNG%2BNIihKhlOzaOrlGVyrWA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d367e36120a-OSL\r\ncontent-length: 2503\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":15245,"size_decoded":3319,"mime_type":"text/css","magic":"Unicode text, UTF-8 text","md5":"ccc1a31c4fe592a038b03aeb7f41e965","sha1":"e09294147f964b99d5dc0893458c867bbfb9ec0e","sha256":"5ae0276040dadc7f1e2138bd90b6d953a720667b1ac7489efb41c6b22af167f9","sha512":"5d280b46be9bf5dd39f77f234b7a2bfda4de0f39f2bbf9887d76db32520dd73cc39c06a22ec110a8706cc245eef23b0306f59aaeb2a974d8a0ca191ce2271967","ssdeep":"192:AjSdm5SRW2nleFFFIRYLFS+aMAlSVGE0YK+NJJfxe5AesngQFf9T0OthGGCKiM/R:zkUcFFFI9MzVK+NJigHXyUvBtG+","tlshash":"8c62415ee8f33864061b8006abe90a5d20b4814fc50fcef47addd34a5fce590ab62f59","first_seen":"2026-07-27T03:56:42.468195Z","last_seen":"2026-07-27T05:30:59.795575Z","times_seen":6,"resource_available":false,"data":"QGNoYXJzZXQgIlVURi04IjsKLmNvbW1lbnRzLWFyZWEgYSwKLnBhZ2UtY29udGVudCBhIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lCn0KCi5hbGlnbnJpZ2h0IHsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxcmVtCn0KCi5hbGlnbmxlZnQgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0KfQoKLmFsaWduY2VudGVyIHsKICAgIGNsZWFyOiBib3RoOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bwp9CgouYWxpZ253aWRlIHsKICAgIG1hcmdpbi1sZWZ0OiAtODBweDsKICAgIG1hcmdpbi1yaWdodDogLTgwcHgKfQoKLmFsaWduZnVsbCB7CiAgICBtYXJnaW4tbGVmdDogY2FsYyg1MCUgLSA1MHZ3KTsKICAgIG1hcmdpbi1yaWdodDogY2FsYyg1MCUgLSA1MHZ3KTsKICAgIG1heC13aWR0aDogMTAwdncKfQoKLmFsaWduZnVsbCwKLmFsaWduZnVsbCBpbWcgewogICAgd2lkdGg6IDEwMHZ3Cn0KCi53cC1jYXB0aW9uIHsKICAgIG1hcmdpbi1ibG9jay1lbmQ6IDEuMjVyZW07CiAgICBtYXgtd2lkdGg6IDEwMCUKfQoKLndwLWNhcHRpb24uYWxpZ25sZWZ0IHsKICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwCn0KCi53cC1jYXB0aW9uLmFsaWducmlnaHQgewogICAgbWFyZ2luOiA1cHggMCAyMHB4IDIwcHgKfQoKLndwLWNhcHRpb24gaW1nIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8KfQoKLndwLWNhcHRpb24tdGV4dCB7CiAgICBtYXJnaW46IDAKfQoKLmdhbGxlcnktY2FwdGlvbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogLjgxMjVyZW07CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogLjc1cmVtCn0KCi5wYWdpbmF0aW9uIHsKICAgIG1hcmdpbjogMjBweCBhdXRvCn0KCi5zdGlja3kgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogYmxvY2sKfQoKLmJ5cG9zdGF1dGhvciB7CiAgICBmb250LXNpemU6IGluaGVyaXQKfQoKLmhpZGUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5wb3N0LXBhc3N3b3JkLWZvcm0gcCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQKfQoKLnBvc3QtcGFzc3dvcmQtZm9ybSBbdHlwZT1zdWJtaXRdIHsKICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDNweAp9Cgouc2NyZWVuLXJlYWRlci10ZXh0IHsKICAgIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTsKICAgIGhlaWdodDogMXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDFweDsKICAgIHdvcmQtd3JhcDogbm9ybWFsICFpbXBvcnRhbnQKfQoKLnNjcmVlbi1yZWFkZXItdGV4dDpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogICAgY2xpcDogYXV0byAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1jbGlwLXBhdGg6IG5vbmU7CiAgICBjbGlwLXBhdGg6IG5vbmU7CiAgICBjb2xvcjogIzMzMzsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbGVmdDogNXB4OwogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgIHBhZGRpbmc6IDE1cHggMjNweCAxNHB4OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgdG9wOiA1cHg7CiAgICB3aWR0aDogYXV0bzsKICAgIHotaW5kZXg6IDEwMDAwMAp9Cgouc2l0ZS1oZWFkZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IDFyZW07CiAgICBwYWRkaW5nLWJsb2NrLWVuZDogMXJlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9Cgouc2l0ZS1oZWFkZXIgLnNpdGUtbmF2aWdhdGlvbiB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCn0KCi5zaXRlLWhlYWRlciAuc2l0ZS1icmFuZGluZyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4KfQoKLnNpdGUtaGVhZGVyIC5oZWFkZXItaW5uZXIgLmN1c3RvbS1sb2dvLWxpbmsgewogICAgZGlzcGxheTogYmxvY2sKfQoKLnNpdGUtaGVhZGVyIC5oZWFkZXItaW5uZXIgLnNpdGUtYnJhbmRpbmcgLnNpdGUtZGVzY3JpcHRpb24sCi5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyIC5zaXRlLWJyYW5kaW5nIC5zaXRlLXRpdGxlIHsKICAgIG1hcmdpbjogMAp9Cgouc2l0ZS1oZWFkZXIgLmhlYWRlci1pbm5lciAuc2l0ZS1icmFuZGluZy5zaG93LWxvZ28gLnNpdGUtdGl0bGUsCi5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyIC5zaXRlLWJyYW5kaW5nLnNob3ctdGl0bGUgLnNpdGUtbG9nbyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLnNpdGUtaGVhZGVyOm5vdCguaGVhZGVyLXN0YWNrZWQpIC5oZWFkZXItaW5uZXIgLnNpdGUtYnJhbmRpbmcgewogICAgbWF4LXdpZHRoOiAzMCUKfQoKLnNpdGUtaGVhZGVyOm5vdCguaGVhZGVyLXN0YWNrZWQpIC5oZWFkZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiB7CiAgICBtYXgtd2lkdGg6IDcwJQp9Cgouc2l0ZS1oZWFkZXIuaGVhZGVyLWludmVydGVkIC5oZWFkZXItaW5uZXIgewogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlCn0KCi5zaXRlLWhlYWRlci5oZWFkZXItaW52ZXJ0ZWQgLmhlYWRlci1pbm5lciAuc2l0ZS1icmFuZGluZyB7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9Cgouc2l0ZS1oZWFkZXIuaGVhZGVyLWludmVydGVkIC5oZWFkZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0Cn0KCi5zaXRlLWhlYWRlci5oZWFkZXItc3RhY2tlZCAuaGVhZGVyLWlubmVyIHsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCkBtZWRpYSAobWF4LXdpZHRoOjU3NnB4KSB7CiAgICAuc2l0ZS1oZWFkZXIgLmhlYWRlci1pbm5lcjpub3QoLmhlYWRlci1zdGFja2VkKSAuc2l0ZS1icmFuZGluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA4MCUKICAgIH0KfQoKLnNpdGUtZm9vdGVyIHsKICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IDFyZW07CiAgICBwYWRkaW5nLWJsb2NrLWVuZDogMXJlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9Cgouc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuCn0KCi5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyIC5jdXN0b20tbG9nby1saW5rIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyIC5zaXRlLW5hdmlnYXRpb24gewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAp9Cgouc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciAuc2l0ZS1icmFuZGluZyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyIC5zaXRlLWJyYW5kaW5nIC5zaXRlLWRlc2NyaXB0aW9uLAouc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciAuc2l0ZS1icmFuZGluZyAuc2l0ZS10aXRsZSB7CiAgICBtYXJnaW46IDAKfQoKLnNpdGUtZm9vdGVyIC5mb290ZXItaW5uZXIgLnNpdGUtYnJhbmRpbmcuc2hvdy1sb2dvIC5zaXRlLXRpdGxlLAouc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciAuc2l0ZS1icmFuZGluZy5zaG93LXRpdGxlIC5zaXRlLWxvZ28gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyIC5jb3B5cmlnaHQgewogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCn0KCi5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyIC5jb3B5cmlnaHQgcCB7CiAgICBtYXJnaW46IDAKfQoKLnNpdGUtZm9vdGVyLmZvb3Rlci1pbnZlcnRlZCAuZm9vdGVyLWlubmVyIHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZQp9Cgouc2l0ZS1mb290ZXIuZm9vdGVyLWludmVydGVkIC5mb290ZXItaW5uZXIgLnNpdGUtYnJhbmRpbmcgewogICAgdGV4dC1hbGlnbjogcmlnaHQKfQoKLnNpdGUtZm9vdGVyLmZvb3Rlci1pbnZlcnRlZCAuZm9vdGVyLWlubmVyIC5zaXRlLW5hdmlnYXRpb24gewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5zaXRlLWZvb3Rlci5mb290ZXItaGFzLWNvcHlyaWdodCAuZm9vdGVyLWlubmVyIC5zaXRlLW5hdmlnYXRpb24gewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLnNpdGUtZm9vdGVyLmZvb3Rlci1zdGFja2VkIC5mb290ZXItaW5uZXIgewogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLnNpdGUtZm9vdGVyLmZvb3Rlci1zdGFja2VkIC5mb290ZXItaW5uZXIgLnNpdGUtYnJhbmRpbmcgaDQuc2l0ZS10aXRsZSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLnNpdGUtZm9vdGVyLmZvb3Rlci1zdGFja2VkIC5mb290ZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiAubWVudSB7CiAgICBwYWRkaW5nOiAwCn0KCi5zaXRlLWZvb3Rlcjpub3QoLmZvb3Rlci1zdGFja2VkKSAuZm9vdGVyLWlubmVyIC5zaXRlLWJyYW5kaW5nIHsKICAgIG1heC13aWR0aDogMjAlCn0KCi5zaXRlLWZvb3Rlcjpub3QoLmZvb3Rlci1zdGFja2VkKSAuZm9vdGVyLWlubmVyIC5zaXRlLW5hdmlnYXRpb24gewogICAgbWF4LXdpZHRoOiA2MCUKfQoKLnNpdGUtZm9vdGVyOm5vdCguZm9vdGVyLXN0YWNrZWQpIC5mb290ZXItaW5uZXIgLmNvcHlyaWdodCB7CiAgICBtYXgtd2lkdGg6IDIwJQp9CgpAbWVkaWEgKG1heC13aWR0aDo1NzZweCkgewogICAgLnNpdGUtZm9vdGVyOm5vdCguZm9vdGVyLXN0YWNrZWQpIC5mb290ZXItaW5uZXIgLmNvcHlyaWdodCwKICAgIC5zaXRlLWZvb3Rlcjpub3QoLmZvb3Rlci1zdGFja2VkKSAuZm9vdGVyLWlubmVyIC5zaXRlLWJyYW5kaW5nLAogICAgLnNpdGUtZm9vdGVyOm5vdCguZm9vdGVyLXN0YWNrZWQpIC5mb290ZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogbm9uZQogICAgfQogICAgLnNpdGUtZm9vdGVyIC5mb290ZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiB1bC5tZW51IHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLnNpdGUtZm9vdGVyIC5mb290ZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiB1bC5tZW51IGxpIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKICAgIH0KfQoKLnBvc3QgLmVudHJ5LXRpdGxlIGEgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lCn0KCi5wb3N0IC53cC1wb3N0LWltYWdlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICAtby1vYmplY3QtZml0OiBjb3ZlcjsKICAgIG9iamVjdC1maXQ6IGNvdmVyCn0KCkBtZWRpYSAobWF4LXdpZHRoOjk5MXB4KSB7CiAgICAucG9zdCAud3AtcG9zdC1pbWFnZSB7CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHgKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NTc1cHgpIHsKICAgIC5wb3N0IC53cC1wb3N0LWltYWdlIHsKICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweAogICAgfQp9CgojY29tbWVudHMgLmNvbW1lbnQtbGlzdCB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIGZvbnQtc2l6ZTogLjllbQp9CgojY29tbWVudHMgLmNvbW1lbnQsCiNjb21tZW50cyAucGluZ2JhY2sgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCiNjb21tZW50cyAuY29tbWVudCAuY29tbWVudC1ib2R5LAojY29tbWVudHMgLnBpbmdiYWNrIC5jb21tZW50LWJvZHkgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiAzMHB4OwogICAgcGFkZGluZy1ibG9jay1lbmQ6IDMwcHg7CiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogNjBweDsKICAgIHBhZGRpbmctaW5saW5lLWVuZDogMDsKICAgIGJvcmRlci1ibG9jay1lbmQ6IDFweCBzb2xpZCAjY2NjCn0KCiNjb21tZW50cyAuY29tbWVudCAuYXZhdGFyLAojY29tbWVudHMgLnBpbmdiYWNrIC5hdmF0YXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAxMHB4Cn0KCmJvZHkucnRsICNjb21tZW50cyAuY29tbWVudCAuYXZhdGFyLApib2R5LnJ0bCAjY29tbWVudHMgLnBpbmdiYWNrIC5hdmF0YXIsCmh0bWxbZGlyPXJ0bF0gI2NvbW1lbnRzIC5jb21tZW50IC5hdmF0YXIsCmh0bWxbZGlyPXJ0bF0gI2NvbW1lbnRzIC5waW5nYmFjayAuYXZhdGFyIHsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMAp9CgojY29tbWVudHMgLmNvbW1lbnQtbWV0YSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgbWFyZ2luLWJsb2NrLWVuZDogLjlyZW0KfQoKI2NvbW1lbnRzIC5jb21tZW50LW1ldGFkYXRhLAojY29tbWVudHMgLnJlcGx5IHsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGxpbmUtaGVpZ2h0OiAxCn0KCiNjb21tZW50cyAuY2hpbGRyZW4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAzMHB4Cn0KCiNjb21tZW50cyAuY2hpbGRyZW4gbGk6bGFzdC1jaGlsZCB7CiAgICBwYWRkaW5nLWJsb2NrLWVuZDogMAp9CgojY29tbWVudHMgb2wuY29tbWVudC1saXN0IC5jaGlsZHJlbjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC1zaXplOiAxZW07CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGluZS1oZWlnaHQ6IDEwMCU7CiAgICBjb250ZW50OiAi4oaqIjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNDVweDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogYXV0bwp9Cgpib2R5LnJ0bCAjY29tbWVudHMgb2wuY29tbWVudC1saXN0IC5jaGlsZHJlbjpiZWZvcmUsCmh0bWxbZGlyPXJ0bF0gI2NvbW1lbnRzIG9sLmNvbW1lbnQtbGlzdCAuY2hpbGRyZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICLihqkiOwogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAwCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAjY29tbWVudHMgLmNvbW1lbnQtYXV0aG9yLAogICAgI2NvbW1lbnRzIC5jb21tZW50LW1ldGFkYXRhIHsKICAgICAgICBsaW5lLWhlaWdodDogMQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgI2NvbW1lbnRzIC5jb21tZW50IC5jb21tZW50LWJvZHkgewogICAgICAgIHBhZGRpbmc6IDMwcHggMAogICAgfQogICAgI2NvbW1lbnRzIC5jaGlsZHJlbiB7CiAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDIwcHgKICAgIH0KICAgICNjb21tZW50cyAuY29tbWVudCAuYXZhdGFyIHsKICAgICAgICBwb3NpdGlvbjogaW5oZXJpdDsKICAgICAgICBmbG9hdDogbGVmdAogICAgfQogICAgYm9keS5ydGwgI2NvbW1lbnRzIC5jb21tZW50IC5hdmF0YXIsCiAgICBodG1sW2Rpcj1ydGxdICNjb21tZW50cyAuY29tbWVudCAuYXZhdGFyIHsKICAgICAgICBmbG9hdDogcmlnaHQKICAgIH0KfQoKLnNpdGUtaGVhZGVyLmhlYWRlci1pbnZlcnRlZCAuc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXIgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5zaXRlLWhlYWRlci5oZWFkZXItc3RhY2tlZCAuc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXIgewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBtYXgtd2lkdGg6IDEwMCUKfQoKLnNpdGUtaGVhZGVyLm1lbnUtbGF5b3V0LWRyb3Bkb3duIC5zaXRlLW5hdmlnYXRpb24gewogICAgZGlzcGxheTogbm9uZQp9Cgouc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgZmxleC1ncm93OiAxOwogICAgbWF4LXdpZHRoOiAyMCU7CiAgICBwYWRkaW5nOiA4cHggMTVweAp9Cgouc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXIgLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIHBhZGRpbmc6IC4yNWVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyOiAwIHNvbGlkOwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDUpOwogICAgY29sb3I6ICM0OTRjNGYKfQoKLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUtaG9sZGVyLmVsZW1lbnRvci1hY3RpdmUgLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUgaTpiZWZvcmUgewogICAgY29udGVudDogIlxlODdmIgp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHsKICAgIGdyaWQtYXJlYTogbmF2LW1lbnU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZsZXgtZ3JvdzogMQp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHVsLm1lbnUsCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSB1bCB7CiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwCn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwCn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSBhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogOHB4IDE1cHgKfQoKLnNpdGUtbmF2aWdhdGlvbiB1bC5tZW51IGxpLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gewogICAgcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4Cn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmFmdGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29udGVudDogIuKWviI7CiAgICBmb250LXNpemU6IDEuNWVtOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGNvbG9yOiAjNjY2OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDA7CiAgICB0b3A6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZQp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHVsLm1lbnUgbGkubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpmb2N1cy13aXRoaW4+dWwgewogICAgZGlzcGxheTogYmxvY2sKfQoKLnNpdGUtbmF2aWdhdGlvbiB1bC5tZW51IGxpIHVsIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBkaXNwbGF5OiBub25lOwogICAgbWluLXdpZHRoOiAxNTBweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDI7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAxMDAlCn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB1bCBsaSB7CiAgICBib3JkZXItYmxvY2stZW5kOiAjZWVlIDFweCBzb2xpZAp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHVsLm1lbnUgbGkgdWwgbGk6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYmxvY2stZW5kOiBub25lCn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB1bCBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIGEgewogICAgZmxleC1ncm93OiAxCn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB1bCBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmFmdGVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoLTkwZGVnKQp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHVsLm1lbnUgbGkgdWwgdWwgewogICAgbGVmdDogMTAwJTsKICAgIHRvcDogMAp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHVsLm1lbnUgbGk6aG92ZXI+dWwgewogICAgZGlzcGxheTogYmxvY2sKfQoKZm9vdGVyIC5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB1bCB7CiAgICB0b3A6IGF1dG87CiAgICBib3R0b206IDEwMCUKfQoKZm9vdGVyIC5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB1bCB1bCB7CiAgICBib3R0b206IDAKfQoKZm9vdGVyIC5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBhIHsKICAgIHBhZGRpbmc6IDVweCAxNXB4Cn0KCi5zaXRlLW5hdmlnYXRpb24tZHJvcGRvd24gewogICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAxMHB4OwogICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAuM3MsIHRyYW5zZm9ybSAuM3M7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3A7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgei1pbmRleDogMTAwMDA7CiAgICB3aWR0aDogMTAwJQp9Cgouc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXI6bm90KC5lbGVtZW50b3ItYWN0aXZlKSsuc2l0ZS1uYXZpZ2F0aW9uLWRyb3Bkb3duIHsKICAgIHRyYW5zZm9ybTogc2NhbGVZKDApOwogICAgbWF4LWhlaWdodDogMAp9Cgouc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXIuZWxlbWVudG9yLWFjdGl2ZSsuc2l0ZS1uYXZpZ2F0aW9uLWRyb3Bkb3duIHsKICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpOwogICAgbWF4LWhlaWdodDogMTAwdmgKfQoKLnNpdGUtbmF2aWdhdGlvbi1kcm9wZG93biB1bCB7CiAgICBwYWRkaW5nOiAwCn0KCi5zaXRlLW5hdmlnYXRpb24tZHJvcGRvd24gdWwubWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICBiYWNrZ3JvdW5kOiAjZmZmCn0KCi5zaXRlLW5hdmlnYXRpb24tZHJvcGRvd24gdWwubWVudSBsaSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5zaXRlLW5hdmlnYXRpb24tZHJvcGRvd24gdWwubWVudSBsaSBhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogMjBweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBjb2xvcjogIzU1NTk1YzsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgLjEwMTk2MDc4NDMpCn0KCi5zaXRlLW5hdmlnYXRpb24tZHJvcGRvd24gdWwubWVudSBsaS5jdXJyZW50LW1lbnUtaXRlbSBhIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogIzU1NTk1Ywp9Cgouc2l0ZS1uYXZpZ2F0aW9uLWRyb3Bkb3duIHVsLm1lbnU+bGkgbGkgewogICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAuM3MsIHRyYW5zZm9ybSAuM3M7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3A7CiAgICB0cmFuc2Zvcm06IHNjYWxlWSgwKTsKICAgIG1heC1oZWlnaHQ6IDAKfQoKLnNpdGUtbmF2aWdhdGlvbi1kcm9wZG93biB1bC5tZW51IGxpLmVsZW1lbnRvci1hY3RpdmU+dWw+bGkgewogICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7CiAgICBtYXgtaGVpZ2h0OiAxMDB2aAp9CgpAbWVkaWEgKG1heC13aWR0aDo1NzZweCkgewogICAgLnNpdGUtaGVhZGVyLm1lbnUtZHJvcGRvd24tbW9iaWxlOm5vdCgubWVudS1sYXlvdXQtZHJvcGRvd24pIC5zaXRlLW5hdmlnYXRpb24gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLnNpdGUtaGVhZGVyLm1lbnUtZHJvcGRvd24tbW9iaWxlOm5vdCgubWVudS1sYXlvdXQtZHJvcGRvd24pIC5zaXRlLW5hdmlnYXRpb24tdG9nZ2xlLWhvbGRlciB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjU3NnB4KSBhbmQgKG1heC13aWR0aDo3NjdweCkgewogICAgLnNpdGUtaGVhZGVyLm1lbnUtZHJvcGRvd24tbW9iaWxlOm5vdCgubWVudS1sYXlvdXQtZHJvcGRvd24pIC5zaXRlLW5hdmlnYXRpb24gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgewogICAgLnNpdGUtaGVhZGVyLm1lbnUtZHJvcGRvd24tdGFibGV0Om5vdCgubWVudS1sYXlvdXQtZHJvcGRvd24pIC5zaXRlLW5hdmlnYXRpb24tdG9nZ2xlLWhvbGRlciB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjk5MnB4KSB7CiAgICAuc2l0ZS1oZWFkZXIubWVudS1kcm9wZG93bi10YWJsZXQ6bm90KC5tZW51LWxheW91dC1kcm9wZG93bikgLnNpdGUtbmF2aWdhdGlvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0KCi5zaXRlLWhlYWRlci5tZW51LWRyb3Bkb3duLW5vbmU6bm90KC5tZW51LWxheW91dC1kcm9wZG93bikgLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUtaG9sZGVyIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9CgoucGFnZS1oZWFkZXIgLmVudHJ5LXRpdGxlLAouc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciwKLnNpdGUtZm9vdGVyOm5vdCguZHluYW1pYy1mb290ZXIpLAouc2l0ZS1oZWFkZXIgLmhlYWRlci1pbm5lciwKLnNpdGUtaGVhZGVyOm5vdCguZHluYW1pYy1oZWFkZXIpLApib2R5Om5vdChbY2xhc3MqPWVsZW1lbnRvci1wYWdlLV0pIC5zaXRlLW1haW4gewogICAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bzsKICAgIG1hcmdpbi1pbmxpbmUtZW5kOiBhdXRvOwogICAgd2lkdGg6IDEwMCUKfQoKQG1lZGlhIChtYXgtd2lkdGg6NTc1cHgpIHsKICAgIC5wYWdlLWhlYWRlciAuZW50cnktdGl0bGUsCiAgICAuc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciwKICAgIC5zaXRlLWZvb3Rlcjpub3QoLmR5bmFtaWMtZm9vdGVyKSwKICAgIC5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyLAogICAgLnNpdGUtaGVhZGVyOm5vdCguZHluYW1pYy1oZWFkZXIpLAogICAgYm9keTpub3QoW2NsYXNzKj1lbGVtZW50b3ItcGFnZS1dKSAuc2l0ZS1tYWluIHsKICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMTBweDsKICAgICAgICBwYWRkaW5nLWlubGluZS1lbmQ6IDEwcHgKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NTc2cHgpIHsKICAgIC5wYWdlLWhlYWRlciAuZW50cnktdGl0bGUsCiAgICAuc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciwKICAgIC5zaXRlLWZvb3Rlcjpub3QoLmR5bmFtaWMtZm9vdGVyKSwKICAgIC5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyLAogICAgLnNpdGUtaGVhZGVyOm5vdCguZHluYW1pYy1oZWFkZXIpLAogICAgYm9keTpub3QoW2NsYXNzKj1lbGVtZW50b3ItcGFnZS1dKSAuc2l0ZS1tYWluIHsKICAgICAgICBtYXgtd2lkdGg6IDUwMHB4CiAgICB9CiAgICAuc2l0ZS1mb290ZXIuZm9vdGVyLWZ1bGwtd2lkdGggLmZvb3Rlci1pbm5lciwKICAgIC5zaXRlLWhlYWRlci5oZWFkZXItZnVsbC13aWR0aCAuaGVhZGVyLWlubmVyIHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5wYWdlLWhlYWRlciAuZW50cnktdGl0bGUsCiAgICAuc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciwKICAgIC5zaXRlLWZvb3Rlcjpub3QoLmR5bmFtaWMtZm9vdGVyKSwKICAgIC5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyLAogICAgLnNpdGUtaGVhZGVyOm5vdCguZHluYW1pYy1oZWFkZXIpLAogICAgYm9keTpub3QoW2NsYXNzKj1lbGVtZW50b3ItcGFnZS1dKSAuc2l0ZS1tYWluIHsKICAgICAgICBtYXgtd2lkdGg6IDYwMHB4CiAgICB9CiAgICAuc2l0ZS1mb290ZXIuZm9vdGVyLWZ1bGwtd2lkdGgsCiAgICAuc2l0ZS1oZWFkZXIuaGVhZGVyLWZ1bGwtd2lkdGggewogICAgICAgIG1heC13aWR0aDogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgewogICAgLnBhZ2UtaGVhZGVyIC5lbnRyeS10aXRsZSwKICAgIC5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyLAogICAgLnNpdGUtZm9vdGVyOm5vdCguZHluYW1pYy1mb290ZXIpLAogICAgLnNpdGUtaGVhZGVyIC5oZWFkZXItaW5uZXIsCiAgICAuc2l0ZS1oZWFkZXI6bm90KC5keW5hbWljLWhlYWRlciksCiAgICBib2R5Om5vdChbY2xhc3MqPWVsZW1lbnRvci1wYWdlLV0pIC5zaXRlLW1haW4gewogICAgICAgIG1heC13aWR0aDogODAwcHgKICAgIH0KICAgIC5zaXRlLWZvb3Rlci5mb290ZXItZnVsbC13aWR0aCwKICAgIC5zaXRlLWhlYWRlci5oZWFkZXItZnVsbC13aWR0aCB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEyMDBweCkgewogICAgLnBhZ2UtaGVhZGVyIC5lbnRyeS10aXRsZSwKICAgIC5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyLAogICAgLnNpdGUtZm9vdGVyOm5vdCguZHluYW1pYy1mb290ZXIpLAogICAgLnNpdGUtaGVhZGVyIC5oZWFkZXItaW5uZXIsCiAgICAuc2l0ZS1oZWFkZXI6bm90KC5keW5hbWljLWhlYWRlciksCiAgICBib2R5Om5vdChbY2xhc3MqPWVsZW1lbnRvci1wYWdlLV0pIC5zaXRlLW1haW4gewogICAgICAgIG1heC13aWR0aDogMTE0MHB4CiAgICB9CiAgICAuc2l0ZS1mb290ZXIuZm9vdGVyLWZ1bGwtd2lkdGgsCiAgICAuc2l0ZS1oZWFkZXIuaGVhZGVyLWZ1bGwtd2lkdGggewogICAgICAgIG1heC13aWR0aDogMTAwJQogICAgfQp9Cgouc2l0ZS1oZWFkZXIrLmVsZW1lbnRvciB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gMzIwcHgpCn0="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/vendor/react-dom.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.031Z","timestamp":1785130090031,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-includes/js/dist/vendor/react-dom.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=gBRYdE2w43Rrg9GbrNnMzTvCEuJa4Qhb5GSQFzIQmawLXD5Ay30KfbS7uoJ15Om6JST0iMVUVT1%2FU9Wmhr8YaVTdDqXmy6zheWSWzbSloj6wvvup38v6fJ27CNEqtrq8CJ148Qvw9w%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36be4b120a-OSL\r\ncontent-length: 50306\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":270492,"size_decoded":51129,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (478)","md5":"dc2b81ee6bacc67f973178dbeb145ae8","sha1":"1aa12d5e9992f569c72fb5c85bafe649cb52d588","sha256":"565f4eb5bd4db38acdb1f488f55afc427440aa881719f97f2e49073c4df9d2d6","sha512":"ed9bffeb4a596baa91927496e856e37eaae2709985f5a446390ddbb77ab8a73ecae942cad8cc7e8773a4edb60614fa3daff2a45fd0384ff45a6a9edc9d5af19e","ssdeep":"1536:uyodIzCvwBBYWxwL4QZifagtZvKDEv7ucuUCgnNV1kEF3Ujqf3vL3MTJRXc1:uajXn2qZvXrd38c1","tlshash":"8f4452996ae226719213f13e0eafd8947339a80b074cdc523a0ce5645f5553c87bafec","first_seen":"2026-07-27T03:56:42.510275Z","last_seen":"2026-07-27T05:30:59.816769Z","times_seen":6,"resource_available":true,"data":"LyoqCiAqIEBsaWNlbnNlIFJlYWN0CiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcwogKgogKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovCiEgZnVuY3Rpb24oKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgZSwgbjsKICAgIGUgPSB0aGlzLCBuID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICBmb3IgKHZhciBuID0gImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PSIgKyBlLCB0ID0gMTsgdCA8IGFyZ3VtZW50cy5sZW5ndGg7IHQrKykgbiArPSAiJmFyZ3NbXT0iICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1t0XSk7CiAgICAgICAgICAgIHJldHVybiAiTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIgKyBlICsgIjsgdmlzaXQgIiArIG4gKyAiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByKGUsIG4pIHsKICAgICAgICAgICAgbChlLCBuKSwgbChlICsgIkNhcHR1cmUiLCBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbChlLCBuKSB7CiAgICAgICAgICAgIGZvciAocmFbZV0gPSBuLCBlID0gMDsgZSA8IG4ubGVuZ3RoOyBlKyspIHRhLmFkZChuW2VdKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYShlLCBuLCB0LCByLCBsLCBhLCB1KSB7CiAgICAgICAgICAgIHRoaXMuYWNjZXB0c0Jvb2xlYW5zID0gMiA9PT0gbiB8fCAzID09PSBuIHx8IDQgPT09IG4sIHRoaXMuYXR0cmlidXRlTmFtZSA9IHIsIHRoaXMuYXR0cmlidXRlTmFtZXNwYWNlID0gbCwgdGhpcy5tdXN0VXNlUHJvcGVydHkgPSB0LCB0aGlzLnByb3BlcnR5TmFtZSA9IGUsIHRoaXMudHlwZSA9IG4sIHRoaXMuc2FuaXRpemVVUkwgPSBhLCB0aGlzLnJlbW92ZUVtcHR5U3RyaW5nID0gdQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdShlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHZhciBsID0gc2EuaGFzT3duUHJvcGVydHkobikgPyBzYVtuXSA6IG51bGw7CiAgICAgICAgICAgIChudWxsICE9PSBsID8gMCAhPT0gbC50eXBlIDogciB8fCAhKDIgPCBuLmxlbmd0aCkgfHwgIm8iICE9PSBuWzBdICYmICJPIiAhPT0gblswXSB8fCAibiIgIT09IG5bMV0gJiYgIk4iICE9PSBuWzFdKSAmJiAoZnVuY3Rpb24oZSwgbiwgdCwgcikgewogICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbiB8fCBmdW5jdGlvbihlLCBuLCB0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB0ICYmIDAgPT09IHQudHlwZSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzeW1ib2wiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhciAmJiAobnVsbCAhPT0gdCA/ICF0LmFjY2VwdHNCb29sZWFucyA6ICJkYXRhLSIgIT09IChlID0gZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsIDUpKSAmJiAiYXJpYS0iICE9PSBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KGUsIG4sIHQsIHIpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICBpZiAocikgcmV0dXJuICExOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHQpIHN3aXRjaCAodC50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIW47CiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEgPT09IG47CiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNOYU4obik7CiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNOYU4obikgfHwgMSA+IG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9KG4sIHQsIGwsIHIpICYmICh0ID0gbnVsbCksIHIgfHwgbnVsbCA9PT0gbCA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhIWFhLmNhbGwoaWEsIGUpIHx8ICFhYS5jYWxsKG9hLCBlKSAmJiAodWEudGVzdChlKSA/IGlhW2VdID0gITAgOiAob2FbZV0gPSAhMCwgITEpKQogICAgICAgICAgICB9KG4pICYmIChudWxsID09PSB0ID8gZS5yZW1vdmVBdHRyaWJ1dGUobikgOiBlLnNldEF0dHJpYnV0ZShuLCAiIiArIHQpKSA6IGwubXVzdFVzZVByb3BlcnR5ID8gZVtsLnByb3BlcnR5TmFtZV0gPSBudWxsID09PSB0ID8gMyAhPT0gbC50eXBlICYmICIiIDogdCA6IChuID0gbC5hdHRyaWJ1dGVOYW1lLCByID0gbC5hdHRyaWJ1dGVOYW1lc3BhY2UsIG51bGwgPT09IHQgPyBlLnJlbW92ZUF0dHJpYnV0ZShuKSA6ICh0ID0gMyA9PT0gKGwgPSBsLnR5cGUpIHx8IDQgPT09IGwgJiYgITAgPT09IHQgPyAiIiA6ICIiICsgdCwgciA/IGUuc2V0QXR0cmlidXRlTlMociwgbiwgdCkgOiBlLnNldEF0dHJpYnV0ZShuLCB0KSkpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbyhlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSBlIHx8ICJvYmplY3QiICE9IHR5cGVvZiBlID8gbnVsbCA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mKGUgPSBfYSAmJiBlW19hXSB8fCBlWyJAQGl0ZXJhdG9yIl0pID8gZSA6IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGkoZSwgbiwgdCkgewogICAgICAgICAgICBpZiAodm9pZCAwID09PSB6YSkgdHJ5IHsKICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCkKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgemEgPSAobiA9IGUuc3RhY2sudHJpbSgpLm1hdGNoKC9cbiggKihhdCApPykvKSkgJiYgblsxXSB8fCAiIgogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAiXG4iICsgemEgKyBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzKGUsIG4pIHsKICAgICAgICAgICAgaWYgKCFlIHx8IFRhKSByZXR1cm4gIiI7CiAgICAgICAgICAgIFRhID0gITA7CiAgICAgICAgICAgIHZhciB0ID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7CiAgICAgICAgICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gdm9pZCAwOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCAicHJvcHMiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksICJvYmplY3QiID09IHR5cGVvZiBSZWZsZWN0ICYmIFJlZmxlY3QuY29uc3RydWN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChuLCBbXSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZSwgW10sIG4pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY2FsbCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZS5jYWxsKG4ucHJvdG90eXBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICBpZiAobiAmJiByICYmICJzdHJpbmciID09IHR5cGVvZiBuLnN0YWNrKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IG4uc3RhY2suc3BsaXQoIlxuIiksIGEgPSByLnN0YWNrLnNwbGl0KCJcbiIpLCB1ID0gbC5sZW5ndGggLSAxLCBvID0gYS5sZW5ndGggLSAxOyAxIDw9IHUgJiYgMCA8PSBvICYmIGxbdV0gIT09IGFbb107KSBvLS07CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IDEgPD0gdSAmJiAwIDw9IG87IHUtLSwgby0tKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobFt1XSAhPT0gYVtvXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgIT09IHUgfHwgMSAhPT0gbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1LS0sIDAgPiAtLW8gfHwgbFt1XSAhPT0gYVtvXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAiXG4iICsgbFt1XS5yZXBsYWNlKCIgYXQgbmV3ICIsICIgYXQgIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5kaXNwbGF5TmFtZSAmJiBzLmluY2x1ZGVzKCI8YW5vbnltb3VzPiIpICYmIChzID0gcy5yZXBsYWNlKCI8YW5vbnltb3VzPiIsIGUuZGlzcGxheU5hbWUpKSwgcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoMSA8PSB1ICYmIDAgPD0gbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICBUYSA9ICExLCBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHQKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gKGUgPSBlID8gZS5kaXNwbGF5TmFtZSB8fCBlLm5hbWUgOiAiIikgPyBpKGUpIDogIiIKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgICAgICBzd2l0Y2ggKGUudGFnKSB7CiAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkoZS50eXBlKTsKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkoIkxhenkiKTsKICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkoIlN1c3BlbnNlIik7CiAgICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBpKCJTdXNwZW5zZUxpc3QiKTsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSBzKGUudHlwZSwgITEpOwogICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IHMoZS50eXBlLnJlbmRlciwgITEpOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gcyhlLnR5cGUsICEwKTsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGYoZSkgewogICAgICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGUpIHJldHVybiBlLmRpc3BsYXlOYW1lIHx8IGUubmFtZSB8fCBudWxsOwogICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHJldHVybiBlOwogICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgaGE6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJGcmFnbWVudCI7CiAgICAgICAgICAgICAgICBjYXNlIG1hOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiUG9ydGFsIjsKICAgICAgICAgICAgICAgIGNhc2UgdmE6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJQcm9maWxlciI7CiAgICAgICAgICAgICAgICBjYXNlIGdhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiU3RyaWN0TW9kZSI7CiAgICAgICAgICAgICAgICBjYXNlIHdhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiU3VzcGVuc2UiOwogICAgICAgICAgICAgICAgY2FzZSBTYToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlN1c3BlbnNlTGlzdCIKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUpIHN3aXRjaCAoZS4kJHR5cGVvZikgewogICAgICAgICAgICAgICAgY2FzZSBiYToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUuZGlzcGxheU5hbWUgfHwgIkNvbnRleHQiKSArICIuQ29uc3VtZXIiOwogICAgICAgICAgICAgICAgY2FzZSB5YToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUuX2NvbnRleHQuZGlzcGxheU5hbWUgfHwgIkNvbnRleHQiKSArICIuUHJvdmlkZXIiOwogICAgICAgICAgICAgICAgY2FzZSBrYToKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUucmVuZGVyOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSA9IGUuZGlzcGxheU5hbWUpIHx8IChlID0gIiIgIT09IChlID0gbi5kaXNwbGF5TmFtZSB8fCBuLm5hbWUgfHwgIiIpID8gIkZvcndhcmRSZWYoIiArIGUgKyAiKSIgOiAiRm9yd2FyZFJlZiIpLCBlOwogICAgICAgICAgICAgICAgY2FzZSB4YToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gKG4gPSBlLmRpc3BsYXlOYW1lIHx8IG51bGwpID8gbiA6IGYoZS50eXBlKSB8fCAiTWVtbyI7CiAgICAgICAgICAgICAgICBjYXNlIEVhOgogICAgICAgICAgICAgICAgICAgIG4gPSBlLl9wYXlsb2FkLCBlID0gZS5faW5pdDsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZihlKG4pKQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGQoZSkgewogICAgICAgICAgICB2YXIgbiA9IGUudHlwZTsKICAgICAgICAgICAgc3dpdGNoIChlLnRhZykgewogICAgICAgICAgICAgICAgY2FzZSAyNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkNhY2hlIjsKICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG4uZGlzcGxheU5hbWUgfHwgIkNvbnRleHQiKSArICIuQ29uc3VtZXIiOwogICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG4uX2NvbnRleHQuZGlzcGxheU5hbWUgfHwgIkNvbnRleHQiKSArICIuUHJvdmlkZXIiOwogICAgICAgICAgICAgICAgY2FzZSAxODoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkRlaHlkcmF0ZWRGcmFnbWVudCI7CiAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gKGUgPSBuLnJlbmRlcikuZGlzcGxheU5hbWUgfHwgZS5uYW1lIHx8ICIiLCBuLmRpc3BsYXlOYW1lIHx8ICgiIiAhPT0gZSA/ICJGb3J3YXJkUmVmKCIgKyBlICsgIikiIDogIkZvcndhcmRSZWYiKTsKICAgICAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkZyYWdtZW50IjsKICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlBvcnRhbCI7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJSb290IjsKICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlRleHQiOwogICAgICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZihuKTsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA9PT0gZ2EgPyAiU3RyaWN0TW9kZSIgOiAiTW9kZSI7CiAgICAgICAgICAgICAgICBjYXNlIDIyOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiT2Zmc2NyZWVuIjsKICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJQcm9maWxlciI7CiAgICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiU2NvcGUiOwogICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlN1c3BlbnNlIjsKICAgICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJTdXNwZW5zZUxpc3QiOwogICAgICAgICAgICAgICAgY2FzZSAyNToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlRyYWNpbmdNYXJrZXIiOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiBuKSByZXR1cm4gbi5kaXNwbGF5TmFtZSB8fCBuLm5hbWUgfHwgbnVsbDsKICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIG4pIHJldHVybiBuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHAoZSkgewogICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgY2FzZSAidW5kZWZpbmVkIjoKICAgICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLnR5cGU7CiAgICAgICAgICAgIHJldHVybiAoZSA9IGUubm9kZU5hbWUpICYmICJpbnB1dCIgPT09IGUudG9Mb3dlckNhc2UoKSAmJiAoImNoZWNrYm94IiA9PT0gbiB8fCAicmFkaW8iID09PSBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaChlKSB7CiAgICAgICAgICAgIGUuX3ZhbHVlVHJhY2tlciB8fCAoZS5fdmFsdWVUcmFja2VyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBtKGUpID8gImNoZWNrZWQiIDogInZhbHVlIiwKICAgICAgICAgICAgICAgICAgICB0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgbiksCiAgICAgICAgICAgICAgICAgICAgciA9ICIiICsgZVtuXTsKICAgICAgICAgICAgICAgIGlmICghZS5oYXNPd25Qcm9wZXJ0eShuKSAmJiB2b2lkIDAgIT09IHQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdC5nZXQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdC5zZXQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHQuZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5zZXQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBuLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbC5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICIiICsgZSwgYS5jYWxsKHRoaXMsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdC5lbnVtZXJhYmxlCiAgICAgICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAiIiArIGUKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFRyYWNraW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX3ZhbHVlVHJhY2tlciA9IG51bGwsIGRlbGV0ZSBlW25dCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0oZSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBnKGUpIHsKICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gITE7CiAgICAgICAgICAgIHZhciBuID0gZS5fdmFsdWVUcmFja2VyOwogICAgICAgICAgICBpZiAoIW4pIHJldHVybiAhMDsKICAgICAgICAgICAgdmFyIHQgPSBuLmdldFZhbHVlKCksCiAgICAgICAgICAgICAgICByID0gIiI7CiAgICAgICAgICAgIHJldHVybiBlICYmIChyID0gbShlKSA/IGUuY2hlY2tlZCA/ICJ0cnVlIiA6ICJmYWxzZSIgOiBlLnZhbHVlKSwgKGUgPSByKSAhPT0gdCAmJiAobi5zZXRWYWx1ZShlKSwgITApCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB2KGUpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gKGUgPSBlIHx8ICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgZG9jdW1lbnQgPyBkb2N1bWVudCA6IHZvaWQgMCkpKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmFjdGl2ZUVsZW1lbnQgfHwgZS5ib2R5CiAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmJvZHkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geShlLCBuKSB7CiAgICAgICAgICAgIHZhciB0ID0gbi5jaGVja2VkOwogICAgICAgICAgICByZXR1cm4gTGEoe30sIG4sIHsKICAgICAgICAgICAgICAgIGRlZmF1bHRDaGVja2VkOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHZvaWQgMCwKICAgICAgICAgICAgICAgIHZhbHVlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBjaGVja2VkOiBudWxsICE9IHQgPyB0IDogZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBiKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBudWxsID09IG4uZGVmYXVsdFZhbHVlID8gIiIgOiBuLmRlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgIHIgPSBudWxsICE9IG4uY2hlY2tlZCA/IG4uY2hlY2tlZCA6IG4uZGVmYXVsdENoZWNrZWQ7CiAgICAgICAgICAgIHQgPSBwKG51bGwgIT0gbi52YWx1ZSA/IG4udmFsdWUgOiB0KSwgZS5fd3JhcHBlclN0YXRlID0gewogICAgICAgICAgICAgICAgaW5pdGlhbENoZWNrZWQ6IHIsCiAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWU6IHQsCiAgICAgICAgICAgICAgICBjb250cm9sbGVkOiAiY2hlY2tib3giID09PSBuLnR5cGUgfHwgInJhZGlvIiA9PT0gbi50eXBlID8gbnVsbCAhPSBuLmNoZWNrZWQgOiBudWxsICE9IG4udmFsdWUKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gayhlLCBuKSB7CiAgICAgICAgICAgIG51bGwgIT0gKG4gPSBuLmNoZWNrZWQpICYmIHUoZSwgImNoZWNrZWQiLCBuLCAhMSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHcoZSwgbikgewogICAgICAgICAgICBrKGUsIG4pOwogICAgICAgICAgICB2YXIgdCA9IHAobi52YWx1ZSksCiAgICAgICAgICAgICAgICByID0gbi50eXBlOwogICAgICAgICAgICBpZiAobnVsbCAhPSB0KSAibnVtYmVyIiA9PT0gciA/ICgwID09PSB0ICYmICIiID09PSBlLnZhbHVlIHx8IGUudmFsdWUgIT0gdCkgJiYgKGUudmFsdWUgPSAiIiArIHQpIDogZS52YWx1ZSAhPT0gIiIgKyB0ICYmIChlLnZhbHVlID0gIiIgKyB0KTsKICAgICAgICAgICAgZWxzZSBpZiAoInN1Ym1pdCIgPT09IHIgfHwgInJlc2V0IiA9PT0gcikgcmV0dXJuIHZvaWQgZS5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik7CiAgICAgICAgICAgIG4uaGFzT3duUHJvcGVydHkoInZhbHVlIikgPyB4KGUsIG4udHlwZSwgdCkgOiBuLmhhc093blByb3BlcnR5KCJkZWZhdWx0VmFsdWUiKSAmJiB4KGUsIG4udHlwZSwgcChuLmRlZmF1bHRWYWx1ZSkpLCBudWxsID09IG4uY2hlY2tlZCAmJiBudWxsICE9IG4uZGVmYXVsdENoZWNrZWQgJiYgKGUuZGVmYXVsdENoZWNrZWQgPSAhIW4uZGVmYXVsdENoZWNrZWQpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBTKGUsIG4sIHQpIHsKICAgICAgICAgICAgaWYgKG4uaGFzT3duUHJvcGVydHkoInZhbHVlIikgfHwgbi5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdFZhbHVlIikpIHsKICAgICAgICAgICAgICAgIHZhciByID0gbi50eXBlOwogICAgICAgICAgICAgICAgaWYgKCEoInN1Ym1pdCIgIT09IHIgJiYgInJlc2V0IiAhPT0gciB8fCB2b2lkIDAgIT09IG4udmFsdWUgJiYgbnVsbCAhPT0gbi52YWx1ZSkpIHJldHVybjsKICAgICAgICAgICAgICAgIG4gPSAiIiArIGUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsIHQgfHwgbiA9PT0gZS52YWx1ZSB8fCAoZS52YWx1ZSA9IG4pLCBlLmRlZmF1bHRWYWx1ZSA9IG4KICAgICAgICAgICAgfQogICAgICAgICAgICAiIiAhPT0gKHQgPSBlLm5hbWUpICYmIChlLm5hbWUgPSAiIiksIGUuZGVmYXVsdENoZWNrZWQgPSAhIWUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCwgIiIgIT09IHQgJiYgKGUubmFtZSA9IHQpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB4KGUsIG4sIHQpIHsKICAgICAgICAgICAgIm51bWJlciIgPT09IG4gJiYgdihlLm93bmVyRG9jdW1lbnQpID09PSBlIHx8IChudWxsID09IHQgPyBlLmRlZmF1bHRWYWx1ZSA9ICIiICsgZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSA6IGUuZGVmYXVsdFZhbHVlICE9PSAiIiArIHQgJiYgKGUuZGVmYXVsdFZhbHVlID0gIiIgKyB0KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEUoZSwgbiwgdCwgcikgewogICAgICAgICAgICBpZiAoZSA9IGUub3B0aW9ucywgbikgewogICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCB0Lmxlbmd0aDsgbCsrKSBuWyIkIiArIHRbbF1dID0gITA7CiAgICAgICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgZS5sZW5ndGg7IHQrKykgbCA9IG4uaGFzT3duUHJvcGVydHkoIiQiICsgZVt0XS52YWx1ZSksIGVbdF0uc2VsZWN0ZWQgIT09IGwgJiYgKGVbdF0uc2VsZWN0ZWQgPSBsKSwgbCAmJiByICYmIChlW3RdLmRlZmF1bHRTZWxlY3RlZCA9ICEwKQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZm9yICh0ID0gIiIgKyBwKHQpLCBuID0gbnVsbCwgbCA9IDA7IGwgPCBlLmxlbmd0aDsgbCsrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbbF0udmFsdWUgPT09IHQpIHJldHVybiBlW2xdLnNlbGVjdGVkID0gITAsIHZvaWQociAmJiAoZVtsXS5kZWZhdWx0U2VsZWN0ZWQgPSAhMCkpOwogICAgICAgICAgICAgICAgICAgIG51bGwgIT09IG4gfHwgZVtsXS5kaXNhYmxlZCB8fCAobiA9IGVbbF0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBudWxsICE9PSBuICYmIChuLnNlbGVjdGVkID0gITApCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEMoZSwgbikgewogICAgICAgICAgICBpZiAobnVsbCAhPSBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSB0aHJvdyBFcnJvcih0KDkxKSk7CiAgICAgICAgICAgIHJldHVybiBMYSh7fSwgbiwgewogICAgICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCwKICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdm9pZCAwLAogICAgICAgICAgICAgICAgY2hpbGRyZW46ICIiICsgZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZQogICAgICAgICAgICB9KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geihlLCBuKSB7CiAgICAgICAgICAgIHZhciByID0gbi52YWx1ZTsKICAgICAgICAgICAgaWYgKG51bGwgPT0gcikgewogICAgICAgICAgICAgICAgaWYgKHIgPSBuLmNoaWxkcmVuLCBuID0gbi5kZWZhdWx0VmFsdWUsIG51bGwgIT0gcikgewogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG4pIHRocm93IEVycm9yKHQoOTIpKTsKICAgICAgICAgICAgICAgICAgICBpZiAoTWEocikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPCByLmxlbmd0aCkgdGhyb3cgRXJyb3IodCg5MykpOwogICAgICAgICAgICAgICAgICAgICAgICByID0gclswXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBuID0gcgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbnVsbCA9PSBuICYmIChuID0gIiIpLCByID0gbgogICAgICAgICAgICB9CiAgICAgICAgICAgIGUuX3dyYXBwZXJTdGF0ZSA9IHsKICAgICAgICAgICAgICAgIGluaXRpYWxWYWx1ZTogcChyKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBOKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBwKG4udmFsdWUpLAogICAgICAgICAgICAgICAgciA9IHAobi5kZWZhdWx0VmFsdWUpOwogICAgICAgICAgICBudWxsICE9IHQgJiYgKCh0ID0gIiIgKyB0KSAhPT0gZS52YWx1ZSAmJiAoZS52YWx1ZSA9IHQpLCBudWxsID09IG4uZGVmYXVsdFZhbHVlICYmIGUuZGVmYXVsdFZhbHVlICE9PSB0ICYmIChlLmRlZmF1bHRWYWx1ZSA9IHQpKSwgbnVsbCAhPSByICYmIChlLmRlZmF1bHRWYWx1ZSA9ICIiICsgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFAoZSwgbikgewogICAgICAgICAgICAobiA9IGUudGV4dENvbnRlbnQpID09PSBlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlICYmICIiICE9PSBuICYmIG51bGwgIT09IG4gJiYgKGUudmFsdWUgPSBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gXyhlKSB7CiAgICAgICAgICAgIHN3aXRjaCAoZSkgewogICAgICAgICAgICAgICAgY2FzZSAic3ZnIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjsKICAgICAgICAgICAgICAgIGNhc2UgIm1hdGgiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTChlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgfHwgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID09PSBlID8gXyhuKSA6ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgPT09IGUgJiYgImZvcmVpZ25PYmplY3QiID09PSBuID8gImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIDogZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVChlLCBuLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IG4gfHwgImJvb2xlYW4iID09IHR5cGVvZiBuIHx8ICIiID09PSBuID8gIiIgOiB0IHx8ICJudW1iZXIiICE9IHR5cGVvZiBuIHx8IDAgPT09IG4gfHwgRGEuaGFzT3duUHJvcGVydHkoZSkgJiYgRGFbZV0gPyAoIiIgKyBuKS50cmltKCkgOiBuICsgInB4IgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTShlLCBuKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgaW4gZSA9IGUuc3R5bGUsIG4pCiAgICAgICAgICAgICAgICBpZiAobi5oYXNPd25Qcm9wZXJ0eSh0KSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gMCA9PT0gdC5pbmRleE9mKCItLSIpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gVCh0LCBuW3RdLCByKTsKICAgICAgICAgICAgICAgICAgICAiZmxvYXQiID09PSB0ICYmICh0ID0gImNzc0Zsb2F0IiksIHIgPyBlLnNldFByb3BlcnR5KHQsIGwpIDogZVt0XSA9IGwKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEYoZSwgbikgewogICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgaWYgKElhW2VdICYmIChudWxsICE9IG4uY2hpbGRyZW4gfHwgbnVsbCAhPSBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSkgdGhyb3cgRXJyb3IodCgxMzcsIGUpKTsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBuLmNoaWxkcmVuKSB0aHJvdyBFcnJvcih0KDYwKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiICE9IHR5cGVvZiBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIHx8ICEoIl9faHRtbCIgaW4gbi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpIHRocm93IEVycm9yKHQoNjEpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gbi5zdHlsZSAmJiAib2JqZWN0IiAhPSB0eXBlb2Ygbi5zdHlsZSkgdGhyb3cgRXJyb3IodCg2MikpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFIoZSwgbikgewogICAgICAgICAgICBpZiAoLTEgPT09IGUuaW5kZXhPZigiLSIpKSByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIG4uaXM7CiAgICAgICAgICAgIHN3aXRjaCAoZSkgewogICAgICAgICAgICAgICAgY2FzZSAiYW5ub3RhdGlvbi14bWwiOgogICAgICAgICAgICAgICAgY2FzZSAiY29sb3ItcHJvZmlsZSI6CiAgICAgICAgICAgICAgICBjYXNlICJmb250LWZhY2UiOgogICAgICAgICAgICAgICAgY2FzZSAiZm9udC1mYWNlLXNyYyI6CiAgICAgICAgICAgICAgICBjYXNlICJmb250LWZhY2UtdXJpIjoKICAgICAgICAgICAgICAgIGNhc2UgImZvbnQtZmFjZS1mb3JtYXQiOgogICAgICAgICAgICAgICAgY2FzZSAiZm9udC1mYWNlLW5hbWUiOgogICAgICAgICAgICAgICAgY2FzZSAibWlzc2luZy1nbHlwaCI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRChlKSB7CiAgICAgICAgICAgIHJldHVybiAoZSA9IGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudCB8fCB3aW5kb3cpLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ICYmIChlID0gZS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCksIDMgPT09IGUubm9kZVR5cGUgPyBlLnBhcmVudE5vZGUgOiBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBPKGUpIHsKICAgICAgICAgICAgaWYgKGUgPSBtbihlKSkgewogICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIFZhKSB0aHJvdyBFcnJvcih0KDI4MCkpOwogICAgICAgICAgICAgICAgdmFyIG4gPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgIG4gJiYgKG4gPSBnbihuKSwgVmEoZS5zdGF0ZU5vZGUsIGUudHlwZSwgbikpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEkoZSkgewogICAgICAgICAgICBBYSA/IEJhID8gQmEucHVzaChlKSA6IEJhID0gW2VdIDogQWEgPSBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBVKCkgewogICAgICAgICAgICBpZiAoQWEpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gQWEsCiAgICAgICAgICAgICAgICAgICAgbiA9IEJhOwogICAgICAgICAgICAgICAgaWYgKEJhID0gQWEgPSBudWxsLCBPKGUpLCBuKQogICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBuLmxlbmd0aDsgZSsrKSBPKG5bZV0pCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFYoZSwgbiwgdCkgewogICAgICAgICAgICBpZiAoUWEpIHJldHVybiBlKG4sIHQpOwogICAgICAgICAgICBRYSA9ICEwOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIFdhKGUsIG4sIHQpCiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICBRYSA9ICExLCAobnVsbCAhPT0gQWEgfHwgbnVsbCAhPT0gQmEpICYmIChIYSgpLCBVKCkpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEEoZSwgbikgewogICAgICAgICAgICB2YXIgciA9IGUuc3RhdGVOb2RlOwogICAgICAgICAgICBpZiAobnVsbCA9PT0gcikgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIHZhciBsID0gZ24ocik7CiAgICAgICAgICAgIGlmIChudWxsID09PSBsKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgciA9IGxbbl07CiAgICAgICAgICAgIGU6IHN3aXRjaCAobikgewogICAgICAgICAgICAgICAgY2FzZSAib25DbGljayI6CiAgICAgICAgICAgICAgICBjYXNlICJvbkNsaWNrQ2FwdHVyZSI6CiAgICAgICAgICAgICAgICBjYXNlICJvbkRvdWJsZUNsaWNrIjoKICAgICAgICAgICAgICAgIGNhc2UgIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjoKICAgICAgICAgICAgICAgIGNhc2UgIm9uTW91c2VEb3duIjoKICAgICAgICAgICAgICAgIGNhc2UgIm9uTW91c2VEb3duQ2FwdHVyZSI6CiAgICAgICAgICAgICAgICBjYXNlICJvbk1vdXNlTW92ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJvbk1vdXNlTW92ZUNhcHR1cmUiOgogICAgICAgICAgICAgICAgY2FzZSAib25Nb3VzZVVwIjoKICAgICAgICAgICAgICAgIGNhc2UgIm9uTW91c2VVcENhcHR1cmUiOgogICAgICAgICAgICAgICAgY2FzZSAib25Nb3VzZUVudGVyIjoKICAgICAgICAgICAgICAgICAgICAobCA9ICFsLmRpc2FibGVkKSB8fCAobCA9ICEoImJ1dHRvbiIgPT09IChlID0gZS50eXBlKSB8fCAiaW5wdXQiID09PSBlIHx8ICJzZWxlY3QiID09PSBlIHx8ICJ0ZXh0YXJlYSIgPT09IGUpKSwgZSA9ICFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGUgPSAhMQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChlKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgaWYgKHIgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgcikgdGhyb3cgRXJyb3IodCgyMzEsIG4sIHR5cGVvZiByKSk7CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBCKGUsIG4sIHQsIHIsIGwsIGEsIHUsIG8sIGkpIHsKICAgICAgICAgICAgR2EgPSAhMSwgWmEgPSBudWxsLCBYYS5hcHBseShudSwgYXJndW1lbnRzKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVyhlLCBuLCByLCBsLCBhLCB1LCBvLCBpLCBzKSB7CiAgICAgICAgICAgIGlmIChCLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIEdhKSB7CiAgICAgICAgICAgICAgICBpZiAoIUdhKSB0aHJvdyBFcnJvcih0KDE5OCkpOwogICAgICAgICAgICAgICAgdmFyIGMgPSBaYTsKICAgICAgICAgICAgICAgIEdhID0gITEsIFphID0gbnVsbCwgSmEgfHwgKEphID0gITAsIGV1ID0gYykKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSChlKSB7CiAgICAgICAgICAgIHZhciBuID0gZSwKICAgICAgICAgICAgICAgIHQgPSBlOwogICAgICAgICAgICBpZiAoZS5hbHRlcm5hdGUpCiAgICAgICAgICAgICAgICBmb3IgKDsgbi5yZXR1cm47KSBuID0gbi5yZXR1cm47CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZSA9IG47CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgMCAhPSAoNDA5OCAmIChuID0gZSkuZmxhZ3MpICYmICh0ID0gbi5yZXR1cm4pLCBlID0gbi5yZXR1cm4KICAgICAgICAgICAgICAgIH0gd2hpbGUgKGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIDMgPT09IG4udGFnID8gdCA6IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFEoZSkgewogICAgICAgICAgICBpZiAoMTMgPT09IGUudGFnKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGUubWVtb2l6ZWRTdGF0ZTsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBuICYmIG51bGwgIT09IChlID0gZS5hbHRlcm5hdGUpICYmIChuID0gZS5tZW1vaXplZFN0YXRlKSwgbnVsbCAhPT0gbikgcmV0dXJuIG4uZGVoeWRyYXRlZAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBqKGUpIHsKICAgICAgICAgICAgaWYgKEgoZSkgIT09IGUpIHRocm93IEVycm9yKHQoMTg4KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uICQoZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gKGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGUuYWx0ZXJuYXRlOwogICAgICAgICAgICAgICAgaWYgKCFuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IChuID0gSChlKSkpIHRocm93IEVycm9yKHQoMTg4KSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gIT09IGUgPyBudWxsIDogZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IGUsIGwgPSBuOzspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHIucmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBhKSBicmVhazsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGEuYWx0ZXJuYXRlOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAobCA9IGEucmV0dXJuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChhLmNoaWxkID09PSB1LmNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IGEuY2hpbGQ7IHU7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9PT0gcikgcmV0dXJuIGooYSksIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9PT0gbCkgcmV0dXJuIGooYSksIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdS5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IodCgxODgpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoci5yZXR1cm4gIT09IGwucmV0dXJuKSByID0gYSwgbCA9IHU7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSAhMSwgaSA9IGEuY2hpbGQ7IGk7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgciA9IGEsIGwgPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgbCA9IGEsIHIgPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaS5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSB1LmNoaWxkOyBpOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgciA9IHUsIGwgPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGwgPSB1LCByID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkuc2libGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKSB0aHJvdyBFcnJvcih0KDE4OSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHIuYWx0ZXJuYXRlICE9PSBsKSB0aHJvdyBFcnJvcih0KDE5MCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoMyAhPT0gci50YWcpIHRocm93IEVycm9yKHQoMTg4KSk7CiAgICAgICAgICAgICAgICByZXR1cm4gci5zdGF0ZU5vZGUuY3VycmVudCA9PT0gciA/IGUgOiBuCiAgICAgICAgICAgIH0oZSkpID8gcShlKSA6IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHEoZSkgewogICAgICAgICAgICBpZiAoNSA9PT0gZS50YWcgfHwgNiA9PT0gZS50YWcpIHJldHVybiBlOwogICAgICAgICAgICBmb3IgKGUgPSBlLmNoaWxkOyBudWxsICE9PSBlOykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBxKGUpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IG4pIHJldHVybiBuOwogICAgICAgICAgICAgICAgZSA9IGUuc2libGluZwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBLKGUpIHsKICAgICAgICAgICAgc3dpdGNoIChlICYgLWUpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gODsKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE2OwogICAgICAgICAgICAgICAgY2FzZSAzMjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzI7CiAgICAgICAgICAgICAgICBjYXNlIDY0OgogICAgICAgICAgICAgICAgY2FzZSAxMjg6CiAgICAgICAgICAgICAgICBjYXNlIDI1NjoKICAgICAgICAgICAgICAgIGNhc2UgNTEyOgogICAgICAgICAgICAgICAgY2FzZSAxMDI0OgogICAgICAgICAgICAgICAgY2FzZSAyMDQ4OgogICAgICAgICAgICAgICAgY2FzZSA0MDk2OgogICAgICAgICAgICAgICAgY2FzZSA4MTkyOgogICAgICAgICAgICAgICAgY2FzZSAxNjM4NDoKICAgICAgICAgICAgICAgIGNhc2UgMzI3Njg6CiAgICAgICAgICAgICAgICBjYXNlIDY1NTM2OgogICAgICAgICAgICAgICAgY2FzZSAxMzEwNzI6CiAgICAgICAgICAgICAgICBjYXNlIDI2MjE0NDoKICAgICAgICAgICAgICAgIGNhc2UgNTI0Mjg4OgogICAgICAgICAgICAgICAgY2FzZSAxMDQ4NTc2OgogICAgICAgICAgICAgICAgY2FzZSAyMDk3MTUyOgogICAgICAgICAgICAgICAgICAgIHJldHVybiA0MTk0MjQwICYgZTsKICAgICAgICAgICAgICAgIGNhc2UgNDE5NDMwNDoKICAgICAgICAgICAgICAgIGNhc2UgODM4ODYwODoKICAgICAgICAgICAgICAgIGNhc2UgMTY3NzcyMTY6CiAgICAgICAgICAgICAgICBjYXNlIDMzNTU0NDMyOgogICAgICAgICAgICAgICAgY2FzZSA2NzEwODg2NDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTMwMDIzNDI0ICYgZTsKICAgICAgICAgICAgICAgIGNhc2UgMTM0MjE3NzI4OgogICAgICAgICAgICAgICAgICAgIHJldHVybiAxMzQyMTc3Mjg7CiAgICAgICAgICAgICAgICBjYXNlIDI2ODQzNTQ1NjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjY4NDM1NDU2OwogICAgICAgICAgICAgICAgY2FzZSA1MzY4NzA5MTI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDUzNjg3MDkxMjsKICAgICAgICAgICAgICAgIGNhc2UgMTA3Mzc0MTgyNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA3Mzc0MTgyNDsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWShlLCBuKSB7CiAgICAgICAgICAgIHZhciB0ID0gZS5wZW5kaW5nTGFuZXM7CiAgICAgICAgICAgIGlmICgwID09PSB0KSByZXR1cm4gMDsKICAgICAgICAgICAgdmFyIHIgPSAwLAogICAgICAgICAgICAgICAgbCA9IGUuc3VzcGVuZGVkTGFuZXMsCiAgICAgICAgICAgICAgICBhID0gZS5waW5nZWRMYW5lcywKICAgICAgICAgICAgICAgIHUgPSAyNjg0MzU0NTUgJiB0OwogICAgICAgICAgICBpZiAoMCAhPT0gdSkgewogICAgICAgICAgICAgICAgdmFyIG8gPSB1ICYgfmw7CiAgICAgICAgICAgICAgICAwICE9PSBvID8gciA9IEsobykgOiAwICE9IChhICY9IHUpICYmIChyID0gSyhhKSkKICAgICAgICAgICAgfSBlbHNlIDAgIT0gKHUgPSB0ICYgfmwpID8gciA9IEsodSkgOiAwICE9PSBhICYmIChyID0gSyhhKSk7CiAgICAgICAgICAgIGlmICgwID09PSByKSByZXR1cm4gMDsKICAgICAgICAgICAgaWYgKDAgIT09IG4gJiYgbiAhPT0gciAmJiAwID09IChuICYgbCkgJiYgKChsID0gciAmIC1yKSA+PSAoYSA9IG4gJiAtbikgfHwgMTYgPT09IGwgJiYgMCAhPSAoNDE5NDI0MCAmIGEpKSkgcmV0dXJuIG47CiAgICAgICAgICAgIGlmICgwICE9ICg0ICYgcikgJiYgKHIgfD0gMTYgJiB0KSwgMCAhPT0gKG4gPSBlLmVudGFuZ2xlZExhbmVzKSkKICAgICAgICAgICAgICAgIGZvciAoZSA9IGUuZW50YW5nbGVtZW50cywgbiAmPSByOyAwIDwgbjspIGwgPSAxIDw8ICh0ID0gMzEgLSB5dShuKSksIHIgfD0gZVt0XSwgbiAmPSB+bDsKICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFgoZSwgbikgewogICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiArIDI1MDsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICBjYXNlIDMyOgogICAgICAgICAgICAgICAgY2FzZSA2NDoKICAgICAgICAgICAgICAgIGNhc2UgMTI4OgogICAgICAgICAgICAgICAgY2FzZSAyNTY6CiAgICAgICAgICAgICAgICBjYXNlIDUxMjoKICAgICAgICAgICAgICAgIGNhc2UgMTAyNDoKICAgICAgICAgICAgICAgIGNhc2UgMjA0ODoKICAgICAgICAgICAgICAgIGNhc2UgNDA5NjoKICAgICAgICAgICAgICAgIGNhc2UgODE5MjoKICAgICAgICAgICAgICAgIGNhc2UgMTYzODQ6CiAgICAgICAgICAgICAgICBjYXNlIDMyNzY4OgogICAgICAgICAgICAgICAgY2FzZSA2NTUzNjoKICAgICAgICAgICAgICAgIGNhc2UgMTMxMDcyOgogICAgICAgICAgICAgICAgY2FzZSAyNjIxNDQ6CiAgICAgICAgICAgICAgICBjYXNlIDUyNDI4ODoKICAgICAgICAgICAgICAgIGNhc2UgMTA0ODU3NjoKICAgICAgICAgICAgICAgIGNhc2UgMjA5NzE1MjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiArIDVlMzsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEcoZSkgewogICAgICAgICAgICByZXR1cm4gMCAhPSAoZSA9IC0xMDczNzQxODI1ICYgZS5wZW5kaW5nTGFuZXMpID8gZSA6IDEwNzM3NDE4MjQgJiBlID8gMTA3Mzc0MTgyNCA6IDAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFooKSB7CiAgICAgICAgICAgIHZhciBlID0gd3U7CiAgICAgICAgICAgIHJldHVybiAwID09ICg0MTk0MjQwICYgKHd1IDw8PSAxKSkgJiYgKHd1ID0gNjQpLCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBKKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IFtdLCB0ID0gMDsgMzEgPiB0OyB0KyspIG4ucHVzaChlKTsKICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGVlKGUsIG4sIHQpIHsKICAgICAgICAgICAgZS5wZW5kaW5nTGFuZXMgfD0gbiwgNTM2ODcwOTEyICE9PSBuICYmIChlLnN1c3BlbmRlZExhbmVzID0gMCwgZS5waW5nZWRMYW5lcyA9IDApLCAoZSA9IGUuZXZlbnRUaW1lcylbbiA9IDMxIC0geXUobildID0gdAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbmUoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IGUuZW50YW5nbGVkTGFuZXMgfD0gbjsKICAgICAgICAgICAgZm9yIChlID0gZS5lbnRhbmdsZW1lbnRzOyB0OykgewogICAgICAgICAgICAgICAgdmFyIHIgPSAzMSAtIHl1KHQpLAogICAgICAgICAgICAgICAgICAgIGwgPSAxIDw8IHI7CiAgICAgICAgICAgICAgICBsICYgbiB8IGVbcl0gJiBuICYmIChlW3JdIHw9IG4pLCB0ICY9IH5sCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHRlKGUpIHsKICAgICAgICAgICAgcmV0dXJuIDEgPCAoZSAmPSAtZSkgPyA0IDwgZSA/IDAgIT0gKDI2ODQzNTQ1NSAmIGUpID8gMTYgOiA1MzY4NzA5MTIgOiA0IDogMQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcmUoZSwgbikgewogICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgImZvY3VzaW4iOgogICAgICAgICAgICAgICAgY2FzZSAiZm9jdXNvdXQiOgogICAgICAgICAgICAgICAgICAgIHp1ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImRyYWdlbnRlciI6CiAgICAgICAgICAgICAgICBjYXNlICJkcmFnbGVhdmUiOgogICAgICAgICAgICAgICAgICAgIE51ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNlb3ZlciI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZW91dCI6CiAgICAgICAgICAgICAgICAgICAgUHUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcm92ZXIiOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcm91dCI6CiAgICAgICAgICAgICAgICAgICAgX3UuZGVsZXRlKG4ucG9pbnRlcklkKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImdvdHBvaW50ZXJjYXB0dXJlIjoKICAgICAgICAgICAgICAgIGNhc2UgImxvc3Rwb2ludGVyY2FwdHVyZSI6CiAgICAgICAgICAgICAgICAgICAgTHUuZGVsZXRlKG4ucG9pbnRlcklkKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBsZShlLCBuLCB0LCByLCBsLCBhKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSBlIHx8IGUubmF0aXZlRXZlbnQgIT09IGEgPyAoZSA9IHsKICAgICAgICAgICAgICAgIGJsb2NrZWRPbjogbiwKICAgICAgICAgICAgICAgIGRvbUV2ZW50TmFtZTogdCwKICAgICAgICAgICAgICAgIGV2ZW50U3lzdGVtRmxhZ3M6IHIsCiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudDogYSwKICAgICAgICAgICAgICAgIHRhcmdldENvbnRhaW5lcnM6IFtsXQogICAgICAgICAgICB9LCBudWxsICE9PSBuICYmIG51bGwgIT09IChuID0gbW4obikpICYmIFlzKG4pLCBlKSA6IChlLmV2ZW50U3lzdGVtRmxhZ3MgfD0gciwgbiA9IGUudGFyZ2V0Q29udGFpbmVycywgbnVsbCAhPT0gbCAmJiAtMSA9PT0gbi5pbmRleE9mKGwpICYmIG4ucHVzaChsKSwgZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGFlKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBwbihlLnRhcmdldCk7CiAgICAgICAgICAgIGlmIChudWxsICE9PSBuKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IEgobik7CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gdCkKICAgICAgICAgICAgICAgICAgICBpZiAoMTMgPT09IChuID0gdC50YWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAobiA9IFEodCkpKSByZXR1cm4gZS5ibG9ja2VkT24gPSBuLCB2b2lkIFpzKGUucHJpb3JpdHksIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhzKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoMyA9PT0gbiAmJiB0LnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKSByZXR1cm4gdm9pZChlLmJsb2NrZWRPbiA9IDMgPT09IHQudGFnID8gdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyA6IG51bGwpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZS5ibG9ja2VkT24gPSBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB1ZShlKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSBlLmJsb2NrZWRPbikgcmV0dXJuICExOwogICAgICAgICAgICBmb3IgKHZhciBuID0gZS50YXJnZXRDb250YWluZXJzOyAwIDwgbi5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IG1lKGUuZG9tRXZlbnROYW1lLCBlLmV2ZW50U3lzdGVtRmxhZ3MsIG5bMF0sIGUubmF0aXZlRXZlbnQpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHQpIHJldHVybiBudWxsICE9PSAobiA9IG1uKHQpKSAmJiBZcyhuKSwgZS5ibG9ja2VkT24gPSB0LCAhMTsKICAgICAgICAgICAgICAgIHZhciByID0gbmV3KHQgPSBlLm5hdGl2ZUV2ZW50KS5jb25zdHJ1Y3Rvcih0LnR5cGUsIHQpOwogICAgICAgICAgICAgICAgVWEgPSByLCB0LnRhcmdldC5kaXNwYXRjaEV2ZW50KHIpLCBVYSA9IG51bGwsIG4uc2hpZnQoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb2UoZSwgbiwgdCkgewogICAgICAgICAgICB1ZShlKSAmJiB0LmRlbGV0ZShuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaWUoKSB7CiAgICAgICAgICAgIEV1ID0gITEsIG51bGwgIT09IHp1ICYmIHVlKHp1KSAmJiAoenUgPSBudWxsKSwgbnVsbCAhPT0gTnUgJiYgdWUoTnUpICYmIChOdSA9IG51bGwpLCBudWxsICE9PSBQdSAmJiB1ZShQdSkgJiYgKFB1ID0gbnVsbCksIF91LmZvckVhY2gob2UpLCBMdS5mb3JFYWNoKG9lKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc2UoZSwgbikgewogICAgICAgICAgICBlLmJsb2NrZWRPbiA9PT0gbiAmJiAoZS5ibG9ja2VkT24gPSBudWxsLCBFdSB8fCAoRXUgPSAhMCwgcnUobHUsIGllKSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjZShlKSB7CiAgICAgICAgICAgIGlmICgwIDwgQ3UubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBzZShDdVswXSwgZSk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMTsgbiA8IEN1Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBDdVtuXTsKICAgICAgICAgICAgICAgICAgICB0LmJsb2NrZWRPbiA9PT0gZSAmJiAodC5ibG9ja2VkT24gPSBudWxsKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAobnVsbCAhPT0genUgJiYgc2UoenUsIGUpLCBudWxsICE9PSBOdSAmJiBzZShOdSwgZSksIG51bGwgIT09IFB1ICYmIHNlKFB1LCBlKSwgbiA9IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2UobiwgZSkKICAgICAgICAgICAgICAgIH0sIF91LmZvckVhY2gobiksIEx1LmZvckVhY2gobiksIG4gPSAwOyBuIDwgVHUubGVuZ3RoOyBuKyspKHQgPSBUdVtuXSkuYmxvY2tlZE9uID09PSBlICYmICh0LmJsb2NrZWRPbiA9IG51bGwpOwogICAgICAgICAgICBmb3IgKDsgMCA8IFR1Lmxlbmd0aCAmJiBudWxsID09PSAobiA9IFR1WzBdKS5ibG9ja2VkT247KSBhZShuKSwgbnVsbCA9PT0gbi5ibG9ja2VkT24gJiYgVHUuc2hpZnQoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZmUoZSwgbiwgdCwgcikgewogICAgICAgICAgICB2YXIgbCA9IHh1LAogICAgICAgICAgICAgICAgYSA9IEZ1LnRyYW5zaXRpb247CiAgICAgICAgICAgIEZ1LnRyYW5zaXRpb24gPSBudWxsOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgeHUgPSAxLCBwZShlLCBuLCB0LCByKQogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgeHUgPSBsLCBGdS50cmFuc2l0aW9uID0gYQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBkZShlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHZhciBsID0geHUsCiAgICAgICAgICAgICAgICBhID0gRnUudHJhbnNpdGlvbjsKICAgICAgICAgICAgRnUudHJhbnNpdGlvbiA9IG51bGw7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB4dSA9IDQsIHBlKGUsIG4sIHQsIHIpCiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICB4dSA9IGwsIEZ1LnRyYW5zaXRpb24gPSBhCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHBlKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgaWYgKFJ1KSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IG1lKGUsIG4sIHQsIHIpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGwpIEplKGUsIG4sIHIsIER1LCB0KSwgcmUoZSwgcik7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChmdW5jdGlvbihlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZm9jdXNpbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHp1ID0gbGUoenUsIGUsIG4sIHQsIHIsIGwpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRyYWdlbnRlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51ID0gbGUoTnUsIGUsIG4sIHQsIHIsIGwpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNlb3ZlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFB1ID0gbGUoUHUsIGUsIG4sIHQsIHIsIGwpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBvaW50ZXJvdmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGwucG9pbnRlcklkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdS5zZXQoYSwgbGUoX3UuZ2V0KGEpIHx8IG51bGwsIGUsIG4sIHQsIHIsIGwpKSwgITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnb3Rwb2ludGVyY2FwdHVyZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPSBsLnBvaW50ZXJJZCwgTHUuc2V0KGEsIGxlKEx1LmdldChhKSB8fCBudWxsLCBlLCBuLCB0LCByLCBsKSksICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgfShsLCBlLCBuLCB0LCByKSkgci5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlKGUsIHIpLCA0ICYgbiAmJiAtMSA8IE11LmluZGV4T2YoZSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbnVsbCAhPT0gbDspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBtbihsKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGEgJiYgS3MoYSksIG51bGwgPT09IChhID0gbWUoZSwgbiwgdCwgcikpICYmIEplKGUsIG4sIHIsIER1LCB0KSwgYSA9PT0gbCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGwgJiYgci5zdG9wUHJvcGFnYXRpb24oKQogICAgICAgICAgICAgICAgfSBlbHNlIEplKGUsIG4sIHIsIG51bGwsIHQpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1lKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgaWYgKER1ID0gbnVsbCwgbnVsbCAhPT0gKGUgPSBwbihlID0gRChyKSkpKQogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IChuID0gSChlKSkpIGUgPSBudWxsOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoMTMgPT09ICh0ID0gbi50YWcpKSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKGUgPSBRKG4pKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICBlID0gbnVsbAogICAgICAgICAgICB9IGVsc2UgaWYgKDMgPT09IHQpIHsKICAgICAgICAgICAgICAgIGlmIChuLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKSByZXR1cm4gMyA9PT0gbi50YWcgPyBuLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIDogbnVsbDsKICAgICAgICAgICAgICAgIGUgPSBudWxsCiAgICAgICAgICAgIH0gZWxzZSBuICE9PSBlICYmIChlID0gbnVsbCk7CiAgICAgICAgICAgIHJldHVybiBEdSA9IGUsIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhlKGUpIHsKICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJjYW5jZWwiOgogICAgICAgICAgICAgICAgY2FzZSAiY2xpY2siOgogICAgICAgICAgICAgICAgY2FzZSAiY2xvc2UiOgogICAgICAgICAgICAgICAgY2FzZSAiY29udGV4dG1lbnUiOgogICAgICAgICAgICAgICAgY2FzZSAiY29weSI6CiAgICAgICAgICAgICAgICBjYXNlICJjdXQiOgogICAgICAgICAgICAgICAgY2FzZSAiYXV4Y2xpY2siOgogICAgICAgICAgICAgICAgY2FzZSAiZGJsY2xpY2siOgogICAgICAgICAgICAgICAgY2FzZSAiZHJhZ2VuZCI6CiAgICAgICAgICAgICAgICBjYXNlICJkcmFnc3RhcnQiOgogICAgICAgICAgICAgICAgY2FzZSAiZHJvcCI6CiAgICAgICAgICAgICAgICBjYXNlICJmb2N1c2luIjoKICAgICAgICAgICAgICAgIGNhc2UgImZvY3Vzb3V0IjoKICAgICAgICAgICAgICAgIGNhc2UgImlucHV0IjoKICAgICAgICAgICAgICAgIGNhc2UgImludmFsaWQiOgogICAgICAgICAgICAgICAgY2FzZSAia2V5ZG93biI6CiAgICAgICAgICAgICAgICBjYXNlICJrZXlwcmVzcyI6CiAgICAgICAgICAgICAgICBjYXNlICJrZXl1cCI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZWRvd24iOgogICAgICAgICAgICAgICAgY2FzZSAibW91c2V1cCI6CiAgICAgICAgICAgICAgICBjYXNlICJwYXN0ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJwYXVzZSI6CiAgICAgICAgICAgICAgICBjYXNlICJwbGF5IjoKICAgICAgICAgICAgICAgIGNhc2UgInBvaW50ZXJjYW5jZWwiOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcmRvd24iOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcnVwIjoKICAgICAgICAgICAgICAgIGNhc2UgInJhdGVjaGFuZ2UiOgogICAgICAgICAgICAgICAgY2FzZSAicmVzZXQiOgogICAgICAgICAgICAgICAgY2FzZSAicmVzaXplIjoKICAgICAgICAgICAgICAgIGNhc2UgInNlZWtlZCI6CiAgICAgICAgICAgICAgICBjYXNlICJzdWJtaXQiOgogICAgICAgICAgICAgICAgY2FzZSAidG91Y2hjYW5jZWwiOgogICAgICAgICAgICAgICAgY2FzZSAidG91Y2hlbmQiOgogICAgICAgICAgICAgICAgY2FzZSAidG91Y2hzdGFydCI6CiAgICAgICAgICAgICAgICBjYXNlICJ2b2x1bWVjaGFuZ2UiOgogICAgICAgICAgICAgICAgY2FzZSAiY2hhbmdlIjoKICAgICAgICAgICAgICAgIGNhc2UgInNlbGVjdGlvbmNoYW5nZSI6CiAgICAgICAgICAgICAgICBjYXNlICJ0ZXh0SW5wdXQiOgogICAgICAgICAgICAgICAgY2FzZSAiY29tcG9zaXRpb25zdGFydCI6CiAgICAgICAgICAgICAgICBjYXNlICJjb21wb3NpdGlvbmVuZCI6CiAgICAgICAgICAgICAgICBjYXNlICJjb21wb3NpdGlvbnVwZGF0ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJiZWZvcmVibHVyIjoKICAgICAgICAgICAgICAgIGNhc2UgImFmdGVyYmx1ciI6CiAgICAgICAgICAgICAgICBjYXNlICJiZWZvcmVpbnB1dCI6CiAgICAgICAgICAgICAgICBjYXNlICJibHVyIjoKICAgICAgICAgICAgICAgIGNhc2UgImZ1bGxzY3JlZW5jaGFuZ2UiOgogICAgICAgICAgICAgICAgY2FzZSAiZm9jdXMiOgogICAgICAgICAgICAgICAgY2FzZSAiaGFzaGNoYW5nZSI6CiAgICAgICAgICAgICAgICBjYXNlICJwb3BzdGF0ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJzZWxlY3QiOgogICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0c3RhcnQiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgY2FzZSAiZHJhZyI6CiAgICAgICAgICAgICAgICBjYXNlICJkcmFnZW50ZXIiOgogICAgICAgICAgICAgICAgY2FzZSAiZHJhZ2V4aXQiOgogICAgICAgICAgICAgICAgY2FzZSAiZHJhZ2xlYXZlIjoKICAgICAgICAgICAgICAgIGNhc2UgImRyYWdvdmVyIjoKICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNlbW92ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZW91dCI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZW92ZXIiOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcm1vdmUiOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcm91dCI6CiAgICAgICAgICAgICAgICBjYXNlICJwb2ludGVyb3ZlciI6CiAgICAgICAgICAgICAgICBjYXNlICJzY3JvbGwiOgogICAgICAgICAgICAgICAgY2FzZSAidG9nZ2xlIjoKICAgICAgICAgICAgICAgIGNhc2UgInRvdWNobW92ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJ3aGVlbCI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZWVudGVyIjoKICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNlbGVhdmUiOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcmVudGVyIjoKICAgICAgICAgICAgICAgIGNhc2UgInBvaW50ZXJsZWF2ZSI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CiAgICAgICAgICAgICAgICBjYXNlICJtZXNzYWdlIjoKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBmdToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGR1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgcHU6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbXU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTY7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaHU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNTM2ODcwOTEyOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE2CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTYKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ2UoKSB7CiAgICAgICAgICAgIGlmIChVdSkgcmV0dXJuIFV1OwogICAgICAgICAgICB2YXIgZSwgbiwgdCA9IEl1LAogICAgICAgICAgICAgICAgciA9IHQubGVuZ3RoLAogICAgICAgICAgICAgICAgbCA9ICJ2YWx1ZSIgaW4gT3UgPyBPdS52YWx1ZSA6IE91LnRleHRDb250ZW50LAogICAgICAgICAgICAgICAgYSA9IGwubGVuZ3RoOwogICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgciAmJiB0W2VdID09PSBsW2VdOyBlKyspOwogICAgICAgICAgICB2YXIgdSA9IHIgLSBlOwogICAgICAgICAgICBmb3IgKG4gPSAxOyBuIDw9IHUgJiYgdFtyIC0gbl0gPT09IGxbYSAtIG5dOyBuKyspOwogICAgICAgICAgICByZXR1cm4gVXUgPSBsLnNsaWNlKGUsIDEgPCBuID8gMSAtIG4gOiB2b2lkIDApCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB2ZShlKSB7CiAgICAgICAgICAgIHZhciBuID0gZS5rZXlDb2RlOwogICAgICAgICAgICByZXR1cm4gImNoYXJDb2RlIiBpbiBlID8gMCA9PT0gKGUgPSBlLmNoYXJDb2RlKSAmJiAxMyA9PT0gbiAmJiAoZSA9IDEzKSA6IGUgPSBuLCAxMCA9PT0gZSAmJiAoZSA9IDEzKSwgMzIgPD0gZSB8fCAxMyA9PT0gZSA/IGUgOiAwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB5ZSgpIHsKICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBiZSgpIHsKICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBrZShlKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIG4obiwgdCwgciwgbCwgYSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdSBpbiB0aGlzLl9yZWFjdE5hbWUgPSBuLCB0aGlzLl90YXJnZXRJbnN0ID0gciwgdGhpcy50eXBlID0gdCwgdGhpcy5uYXRpdmVFdmVudCA9IGwsIHRoaXMudGFyZ2V0ID0gYSwgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbnVsbCwgZSkgZS5oYXNPd25Qcm9wZXJ0eSh1KSAmJiAobiA9IGVbdV0sIHRoaXNbdV0gPSBuID8gbihsKSA6IGxbdV0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gKG51bGwgIT0gbC5kZWZhdWx0UHJldmVudGVkID8gbC5kZWZhdWx0UHJldmVudGVkIDogITEgPT09IGwucmV0dXJuVmFsdWUpID8geWUgOiBiZSwgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGJlLCB0aGlzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIExhKG4ucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gITA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm5hdGl2ZUV2ZW50OwogICAgICAgICAgICAgICAgICAgIGUgJiYgKGUucHJldmVudERlZmF1bHQgPyBlLnByZXZlbnREZWZhdWx0KCkgOiAidW5rbm93biIgIT0gdHlwZW9mIGUucmV0dXJuVmFsdWUgJiYgKGUucmV0dXJuVmFsdWUgPSAhMSksIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0geWUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMubmF0aXZlRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgZSAmJiAoZS5zdG9wUHJvcGFnYXRpb24gPyBlLnN0b3BQcm9wYWdhdGlvbigpIDogInVua25vd24iICE9IHR5cGVvZiBlLmNhbmNlbEJ1YmJsZSAmJiAoZS5jYW5jZWxCdWJibGUgPSAhMCksIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSB5ZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwZXJzaXN0OiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgaXNQZXJzaXN0ZW50OiB5ZQogICAgICAgICAgICB9KSwgbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd2UoZSkgewogICAgICAgICAgICB2YXIgbiA9IHRoaXMubmF0aXZlRXZlbnQ7CiAgICAgICAgICAgIHJldHVybiBuLmdldE1vZGlmaWVyU3RhdGUgPyBuLmdldE1vZGlmaWVyU3RhdGUoZSkgOiAhIShlID0gZW9bZV0pICYmICEhbltlXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gU2UoZSkgewogICAgICAgICAgICByZXR1cm4gd2UKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHhlKGUsIG4pIHsKICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJrZXl1cCI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xICE9PSBpby5pbmRleE9mKG4ua2V5Q29kZSk7CiAgICAgICAgICAgICAgICBjYXNlICJrZXlkb3duIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjI5ICE9PSBuLmtleUNvZGU7CiAgICAgICAgICAgICAgICBjYXNlICJrZXlwcmVzcyI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZWRvd24iOgogICAgICAgICAgICAgICAgY2FzZSAiZm9jdXNvdXQiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEVlKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZihlID0gZS5kZXRhaWwpICYmICJkYXRhIiBpbiBlID8gZS5kYXRhIDogbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQ2UoZSkgewogICAgICAgICAgICB2YXIgbiA9IGUgJiYgZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgIHJldHVybiAiaW5wdXQiID09PSBuID8gISF2b1tlLnR5cGVdIDogInRleHRhcmVhIiA9PT0gbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gemUoZSwgbiwgdCwgcikgewogICAgICAgICAgICBJKHIpLCAwIDwgKG4gPSBubihuLCAib25DaGFuZ2UiKSkubGVuZ3RoICYmICh0ID0gbmV3IEF1KCJvbkNoYW5nZSIsICJjaGFuZ2UiLCBudWxsLCB0LCByKSwgZS5wdXNoKHsKICAgICAgICAgICAgICAgIGV2ZW50OiB0LAogICAgICAgICAgICAgICAgbGlzdGVuZXJzOiBuCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTmUoZSkgewogICAgICAgICAgICBLZShlLCAwKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUGUoZSkgewogICAgICAgICAgICBpZiAoZyhobihlKSkpIHJldHVybiBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBfZShlLCBuKSB7CiAgICAgICAgICAgIGlmICgiY2hhbmdlIiA9PT0gZSkgcmV0dXJuIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIExlKCkgewogICAgICAgICAgICB5byAmJiAoeW8uZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLCBUZSksIGJvID0geW8gPSBudWxsKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVGUoZSkgewogICAgICAgICAgICBpZiAoInZhbHVlIiA9PT0gZS5wcm9wZXJ0eU5hbWUgJiYgUGUoYm8pKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IFtdOwogICAgICAgICAgICAgICAgemUobiwgYm8sIGUsIEQoZSkpLCBWKE5lLCBuKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBNZShlLCBuLCB0KSB7CiAgICAgICAgICAgICJmb2N1c2luIiA9PT0gZSA/IChMZSgpLCBibyA9IHQsICh5byA9IG4pLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIiwgVGUpKSA6ICJmb2N1c291dCIgPT09IGUgJiYgTGUoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRmUoZSwgbikgewogICAgICAgICAgICBpZiAoInNlbGVjdGlvbmNoYW5nZSIgPT09IGUgfHwgImtleXVwIiA9PT0gZSB8fCAia2V5ZG93biIgPT09IGUpIHJldHVybiBQZShibykKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFJlKGUsIG4pIHsKICAgICAgICAgICAgaWYgKCJjbGljayIgPT09IGUpIHJldHVybiBQZShuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRGUoZSwgbikgewogICAgICAgICAgICBpZiAoImlucHV0IiA9PT0gZSB8fCAiY2hhbmdlIiA9PT0gZSkgcmV0dXJuIFBlKG4pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBPZShlLCBuKSB7CiAgICAgICAgICAgIGlmICh3byhlLCBuKSkgcmV0dXJuICEwOwogICAgICAgICAgICBpZiAoIm9iamVjdCIgIT0gdHlwZW9mIGUgfHwgbnVsbCA9PT0gZSB8fCAib2JqZWN0IiAhPSB0eXBlb2YgbiB8fCBudWxsID09PSBuKSByZXR1cm4gITE7CiAgICAgICAgICAgIHZhciB0ID0gT2JqZWN0LmtleXMoZSksCiAgICAgICAgICAgICAgICByID0gT2JqZWN0LmtleXMobik7CiAgICAgICAgICAgIGlmICh0Lmxlbmd0aCAhPT0gci5sZW5ndGgpIHJldHVybiAhMTsKICAgICAgICAgICAgZm9yIChyID0gMDsgciA8IHQubGVuZ3RoOyByKyspIHsKICAgICAgICAgICAgICAgIHZhciBsID0gdFtyXTsKICAgICAgICAgICAgICAgIGlmICghYWEuY2FsbChuLCBsKSB8fCAhd28oZVtsXSwgbltsXSkpIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSWUoZSkgewogICAgICAgICAgICBmb3IgKDsgZSAmJiBlLmZpcnN0Q2hpbGQ7KSBlID0gZS5maXJzdENoaWxkOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVWUoZSwgbikgewogICAgICAgICAgICB2YXIgdCwgciA9IEllKGUpOwogICAgICAgICAgICBmb3IgKGUgPSAwOyByOykgewogICAgICAgICAgICAgICAgaWYgKDMgPT09IHIubm9kZVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGUgKyByLnRleHRDb250ZW50Lmxlbmd0aCwgZSA8PSBuICYmIHQgPj0gbikgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogciwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBuIC0gZQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgZSA9IHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgcjspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIubmV4dFNpYmxpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLm5leHRTaWJsaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgciA9IHZvaWQgMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgciA9IEllKHIpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFZlKGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuICEoIWUgfHwgIW4pICYmIChlID09PSBuIHx8ICghZSB8fCAzICE9PSBlLm5vZGVUeXBlKSAmJiAobiAmJiAzID09PSBuLm5vZGVUeXBlID8gVmUoZSwgbi5wYXJlbnROb2RlKSA6ICJjb250YWlucyIgaW4gZSA/IGUuY29udGFpbnMobikgOiAhIWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgISEoMTYgJiBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG4pKSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBBZSgpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IHdpbmRvdywgbiA9IHYoKTsgbiBpbnN0YW5jZW9mIGUuSFRNTElGcmFtZUVsZW1lbnQ7KSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gInN0cmluZyIgPT0gdHlwZW9mIG4uY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdCA9ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIXQpIGJyZWFrOwogICAgICAgICAgICAgICAgbiA9IHYoKGUgPSBuLmNvbnRlbnRXaW5kb3cpLmRvY3VtZW50KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBCZShlKSB7CiAgICAgICAgICAgIHZhciBuID0gZSAmJiBlLm5vZGVOYW1lICYmIGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgcmV0dXJuIG4gJiYgKCJpbnB1dCIgPT09IG4gJiYgKCJ0ZXh0IiA9PT0gZS50eXBlIHx8ICJzZWFyY2giID09PSBlLnR5cGUgfHwgInRlbCIgPT09IGUudHlwZSB8fCAidXJsIiA9PT0gZS50eXBlIHx8ICJwYXNzd29yZCIgPT09IGUudHlwZSkgfHwgInRleHRhcmVhIiA9PT0gbiB8fCAidHJ1ZSIgPT09IGUuY29udGVudEVkaXRhYmxlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gV2UoZSkgewogICAgICAgICAgICB2YXIgbiA9IEFlKCksCiAgICAgICAgICAgICAgICB0ID0gZS5mb2N1c2VkRWxlbSwKICAgICAgICAgICAgICAgIHIgPSBlLnNlbGVjdGlvblJhbmdlOwogICAgICAgICAgICBpZiAobiAhPT0gdCAmJiB0ICYmIHQub3duZXJEb2N1bWVudCAmJiBWZSh0Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB0KSkgewogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHIgJiYgQmUodCkpCiAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSByLnN0YXJ0LCB2b2lkIDAgPT09IChlID0gci5lbmQpICYmIChlID0gbiksICJzZWxlY3Rpb25TdGFydCIgaW4gdCkgdC5zZWxlY3Rpb25TdGFydCA9IG4sIHQuc2VsZWN0aW9uRW5kID0gTWF0aC5taW4oZSwgdC52YWx1ZS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChlID0gKG4gPSB0Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpICYmIG4uZGVmYXVsdFZpZXcgfHwgd2luZG93KS5nZXRTZWxlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICBlID0gZS5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHQudGV4dENvbnRlbnQubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5taW4oci5zdGFydCwgbCk7CiAgICAgICAgICAgICAgICAgICAgciA9IHZvaWQgMCA9PT0gci5lbmQgPyBhIDogTWF0aC5taW4oci5lbmQsIGwpLCAhZS5leHRlbmQgJiYgYSA+IHIgJiYgKGwgPSByLCByID0gYSwgYSA9IGwpLCBsID0gVWUodCwgYSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBVZSh0LCByKTsKICAgICAgICAgICAgICAgICAgICBsICYmIHUgJiYgKDEgIT09IGUucmFuZ2VDb3VudCB8fCBlLmFuY2hvck5vZGUgIT09IGwubm9kZSB8fCBlLmFuY2hvck9mZnNldCAhPT0gbC5vZmZzZXQgfHwgZS5mb2N1c05vZGUgIT09IHUubm9kZSB8fCBlLmZvY3VzT2Zmc2V0ICE9PSB1Lm9mZnNldCkgJiYgKChuID0gbi5jcmVhdGVSYW5nZSgpKS5zZXRTdGFydChsLm5vZGUsIGwub2Zmc2V0KSwgZS5yZW1vdmVBbGxSYW5nZXMoKSwgYSA+IHIgPyAoZS5hZGRSYW5nZShuKSwgZS5leHRlbmQodS5ub2RlLCB1Lm9mZnNldCkpIDogKG4uc2V0RW5kKHUubm9kZSwgdS5vZmZzZXQpLCBlLmFkZFJhbmdlKG4pKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAobiA9IFtdLCBlID0gdDsgZSA9IGUucGFyZW50Tm9kZTspIDEgPT09IGUubm9kZVR5cGUgJiYgbi5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBlLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IGUuc2Nyb2xsTGVmdCwKICAgICAgICAgICAgICAgICAgICB0b3A6IGUuc2Nyb2xsVG9wCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGZvciAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgdC5mb2N1cyAmJiB0LmZvY3VzKCksIHQgPSAwOyB0IDwgbi5sZW5ndGg7IHQrKykoZSA9IG5bdF0pLmVsZW1lbnQuc2Nyb2xsTGVmdCA9IGUubGVmdCwgZS5lbGVtZW50LnNjcm9sbFRvcCA9IGUudG9wCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEhlKGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSB0LndpbmRvdyA9PT0gdCA/IHQuZG9jdW1lbnQgOiA5ID09PSB0Lm5vZGVUeXBlID8gdCA6IHQub3duZXJEb2N1bWVudDsKICAgICAgICAgICAgem8gfHwgbnVsbCA9PSB4byB8fCB4byAhPT0gdihyKSB8fCAociA9ICJzZWxlY3Rpb25TdGFydCIgaW4gKHIgPSB4bykgJiYgQmUocikgPyB7CiAgICAgICAgICAgICAgICBzdGFydDogci5zZWxlY3Rpb25TdGFydCwKICAgICAgICAgICAgICAgIGVuZDogci5zZWxlY3Rpb25FbmQKICAgICAgICAgICAgfSA6IHsKICAgICAgICAgICAgICAgIGFuY2hvck5vZGU6IChyID0gKHIub3duZXJEb2N1bWVudCAmJiByLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93KS5nZXRTZWxlY3Rpb24oKSkuYW5jaG9yTm9kZSwKICAgICAgICAgICAgICAgIGFuY2hvck9mZnNldDogci5hbmNob3JPZmZzZXQsCiAgICAgICAgICAgICAgICBmb2N1c05vZGU6IHIuZm9jdXNOb2RlLAogICAgICAgICAgICAgICAgZm9jdXNPZmZzZXQ6IHIuZm9jdXNPZmZzZXQKICAgICAgICAgICAgfSwgQ28gJiYgT2UoQ28sIHIpIHx8IChDbyA9IHIsIDAgPCAociA9IG5uKEVvLCAib25TZWxlY3QiKSkubGVuZ3RoICYmIChuID0gbmV3IEF1KCJvblNlbGVjdCIsICJzZWxlY3QiLCBudWxsLCBuLCB0KSwgZS5wdXNoKHsKICAgICAgICAgICAgICAgIGV2ZW50OiBuLAogICAgICAgICAgICAgICAgbGlzdGVuZXJzOiByCiAgICAgICAgICAgIH0pLCBuLnRhcmdldCA9IHhvKSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBRZShlLCBuKSB7CiAgICAgICAgICAgIHZhciB0ID0ge307CiAgICAgICAgICAgIHJldHVybiB0W2UudG9Mb3dlckNhc2UoKV0gPSBuLnRvTG93ZXJDYXNlKCksIHRbIldlYmtpdCIgKyBlXSA9ICJ3ZWJraXQiICsgbiwgdFsiTW96IiArIGVdID0gIm1veiIgKyBuLCB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBqZShlKSB7CiAgICAgICAgICAgIGlmIChQb1tlXSkgcmV0dXJuIFBvW2VdOwogICAgICAgICAgICBpZiAoIU5vW2VdKSByZXR1cm4gZTsKICAgICAgICAgICAgdmFyIG4sIHQgPSBOb1tlXTsKICAgICAgICAgICAgZm9yIChuIGluIHQpCiAgICAgICAgICAgICAgICBpZiAodC5oYXNPd25Qcm9wZXJ0eShuKSAmJiBuIGluIF9vKSByZXR1cm4gUG9bZV0gPSB0W25dOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gJGUoZSwgbikgewogICAgICAgICAgICBSby5zZXQoZSwgbiksIHIobiwgW2VdKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcWUoZSwgbiwgdCkgewogICAgICAgICAgICB2YXIgciA9IGUudHlwZSB8fCAidW5rbm93bi1ldmVudCI7CiAgICAgICAgICAgIGUuY3VycmVudFRhcmdldCA9IHQsIFcociwgbiwgdm9pZCAwLCBlKSwgZS5jdXJyZW50VGFyZ2V0ID0gbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gS2UoZSwgbikgewogICAgICAgICAgICBuID0gMCAhPSAoNCAmIG4pOwogICAgICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IGUubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgIHZhciByID0gZVt0XSwKICAgICAgICAgICAgICAgICAgICBsID0gci5ldmVudDsKICAgICAgICAgICAgICAgIHIgPSByLmxpc3RlbmVyczsKICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICBpZiAobikKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdSA9IHIubGVuZ3RoIC0gMTsgMCA8PSB1OyB1LS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gclt1XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gby5pbnN0YW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gby5jdXJyZW50VGFyZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBvLmxpc3RlbmVyLCBpICE9PSBhICYmIGwuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFlKGwsIG8sIHMpLCBhID0gaQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IDA7IHUgPCByLmxlbmd0aDsgdSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAobyA9IHJbdV0pLmluc3RhbmNlLCBzID0gby5jdXJyZW50VGFyZ2V0LCBvID0gby5saXN0ZW5lciwgaSAhPT0gYSAmJiBsLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWUobCwgbywgcyksIGEgPSBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKEphKSB0aHJvdyBlID0gZXUsIEphID0gITEsIGV1ID0gbnVsbCwgZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWWUoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IG5bR29dOwogICAgICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSBuW0dvXSA9IG5ldyBTZXQpOwogICAgICAgICAgICB2YXIgciA9IGUgKyAiX19idWJibGUiOwogICAgICAgICAgICB0LmhhcyhyKSB8fCAoWmUobiwgZSwgMiwgITEpLCB0LmFkZChyKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFhlKGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSAwOwogICAgICAgICAgICBuICYmIChyIHw9IDQpLCBaZSh0LCBlLCByLCBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gR2UoZSkgewogICAgICAgICAgICBpZiAoIWVbVW9dKSB7CiAgICAgICAgICAgICAgICBlW1VvXSA9ICEwLCB0YS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgInNlbGVjdGlvbmNoYW5nZSIgIT09IG4gJiYgKElvLmhhcyhuKSB8fCBYZShuLCAhMSwgZSksIFhlKG4sICEwLCBlKSkKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIHZhciBuID0gOSA9PT0gZS5ub2RlVHlwZSA/IGUgOiBlLm93bmVyRG9jdW1lbnQ7CiAgICAgICAgICAgICAgICBudWxsID09PSBuIHx8IG5bVW9dIHx8IChuW1VvXSA9ICEwLCBYZSgic2VsZWN0aW9uY2hhbmdlIiwgITEsIG4pKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBaZShlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHN3aXRjaCAoaGUobikpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICBsID0gZmU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgbCA9IGRlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBsID0gcGUKICAgICAgICAgICAgfQogICAgICAgICAgICB0ID0gbC5iaW5kKG51bGwsIG4sIHQsIGUpLCBsID0gdm9pZCAwLCAhamEgfHwgInRvdWNoc3RhcnQiICE9PSBuICYmICJ0b3VjaG1vdmUiICE9PSBuICYmICJ3aGVlbCIgIT09IG4gfHwgKGwgPSAhMCksIHIgPyB2b2lkIDAgIT09IGwgPyBlLmFkZEV2ZW50TGlzdGVuZXIobiwgdCwgewogICAgICAgICAgICAgICAgY2FwdHVyZTogITAsCiAgICAgICAgICAgICAgICBwYXNzaXZlOiBsCiAgICAgICAgICAgIH0pIDogZS5hZGRFdmVudExpc3RlbmVyKG4sIHQsICEwKSA6IHZvaWQgMCAhPT0gbCA/IGUuYWRkRXZlbnRMaXN0ZW5lcihuLCB0LCB7CiAgICAgICAgICAgICAgICBwYXNzaXZlOiBsCiAgICAgICAgICAgIH0pIDogZS5hZGRFdmVudExpc3RlbmVyKG4sIHQsICExKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSmUoZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICB2YXIgYSA9IHI7CiAgICAgICAgICAgIGlmICgwID09ICgxICYgbikgJiYgMCA9PSAoMiAmIG4pICYmIG51bGwgIT09IHIpIGU6IGZvciAoOzspIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSByKSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgdSA9IHIudGFnOwogICAgICAgICAgICAgICAgaWYgKDMgPT09IHUgfHwgNCA9PT0gdSkgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gci5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzsKICAgICAgICAgICAgICAgICAgICBpZiAobyA9PT0gbCB8fCA4ID09PSBvLm5vZGVUeXBlICYmIG8ucGFyZW50Tm9kZSA9PT0gbCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgaWYgKDQgPT09IHUpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IHIucmV0dXJuOyBudWxsICE9PSB1OykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB1LnRhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoMyA9PT0gaSB8fCA0ID09PSBpKSAmJiAoKGkgPSB1LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSA9PT0gbCB8fCA4ID09PSBpLm5vZGVUeXBlICYmIGkucGFyZW50Tm9kZSA9PT0gbCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB1LnJldHVybgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IG51bGwgIT09IG87KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSAodSA9IHBuKG8pKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoNSA9PT0gKGkgPSB1LnRhZykgfHwgNiA9PT0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGEgPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByID0gci5yZXR1cm4KICAgICAgICAgICAgfQogICAgICAgICAgICBWKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciByID0gYSwKICAgICAgICAgICAgICAgICAgICBsID0gRCh0KSwKICAgICAgICAgICAgICAgICAgICB1ID0gW107CiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBSby5nZXQoZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IEF1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5cHJlc3MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSB2ZSh0KSkgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImtleWRvd24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5dXAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0bzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImZvY3VzaW4iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAiZm9jdXMiLCBpID0gJHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmb2N1c291dCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9ICJibHVyIiwgaSA9ICR1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYmVmb3JlYmx1ciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhZnRlcmJsdXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAkdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNsaWNrIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMiA9PT0gdC5idXR0b24pIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhdXhjbGljayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkYmxjbGljayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtb3VzZWRvd24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW91c2Vtb3ZlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNldXAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW91c2VvdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW91c2VvdmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNvbnRleHRtZW51IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gUXU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkcmFnIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRyYWdlbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZHJhZ2VudGVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRyYWdleGl0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRyYWdsZWF2ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkcmFnb3ZlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkcmFnc3RhcnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZHJvcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGp1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG91Y2hjYW5jZWwiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG91Y2hlbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG91Y2htb3ZlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRvdWNoc3RhcnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBsbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTG86CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRvOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNbzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcXU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEZvOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBhbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNjcm9sbCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFd1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAid2hlZWwiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNvcHkiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY3V0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBhc3RlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gWXU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnb3Rwb2ludGVyY2FwdHVyZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsb3N0cG9pbnRlcmNhcHR1cmUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcmNhbmNlbCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwb2ludGVyZG93biI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwb2ludGVybW92ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwb2ludGVyb3V0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBvaW50ZXJvdmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBvaW50ZXJ1cCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHJvCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAwICE9ICg0ICYgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gIWMgJiYgInNjcm9sbCIgPT09IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYyA/IG51bGwgIT09IG8gPyBvICsgIkNhcHR1cmUiIDogbnVsbCA6IG87CiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCwgbSA9IHI7IG51bGwgIT09IG07KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IChwID0gbSkuc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDUgPT09IHAudGFnICYmIG51bGwgIT09IGggJiYgKHAgPSBoLCBudWxsICE9PSBkICYmIG51bGwgIT0gKGggPSBBKG0sIGQpKSAmJiBjLnB1c2goZW4obSwgaCwgcCkpKSwgZikgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gbS5yZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAwIDwgYy5sZW5ndGggJiYgKG8gPSBuZXcgaShvLCBzLCBudWxsLCB0LCBsKSwgdS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzOiBjCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgwID09ICg3ICYgbikpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9ICJtb3VzZW91dCIgPT09IGUgfHwgInBvaW50ZXJvdXQiID09PSBlLCAoIShvID0gIm1vdXNlb3ZlciIgPT09IGUgfHwgInBvaW50ZXJvdmVyIiA9PT0gZSkgfHwgdCA9PT0gVWEgfHwgIShzID0gdC5yZWxhdGVkVGFyZ2V0IHx8IHQuZnJvbUVsZW1lbnQpIHx8ICFwbihzKSAmJiAhc1tYb10pICYmIChpIHx8IG8pICYmIChvID0gbC53aW5kb3cgPT09IGwgPyBsIDogKG8gPSBsLm93bmVyRG9jdW1lbnQpID8gby5kZWZhdWx0VmlldyB8fCBvLnBhcmVudFdpbmRvdyA6IHdpbmRvdywgaSA/IChpID0gciwgbnVsbCAhPT0gKHMgPSAocyA9IHQucmVsYXRlZFRhcmdldCB8fCB0LnRvRWxlbWVudCkgPyBwbihzKSA6IG51bGwpICYmIChzICE9PSAoZiA9IEgocykpIHx8IDUgIT09IHMudGFnICYmIDYgIT09IHMudGFnKSAmJiAocyA9IG51bGwpKSA6IChpID0gbnVsbCwgcyA9IHIpLCBpICE9PSBzKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9IFF1LCBoID0gIm9uTW91c2VMZWF2ZSIsIGQgPSAib25Nb3VzZUVudGVyIiwgbSA9ICJtb3VzZSIsICJwb2ludGVyb3V0IiAhPT0gZSAmJiAicG9pbnRlcm92ZXIiICE9PSBlIHx8IChjID0gcm8sIGggPSAib25Qb2ludGVyTGVhdmUiLCBkID0gIm9uUG9pbnRlckVudGVyIiwgbSA9ICJwb2ludGVyIiksIGYgPSBudWxsID09IGkgPyBvIDogaG4oaSksIHAgPSBudWxsID09IHMgPyBvIDogaG4ocyksIChvID0gbmV3IGMoaCwgbSArICJsZWF2ZSIsIGksIHQsIGwpKS50YXJnZXQgPSBmLCBvLnJlbGF0ZWRUYXJnZXQgPSBwLCBoID0gbnVsbCwgcG4obCkgPT09IHIgJiYgKChjID0gbmV3IGMoZCwgbSArICJlbnRlciIsIHMsIHQsIGwpKS50YXJnZXQgPSBwLCBjLnJlbGF0ZWRUYXJnZXQgPSBmLCBoID0gYyksIGYgPSBoLCBpICYmIHMpIGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZCA9IHMsIG0gPSAwLCBwID0gYyA9IGk7IHA7IHAgPSB0bihwKSkgbSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwID0gMCwgaCA9IGQ7IGg7IGggPSB0bihoKSkgcCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDAgPCBtIC0gcDspIGMgPSB0bihjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0tLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyAwIDwgcCAtIG07KSBkID0gdG4oZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09PSBkIHx8IG51bGwgIT09IGQgJiYgYyA9PT0gZC5hbHRlcm5hdGUpIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRuKGMpLCBkID0gdG4oZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gaSAmJiBybih1LCBvLCBpLCBjLCAhMSksIG51bGwgIT09IHMgJiYgbnVsbCAhPT0gZiAmJiBybih1LCBmLCBzLCBjLCAhMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCJzZWxlY3QiID09PSAoaSA9IChvID0gciA/IGhuKHIpIDogd2luZG93KS5ub2RlTmFtZSAmJiBvLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpIHx8ICJpbnB1dCIgPT09IGkgJiYgImZpbGUiID09PSBvLnR5cGUpIHZhciBnID0gX2U7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQ2UobykpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrbykgZyA9IERlOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBGZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gTWUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UoaSA9IG8ubm9kZU5hbWUpICYmICJpbnB1dCIgPT09IGkudG9Mb3dlckNhc2UoKSAmJiAoImNoZWNrYm94IiA9PT0gby50eXBlIHx8ICJyYWRpbyIgPT09IG8udHlwZSkgJiYgKGcgPSBSZSk7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnICYmIChnID0gZyhlLCByKSkgPyB6ZSh1LCBnLCB0LCBsKSA6ICh2ICYmIHYoZSwgbywgciksICJmb2N1c291dCIgPT09IGUgJiYgKHYgPSBvLl93cmFwcGVyU3RhdGUpICYmIHYuY29udHJvbGxlZCAmJiAibnVtYmVyIiA9PT0gby50eXBlICYmIHgobywgIm51bWJlciIsIG8udmFsdWUpKSwgdiA9IHIgPyBobihyKSA6IHdpbmRvdywgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmb2N1c2luIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDZSh2KSB8fCAidHJ1ZSIgPT09IHYuY29udGVudEVkaXRhYmxlKSAmJiAoeG8gPSB2LCBFbyA9IHIsIENvID0gbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZm9jdXNvdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ28gPSBFbyA9IHhvID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtb3VzZWRvd24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgem8gPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjb250ZXh0bWVudSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNldXAiOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkcmFnZW5kIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvID0gITEsIEhlKHUsIHQsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlbGVjdGlvbmNoYW5nZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU28pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJrZXlkb3duIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5dXAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGUodSwgdCwgbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHNvKSBlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY29tcG9zaXRpb25zdGFydCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSAib25Db21wb3NpdGlvblN0YXJ0IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY29tcG9zaXRpb25lbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAib25Db21wb3NpdGlvbkVuZCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNvbXBvc2l0aW9udXBkYXRlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gIm9uQ29tcG9zaXRpb25VcGRhdGUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBiID0gdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgZ28gPyB4ZShlLCB0KSAmJiAoYiA9ICJvbkNvbXBvc2l0aW9uRW5kIikgOiAia2V5ZG93biIgPT09IGUgJiYgMjI5ID09PSB0LmtleUNvZGUgJiYgKGIgPSAib25Db21wb3NpdGlvblN0YXJ0Iik7CiAgICAgICAgICAgICAgICAgICAgYiAmJiAocG8gJiYgImtvIiAhPT0gdC5sb2NhbGUgJiYgKGdvIHx8ICJvbkNvbXBvc2l0aW9uU3RhcnQiICE9PSBiID8gIm9uQ29tcG9zaXRpb25FbmQiID09PSBiICYmIGdvICYmICh5ID0gZ2UoKSkgOiAoSXUgPSAidmFsdWUiIGluIChPdSA9IGwpID8gT3UudmFsdWUgOiBPdS50ZXh0Q29udGVudCwgZ28gPSAhMCkpLCAwIDwgKHYgPSBubihyLCBiKSkubGVuZ3RoICYmIChiID0gbmV3IFh1KGIsIGUsIG51bGwsIHQsIGwpLCB1LnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBldmVudDogYiwKICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzOiB2CiAgICAgICAgICAgICAgICAgICAgfSksICh5IHx8IG51bGwgIT09ICh5ID0gRWUodCkpKSAmJiAoYi5kYXRhID0geSkpKSwgKHkgPSBmbyA/IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjb21wb3NpdGlvbmVuZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVlKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5cHJlc3MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAzMiAhPT0gbi53aGljaCA/IG51bGwgOiAoaG8gPSAhMCwgbW8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dElucHV0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUgPSBuLmRhdGEpID09PSBtbyAmJiBobyA/IG51bGwgOiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfShlLCB0KSA6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdvKSByZXR1cm4gImNvbXBvc2l0aW9uZW5kIiA9PT0gZSB8fCAhc28gJiYgeGUoZSwgbikgPyAoZSA9IGdlKCksIFV1ID0gSXUgPSBPdSA9IG51bGwsIGdvID0gITEsIGUpIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwYXN0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5cHJlc3MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG4uY3RybEtleSB8fCBuLmFsdEtleSB8fCBuLm1ldGFLZXkpIHx8IG4uY3RybEtleSAmJiBuLmFsdEtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jaGFyICYmIDEgPCBuLmNoYXIubGVuZ3RoKSByZXR1cm4gbi5jaGFyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi53aGljaCkgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUobi53aGljaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjb21wb3NpdGlvbmVuZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvICYmICJrbyIgIT09IG4ubG9jYWxlID8gbnVsbCA6IG4uZGF0YQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfShlLCB0KSkgJiYgMCA8IChyID0gbm4ociwgIm9uQmVmb3JlSW5wdXQiKSkubGVuZ3RoICYmIChsID0gbmV3IEd1KCJvbkJlZm9yZUlucHV0IiwgImJlZm9yZWlucHV0IiwgbnVsbCwgdCwgbCksIHUucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBsLAogICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcnM6IHIKICAgICAgICAgICAgICAgICAgICB9KSwgbC5kYXRhID0geSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEtlKHUsIG4pCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZW4oZSwgbiwgdCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgaW5zdGFuY2U6IGUsCiAgICAgICAgICAgICAgICBsaXN0ZW5lcjogbiwKICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQ6IHQKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbm4oZSwgbikgewogICAgICAgICAgICBmb3IgKHZhciB0ID0gbiArICJDYXB0dXJlIiwgciA9IFtdOyBudWxsICE9PSBlOykgewogICAgICAgICAgICAgICAgdmFyIGwgPSBlLAogICAgICAgICAgICAgICAgICAgIGEgPSBsLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgIDUgPT09IGwudGFnICYmIG51bGwgIT09IGEgJiYgKGwgPSBhLCBudWxsICE9IChhID0gQShlLCB0KSkgJiYgci51bnNoaWZ0KGVuKGUsIGEsIGwpKSwgbnVsbCAhPSAoYSA9IEEoZSwgbikpICYmIHIucHVzaChlbihlLCBhLCBsKSkpLCBlID0gZS5yZXR1cm4KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdG4oZSkgewogICAgICAgICAgICBpZiAobnVsbCA9PT0gZSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGUgPSBlLnJldHVybgogICAgICAgICAgICB9IHdoaWxlIChlICYmIDUgIT09IGUudGFnKTsKICAgICAgICAgICAgcmV0dXJuIGUgfHwgbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcm4oZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICBmb3IgKHZhciBhID0gbi5fcmVhY3ROYW1lLCB1ID0gW107IG51bGwgIT09IHQgJiYgdCAhPT0gcjspIHsKICAgICAgICAgICAgICAgIHZhciBvID0gdCwKICAgICAgICAgICAgICAgICAgICBpID0gby5hbHRlcm5hdGUsCiAgICAgICAgICAgICAgICAgICAgcyA9IG8uc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGkgJiYgaSA9PT0gcikgYnJlYWs7CiAgICAgICAgICAgICAgICA1ID09PSBvLnRhZyAmJiBudWxsICE9PSBzICYmIChvID0gcywgbCA/IG51bGwgIT0gKGkgPSBBKHQsIGEpKSAmJiB1LnVuc2hpZnQoZW4odCwgaSwgbykpIDogbCB8fCBudWxsICE9IChpID0gQSh0LCBhKSkgJiYgdS5wdXNoKGVuKHQsIGksIG8pKSksIHQgPSB0LnJldHVybgogICAgICAgICAgICB9CiAgICAgICAgICAgIDAgIT09IHUubGVuZ3RoICYmIGUucHVzaCh7CiAgICAgICAgICAgICAgICBldmVudDogbiwKICAgICAgICAgICAgICAgIGxpc3RlbmVyczogdQogICAgICAgICAgICB9KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbG4oZSkgewogICAgICAgICAgICByZXR1cm4gKCJzdHJpbmciID09IHR5cGVvZiBlID8gZSA6ICIiICsgZSkucmVwbGFjZShWbywgIlxuIikucmVwbGFjZShBbywgIiIpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBhbihlLCBuLCByLCBsKSB7CiAgICAgICAgICAgIGlmIChuID0gbG4obiksIGxuKGUpICE9PSBuICYmIHIpIHRocm93IEVycm9yKHQoNDI1KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHVuKCkge30KCiAgICAgICAgZnVuY3Rpb24gb24oZSwgbikgewogICAgICAgICAgICByZXR1cm4gInRleHRhcmVhIiA9PT0gZSB8fCAibm9zY3JpcHQiID09PSBlIHx8ICJzdHJpbmciID09IHR5cGVvZiBuLmNoaWxkcmVuIHx8ICJudW1iZXIiID09IHR5cGVvZiBuLmNoaWxkcmVuIHx8ICJvYmplY3QiID09IHR5cGVvZiBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIG51bGwgIT09IG4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbnVsbCAhPSBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc24oZSkgewogICAgICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRocm93IGUKICAgICAgICAgICAgfSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjbihlLCBuKSB7CiAgICAgICAgICAgIHZhciB0ID0gbiwKICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHQubmV4dFNpYmxpbmc7CiAgICAgICAgICAgICAgICBpZiAoZS5yZW1vdmVDaGlsZCh0KSwgbCAmJiA4ID09PSBsLm5vZGVUeXBlKQogICAgICAgICAgICAgICAgICAgIGlmICgiLyQiID09PSAodCA9IGwuZGF0YSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHIpIHJldHVybiBlLnJlbW92ZUNoaWxkKGwpLCB2b2lkIGNlKG4pOwogICAgICAgICAgICAgICAgICAgICAgICByLS0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIiQiICE9PSB0ICYmICIkPyIgIT09IHQgJiYgIiQhIiAhPT0gdCB8fCByKys7CiAgICAgICAgICAgICAgICB0ID0gbAogICAgICAgICAgICB9IHdoaWxlICh0KTsKICAgICAgICAgICAgY2UobikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZuKGUpIHsKICAgICAgICAgICAgZm9yICg7IG51bGwgIT0gZTsgZSA9IGUubmV4dFNpYmxpbmcpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gZS5ub2RlVHlwZTsKICAgICAgICAgICAgICAgIGlmICgxID09PSBuIHx8IDMgPT09IG4pIGJyZWFrOwogICAgICAgICAgICAgICAgaWYgKDggPT09IG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIiQiID09PSAobiA9IGUuZGF0YSkgfHwgIiQhIiA9PT0gbiB8fCAiJD8iID09PSBuKSBicmVhazsKICAgICAgICAgICAgICAgICAgICBpZiAoIi8kIiA9PT0gbikgcmV0dXJuIG51bGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZG4oZSkgewogICAgICAgICAgICBlID0gZS5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBlOykgewogICAgICAgICAgICAgICAgaWYgKDggPT09IGUubm9kZVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZGF0YTsKICAgICAgICAgICAgICAgICAgICBpZiAoIiQiID09PSB0IHx8ICIkISIgPT09IHQgfHwgIiQ/IiA9PT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gbikgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG4tLQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSAiLyQiID09PSB0ICYmIG4rKwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZSA9IGUucHJldmlvdXNTaWJsaW5nCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHBuKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlW0tvXTsKICAgICAgICAgICAgaWYgKG4pIHJldHVybiBuOwogICAgICAgICAgICBmb3IgKHZhciB0ID0gZS5wYXJlbnROb2RlOyB0OykgewogICAgICAgICAgICAgICAgaWYgKG4gPSB0W1hvXSB8fCB0W0tvXSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gbi5hbHRlcm5hdGUsIG51bGwgIT09IG4uY2hpbGQgfHwgbnVsbCAhPT0gdCAmJiBudWxsICE9PSB0LmNoaWxkKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBkbihlKTsgbnVsbCAhPT0gZTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtLb10pIHJldHVybiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGRuKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdCA9IChlID0gdCkucGFyZW50Tm9kZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtbihlKSB7CiAgICAgICAgICAgIHJldHVybiAhKGUgPSBlW0tvXSB8fCBlW1hvXSkgfHwgNSAhPT0gZS50YWcgJiYgNiAhPT0gZS50YWcgJiYgMTMgIT09IGUudGFnICYmIDMgIT09IGUudGFnID8gbnVsbCA6IGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhuKGUpIHsKICAgICAgICAgICAgaWYgKDUgPT09IGUudGFnIHx8IDYgPT09IGUudGFnKSByZXR1cm4gZS5zdGF0ZU5vZGU7CiAgICAgICAgICAgIHRocm93IEVycm9yKHQoMzMpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ24oZSkgewogICAgICAgICAgICByZXR1cm4gZVtZb10gfHwgbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdm4oZSkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgY3VycmVudDogZQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB5bihlLCBuKSB7CiAgICAgICAgICAgIDAgPiBuaSB8fCAoZS5jdXJyZW50ID0gZWlbbmldLCBlaVtuaV0gPSBudWxsLCBuaS0tKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYm4oZSwgbiwgdCkgewogICAgICAgICAgICBuaSsrLCBlaVtuaV0gPSBlLmN1cnJlbnQsIGUuY3VycmVudCA9IG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGtuKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBlLnR5cGUuY29udGV4dFR5cGVzOwogICAgICAgICAgICBpZiAoIXQpIHJldHVybiB0aTsKICAgICAgICAgICAgdmFyIHIgPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgaWYgKHIgJiYgci5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0ID09PSBuKSByZXR1cm4gci5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dDsKICAgICAgICAgICAgdmFyIGwsIGEgPSB7fTsKICAgICAgICAgICAgZm9yIChsIGluIHQpIGFbbF0gPSBuW2xdOwogICAgICAgICAgICByZXR1cm4gciAmJiAoKGUgPSBlLnN0YXRlTm9kZSkuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dCA9IG4sIGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQgPSBhKSwgYQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSAoZSA9IGUuY2hpbGRDb250ZXh0VHlwZXMpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBTbihlLCBuLCByKSB7CiAgICAgICAgICAgIGlmIChyaS5jdXJyZW50ICE9PSB0aSkgdGhyb3cgRXJyb3IodCgxNjgpKTsKICAgICAgICAgICAgYm4ocmksIG4pLCBibihsaSwgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHhuKGUsIG4sIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgaWYgKG4gPSBuLmNoaWxkQ29udGV4dFR5cGVzLCAiZnVuY3Rpb24iICE9IHR5cGVvZiBsLmdldENoaWxkQ29udGV4dCkgcmV0dXJuIHI7CiAgICAgICAgICAgIGZvciAodmFyIGEgaW4gbCA9IGwuZ2V0Q2hpbGRDb250ZXh0KCkpCiAgICAgICAgICAgICAgICBpZiAoIShhIGluIG4pKSB0aHJvdyBFcnJvcih0KDEwOCwgZChlKSB8fCAiVW5rbm93biIsIGEpKTsKICAgICAgICAgICAgcmV0dXJuIExhKHt9LCByLCBsKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRW4oZSkgewogICAgICAgICAgICByZXR1cm4gZSA9IChlID0gZS5zdGF0ZU5vZGUpICYmIGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQgfHwgdGksIGFpID0gcmkuY3VycmVudCwgYm4ocmksIGUpLCBibihsaSwgbGkuY3VycmVudCksICEwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBDbihlLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBsID0gZS5zdGF0ZU5vZGU7CiAgICAgICAgICAgIGlmICghbCkgdGhyb3cgRXJyb3IodCgxNjkpKTsKICAgICAgICAgICAgciA/IChlID0geG4oZSwgbiwgYWkpLCBsLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0ID0gZSwgeW4obGkpLCB5bihyaSksIGJuKHJpLCBlKSkgOiB5bihsaSksIGJuKGxpLCByKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gem4oZSkgewogICAgICAgICAgICBudWxsID09PSB1aSA/IHVpID0gW2VdIDogdWkucHVzaChlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTm4oKSB7CiAgICAgICAgICAgIGlmICghaWkgJiYgbnVsbCAhPT0gdWkpIHsKICAgICAgICAgICAgICAgIGlpID0gITA7CiAgICAgICAgICAgICAgICB2YXIgZSA9IDAsCiAgICAgICAgICAgICAgICAgICAgbiA9IHh1OwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHVpOwogICAgICAgICAgICAgICAgICAgIGZvciAoeHUgPSAxOyBlIDwgdC5sZW5ndGg7IGUrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbZV07CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByKCEwKQogICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSByKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB1aSA9IG51bGwsIG9pID0gITEKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBudWxsICE9PSB1aSAmJiAodWkgPSB1aS5zbGljZShlICsgMSkpLCBhdShmdSwgTm4pLCBuCiAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgIHh1ID0gbiwgaWkgPSAhMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBQbihlLCBuKSB7CiAgICAgICAgICAgIHNpW2NpKytdID0gZGksIHNpW2NpKytdID0gZmksIGZpID0gZSwgZGkgPSBuCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBfbihlLCBuLCB0KSB7CiAgICAgICAgICAgIHBpW21pKytdID0gZ2ksIHBpW21pKytdID0gdmksIHBpW21pKytdID0gaGksIGhpID0gZTsKICAgICAgICAgICAgdmFyIHIgPSBnaTsKICAgICAgICAgICAgZSA9IHZpOwogICAgICAgICAgICB2YXIgbCA9IDMyIC0geXUocikgLSAxOwogICAgICAgICAgICByICY9IH4oMSA8PCBsKSwgdCArPSAxOwogICAgICAgICAgICB2YXIgYSA9IDMyIC0geXUobikgKyBsOwogICAgICAgICAgICBpZiAoMzAgPCBhKSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IGwgLSBsICUgNTsKICAgICAgICAgICAgICAgIGEgPSAociAmICgxIDw8IHUpIC0gMSkudG9TdHJpbmcoMzIpLCByID4+PSB1LCBsIC09IHUsIGdpID0gMSA8PCAzMiAtIHl1KG4pICsgbCB8IHQgPDwgbCB8IHIsIHZpID0gYSArIGUKICAgICAgICAgICAgfSBlbHNlIGdpID0gMSA8PCBhIHwgdCA8PCBsIHwgciwgdmkgPSBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBMbihlKSB7CiAgICAgICAgICAgIG51bGwgIT09IGUucmV0dXJuICYmIChQbihlLCAxKSwgX24oZSwgMSwgMCkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBUbihlKSB7CiAgICAgICAgICAgIGZvciAoOyBlID09PSBmaTspIGZpID0gc2lbLS1jaV0sIHNpW2NpXSA9IG51bGwsIGRpID0gc2lbLS1jaV0sIHNpW2NpXSA9IG51bGw7CiAgICAgICAgICAgIGZvciAoOyBlID09PSBoaTspIGhpID0gcGlbLS1taV0sIHBpW21pXSA9IG51bGwsIHZpID0gcGlbLS1taV0sIHBpW21pXSA9IG51bGwsIGdpID0gcGlbLS1taV0sIHBpW21pXSA9IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIE1uKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSAkcyg1LCBudWxsLCBudWxsLCAwKTsKICAgICAgICAgICAgdC5lbGVtZW50VHlwZSA9ICJERUxFVEVEIiwgdC5zdGF0ZU5vZGUgPSBuLCB0LnJldHVybiA9IGUsIG51bGwgPT09IChuID0gZS5kZWxldGlvbnMpID8gKGUuZGVsZXRpb25zID0gW3RdLCBlLmZsYWdzIHw9IDE2KSA6IG4ucHVzaCh0KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRm4oZSwgbikgewogICAgICAgICAgICBzd2l0Y2ggKGUudGFnKSB7CiAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnR5cGU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IChuID0gMSAhPT0gbi5ub2RlVHlwZSB8fCB0LnRvTG93ZXJDYXNlKCkgIT09IG4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA/IG51bGwgOiBuKSAmJiAoZS5zdGF0ZU5vZGUgPSBuLCB5aSA9IGUsIGJpID0gZm4obi5maXJzdENoaWxkKSwgITApOwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSAobiA9ICIiID09PSBlLnBlbmRpbmdQcm9wcyB8fCAzICE9PSBuLm5vZGVUeXBlID8gbnVsbCA6IG4pICYmIChlLnN0YXRlTm9kZSA9IG4sIHlpID0gZSwgYmkgPSBudWxsLCAhMCk7CiAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSAobiA9IDggIT09IG4ubm9kZVR5cGUgPyBudWxsIDogbikgJiYgKHQgPSBudWxsICE9PSBoaSA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGdpLAogICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmkKICAgICAgICAgICAgICAgICAgICB9IDogbnVsbCwgZS5tZW1vaXplZFN0YXRlID0gewogICAgICAgICAgICAgICAgICAgICAgICBkZWh5ZHJhdGVkOiBuLAogICAgICAgICAgICAgICAgICAgICAgICB0cmVlQ29udGV4dDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlMYW5lOiAxMDczNzQxODI0CiAgICAgICAgICAgICAgICAgICAgfSwgKHQgPSAkcygxOCwgbnVsbCwgbnVsbCwgMCkpLnN0YXRlTm9kZSA9IG4sIHQucmV0dXJuID0gZSwgZS5jaGlsZCA9IHQsIHlpID0gZSwgYmkgPSBudWxsLCAhMCk7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBSbihlKSB7CiAgICAgICAgICAgIHJldHVybiAwICE9ICgxICYgZS5tb2RlKSAmJiAwID09ICgxMjggJiBlLmZsYWdzKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRG4oZSkgewogICAgICAgICAgICBpZiAoa2kpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gYmk7CiAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gbjsKICAgICAgICAgICAgICAgICAgICBpZiAoIUZuKGUsIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSbihlKSkgdGhyb3cgRXJyb3IodCg0MTgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGZuKHIubmV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHlpOwogICAgICAgICAgICAgICAgICAgICAgICBuICYmIEZuKGUsIG4pID8gTW4obCwgcikgOiAoZS5mbGFncyA9IC00MDk3ICYgZS5mbGFncyB8IDIsIGtpID0gITEsIHlpID0gZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChSbihlKSkgdGhyb3cgRXJyb3IodCg0MTgpKTsKICAgICAgICAgICAgICAgICAgICBlLmZsYWdzID0gLTQwOTcgJiBlLmZsYWdzIHwgMiwga2kgPSAhMSwgeWkgPSBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIE9uKGUpIHsKICAgICAgICAgICAgZm9yIChlID0gZS5yZXR1cm47IG51bGwgIT09IGUgJiYgNSAhPT0gZS50YWcgJiYgMyAhPT0gZS50YWcgJiYgMTMgIT09IGUudGFnOykgZSA9IGUucmV0dXJuOwogICAgICAgICAgICB5aSA9IGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEluKGUpIHsKICAgICAgICAgICAgaWYgKGUgIT09IHlpKSByZXR1cm4gITE7CiAgICAgICAgICAgIGlmICgha2kpIHJldHVybiBPbihlKSwga2kgPSAhMCwgITE7CiAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICBpZiAoKG4gPSAzICE9PSBlLnRhZykgJiYgIShuID0gNSAhPT0gZS50YWcpICYmIChuID0gImhlYWQiICE9PSAobiA9IGUudHlwZSkgJiYgImJvZHkiICE9PSBuICYmICFvbihlLnR5cGUsIGUubWVtb2l6ZWRQcm9wcykpLCBuICYmIChuID0gYmkpKSB7CiAgICAgICAgICAgICAgICBpZiAoUm4oZSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBiaTsgZTspIGUgPSBmbihlLm5leHRTaWJsaW5nKTsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDQxOCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKDsgbjspIE1uKGUsIG4pLCBuID0gZm4obi5uZXh0U2libGluZykKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoT24oZSksIDEzID09PSBlLnRhZykgewogICAgICAgICAgICAgICAgaWYgKCEoZSA9IG51bGwgIT09IChlID0gZS5tZW1vaXplZFN0YXRlKSA/IGUuZGVoeWRyYXRlZCA6IG51bGwpKSB0aHJvdyBFcnJvcih0KDMxNykpOwogICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IGUubmV4dFNpYmxpbmcsIG4gPSAwOyBlOykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoOCA9PT0gZS5ub2RlVHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIi8kIiA9PT0gcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpID0gZm4oZS5uZXh0U2libGluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi0tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIiQiICE9PSByICYmICIkISIgIT09IHIgJiYgIiQ/IiAhPT0gciB8fCBuKysKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5uZXh0U2libGluZwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBiaSA9IG51bGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGJpID0geWkgPyBmbihlLnN0YXRlTm9kZS5uZXh0U2libGluZykgOiBudWxsOwogICAgICAgICAgICByZXR1cm4gITAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFVuKCkgewogICAgICAgICAgICBiaSA9IHlpID0gbnVsbCwga2kgPSAhMQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVm4oZSkgewogICAgICAgICAgICBudWxsID09PSB3aSA/IHdpID0gW2VdIDogd2kucHVzaChlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQW4oZSwgbikgewogICAgICAgICAgICBpZiAoZSAmJiBlLmRlZmF1bHRQcm9wcykgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCBpbiBuID0gTGEoe30sIG4pLCBlID0gZS5kZWZhdWx0UHJvcHMpIHZvaWQgMCA9PT0gblt0XSAmJiAoblt0XSA9IGVbdF0pOwogICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQm4oKSB7CiAgICAgICAgICAgIHppID0gQ2kgPSBFaSA9IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFduKGUsIG4pIHsKICAgICAgICAgICAgbiA9IHhpLmN1cnJlbnQsIHluKHhpKSwgZS5fY3VycmVudFZhbHVlID0gbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSG4oZSwgbiwgdCkgewogICAgICAgICAgICBmb3IgKDsgbnVsbCAhPT0gZTspIHsKICAgICAgICAgICAgICAgIHZhciByID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgICAgICBpZiAoKGUuY2hpbGRMYW5lcyAmIG4pICE9PSBuID8gKGUuY2hpbGRMYW5lcyB8PSBuLCBudWxsICE9PSByICYmIChyLmNoaWxkTGFuZXMgfD0gbikpIDogbnVsbCAhPT0gciAmJiAoci5jaGlsZExhbmVzICYgbikgIT09IG4gJiYgKHIuY2hpbGRMYW5lcyB8PSBuKSwgZSA9PT0gdCkgYnJlYWs7CiAgICAgICAgICAgICAgICBlID0gZS5yZXR1cm4KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUW4oZSwgbikgewogICAgICAgICAgICBFaSA9IGUsIHppID0gQ2kgPSBudWxsLCBudWxsICE9PSAoZSA9IGUuZGVwZW5kZW5jaWVzKSAmJiBudWxsICE9PSBlLmZpcnN0Q29udGV4dCAmJiAoMCAhPSAoZS5sYW5lcyAmIG4pICYmICh0cyA9ICEwKSwgZS5maXJzdENvbnRleHQgPSBudWxsKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gam4oZSkgewogICAgICAgICAgICB2YXIgbiA9IGUuX2N1cnJlbnRWYWx1ZTsKICAgICAgICAgICAgaWYgKHppICE9PSBlKQogICAgICAgICAgICAgICAgaWYgKGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9pemVkVmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IG51bGwKICAgICAgICAgICAgICAgICAgICB9LCBudWxsID09PSBDaSkgewogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBFaSkgdGhyb3cgRXJyb3IodCgzMDgpKTsKICAgICAgICAgICAgICAgICAgICBDaSA9IGUsIEVpLmRlcGVuZGVuY2llcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgbGFuZXM6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0Q29udGV4dDogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBDaSA9IENpLm5leHQgPSBlOwogICAgICAgICAgICByZXR1cm4gbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gJG4oZSkgewogICAgICAgICAgICBudWxsID09PSBOaSA/IE5pID0gW2VdIDogTmkucHVzaChlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcW4oZSwgbiwgdCwgcikgewogICAgICAgICAgICB2YXIgbCA9IG4uaW50ZXJsZWF2ZWQ7CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSBsID8gKHQubmV4dCA9IHQsICRuKG4pKSA6ICh0Lm5leHQgPSBsLm5leHQsIGwubmV4dCA9IHQpLCBuLmludGVybGVhdmVkID0gdCwgS24oZSwgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEtuKGUsIG4pIHsKICAgICAgICAgICAgZS5sYW5lcyB8PSBuOwogICAgICAgICAgICB2YXIgdCA9IGUuYWx0ZXJuYXRlOwogICAgICAgICAgICBmb3IgKG51bGwgIT09IHQgJiYgKHQubGFuZXMgfD0gbiksIHQgPSBlLCBlID0gZS5yZXR1cm47IG51bGwgIT09IGU7KSBlLmNoaWxkTGFuZXMgfD0gbiwgbnVsbCAhPT0gKHQgPSBlLmFsdGVybmF0ZSkgJiYgKHQuY2hpbGRMYW5lcyB8PSBuKSwgdCA9IGUsIGUgPSBlLnJldHVybjsKICAgICAgICAgICAgcmV0dXJuIDMgPT09IHQudGFnID8gdC5zdGF0ZU5vZGUgOiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBZbihlKSB7CiAgICAgICAgICAgIGUudXBkYXRlUXVldWUgPSB7CiAgICAgICAgICAgICAgICBiYXNlU3RhdGU6IGUubWVtb2l6ZWRTdGF0ZSwKICAgICAgICAgICAgICAgIGZpcnN0QmFzZVVwZGF0ZTogbnVsbCwKICAgICAgICAgICAgICAgIGxhc3RCYXNlVXBkYXRlOiBudWxsLAogICAgICAgICAgICAgICAgc2hhcmVkOiB7CiAgICAgICAgICAgICAgICAgICAgcGVuZGluZzogbnVsbCwKICAgICAgICAgICAgICAgICAgICBpbnRlcmxlYXZlZDogbnVsbCwKICAgICAgICAgICAgICAgICAgICBsYW5lczogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVmZmVjdHM6IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWG4oZSwgbikgewogICAgICAgICAgICBlID0gZS51cGRhdGVRdWV1ZSwgbi51cGRhdGVRdWV1ZSA9PT0gZSAmJiAobi51cGRhdGVRdWV1ZSA9IHsKICAgICAgICAgICAgICAgIGJhc2VTdGF0ZTogZS5iYXNlU3RhdGUsCiAgICAgICAgICAgICAgICBmaXJzdEJhc2VVcGRhdGU6IGUuZmlyc3RCYXNlVXBkYXRlLAogICAgICAgICAgICAgICAgbGFzdEJhc2VVcGRhdGU6IGUubGFzdEJhc2VVcGRhdGUsCiAgICAgICAgICAgICAgICBzaGFyZWQ6IGUuc2hhcmVkLAogICAgICAgICAgICAgICAgZWZmZWN0czogZS5lZmZlY3RzCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBHbihlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBldmVudFRpbWU6IGUsCiAgICAgICAgICAgICAgICBsYW5lOiBuLAogICAgICAgICAgICAgICAgdGFnOiAwLAogICAgICAgICAgICAgICAgcGF5bG9hZDogbnVsbCwKICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBudWxsLAogICAgICAgICAgICAgICAgbmV4dDogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBabihlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gZS51cGRhdGVRdWV1ZTsKICAgICAgICAgICAgaWYgKG51bGwgPT09IHIpIHJldHVybiBudWxsOwogICAgICAgICAgICBpZiAociA9IHIuc2hhcmVkLCAwICE9ICgyICYgYnMpKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHIucGVuZGluZzsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBsID8gbi5uZXh0ID0gbiA6IChuLm5leHQgPSBsLm5leHQsIGwubmV4dCA9IG4pLCByLnBlbmRpbmcgPSBuLCBQaShlLCB0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSAobCA9IHIuaW50ZXJsZWF2ZWQpID8gKG4ubmV4dCA9IG4sICRuKHIpKSA6IChuLm5leHQgPSBsLm5leHQsIGwubmV4dCA9IG4pLCByLmludGVybGVhdmVkID0gbiwgS24oZSwgdCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEpuKGUsIG4sIHQpIHsKICAgICAgICAgICAgaWYgKG51bGwgIT09IChuID0gbi51cGRhdGVRdWV1ZSkgJiYgKG4gPSBuLnNoYXJlZCwgMCAhPSAoNDE5NDI0MCAmIHQpKSkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuLmxhbmVzOwogICAgICAgICAgICAgICAgdCB8PSByICY9IGUucGVuZGluZ0xhbmVzLCBuLmxhbmVzID0gdCwgbmUoZSwgdCkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZXQoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IGUudXBkYXRlUXVldWUsCiAgICAgICAgICAgICAgICByID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgIGlmIChudWxsICE9PSByICYmIHQgPT09IChyID0gci51cGRhdGVRdWV1ZSkpIHsKICAgICAgICAgICAgICAgIHZhciBsID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICBhID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAodCA9IHQuZmlyc3RCYXNlVXBkYXRlKSkgewogICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFRpbWU6IHQuZXZlbnRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZTogdC5sYW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiB0LnRhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IHQucGF5bG9hZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiB0LmNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBhID8gbCA9IGEgPSB1IDogYSA9IGEubmV4dCA9IHUsIHQgPSB0Lm5leHQKICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSB0KTsKICAgICAgICAgICAgICAgICAgICBudWxsID09PSBhID8gbCA9IGEgPSBuIDogYSA9IGEubmV4dCA9IG4KICAgICAgICAgICAgICAgIH0gZWxzZSBsID0gYSA9IG47CiAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHsKICAgICAgICAgICAgICAgICAgICBiYXNlU3RhdGU6IHIuYmFzZVN0YXRlLAogICAgICAgICAgICAgICAgICAgIGZpcnN0QmFzZVVwZGF0ZTogbCwKICAgICAgICAgICAgICAgICAgICBsYXN0QmFzZVVwZGF0ZTogYSwKICAgICAgICAgICAgICAgICAgICBzaGFyZWQ6IHIuc2hhcmVkLAogICAgICAgICAgICAgICAgICAgIGVmZmVjdHM6IHIuZWZmZWN0cwogICAgICAgICAgICAgICAgfSwgdm9pZChlLnVwZGF0ZVF1ZXVlID0gdCkKICAgICAgICAgICAgfQogICAgICAgICAgICBudWxsID09PSAoZSA9IHQubGFzdEJhc2VVcGRhdGUpID8gdC5maXJzdEJhc2VVcGRhdGUgPSBuIDogZS5uZXh0ID0gbiwgdC5sYXN0QmFzZVVwZGF0ZSA9IG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG50KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSBlLnVwZGF0ZVF1ZXVlOwogICAgICAgICAgICBfaSA9ICExOwogICAgICAgICAgICB2YXIgYSA9IGwuZmlyc3RCYXNlVXBkYXRlLAogICAgICAgICAgICAgICAgdSA9IGwubGFzdEJhc2VVcGRhdGUsCiAgICAgICAgICAgICAgICBvID0gbC5zaGFyZWQucGVuZGluZzsKICAgICAgICAgICAgaWYgKG51bGwgIT09IG8pIHsKICAgICAgICAgICAgICAgIGwuc2hhcmVkLnBlbmRpbmcgPSBudWxsOwogICAgICAgICAgICAgICAgdmFyIGkgPSBvLAogICAgICAgICAgICAgICAgICAgIHMgPSBpLm5leHQ7CiAgICAgICAgICAgICAgICBpLm5leHQgPSBudWxsLCBudWxsID09PSB1ID8gYSA9IHMgOiB1Lm5leHQgPSBzLCB1ID0gaTsKICAgICAgICAgICAgICAgIHZhciBjID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgICAgICBudWxsICE9PSBjICYmIChvID0gKGMgPSBjLnVwZGF0ZVF1ZXVlKS5sYXN0QmFzZVVwZGF0ZSkgIT09IHUgJiYgKG51bGwgPT09IG8gPyBjLmZpcnN0QmFzZVVwZGF0ZSA9IHMgOiBvLm5leHQgPSBzLCBjLmxhc3RCYXNlVXBkYXRlID0gaSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobnVsbCAhPT0gYSkgewogICAgICAgICAgICAgICAgdmFyIGYgPSBsLmJhc2VTdGF0ZTsKICAgICAgICAgICAgICAgIGZvciAodSA9IDAsIGMgPSBzID0gaSA9IG51bGwsIG8gPSBhOzspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IG8ubGFuZSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG8uZXZlbnRUaW1lOwogICAgICAgICAgICAgICAgICAgIGlmICgociAmIGQpID09PSBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGMgJiYgKGMgPSBjLm5leHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFRpbWU6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5lOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBvLnRhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IG8ucGF5bG9hZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBvLmNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkID0gbiwgcCA9IHQsIGgudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YobSA9IGgucGF5bG9hZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBtLmNhbGwocCwgZiwgZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmZsYWdzID0gLTY1NTM3ICYgbS5mbGFncyB8IDEyODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IChkID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YobSA9IGgucGF5bG9hZCkgPyBtLmNhbGwocCwgZiwgZCkgOiBtKSkgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IExhKHt9LCBmLCBkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBvLmNhbGxiYWNrICYmIDAgIT09IG8ubGFuZSAmJiAoZS5mbGFncyB8PSA2NCwgbnVsbCA9PT0gKGQgPSBsLmVmZmVjdHMpID8gbC5lZmZlY3RzID0gW29dIDogZC5wdXNoKG8pKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBwID0gewogICAgICAgICAgICAgICAgICAgICAgICBldmVudFRpbWU6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmU6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogby50YWcsCiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IG8ucGF5bG9hZCwKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IG8uY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IG51bGwKICAgICAgICAgICAgICAgICAgICB9LCBudWxsID09PSBjID8gKHMgPSBjID0gcCwgaSA9IGYpIDogYyA9IGMubmV4dCA9IHAsIHUgfD0gZDsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gKG8gPSBvLm5leHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSAobyA9IGwuc2hhcmVkLnBlbmRpbmcpKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IChkID0gbykubmV4dCwgZC5uZXh0ID0gbnVsbCwgbC5sYXN0QmFzZVVwZGF0ZSA9IGQsIGwuc2hhcmVkLnBlbmRpbmcgPSBudWxsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGMgJiYgKGkgPSBmKSwgbC5iYXNlU3RhdGUgPSBpLCBsLmZpcnN0QmFzZVVwZGF0ZSA9IHMsIGwubGFzdEJhc2VVcGRhdGUgPSBjLCBudWxsICE9PSAobiA9IGwuc2hhcmVkLmludGVybGVhdmVkKSkgewogICAgICAgICAgICAgICAgICAgIGwgPSBuOwogICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgdSB8PSBsLmxhbmUsIGwgPSBsLm5leHQKICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChsICE9PSBuKQogICAgICAgICAgICAgICAgfSBlbHNlIG51bGwgPT09IGEgJiYgKGwuc2hhcmVkLmxhbmVzID0gMCk7CiAgICAgICAgICAgICAgICBOcyB8PSB1LCBlLmxhbmVzID0gdSwgZS5tZW1vaXplZFN0YXRlID0gZgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB0dChlLCBuLCByKSB7CiAgICAgICAgICAgIGlmIChlID0gbi5lZmZlY3RzLCBuLmVmZmVjdHMgPSBudWxsLCBudWxsICE9PSBlKQogICAgICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGUubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGVbbl0sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBsLmNhbGxiYWNrOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLmNhbGxiYWNrID0gbnVsbCwgbCA9IHIsICJmdW5jdGlvbiIgIT0gdHlwZW9mIGEpIHRocm93IEVycm9yKHQoMTkxLCBhKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2FsbChsKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJ0KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgdCA9IG51bGwgPT0gKHQgPSB0KHIsIG4gPSBlLm1lbW9pemVkU3RhdGUpKSA/IG4gOiBMYSh7fSwgbiwgdCksIGUubWVtb2l6ZWRTdGF0ZSA9IHQsIDAgPT09IGUubGFuZXMgJiYgKGUudXBkYXRlUXVldWUuYmFzZVN0YXRlID0gdCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGx0KGUsIG4sIHQsIHIsIGwsIGEsIHUpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mKGUgPSBlLnN0YXRlTm9kZSkuc2hvdWxkQ29tcG9uZW50VXBkYXRlID8gZS5zaG91bGRDb21wb25lbnRVcGRhdGUociwgYSwgdSkgOiAhKG4ucHJvdG90eXBlICYmIG4ucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ICYmIE9lKHQsIHIpICYmIE9lKGwsIGEpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYXQoZSwgbiwgdCkgewogICAgICAgICAgICB2YXIgciA9ICExLAogICAgICAgICAgICAgICAgbCA9IHRpLAogICAgICAgICAgICAgICAgYSA9IG4uY29udGV4dFR5cGU7CiAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgYSAmJiBudWxsICE9PSBhID8gYSA9IGpuKGEpIDogKGwgPSB3bihuKSA/IGFpIDogcmkuY3VycmVudCwgYSA9IChyID0gbnVsbCAhPSAociA9IG4uY29udGV4dFR5cGVzKSkgPyBrbihlLCBsKSA6IHRpKSwgbiA9IG5ldyBuKHQsIGEpLCBlLm1lbW9pemVkU3RhdGUgPSBudWxsICE9PSBuLnN0YXRlICYmIHZvaWQgMCAhPT0gbi5zdGF0ZSA/IG4uc3RhdGUgOiBudWxsLCBuLnVwZGF0ZXIgPSBUaSwgZS5zdGF0ZU5vZGUgPSBuLCBuLl9yZWFjdEludGVybmFscyA9IGUsIHIgJiYgKChlID0gZS5zdGF0ZU5vZGUpLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQgPSBsLCBlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0ID0gYSksIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHV0KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgZSA9IG4uc3RhdGUsICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4uY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAmJiBuLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHModCwgciksICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4uVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgJiYgbi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyh0LCByKSwgbi5zdGF0ZSAhPT0gZSAmJiBUaS5lbnF1ZXVlUmVwbGFjZVN0YXRlKG4sIG4uc3RhdGUsIG51bGwpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvdChlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHZhciBsID0gZS5zdGF0ZU5vZGU7CiAgICAgICAgICAgIGwucHJvcHMgPSB0LCBsLnN0YXRlID0gZS5tZW1vaXplZFN0YXRlLCBsLnJlZnMgPSBMaSwgWW4oZSk7CiAgICAgICAgICAgIHZhciBhID0gbi5jb250ZXh0VHlwZTsKICAgICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIGEgJiYgbnVsbCAhPT0gYSA/IGwuY29udGV4dCA9IGpuKGEpIDogKGEgPSB3bihuKSA/IGFpIDogcmkuY3VycmVudCwgbC5jb250ZXh0ID0ga24oZSwgYSkpLCBsLnN0YXRlID0gZS5tZW1vaXplZFN0YXRlLCAiZnVuY3Rpb24iID09IHR5cGVvZihhID0gbi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpICYmIChydChlLCBuLCBhLCB0KSwgbC5zdGF0ZSA9IGUubWVtb2l6ZWRTdGF0ZSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIHx8ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGwuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgbC5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIGwuY29tcG9uZW50V2lsbE1vdW50IHx8IChuID0gbC5zdGF0ZSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbC5jb21wb25lbnRXaWxsTW91bnQgJiYgbC5jb21wb25lbnRXaWxsTW91bnQoKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbC5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50ICYmIGwuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLCBuICE9PSBsLnN0YXRlICYmIFRpLmVucXVldWVSZXBsYWNlU3RhdGUobCwgbC5zdGF0ZSwgbnVsbCksIG50KGUsIHQsIGwsIHIpLCBsLnN0YXRlID0gZS5tZW1vaXplZFN0YXRlKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbC5jb21wb25lbnREaWRNb3VudCAmJiAoZS5mbGFncyB8PSA0MTk0MzA4KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaXQoZSwgbiwgcikgewogICAgICAgICAgICBpZiAobnVsbCAhPT0gKGUgPSByLnJlZikgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZSAmJiAib2JqZWN0IiAhPSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgaWYgKHIuX293bmVyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByLl9vd25lcikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSAhPT0gci50YWcpIHRocm93IEVycm9yKHQoMzA5KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gci5zdGF0ZU5vZGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsKSB0aHJvdyBFcnJvcih0KDE0NywgZSkpOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gbCwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICIiICsgZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gbiAmJiBudWxsICE9PSBuLnJlZiAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBuLnJlZiAmJiBuLnJlZi5fc3RyaW5nUmVmID09PSB1ID8gbi5yZWYgOiAobiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhLnJlZnM7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPT09IExpICYmIChuID0gYS5yZWZzID0ge30pLCBudWxsID09PSBlID8gZGVsZXRlIG5bdV0gOiBuW3VdID0gZQogICAgICAgICAgICAgICAgICAgIH0sIG4uX3N0cmluZ1JlZiA9IHUsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIGUpIHRocm93IEVycm9yKHQoMjg0KSk7CiAgICAgICAgICAgICAgICBpZiAoIXIuX293bmVyKSB0aHJvdyBFcnJvcih0KDI5MCwgZSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHN0KGUsIG4pIHsKICAgICAgICAgICAgdGhyb3cgZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKSwgRXJyb3IodCgzMSwgIltvYmplY3QgT2JqZWN0XSIgPT09IGUgPyAib2JqZWN0IHdpdGgga2V5cyB7IiArIE9iamVjdC5rZXlzKG4pLmpvaW4oIiwgIikgKyAifSIgOiBlKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGN0KGUpIHsKICAgICAgICAgICAgcmV0dXJuICgwLCBlLl9pbml0KShlLl9wYXlsb2FkKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZnQoZSkgewogICAgICAgICAgICBmdW5jdGlvbiBuKG4sIHQpIHsKICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmRlbGV0aW9uczsKICAgICAgICAgICAgICAgICAgICBudWxsID09PSByID8gKG4uZGVsZXRpb25zID0gW3RdLCBuLmZsYWdzIHw9IDE2KSA6IHIucHVzaCh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiByKHQsIHIpIHsKICAgICAgICAgICAgICAgIGlmICghZSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICBmb3IgKDsgbnVsbCAhPT0gcjspIG4odCwgciksIHIgPSByLnNpYmxpbmc7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBsKGUsIG4pIHsKICAgICAgICAgICAgICAgIGZvciAoZSA9IG5ldyBNYXA7IG51bGwgIT09IG47KSBudWxsICE9PSBuLmtleSA/IGUuc2V0KG4ua2V5LCBuKSA6IGUuc2V0KG4uaW5kZXgsIG4pLCBuID0gbi5zaWJsaW5nOwogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gYShlLCBuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGUgPSBSbChlLCBuKSkuaW5kZXggPSAwLCBlLnNpYmxpbmcgPSBudWxsLCBlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHUobiwgdCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIG4uaW5kZXggPSByLCBlID8gbnVsbCAhPT0gKHIgPSBuLmFsdGVybmF0ZSkgPyAociA9IHIuaW5kZXgpIDwgdCA/IChuLmZsYWdzIHw9IDIsIHQpIDogciA6IChuLmZsYWdzIHw9IDIsIHQpIDogKG4uZmxhZ3MgfD0gMTA0ODU3NiwgdCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gaShuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBudWxsID09PSBuLmFsdGVybmF0ZSAmJiAobi5mbGFncyB8PSAyKSwgbgogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBzKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBuIHx8IDYgIT09IG4udGFnID8gKChuID0gVWwodCwgZS5tb2RlLCByKSkucmV0dXJuID0gZSwgbikgOiAoKG4gPSBhKG4sIHQpKS5yZXR1cm4gPSBlLCBuKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBjKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBsID0gdC50eXBlOwogICAgICAgICAgICAgICAgcmV0dXJuIGwgPT09IGhhID8gZChlLCBuLCB0LnByb3BzLmNoaWxkcmVuLCByLCB0LmtleSkgOiBudWxsICE9PSBuICYmIChuLmVsZW1lbnRUeXBlID09PSBsIHx8ICJvYmplY3QiID09IHR5cGVvZiBsICYmIG51bGwgIT09IGwgJiYgbC4kJHR5cGVvZiA9PT0gRWEgJiYgY3QobCkgPT09IG4udHlwZSkgPyAoKHIgPSBhKG4sIHQucHJvcHMpKS5yZWYgPSBpdChlLCBuLCB0KSwgci5yZXR1cm4gPSBlLCByKSA6ICgociA9IERsKHQudHlwZSwgdC5rZXksIHQucHJvcHMsIG51bGwsIGUubW9kZSwgcikpLnJlZiA9IGl0KGUsIG4sIHQpLCByLnJldHVybiA9IGUsIHIpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSwgbiwgdCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG4gfHwgNCAhPT0gbi50YWcgfHwgbi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyAhPT0gdC5jb250YWluZXJJbmZvIHx8IG4uc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uICE9PSB0LmltcGxlbWVudGF0aW9uID8gKChuID0gVmwodCwgZS5tb2RlLCByKSkucmV0dXJuID0gZSwgbikgOiAoKG4gPSBhKG4sIHQuY2hpbGRyZW4gfHwgW10pKS5yZXR1cm4gPSBlLCBuKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBkKGUsIG4sIHQsIHIsIGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBuIHx8IDcgIT09IG4udGFnID8gKChuID0gT2wodCwgZS5tb2RlLCByLCBsKSkucmV0dXJuID0gZSwgbikgOiAoKG4gPSBhKG4sIHQpKS5yZXR1cm4gPSBlLCBuKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBwKGUsIG4sIHQpIHsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgbiAmJiAiIiAhPT0gbiB8fCAibnVtYmVyIiA9PSB0eXBlb2YgbikgcmV0dXJuIChuID0gVWwoIiIgKyBuLCBlLm1vZGUsIHQpKS5yZXR1cm4gPSBlLCBuOwogICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBuICYmIG51bGwgIT09IG4pIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG4uJCR0eXBlb2YpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBwYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodCA9IERsKG4udHlwZSwgbi5rZXksIG4ucHJvcHMsIG51bGwsIGUubW9kZSwgdCkpLnJlZiA9IGl0KGUsIG51bGwsIG4pLCB0LnJldHVybiA9IGUsIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbWE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG4gPSBWbChuLCBlLm1vZGUsIHQpKS5yZXR1cm4gPSBlLCBuOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAoZSwgKDAsIG4uX2luaXQpKG4uX3BheWxvYWQpLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoTWEobikgfHwgbyhuKSkgcmV0dXJuIChuID0gT2wobiwgZS5tb2RlLCB0LCBudWxsKSkucmV0dXJuID0gZSwgbjsKICAgICAgICAgICAgICAgICAgICBzdChlLCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gbShlLCBuLCB0LCByKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IG51bGwgIT09IG4gPyBuLmtleSA6IG51bGw7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgIiIgIT09IHQgfHwgIm51bWJlciIgPT0gdHlwZW9mIHQpIHJldHVybiBudWxsICE9PSBsID8gbnVsbCA6IHMoZSwgbiwgIiIgKyB0LCByKTsKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LiQkdHlwZW9mKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgcGE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5rZXkgPT09IGwgPyBjKGUsIG4sIHQsIHIpIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBtYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmtleSA9PT0gbCA/IGYoZSwgbiwgdCwgcikgOiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0oZSwgbiwgKGwgPSB0Ll9pbml0KSh0Ll9wYXlsb2FkKSwgcikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKE1hKHQpIHx8IG8odCkpIHJldHVybiBudWxsICE9PSBsID8gbnVsbCA6IGQoZSwgbiwgdCwgciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgc3QoZSwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGgoZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiByICYmICIiICE9PSByIHx8ICJudW1iZXIiID09IHR5cGVvZiByKSByZXR1cm4gcyhuLCBlID0gZS5nZXQodCkgfHwgbnVsbCwgIiIgKyByLCBsKTsKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgciAmJiBudWxsICE9PSByKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyLiQkdHlwZW9mKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgcGE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhuLCBlID0gZS5nZXQobnVsbCA9PT0gci5rZXkgPyB0IDogci5rZXkpIHx8IG51bGwsIHIsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG1hOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYobiwgZSA9IGUuZ2V0KG51bGwgPT09IHIua2V5ID8gdCA6IHIua2V5KSB8fCBudWxsLCByLCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoKGUsIG4sIHQsICgwLCByLl9pbml0KShyLl9wYXlsb2FkKSwgbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKE1hKHIpIHx8IG8ocikpIHJldHVybiBkKG4sIGUgPSBlLmdldCh0KSB8fCBudWxsLCByLCBsLCBudWxsKTsKICAgICAgICAgICAgICAgICAgICBzdChuLCByKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZyh0LCBhLCBvLCBpKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gbnVsbCwgYyA9IG51bGwsIGYgPSBhLCBkID0gYSA9IDAsIGcgPSBudWxsOyBudWxsICE9PSBmICYmIGQgPCBvLmxlbmd0aDsgZCsrKSB7CiAgICAgICAgICAgICAgICAgICAgZi5pbmRleCA+IGQgPyAoZyA9IGYsIGYgPSBudWxsKSA6IGcgPSBmLnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBtKHQsIGYsIG9bZF0sIGkpOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGYgJiYgKGYgPSBnKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZSAmJiBmICYmIG51bGwgPT09IHYuYWx0ZXJuYXRlICYmIG4odCwgZiksIGEgPSB1KHYsIGEsIGQpLCBudWxsID09PSBjID8gcyA9IHYgOiBjLnNpYmxpbmcgPSB2LCBjID0gdiwgZiA9IGcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChkID09PSBvLmxlbmd0aCkgcmV0dXJuIHIodCwgZiksIGtpICYmIFBuKHQsIGQpLCBzOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGYpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZCA8IG8ubGVuZ3RoOyBkKyspIG51bGwgIT09IChmID0gcCh0LCBvW2RdLCBpKSkgJiYgKGEgPSB1KGYsIGEsIGQpLCBudWxsID09PSBjID8gcyA9IGYgOiBjLnNpYmxpbmcgPSBmLCBjID0gZik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtpICYmIFBuKHQsIGQpLCBzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKGYgPSBsKHQsIGYpOyBkIDwgby5sZW5ndGg7IGQrKykgbnVsbCAhPT0gKGcgPSBoKGYsIHQsIGQsIG9bZF0sIGkpKSAmJiAoZSAmJiBudWxsICE9PSBnLmFsdGVybmF0ZSAmJiBmLmRlbGV0ZShudWxsID09PSBnLmtleSA/IGQgOiBnLmtleSksIGEgPSB1KGcsIGEsIGQpLCBudWxsID09PSBjID8gcyA9IGcgOiBjLnNpYmxpbmcgPSBnLCBjID0gZyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBmLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbih0LCBlKQogICAgICAgICAgICAgICAgfSkpLCBraSAmJiBQbih0LCBkKSwgcwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB2KGEsIGksIHMsIGMpIHsKICAgICAgICAgICAgICAgIHZhciBmID0gbyhzKTsKICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiBmKSB0aHJvdyBFcnJvcih0KDE1MCkpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gKHMgPSBmLmNhbGwocykpKSB0aHJvdyBFcnJvcih0KDE1MSkpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgZCA9IGYgPSBudWxsLCBnID0gaSwgdiA9IGkgPSAwLCB5ID0gbnVsbCwgYiA9IHMubmV4dCgpOyBudWxsICE9PSBnICYmICFiLmRvbmU7IHYrKywgYiA9IHMubmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgZy5pbmRleCA+IHYgPyAoeSA9IGcsIGcgPSBudWxsKSA6IHkgPSBnLnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBtKGEsIGcsIGIudmFsdWUsIGMpOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGcgJiYgKGcgPSB5KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZSAmJiBnICYmIG51bGwgPT09IGsuYWx0ZXJuYXRlICYmIG4oYSwgZyksIGkgPSB1KGssIGksIHYpLCBudWxsID09PSBkID8gZiA9IGsgOiBkLnNpYmxpbmcgPSBrLCBkID0gaywgZyA9IHkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChiLmRvbmUpIHJldHVybiByKGEsIGcpLCBraSAmJiBQbihhLCB2KSwgZjsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBnKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7ICFiLmRvbmU7IHYrKywgYiA9IHMubmV4dCgpKSBudWxsICE9PSAoYiA9IHAoYSwgYi52YWx1ZSwgYykpICYmIChpID0gdShiLCBpLCB2KSwgbnVsbCA9PT0gZCA/IGYgPSBiIDogZC5zaWJsaW5nID0gYiwgZCA9IGIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBraSAmJiBQbihhLCB2KSwgZgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChnID0gbChhLCBnKTsgIWIuZG9uZTsgdisrLCBiID0gcy5uZXh0KCkpIG51bGwgIT09IChiID0gaChnLCBhLCB2LCBiLnZhbHVlLCBjKSkgJiYgKGUgJiYgbnVsbCAhPT0gYi5hbHRlcm5hdGUgJiYgZy5kZWxldGUobnVsbCA9PT0gYi5rZXkgPyB2IDogYi5rZXkpLCBpID0gdShiLCBpLCB2KSwgbnVsbCA9PT0gZCA/IGYgPSBiIDogZC5zaWJsaW5nID0gYiwgZCA9IGIpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZy5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4oYSwgZSkKICAgICAgICAgICAgICAgIH0pKSwga2kgJiYgUG4oYSwgdiksIGYKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gZSh0LCBsLCB1LCBzKSB7CiAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHUgJiYgbnVsbCAhPT0gdSAmJiB1LnR5cGUgPT09IGhhICYmIG51bGwgPT09IHUua2V5ICYmICh1ID0gdS5wcm9wcy5jaGlsZHJlbiksICJvYmplY3QiID09IHR5cGVvZiB1ICYmIG51bGwgIT09IHUpIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHUuJCR0eXBlb2YpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBwYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gdS5rZXksIGYgPSBsOyBudWxsICE9PSBmOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZi5rZXkgPT09IGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYyA9IHUudHlwZSkgPT09IGhhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDcgPT09IGYudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIodCwgZi5zaWJsaW5nKSwgKGwgPSBhKGYsIHUucHJvcHMuY2hpbGRyZW4pKS5yZXR1cm4gPSB0LCB0ID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZi5lbGVtZW50VHlwZSA9PT0gYyB8fCAib2JqZWN0IiA9PSB0eXBlb2YgYyAmJiBudWxsICE9PSBjICYmIGMuJCR0eXBlb2YgPT09IEVhICYmIGN0KGMpID09PSBmLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKHQsIGYuc2libGluZyksIChsID0gYShmLCB1LnByb3BzKSkucmVmID0gaXQodCwgZiwgdSksIGwucmV0dXJuID0gdCwgdCA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcih0LCBmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbih0LCBmKSwgZiA9IGYuc2libGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LnR5cGUgPT09IGhhID8gKChsID0gT2wodS5wcm9wcy5jaGlsZHJlbiwgdC5tb2RlLCBzLCB1LmtleSkpLnJldHVybiA9IHQsIHQgPSBsKSA6ICgocyA9IERsKHUudHlwZSwgdS5rZXksIHUucHJvcHMsIG51bGwsIHQubW9kZSwgcykpLnJlZiA9IGl0KHQsIGwsIHUpLCBzLnJldHVybiA9IHQsIHQgPSBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbWE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmID0gdS5rZXk7IG51bGwgIT09IGw7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLmtleSA9PT0gZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQgPT09IGwudGFnICYmIGwuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8gPT09IHUuY29udGFpbmVySW5mbyAmJiBsLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiA9PT0gdS5pbXBsZW1lbnRhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIodCwgbC5zaWJsaW5nKSwgKGwgPSBhKGwsIHUuY2hpbGRyZW4gfHwgW10pKS5yZXR1cm4gPSB0LCB0ID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKHQsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKHQsIGwpLCBsID0gbC5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShsID0gVmwodSwgdC5tb2RlLCBzKSkucmV0dXJuID0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSh0LCBsLCAoZiA9IHUuX2luaXQpKHUuX3BheWxvYWQpLCBzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoTWEodSkpIHJldHVybiBnKHQsIGwsIHUsIHMpOwogICAgICAgICAgICAgICAgICAgIGlmIChvKHUpKSByZXR1cm4gdih0LCBsLCB1LCBzKTsKICAgICAgICAgICAgICAgICAgICBzdCh0LCB1KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiB1ICYmICIiICE9PSB1IHx8ICJudW1iZXIiID09IHR5cGVvZiB1ID8gKHUgPSAiIiArIHUsIG51bGwgIT09IGwgJiYgNiA9PT0gbC50YWcgPyAocih0LCBsLnNpYmxpbmcpLCAobCA9IGEobCwgdSkpLnJldHVybiA9IHQsIHQgPSBsKSA6IChyKHQsIGwpLCAobCA9IFVsKHUsIHQubW9kZSwgcykpLnJldHVybiA9IHQsIHQgPSBsKSwgaSh0KSkgOiByKHQsIGwpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGR0KGUpIHsKICAgICAgICAgICAgaWYgKGUgPT09IFJpKSB0aHJvdyBFcnJvcih0KDE3NCkpOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcHQoZSwgbikgewogICAgICAgICAgICBzd2l0Y2ggKGJuKElpLCBuKSwgYm4oT2ksIGUpLCBibihEaSwgUmkpLCBlID0gbi5ub2RlVHlwZSkgewogICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgICBuID0gKG4gPSBuLmRvY3VtZW50RWxlbWVudCkgPyBuLm5hbWVzcGFjZVVSSSA6IEwobnVsbCwgIiIpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBuID0gTChuID0gKGUgPSA4ID09PSBlID8gbi5wYXJlbnROb2RlIDogbikubmFtZXNwYWNlVVJJIHx8IG51bGwsIGUgPSBlLnRhZ05hbWUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgeW4oRGkpLCBibihEaSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG10KGUpIHsKICAgICAgICAgICAgeW4oRGkpLCB5bihPaSksIHluKElpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaHQoZSkgewogICAgICAgICAgICBkdChJaS5jdXJyZW50KTsKICAgICAgICAgICAgdmFyIG4gPSBkdChEaS5jdXJyZW50KSwKICAgICAgICAgICAgICAgIHQgPSBMKG4sIGUudHlwZSk7CiAgICAgICAgICAgIG4gIT09IHQgJiYgKGJuKE9pLCBlKSwgYm4oRGksIHQpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ3QoZSkgewogICAgICAgICAgICBPaS5jdXJyZW50ID09PSBlICYmICh5bihEaSksIHluKE9pKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHZ0KGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IGU7IG51bGwgIT09IG47KSB7CiAgICAgICAgICAgICAgICBpZiAoMTMgPT09IG4udGFnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuLm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHQgJiYgKG51bGwgPT09ICh0ID0gdC5kZWh5ZHJhdGVkKSB8fCAiJD8iID09PSB0LmRhdGEgfHwgIiQhIiA9PT0gdC5kYXRhKSkgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoMTkgPT09IG4udGFnICYmIHZvaWQgMCAhPT0gbi5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gKDEyOCAmIG4uZmxhZ3MpKSByZXR1cm4gbgogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudWxsICE9PSBuLmNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgbi5jaGlsZC5yZXR1cm4gPSBuLCBuID0gbi5jaGlsZDsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG4gPT09IGUpIGJyZWFrOwogICAgICAgICAgICAgICAgZm9yICg7IG51bGwgPT09IG4uc2libGluZzspIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gbi5yZXR1cm4gfHwgbi5yZXR1cm4gPT09IGUpIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIG4gPSBuLnJldHVybgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbi5zaWJsaW5nLnJldHVybiA9IG4ucmV0dXJuLCBuID0gbi5zaWJsaW5nCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHl0KCkgewogICAgICAgICAgICBmb3IgKHZhciBlID0gMDsgZSA8IFZpLmxlbmd0aDsgZSsrKSBWaVtlXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeSA9IG51bGw7CiAgICAgICAgICAgIFZpLmxlbmd0aCA9IDAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGJ0KCkgewogICAgICAgICAgICB0aHJvdyBFcnJvcih0KDMyMSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBrdChlLCBuKSB7CiAgICAgICAgICAgIGlmIChudWxsID09PSBuKSByZXR1cm4gITE7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgbi5sZW5ndGggJiYgdCA8IGUubGVuZ3RoOyB0KyspCiAgICAgICAgICAgICAgICBpZiAoIXdvKGVbdF0sIG5bdF0pKSByZXR1cm4gITE7CiAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd3QoZSwgbiwgciwgbCwgYSwgdSkgewogICAgICAgICAgICBpZiAoV2kgPSB1LCBIaSA9IG4sIG4ubWVtb2l6ZWRTdGF0ZSA9IG51bGwsIG4udXBkYXRlUXVldWUgPSBudWxsLCBuLmxhbmVzID0gMCwgQWkuY3VycmVudCA9IG51bGwgPT09IGUgfHwgbnVsbCA9PT0gZS5tZW1vaXplZFN0YXRlID8gR2kgOiBaaSwgZSA9IHIobCwgYSksIHFpKSB7CiAgICAgICAgICAgICAgICB1ID0gMDsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICBpZiAocWkgPSAhMSwgS2kgPSAwLCAyNSA8PSB1KSB0aHJvdyBFcnJvcih0KDMwMSkpOwogICAgICAgICAgICAgICAgICAgIHUgKz0gMSwgamkgPSBRaSA9IG51bGwsIG4udXBkYXRlUXVldWUgPSBudWxsLCBBaS5jdXJyZW50ID0gSmksIGUgPSByKGwsIGEpCiAgICAgICAgICAgICAgICB9IHdoaWxlIChxaSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoQWkuY3VycmVudCA9IFhpLCBuID0gbnVsbCAhPT0gUWkgJiYgbnVsbCAhPT0gUWkubmV4dCwgV2kgPSAwLCBqaSA9IFFpID0gSGkgPSBudWxsLCAkaSA9ICExLCBuKSB0aHJvdyBFcnJvcih0KDMwMCkpOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gU3QoKSB7CiAgICAgICAgICAgIHZhciBlID0gMCAhPT0gS2k7CiAgICAgICAgICAgIHJldHVybiBLaSA9IDAsIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHh0KCkgewogICAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgICAgIG1lbW9pemVkU3RhdGU6IG51bGwsCiAgICAgICAgICAgICAgICBiYXNlU3RhdGU6IG51bGwsCiAgICAgICAgICAgICAgICBiYXNlUXVldWU6IG51bGwsCiAgICAgICAgICAgICAgICBxdWV1ZTogbnVsbCwKICAgICAgICAgICAgICAgIG5leHQ6IG51bGwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGppID8gSGkubWVtb2l6ZWRTdGF0ZSA9IGppID0gZSA6IGppID0gamkubmV4dCA9IGUsIGppCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBFdCgpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09IFFpKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IEhpLmFsdGVybmF0ZTsKICAgICAgICAgICAgICAgIGUgPSBudWxsICE9PSBlID8gZS5tZW1vaXplZFN0YXRlIDogbnVsbAogICAgICAgICAgICB9IGVsc2UgZSA9IFFpLm5leHQ7CiAgICAgICAgICAgIHZhciBuID0gbnVsbCA9PT0gamkgPyBIaS5tZW1vaXplZFN0YXRlIDogamkubmV4dDsKICAgICAgICAgICAgaWYgKG51bGwgIT09IG4pIGppID0gbiwgUWkgPSBlOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBlKSB0aHJvdyBFcnJvcih0KDMxMCkpOwogICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICBtZW1vaXplZFN0YXRlOiAoUWkgPSBlKS5tZW1vaXplZFN0YXRlLAogICAgICAgICAgICAgICAgICAgIGJhc2VTdGF0ZTogUWkuYmFzZVN0YXRlLAogICAgICAgICAgICAgICAgICAgIGJhc2VRdWV1ZTogUWkuYmFzZVF1ZXVlLAogICAgICAgICAgICAgICAgICAgIHF1ZXVlOiBRaS5xdWV1ZSwKICAgICAgICAgICAgICAgICAgICBuZXh0OiBudWxsCiAgICAgICAgICAgICAgICB9LCBudWxsID09PSBqaSA/IEhpLm1lbW9pemVkU3RhdGUgPSBqaSA9IGUgOiBqaSA9IGppLm5leHQgPSBlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGppCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBDdChlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBuID8gbihlKSA6IG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHp0KGUsIG4sIHIpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09IChyID0gKG4gPSBFdCgpKS5xdWV1ZSkpIHRocm93IEVycm9yKHQoMzExKSk7CiAgICAgICAgICAgIHIubGFzdFJlbmRlcmVkUmVkdWNlciA9IGU7CiAgICAgICAgICAgIHZhciBsID0gUWksCiAgICAgICAgICAgICAgICBhID0gbC5iYXNlUXVldWUsCiAgICAgICAgICAgICAgICB1ID0gci5wZW5kaW5nOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gdSkgewogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGEubmV4dDsKICAgICAgICAgICAgICAgICAgICBhLm5leHQgPSB1Lm5leHQsIHUubmV4dCA9IG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGwuYmFzZVF1ZXVlID0gYSA9IHUsIHIucGVuZGluZyA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobnVsbCAhPT0gYSkgewogICAgICAgICAgICAgICAgdSA9IGEubmV4dCwgbCA9IGwuYmFzZVN0YXRlOwogICAgICAgICAgICAgICAgdmFyIGkgPSBvID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICBzID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICBjID0gdTsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGMubGFuZTsKICAgICAgICAgICAgICAgICAgICBpZiAoKFdpICYgZikgPT09IGYpIG51bGwgIT09IHMgJiYgKHMgPSBzLm5leHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogYy5hY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0VhZ2VyU3RhdGU6IGMuaGFzRWFnZXJTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgZWFnZXJTdGF0ZTogYy5lYWdlclN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBudWxsCiAgICAgICAgICAgICAgICAgICAgfSksIGwgPSBjLmhhc0VhZ2VyU3RhdGUgPyBjLmVhZ2VyU3RhdGUgOiBlKGwsIGMuYWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5lOiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBjLmFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0VhZ2VyU3RhdGU6IGMuaGFzRWFnZXJTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhZ2VyU3RhdGU6IGMuZWFnZXJTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gcyA/IChpID0gcyA9IGQsIG8gPSBsKSA6IHMgPSBzLm5leHQgPSBkLCBIaS5sYW5lcyB8PSBmLCBOcyB8PSBmCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGMgPSBjLm5leHQKICAgICAgICAgICAgICAgIH0gd2hpbGUgKG51bGwgIT09IGMgJiYgYyAhPT0gdSk7CiAgICAgICAgICAgICAgICBudWxsID09PSBzID8gbyA9IGwgOiBzLm5leHQgPSBpLCB3byhsLCBuLm1lbW9pemVkU3RhdGUpIHx8ICh0cyA9ICEwKSwgbi5tZW1vaXplZFN0YXRlID0gbCwgbi5iYXNlU3RhdGUgPSBvLCBuLmJhc2VRdWV1ZSA9IHMsIHIubGFzdFJlbmRlcmVkU3RhdGUgPSBsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG51bGwgIT09IChlID0gci5pbnRlcmxlYXZlZCkpIHsKICAgICAgICAgICAgICAgIGEgPSBlOwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIHUgPSBhLmxhbmUsIEhpLmxhbmVzIHw9IHUsIE5zIHw9IHUsIGEgPSBhLm5leHQKICAgICAgICAgICAgICAgIH0gd2hpbGUgKGEgIT09IGUpCiAgICAgICAgICAgIH0gZWxzZSBudWxsID09PSBhICYmIChyLmxhbmVzID0gMCk7CiAgICAgICAgICAgIHJldHVybiBbbi5tZW1vaXplZFN0YXRlLCByLmRpc3BhdGNoXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTnQoZSwgbiwgcikgewogICAgICAgICAgICBpZiAobnVsbCA9PT0gKHIgPSAobiA9IEV0KCkpLnF1ZXVlKSkgdGhyb3cgRXJyb3IodCgzMTEpKTsKICAgICAgICAgICAgci5sYXN0UmVuZGVyZWRSZWR1Y2VyID0gZTsKICAgICAgICAgICAgdmFyIGwgPSByLmRpc3BhdGNoLAogICAgICAgICAgICAgICAgYSA9IHIucGVuZGluZywKICAgICAgICAgICAgICAgIHUgPSBuLm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgIGlmIChudWxsICE9PSBhKSB7CiAgICAgICAgICAgICAgICByLnBlbmRpbmcgPSBudWxsOwogICAgICAgICAgICAgICAgdmFyIG8gPSBhID0gYS5uZXh0OwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIHUgPSBlKHUsIG8uYWN0aW9uKSwgbyA9IG8ubmV4dAogICAgICAgICAgICAgICAgfSB3aGlsZSAobyAhPT0gYSk7CiAgICAgICAgICAgICAgICB3byh1LCBuLm1lbW9pemVkU3RhdGUpIHx8ICh0cyA9ICEwKSwgbi5tZW1vaXplZFN0YXRlID0gdSwgbnVsbCA9PT0gbi5iYXNlUXVldWUgJiYgKG4uYmFzZVN0YXRlID0gdSksIHIubGFzdFJlbmRlcmVkU3RhdGUgPSB1CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFt1LCBsXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUHQoZSwgbiwgdCkge30KCiAgICAgICAgZnVuY3Rpb24gX3QoZSwgbiwgcikgewogICAgICAgICAgICByID0gSGk7CiAgICAgICAgICAgIHZhciBsID0gRXQoKSwKICAgICAgICAgICAgICAgIGEgPSBuKCksCiAgICAgICAgICAgICAgICB1ID0gIXdvKGwubWVtb2l6ZWRTdGF0ZSwgYSk7CiAgICAgICAgICAgIGlmICh1ICYmIChsLm1lbW9pemVkU3RhdGUgPSBhLCB0cyA9ICEwKSwgbCA9IGwucXVldWUsIEJ0KE10LmJpbmQobnVsbCwgciwgbCwgZSksIFtlXSksIGwuZ2V0U25hcHNob3QgIT09IG4gfHwgdSB8fCBudWxsICE9PSBqaSAmJiAxICYgamkubWVtb2l6ZWRTdGF0ZS50YWcpIHsKICAgICAgICAgICAgICAgIGlmIChyLmZsYWdzIHw9IDIwNDgsIE90KDksIFR0LmJpbmQobnVsbCwgciwgbCwgYSwgbiksIHZvaWQgMCwgbnVsbCksIG51bGwgPT09IGtzKSB0aHJvdyBFcnJvcih0KDM0OSkpOwogICAgICAgICAgICAgICAgMCAhPSAoMzAgJiBXaSkgfHwgTHQociwgbiwgYSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTHQoZSwgbiwgdCkgewogICAgICAgICAgICBlLmZsYWdzIHw9IDE2Mzg0LCBlID0gewogICAgICAgICAgICAgICAgZ2V0U25hcHNob3Q6IG4sCiAgICAgICAgICAgICAgICB2YWx1ZTogdAogICAgICAgICAgICB9LCBudWxsID09PSAobiA9IEhpLnVwZGF0ZVF1ZXVlKSA/IChuID0gewogICAgICAgICAgICAgICAgbGFzdEVmZmVjdDogbnVsbCwKICAgICAgICAgICAgICAgIHN0b3JlczogbnVsbAogICAgICAgICAgICB9LCBIaS51cGRhdGVRdWV1ZSA9IG4sIG4uc3RvcmVzID0gW2VdKSA6IG51bGwgPT09ICh0ID0gbi5zdG9yZXMpID8gbi5zdG9yZXMgPSBbZV0gOiB0LnB1c2goZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFR0KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgbi52YWx1ZSA9IHQsIG4uZ2V0U25hcHNob3QgPSByLCBGdChuKSAmJiBSdChlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTXQoZSwgbiwgdCkgewogICAgICAgICAgICByZXR1cm4gdCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBGdChuKSAmJiBSdChlKQogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEZ0KGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLmdldFNuYXBzaG90OwogICAgICAgICAgICBlID0gZS52YWx1ZTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciB0ID0gbigpOwogICAgICAgICAgICAgICAgcmV0dXJuICF3byhlLCB0KQogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUnQoZSkgewogICAgICAgICAgICB2YXIgbiA9IEtuKGUsIDEpOwogICAgICAgICAgICBudWxsICE9PSBuICYmIGFsKG4sIGUsIDEsIC0xKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRHQoZSkgewogICAgICAgICAgICB2YXIgbiA9IHh0KCk7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlICYmIChlID0gZSgpKSwgbi5tZW1vaXplZFN0YXRlID0gbi5iYXNlU3RhdGUgPSBlLCBlID0gewogICAgICAgICAgICAgICAgcGVuZGluZzogbnVsbCwKICAgICAgICAgICAgICAgIGludGVybGVhdmVkOiBudWxsLAogICAgICAgICAgICAgICAgbGFuZXM6IDAsCiAgICAgICAgICAgICAgICBkaXNwYXRjaDogbnVsbCwKICAgICAgICAgICAgICAgIGxhc3RSZW5kZXJlZFJlZHVjZXI6IEN0LAogICAgICAgICAgICAgICAgbGFzdFJlbmRlcmVkU3RhdGU6IGUKICAgICAgICAgICAgfSwgbi5xdWV1ZSA9IGUsIGUgPSBlLmRpc3BhdGNoID0gSnQuYmluZChudWxsLCBIaSwgZSksIFtuLm1lbW9pemVkU3RhdGUsIGVdCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBPdChlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHJldHVybiBlID0gewogICAgICAgICAgICAgICAgdGFnOiBlLAogICAgICAgICAgICAgICAgY3JlYXRlOiBuLAogICAgICAgICAgICAgICAgZGVzdHJveTogdCwKICAgICAgICAgICAgICAgIGRlcHM6IHIsCiAgICAgICAgICAgICAgICBuZXh0OiBudWxsCiAgICAgICAgICAgIH0sIG51bGwgPT09IChuID0gSGkudXBkYXRlUXVldWUpID8gKG4gPSB7CiAgICAgICAgICAgICAgICBsYXN0RWZmZWN0OiBudWxsLAogICAgICAgICAgICAgICAgc3RvcmVzOiBudWxsCiAgICAgICAgICAgIH0sIEhpLnVwZGF0ZVF1ZXVlID0gbiwgbi5sYXN0RWZmZWN0ID0gZS5uZXh0ID0gZSkgOiBudWxsID09PSAodCA9IG4ubGFzdEVmZmVjdCkgPyBuLmxhc3RFZmZlY3QgPSBlLm5leHQgPSBlIDogKHIgPSB0Lm5leHQsIHQubmV4dCA9IGUsIGUubmV4dCA9IHIsIG4ubGFzdEVmZmVjdCA9IGUpLCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBJdChlKSB7CiAgICAgICAgICAgIHJldHVybiBFdCgpLm1lbW9pemVkU3RhdGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFV0KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSB4dCgpOwogICAgICAgICAgICBIaS5mbGFncyB8PSBlLCBsLm1lbW9pemVkU3RhdGUgPSBPdCgxIHwgbiwgdCwgdm9pZCAwLCB2b2lkIDAgPT09IHIgPyBudWxsIDogcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFZ0KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSBFdCgpOwogICAgICAgICAgICByID0gdm9pZCAwID09PSByID8gbnVsbCA6IHI7CiAgICAgICAgICAgIHZhciBhID0gdm9pZCAwOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gUWkpIHsKICAgICAgICAgICAgICAgIHZhciB1ID0gUWkubWVtb2l6ZWRTdGF0ZTsKICAgICAgICAgICAgICAgIGlmIChhID0gdS5kZXN0cm95LCBudWxsICE9PSByICYmIGt0KHIsIHUuZGVwcykpIHJldHVybiB2b2lkKGwubWVtb2l6ZWRTdGF0ZSA9IE90KG4sIHQsIGEsIHIpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIEhpLmZsYWdzIHw9IGUsIGwubWVtb2l6ZWRTdGF0ZSA9IE90KDEgfCBuLCB0LCBhLCByKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQXQoZSwgbikgewogICAgICAgICAgICByZXR1cm4gVXQoODM5MDY1NiwgOCwgZSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEJ0KGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIFZ0KDIwNDgsIDgsIGUsIG4pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBXdChlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiBWdCg0LCAyLCBlLCBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSHQoZSwgbikgewogICAgICAgICAgICByZXR1cm4gVnQoNCwgNCwgZSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFF0KGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4gPyAoZSA9IGUoKSwgbihlKSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuKG51bGwpCiAgICAgICAgICAgIH0pIDogbnVsbCAhPSBuID8gKGUgPSBlKCksIG4uY3VycmVudCA9IGUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbi5jdXJyZW50ID0gbnVsbAogICAgICAgICAgICB9KSA6IHZvaWQgMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24ganQoZSwgbiwgdCkgewogICAgICAgICAgICByZXR1cm4gdCA9IG51bGwgIT0gdCA/IHQuY29uY2F0KFtlXSkgOiBudWxsLCBWdCg0LCA0LCBRdC5iaW5kKG51bGwsIG4sIGUpLCB0KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gJHQoZSwgbikge30KCiAgICAgICAgZnVuY3Rpb24gcXQoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IEV0KCk7CiAgICAgICAgICAgIG4gPSB2b2lkIDAgPT09IG4gPyBudWxsIDogbjsKICAgICAgICAgICAgdmFyIHIgPSB0Lm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgIHJldHVybiBudWxsICE9PSByICYmIG51bGwgIT09IG4gJiYga3QobiwgclsxXSkgPyByWzBdIDogKHQubWVtb2l6ZWRTdGF0ZSA9IFtlLCBuXSwgZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEt0KGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBFdCgpOwogICAgICAgICAgICBuID0gdm9pZCAwID09PSBuID8gbnVsbCA6IG47CiAgICAgICAgICAgIHZhciByID0gdC5tZW1vaXplZFN0YXRlOwogICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gciAmJiBudWxsICE9PSBuICYmIGt0KG4sIHJbMV0pID8gclswXSA6IChlID0gZSgpLCB0Lm1lbW9pemVkU3RhdGUgPSBbZSwgbl0sIGUpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBZdChlLCBuLCB0KSB7CiAgICAgICAgICAgIHJldHVybiAwID09ICgyMSAmIFdpKSA/IChlLmJhc2VTdGF0ZSAmJiAoZS5iYXNlU3RhdGUgPSAhMSwgdHMgPSAhMCksIGUubWVtb2l6ZWRTdGF0ZSA9IHQpIDogKHdvKHQsIG4pIHx8ICh0ID0gWigpLCBIaS5sYW5lcyB8PSB0LCBOcyB8PSB0LCBlLmJhc2VTdGF0ZSA9ICEwKSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFh0KGUsIG4sIHQpIHsKICAgICAgICAgICAgeHUgPSAwICE9PSAodCA9IHh1KSAmJiA0ID4gdCA/IHQgOiA0LCBlKCEwKTsKICAgICAgICAgICAgdmFyIHIgPSBCaS50cmFuc2l0aW9uOwogICAgICAgICAgICBCaS50cmFuc2l0aW9uID0ge307CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBlKCExKSwgbigpCiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICB4dSA9IHQsIEJpLnRyYW5zaXRpb24gPSByCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEd0KCkgewogICAgICAgICAgICByZXR1cm4gRXQoKS5tZW1vaXplZFN0YXRlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBadChlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gbGwoZSk7CiAgICAgICAgICAgIHQgPSB7CiAgICAgICAgICAgICAgICBsYW5lOiByLAogICAgICAgICAgICAgICAgYWN0aW9uOiB0LAogICAgICAgICAgICAgICAgaGFzRWFnZXJTdGF0ZTogITEsCiAgICAgICAgICAgICAgICBlYWdlclN0YXRlOiBudWxsLAogICAgICAgICAgICAgICAgbmV4dDogbnVsbAogICAgICAgICAgICB9LCBlcihlKSA/IG5yKG4sIHQpIDogbnVsbCAhPT0gKHQgPSBxbihlLCBuLCB0LCByKSkgJiYgKGFsKHQsIGUsIHIsIHJsKCkpLCB0cih0LCBuLCByKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEp0KGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBsbChlKSwKICAgICAgICAgICAgICAgIGwgPSB7CiAgICAgICAgICAgICAgICAgICAgbGFuZTogciwKICAgICAgICAgICAgICAgICAgICBhY3Rpb246IHQsCiAgICAgICAgICAgICAgICAgICAgaGFzRWFnZXJTdGF0ZTogITEsCiAgICAgICAgICAgICAgICAgICAgZWFnZXJTdGF0ZTogbnVsbCwKICAgICAgICAgICAgICAgICAgICBuZXh0OiBudWxsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoZXIoZSkpIG5yKG4sIGwpOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBhID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZS5sYW5lcyAmJiAobnVsbCA9PT0gYSB8fCAwID09PSBhLmxhbmVzKSAmJiBudWxsICE9PSAoYSA9IG4ubGFzdFJlbmRlcmVkUmVkdWNlcikpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBuLmxhc3RSZW5kZXJlZFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gYSh1LCB0KTsKICAgICAgICAgICAgICAgICAgICBpZiAobC5oYXNFYWdlclN0YXRlID0gITAsIGwuZWFnZXJTdGF0ZSA9IG8sIHdvKG8sIHUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gbi5pbnRlcmxlYXZlZDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGkgPyAobC5uZXh0ID0gbCwgJG4obikpIDogKGwubmV4dCA9IGkubmV4dCwgaS5uZXh0ID0gbCksIHZvaWQobi5pbnRlcmxlYXZlZCA9IGwpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIG51bGwgIT09ICh0ID0gcW4oZSwgbiwgbCwgcikpICYmIChhbCh0LCBlLCByLCBsID0gcmwoKSksIHRyKHQsIG4sIHIpKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBlcihlKSB7CiAgICAgICAgICAgIHZhciBuID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgIHJldHVybiBlID09PSBIaSB8fCBudWxsICE9PSBuICYmIG4gPT09IEhpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBucihlLCBuKSB7CiAgICAgICAgICAgIHFpID0gJGkgPSAhMDsKICAgICAgICAgICAgdmFyIHQgPSBlLnBlbmRpbmc7CiAgICAgICAgICAgIG51bGwgPT09IHQgPyBuLm5leHQgPSBuIDogKG4ubmV4dCA9IHQubmV4dCwgdC5uZXh0ID0gbiksIGUucGVuZGluZyA9IG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHRyKGUsIG4sIHQpIHsKICAgICAgICAgICAgaWYgKDAgIT0gKDQxOTQyNDAgJiB0KSkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuLmxhbmVzOwogICAgICAgICAgICAgICAgdCB8PSByICY9IGUucGVuZGluZ0xhbmVzLCBuLmxhbmVzID0gdCwgbmUoZSwgdCkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcnIoZSwgbikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAiIiwKICAgICAgICAgICAgICAgICAgICByID0gbjsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICB0ICs9IGMociksIHIgPSByLnJldHVybgogICAgICAgICAgICAgICAgfSB3aGlsZSAocik7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHQKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgbCA9ICJcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6ICIgKyBlLm1lc3NhZ2UgKyAiXG4iICsgZS5zdGFjawogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgIHNvdXJjZTogbiwKICAgICAgICAgICAgICAgIHN0YWNrOiBsLAogICAgICAgICAgICAgICAgZGlnZXN0OiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGxyKGUsIG4sIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgc291cmNlOiBudWxsLAogICAgICAgICAgICAgICAgc3RhY2s6IG51bGwgIT0gdCA/IHQgOiBudWxsLAogICAgICAgICAgICAgICAgZGlnZXN0OiBudWxsICE9IG4gPyBuIDogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBhcihlLCBuKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKG4udmFsdWUpCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRocm93IGUKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB1cihlLCBuLCB0KSB7CiAgICAgICAgICAgICh0ID0gR24oLTEsIHQpKS50YWcgPSAzLCB0LnBheWxvYWQgPSB7CiAgICAgICAgICAgICAgICBlbGVtZW50OiBudWxsCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHZhciByID0gbi52YWx1ZTsKICAgICAgICAgICAgcmV0dXJuIHQuY2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIERzIHx8IChEcyA9ICEwLCBPcyA9IHIpLCBhcigwLCBuKQogICAgICAgICAgICB9LCB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvcihlLCBuLCB0KSB7CiAgICAgICAgICAgICh0ID0gR24oLTEsIHQpKS50YWcgPSAzOwogICAgICAgICAgICB2YXIgciA9IGUudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7CiAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiByKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IG4udmFsdWU7CiAgICAgICAgICAgICAgICB0LnBheWxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihsKQogICAgICAgICAgICAgICAgfSwgdC5jYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGFyKDAsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGEgPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGEgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYS5jb21wb25lbnREaWRDYXRjaCAmJiAodC5jYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYXIoMCwgbiksICJmdW5jdGlvbiIgIT0gdHlwZW9mIHIgJiYgKG51bGwgPT09IElzID8gSXMgPSBuZXcgU2V0KFt0aGlzXSkgOiBJcy5hZGQodGhpcykpOwogICAgICAgICAgICAgICAgdmFyIGUgPSBuLnN0YWNrOwogICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnREaWRDYXRjaChuLnZhbHVlLCB7CiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50U3RhY2s6IG51bGwgIT09IGUgPyBlIDogIiIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pLCB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpcihlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gZS5waW5nQ2FjaGU7CiAgICAgICAgICAgIGlmIChudWxsID09PSByKSB7CiAgICAgICAgICAgICAgICByID0gZS5waW5nQ2FjaGUgPSBuZXcgZXM7CiAgICAgICAgICAgICAgICB2YXIgbCA9IG5ldyBTZXQ7CiAgICAgICAgICAgICAgICByLnNldChuLCBsKQogICAgICAgICAgICB9IGVsc2Ugdm9pZCAwID09PSAobCA9IHIuZ2V0KG4pKSAmJiAobCA9IG5ldyBTZXQsIHIuc2V0KG4sIGwpKTsKICAgICAgICAgICAgbC5oYXModCkgfHwgKGwuYWRkKHQpLCBlID0gTmwuYmluZChudWxsLCBlLCBuLCB0KSwgbi50aGVuKGUsIGUpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc3IoZSkgewogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgICAgIGlmICgobiA9IDEzID09PSBlLnRhZykgJiYgKG4gPSBudWxsID09PSAobiA9IGUubWVtb2l6ZWRTdGF0ZSkgfHwgbnVsbCAhPT0gbi5kZWh5ZHJhdGVkKSwgbikgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICBlID0gZS5yZXR1cm4KICAgICAgICAgICAgfSB3aGlsZSAobnVsbCAhPT0gZSk7CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjcihlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHJldHVybiAwID09ICgxICYgZS5tb2RlKSA/IChlID09PSBuID8gZS5mbGFncyB8PSA2NTUzNiA6IChlLmZsYWdzIHw9IDEyOCwgdC5mbGFncyB8PSAxMzEwNzIsIHQuZmxhZ3MgJj0gLTUyODA1LCAxID09PSB0LnRhZyAmJiAobnVsbCA9PT0gdC5hbHRlcm5hdGUgPyB0LnRhZyA9IDE3IDogKChuID0gR24oLTEsIDEpKS50YWcgPSAyLCBabih0LCBuLCAxKSkpLCB0LmxhbmVzIHw9IDEpLCBlKSA6IChlLmZsYWdzIHw9IDY1NTM2LCBlLmxhbmVzID0gbCwgZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZyKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgbi5jaGlsZCA9IG51bGwgPT09IGUgPyBGaShuLCBudWxsLCB0LCByKSA6IE1pKG4sIGUuY2hpbGQsIHQsIHIpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBkcihlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHQgPSB0LnJlbmRlcjsKICAgICAgICAgICAgdmFyIGEgPSBuLnJlZjsKICAgICAgICAgICAgcmV0dXJuIFFuKG4sIGwpLCByID0gd3QoZSwgbiwgdCwgciwgYSwgbCksIHQgPSBTdCgpLCBudWxsID09PSBlIHx8IHRzID8gKGtpICYmIHQgJiYgTG4obiksIG4uZmxhZ3MgfD0gMSwgZnIoZSwgbiwgciwgbCksIG4uY2hpbGQpIDogKG4udXBkYXRlUXVldWUgPSBlLnVwZGF0ZVF1ZXVlLCBuLmZsYWdzICY9IC0yMDUzLCBlLmxhbmVzICY9IH5sLCBMcihlLCBuLCBsKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHByKGUsIG4sIHQsIHIsIGwpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09IGUpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gdC50eXBlOwogICAgICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgIT0gdHlwZW9mIGEgfHwgRmwoYSkgfHwgdm9pZCAwICE9PSBhLmRlZmF1bHRQcm9wcyB8fCBudWxsICE9PSB0LmNvbXBhcmUgfHwgdm9pZCAwICE9PSB0LmRlZmF1bHRQcm9wcyA/ICgoZSA9IERsKHQudHlwZSwgbnVsbCwgciwgbiwgbi5tb2RlLCBsKSkucmVmID0gbi5yZWYsIGUucmV0dXJuID0gbiwgbi5jaGlsZCA9IGUpIDogKG4udGFnID0gMTUsIG4udHlwZSA9IGEsIG1yKGUsIG4sIGEsIHIsIGwpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhID0gZS5jaGlsZCwgMCA9PSAoZS5sYW5lcyAmIGwpKSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IGEubWVtb2l6ZWRQcm9wczsKICAgICAgICAgICAgICAgIGlmICgodCA9IG51bGwgIT09ICh0ID0gdC5jb21wYXJlKSA/IHQgOiBPZSkodSwgcikgJiYgZS5yZWYgPT09IG4ucmVmKSByZXR1cm4gTHIoZSwgbiwgbCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbi5mbGFncyB8PSAxLCAoZSA9IFJsKGEsIHIpKS5yZWYgPSBuLnJlZiwgZS5yZXR1cm4gPSBuLCBuLmNoaWxkID0gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbXIoZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICBpZiAobnVsbCAhPT0gZSkgewogICAgICAgICAgICAgICAgdmFyIGEgPSBlLm1lbW9pemVkUHJvcHM7CiAgICAgICAgICAgICAgICBpZiAoT2UoYSwgcikgJiYgZS5yZWYgPT09IG4ucmVmKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRzID0gITEsIG4ucGVuZGluZ1Byb3BzID0gciA9IGEsIDAgPT0gKGUubGFuZXMgJiBsKSkgcmV0dXJuIG4ubGFuZXMgPSBlLmxhbmVzLCBMcihlLCBuLCBsKTsKICAgICAgICAgICAgICAgICAgICAwICE9ICgxMzEwNzIgJiBlLmZsYWdzKSAmJiAodHMgPSAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdnIoZSwgbiwgdCwgciwgbCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhyKGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuLnBlbmRpbmdQcm9wcywKICAgICAgICAgICAgICAgIGwgPSByLmNoaWxkcmVuLAogICAgICAgICAgICAgICAgYSA9IG51bGwgIT09IGUgPyBlLm1lbW9pemVkU3RhdGUgOiBudWxsOwogICAgICAgICAgICBpZiAoImhpZGRlbiIgPT09IHIubW9kZSkKICAgICAgICAgICAgICAgIGlmICgwID09ICgxICYgbi5tb2RlKSkgbi5tZW1vaXplZFN0YXRlID0gewogICAgICAgICAgICAgICAgICAgIGJhc2VMYW5lczogMCwKICAgICAgICAgICAgICAgICAgICBjYWNoZVBvb2w6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnM6IG51bGwKICAgICAgICAgICAgICAgIH0sIGJuKEVzLCB4cyksIHhzIHw9IHQ7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSAoMTA3Mzc0MTgyNCAmIHQpKSByZXR1cm4gZSA9IG51bGwgIT09IGEgPyBhLmJhc2VMYW5lcyB8IHQgOiB0LCBuLmxhbmVzID0gbi5jaGlsZExhbmVzID0gMTA3Mzc0MTgyNCwgbi5tZW1vaXplZFN0YXRlID0gewogICAgICAgICAgICAgICAgICAgICAgICBiYXNlTGFuZXM6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlUG9vbDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnM6IG51bGwKICAgICAgICAgICAgICAgICAgICB9LCBuLnVwZGF0ZVF1ZXVlID0gbnVsbCwgYm4oRXMsIHhzKSwgeHMgfD0gZSwgbnVsbDsKICAgICAgICAgICAgICAgICAgICBuLm1lbW9pemVkU3RhdGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VMYW5lczogMCwKICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVQb29sOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uczogbnVsbAogICAgICAgICAgICAgICAgICAgIH0sIHIgPSBudWxsICE9PSBhID8gYS5iYXNlTGFuZXMgOiB0LCBibihFcywgeHMpLCB4cyB8PSByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgbnVsbCAhPT0gYSA/IChyID0gYS5iYXNlTGFuZXMgfCB0LCBuLm1lbW9pemVkU3RhdGUgPSBudWxsKSA6IHIgPSB0LCBibihFcywgeHMpLCB4cyB8PSByOwogICAgICAgICAgICByZXR1cm4gZnIoZSwgbiwgbCwgdCksIG4uY2hpbGQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGdyKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBuLnJlZjsKICAgICAgICAgICAgKG51bGwgPT09IGUgJiYgbnVsbCAhPT0gdCB8fCBudWxsICE9PSBlICYmIGUucmVmICE9PSB0KSAmJiAobi5mbGFncyB8PSA1MTIsIG4uZmxhZ3MgfD0gMjA5NzE1MikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHZyKGUsIG4sIHQsIHIsIGwpIHsKICAgICAgICAgICAgdmFyIGEgPSB3bih0KSA/IGFpIDogcmkuY3VycmVudDsKICAgICAgICAgICAgcmV0dXJuIGEgPSBrbihuLCBhKSwgUW4obiwgbCksIHQgPSB3dChlLCBuLCB0LCByLCBhLCBsKSwgciA9IFN0KCksIG51bGwgPT09IGUgfHwgdHMgPyAoa2kgJiYgciAmJiBMbihuKSwgbi5mbGFncyB8PSAxLCBmcihlLCBuLCB0LCBsKSwgbi5jaGlsZCkgOiAobi51cGRhdGVRdWV1ZSA9IGUudXBkYXRlUXVldWUsIG4uZmxhZ3MgJj0gLTIwNTMsIGUubGFuZXMgJj0gfmwsIExyKGUsIG4sIGwpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geXIoZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICBpZiAod24odCkpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gITA7CiAgICAgICAgICAgICAgICBFbihuKQogICAgICAgICAgICB9IGVsc2UgYSA9ICExOwogICAgICAgICAgICBpZiAoUW4obiwgbCksIG51bGwgPT09IG4uc3RhdGVOb2RlKSBfcihlLCBuKSwgYXQobiwgdCwgciksIG90KG4sIHQsIHIsIGwpLCByID0gITA7CiAgICAgICAgICAgIGVsc2UgaWYgKG51bGwgPT09IGUpIHsKICAgICAgICAgICAgICAgIHZhciB1ID0gbi5zdGF0ZU5vZGUsCiAgICAgICAgICAgICAgICAgICAgbyA9IG4ubWVtb2l6ZWRQcm9wczsKICAgICAgICAgICAgICAgIHUucHJvcHMgPSBvOwogICAgICAgICAgICAgICAgdmFyIGkgPSB1LmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgcyA9IHQuY29udGV4dFR5cGU7CiAgICAgICAgICAgICAgICBzID0gIm9iamVjdCIgPT0gdHlwZW9mIHMgJiYgbnVsbCAhPT0gcyA/IGpuKHMpIDoga24obiwgcyA9IHduKHQpID8gYWkgOiByaS5jdXJyZW50KTsKICAgICAgICAgICAgICAgIHZhciBjID0gdC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsCiAgICAgICAgICAgICAgICAgICAgZiA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGMgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTsKICAgICAgICAgICAgICAgIGYgfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB1LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgfHwgKG8gIT09IHIgfHwgaSAhPT0gcykgJiYgdXQobiwgdSwgciwgcyksIF9pID0gITE7CiAgICAgICAgICAgICAgICB2YXIgZCA9IG4ubWVtb2l6ZWRTdGF0ZTsKICAgICAgICAgICAgICAgIHUuc3RhdGUgPSBkLCBudChuLCByLCB1LCBsKSwgaSA9IG4ubWVtb2l6ZWRTdGF0ZSwgbyAhPT0gciB8fCBkICE9PSBpIHx8IGxpLmN1cnJlbnQgfHwgX2kgPyAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYyAmJiAocnQobiwgdCwgYywgciksIGkgPSBuLm1lbW9pemVkU3RhdGUpLCAobyA9IF9pIHx8IGx0KG4sIHQsIG8sIHIsIGQsIGksIHMpKSA/IChmIHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIHUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB1LmNvbXBvbmVudFdpbGxNb3VudCB8fCAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5jb21wb25lbnRXaWxsTW91bnQgJiYgdS5jb21wb25lbnRXaWxsTW91bnQoKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50ICYmIHUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5jb21wb25lbnREaWRNb3VudCAmJiAobi5mbGFncyB8PSA0MTk0MzA4KSkgOiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5jb21wb25lbnREaWRNb3VudCAmJiAobi5mbGFncyB8PSA0MTk0MzA4KSwgbi5tZW1vaXplZFByb3BzID0gciwgbi5tZW1vaXplZFN0YXRlID0gaSksIHUucHJvcHMgPSByLCB1LnN0YXRlID0gaSwgdS5jb250ZXh0ID0gcywgciA9IG8pIDogKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHUuY29tcG9uZW50RGlkTW91bnQgJiYgKG4uZmxhZ3MgfD0gNDE5NDMwOCksIHIgPSAhMSkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHUgPSBuLnN0YXRlTm9kZSwgWG4oZSwgbiksIG8gPSBuLm1lbW9pemVkUHJvcHMsIHMgPSBuLnR5cGUgPT09IG4uZWxlbWVudFR5cGUgPyBvIDogQW4obi50eXBlLCBvKSwgdS5wcm9wcyA9IHMsIGYgPSBuLnBlbmRpbmdQcm9wcywgZCA9IHUuY29udGV4dCwgaSA9ICJvYmplY3QiID09IHR5cGVvZihpID0gdC5jb250ZXh0VHlwZSkgJiYgbnVsbCAhPT0gaSA/IGpuKGkpIDoga24obiwgaSA9IHduKHQpID8gYWkgOiByaS5jdXJyZW50KTsKICAgICAgICAgICAgICAgIHZhciBwID0gdC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7CiAgICAgICAgICAgICAgICAoYyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHAgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSkgfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB1LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgfHwgKG8gIT09IGYgfHwgZCAhPT0gaSkgJiYgdXQobiwgdSwgciwgaSksIF9pID0gITEsIGQgPSBuLm1lbW9pemVkU3RhdGUsIHUuc3RhdGUgPSBkLCBudChuLCByLCB1LCBsKTsKICAgICAgICAgICAgICAgIHZhciBtID0gbi5tZW1vaXplZFN0YXRlOwogICAgICAgICAgICAgICAgbyAhPT0gZiB8fCBkICE9PSBtIHx8IGxpLmN1cnJlbnQgfHwgX2kgPyAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgcCAmJiAocnQobiwgdCwgcCwgciksIG0gPSBuLm1lbW9pemVkU3RhdGUpLCAocyA9IF9pIHx8IGx0KG4sIHQsIHMsIHIsIGQsIG0sIGkpIHx8ICExKSA/IChjIHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIHUuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5jb21wb25lbnRXaWxsVXBkYXRlIHx8ICgiZnVuY3Rpb24iID09IHR5cGVvZiB1LmNvbXBvbmVudFdpbGxVcGRhdGUgJiYgdS5jb21wb25lbnRXaWxsVXBkYXRlKHIsIG0sIGkpLCAiZnVuY3Rpb24iID09IHR5cGVvZiB1LlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlICYmIHUuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUociwgbSwgaSkpLCAiZnVuY3Rpb24iID09IHR5cGVvZiB1LmNvbXBvbmVudERpZFVwZGF0ZSAmJiAobi5mbGFncyB8PSA0KSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSAmJiAobi5mbGFncyB8PSAxMDI0KSkgOiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5jb21wb25lbnREaWRVcGRhdGUgfHwgbyA9PT0gZS5tZW1vaXplZFByb3BzICYmIGQgPT09IGUubWVtb2l6ZWRTdGF0ZSB8fCAobi5mbGFncyB8PSA0KSwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSB8fCBvID09PSBlLm1lbW9pemVkUHJvcHMgJiYgZCA9PT0gZS5tZW1vaXplZFN0YXRlIHx8IChuLmZsYWdzIHw9IDEwMjQpLCBuLm1lbW9pemVkUHJvcHMgPSByLCBuLm1lbW9pemVkU3RhdGUgPSBtKSwgdS5wcm9wcyA9IHIsIHUuc3RhdGUgPSBtLCB1LmNvbnRleHQgPSBpLCByID0gcykgOiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5jb21wb25lbnREaWRVcGRhdGUgfHwgbyA9PT0gZS5tZW1vaXplZFByb3BzICYmIGQgPT09IGUubWVtb2l6ZWRTdGF0ZSB8fCAobi5mbGFncyB8PSA0KSwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSB8fCBvID09PSBlLm1lbW9pemVkUHJvcHMgJiYgZCA9PT0gZS5tZW1vaXplZFN0YXRlIHx8IChuLmZsYWdzIHw9IDEwMjQpLCByID0gITEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGJyKGUsIG4sIHQsIHIsIGEsIGwpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBicihlLCBuLCB0LCByLCBsLCBhKSB7CiAgICAgICAgICAgIGdyKGUsIG4pOwogICAgICAgICAgICB2YXIgdSA9IDAgIT0gKDEyOCAmIG4uZmxhZ3MpOwogICAgICAgICAgICBpZiAoIXIgJiYgIXUpIHJldHVybiBsICYmIENuKG4sIHQsICExKSwgTHIoZSwgbiwgYSk7CiAgICAgICAgICAgIHIgPSBuLnN0YXRlTm9kZSwgbnMuY3VycmVudCA9IG47CiAgICAgICAgICAgIHZhciBvID0gdSAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0LmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciA/IG51bGwgOiByLnJlbmRlcigpOwogICAgICAgICAgICByZXR1cm4gbi5mbGFncyB8PSAxLCBudWxsICE9PSBlICYmIHUgPyAobi5jaGlsZCA9IE1pKG4sIGUuY2hpbGQsIG51bGwsIGEpLCBuLmNoaWxkID0gTWkobiwgbnVsbCwgbywgYSkpIDogZnIoZSwgbiwgbywgYSksIG4ubWVtb2l6ZWRTdGF0ZSA9IHIuc3RhdGUsIGwgJiYgQ24obiwgdCwgITApLCBuLmNoaWxkCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBrcihlKSB7CiAgICAgICAgICAgIHZhciBuID0gZS5zdGF0ZU5vZGU7CiAgICAgICAgICAgIG4ucGVuZGluZ0NvbnRleHQgPyBTbigwLCBuLnBlbmRpbmdDb250ZXh0LCBuLnBlbmRpbmdDb250ZXh0ICE9PSBuLmNvbnRleHQpIDogbi5jb250ZXh0ICYmIFNuKDAsIG4uY29udGV4dCwgITEpLCBwdChlLCBuLmNvbnRhaW5lckluZm8pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB3cihlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHJldHVybiBVbigpLCBWbihsKSwgbi5mbGFncyB8PSAyNTYsIGZyKGUsIG4sIHQsIHIpLCBuLmNoaWxkCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBTcihlKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBiYXNlTGFuZXM6IGUsCiAgICAgICAgICAgICAgICBjYWNoZVBvb2w6IG51bGwsCiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uczogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB4cihlLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBsLCBhID0gbi5wZW5kaW5nUHJvcHMsCiAgICAgICAgICAgICAgICB1ID0gVWkuY3VycmVudCwKICAgICAgICAgICAgICAgIG8gPSAhMSwKICAgICAgICAgICAgICAgIGkgPSAwICE9ICgxMjggJiBuLmZsYWdzKTsKICAgICAgICAgICAgaWYgKChsID0gaSkgfHwgKGwgPSAobnVsbCA9PT0gZSB8fCBudWxsICE9PSBlLm1lbW9pemVkU3RhdGUpICYmIDAgIT0gKDIgJiB1KSksIGwgPyAobyA9ICEwLCBuLmZsYWdzICY9IC0xMjkpIDogbnVsbCAhPT0gZSAmJiBudWxsID09PSBlLm1lbW9pemVkU3RhdGUgfHwgKHUgfD0gMSksIGJuKFVpLCAxICYgdSksIG51bGwgPT09IGUpIHJldHVybiBEbihuKSwgbnVsbCAhPT0gKGUgPSBuLm1lbW9pemVkU3RhdGUpICYmIG51bGwgIT09IChlID0gZS5kZWh5ZHJhdGVkKSA/ICgwID09ICgxICYgbi5tb2RlKSA/IG4ubGFuZXMgPSAxIDogIiQhIiA9PT0gZS5kYXRhID8gbi5sYW5lcyA9IDggOiBuLmxhbmVzID0gMTA3Mzc0MTgyNCwgbnVsbCkgOiAoaSA9IGEuY2hpbGRyZW4sIGUgPSBhLmZhbGxiYWNrLCBvID8gKGEgPSBuLm1vZGUsIG8gPSBuLmNoaWxkLCBpID0gewogICAgICAgICAgICAgICAgbW9kZTogImhpZGRlbiIsCiAgICAgICAgICAgICAgICBjaGlsZHJlbjogaQogICAgICAgICAgICB9LCAwID09ICgxICYgYSkgJiYgbnVsbCAhPT0gbyA/IChvLmNoaWxkTGFuZXMgPSAwLCBvLnBlbmRpbmdQcm9wcyA9IGkpIDogbyA9IElsKGksIGEsIDAsIG51bGwpLCBlID0gT2woZSwgYSwgciwgbnVsbCksIG8ucmV0dXJuID0gbiwgZS5yZXR1cm4gPSBuLCBvLnNpYmxpbmcgPSBlLCBuLmNoaWxkID0gbywgbi5jaGlsZC5tZW1vaXplZFN0YXRlID0gU3IociksIG4ubWVtb2l6ZWRTdGF0ZSA9IHJzLCBlKSA6IEVyKG4sIGkpKTsKICAgICAgICAgICAgaWYgKG51bGwgIT09ICh1ID0gZS5tZW1vaXplZFN0YXRlKSAmJiBudWxsICE9PSAobCA9IHUuZGVoeWRyYXRlZCkpIHJldHVybiBmdW5jdGlvbihlLCBuLCByLCBsLCBhLCB1LCBvKSB7CiAgICAgICAgICAgICAgICBpZiAocikgcmV0dXJuIDI1NiAmIG4uZmxhZ3MgPyAobi5mbGFncyAmPSAtMjU3LCBDcihlLCBuLCBvLCBsID0gbHIoRXJyb3IodCg0MjIpKSkpKSA6IG51bGwgIT09IG4ubWVtb2l6ZWRTdGF0ZSA/IChuLmNoaWxkID0gZS5jaGlsZCwgbi5mbGFncyB8PSAxMjgsIG51bGwpIDogKHUgPSBsLmZhbGxiYWNrLCBhID0gbi5tb2RlLCBsID0gSWwoewogICAgICAgICAgICAgICAgICAgIG1vZGU6ICJ2aXNpYmxlIiwKICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbC5jaGlsZHJlbgogICAgICAgICAgICAgICAgfSwgYSwgMCwgbnVsbCksICh1ID0gT2wodSwgYSwgbywgbnVsbCkpLmZsYWdzIHw9IDIsIGwucmV0dXJuID0gbiwgdS5yZXR1cm4gPSBuLCBsLnNpYmxpbmcgPSB1LCBuLmNoaWxkID0gbCwgMCAhPSAoMSAmIG4ubW9kZSkgJiYgTWkobiwgZS5jaGlsZCwgbnVsbCwgbyksIG4uY2hpbGQubWVtb2l6ZWRTdGF0ZSA9IFNyKG8pLCBuLm1lbW9pemVkU3RhdGUgPSBycywgdSk7CiAgICAgICAgICAgICAgICBpZiAoMCA9PSAoMSAmIG4ubW9kZSkpIHJldHVybiBDcihlLCBuLCBvLCBudWxsKTsKICAgICAgICAgICAgICAgIGlmICgiJCEiID09PSBhLmRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGEubmV4dFNpYmxpbmcgJiYgYS5uZXh0U2libGluZy5kYXRhc2V0KSB2YXIgaSA9IGwuZGdzdDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA9IGksIENyKGUsIG4sIG8sIGwgPSBscih1ID0gRXJyb3IodCg0MTkpKSwgbCwgdm9pZCAwKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpID0gMCAhPSAobyAmIGUuY2hpbGRMYW5lcyksIHRzIHx8IGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKGwgPSBrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvICYgLW8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI1NjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTEyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDI0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDQ4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MDk2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MTkyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjM4NDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzI3Njg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY1NTM2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzEwNzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI2MjE0NDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTI0Mjg4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDQ4NTc2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDk3MTUyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MTk0MzA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mzg4NjA4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjc3NzIxNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzM1NTQ0MzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY3MTA4ODY0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAzMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTM2ODcwOTEyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAyNjg0MzU0NTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgMCAhPT0gKGEgPSAwICE9IChhICYgKGwuc3VzcGVuZGVkTGFuZXMgfCBvKSkgPyAwIDogYSkgJiYgYSAhPT0gdS5yZXRyeUxhbmUgJiYgKHUucmV0cnlMYW5lID0gYSwgS24oZSwgYSksIGFsKGwsIGUsIGEsIC0xKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZsKCksIENyKGUsIG4sIG8sIGwgPSBscihFcnJvcih0KDQyMSkpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAiJD8iID09PSBhLmRhdGEgPyAobi5mbGFncyB8PSAxMjgsIG4uY2hpbGQgPSBlLmNoaWxkLCBuID0gX2wuYmluZChudWxsLCBlKSwgYS5fcmVhY3RSZXRyeSA9IG4sIG51bGwpIDogKGUgPSB1LnRyZWVDb250ZXh0LCBiaSA9IGZuKGEubmV4dFNpYmxpbmcpLCB5aSA9IG4sIGtpID0gITAsIHdpID0gbnVsbCwgbnVsbCAhPT0gZSAmJiAocGlbbWkrK10gPSBnaSwgcGlbbWkrK10gPSB2aSwgcGlbbWkrK10gPSBoaSwgZ2kgPSBlLmlkLCB2aSA9IGUub3ZlcmZsb3csIGhpID0gbiksIChuID0gRXIobiwgbC5jaGlsZHJlbikpLmZsYWdzIHw9IDQwOTYsIG4pCiAgICAgICAgICAgIH0oZSwgbiwgaSwgYSwgbCwgdSwgcik7CiAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICBvID0gYS5mYWxsYmFjaywgaSA9IG4ubW9kZSwgbCA9ICh1ID0gZS5jaGlsZCkuc2libGluZzsKICAgICAgICAgICAgICAgIHZhciBzID0gewogICAgICAgICAgICAgICAgICAgIG1vZGU6ICJoaWRkZW4iLAogICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBhLmNoaWxkcmVuCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIDAgPT0gKDEgJiBpKSAmJiBuLmNoaWxkICE9PSB1ID8gKChhID0gbi5jaGlsZCkuY2hpbGRMYW5lcyA9IDAsIGEucGVuZGluZ1Byb3BzID0gcywgbi5kZWxldGlvbnMgPSBudWxsKSA6IChhID0gUmwodSwgcykpLnN1YnRyZWVGbGFncyA9IDE0NjgwMDY0ICYgdS5zdWJ0cmVlRmxhZ3MsIG51bGwgIT09IGwgPyBvID0gUmwobCwgbykgOiAobyA9IE9sKG8sIGksIHIsIG51bGwpKS5mbGFncyB8PSAyLCBvLnJldHVybiA9IG4sIGEucmV0dXJuID0gbiwgYS5zaWJsaW5nID0gbywgbi5jaGlsZCA9IGEsIGEgPSBvLCBvID0gbi5jaGlsZCwgaSA9IG51bGwgPT09IChpID0gZS5jaGlsZC5tZW1vaXplZFN0YXRlKSA/IFNyKHIpIDogewogICAgICAgICAgICAgICAgICAgIGJhc2VMYW5lczogaS5iYXNlTGFuZXMgfCByLAogICAgICAgICAgICAgICAgICAgIGNhY2hlUG9vbDogbnVsbCwKICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uczogaS50cmFuc2l0aW9ucwogICAgICAgICAgICAgICAgfSwgby5tZW1vaXplZFN0YXRlID0gaSwgby5jaGlsZExhbmVzID0gZS5jaGlsZExhbmVzICYgfnIsIG4ubWVtb2l6ZWRTdGF0ZSA9IHJzLCBhCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUgPSAobyA9IGUuY2hpbGQpLnNpYmxpbmcsIGEgPSBSbChvLCB7CiAgICAgICAgICAgICAgICBtb2RlOiAidmlzaWJsZSIsCiAgICAgICAgICAgICAgICBjaGlsZHJlbjogYS5jaGlsZHJlbgogICAgICAgICAgICB9KSwgMCA9PSAoMSAmIG4ubW9kZSkgJiYgKGEubGFuZXMgPSByKSwgYS5yZXR1cm4gPSBuLCBhLnNpYmxpbmcgPSBudWxsLCBudWxsICE9PSBlICYmIChudWxsID09PSAociA9IG4uZGVsZXRpb25zKSA/IChuLmRlbGV0aW9ucyA9IFtlXSwgbi5mbGFncyB8PSAxNikgOiByLnB1c2goZSkpLCBuLmNoaWxkID0gYSwgbi5tZW1vaXplZFN0YXRlID0gbnVsbCwgYQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRXIoZSwgbiwgdCkgewogICAgICAgICAgICByZXR1cm4gKG4gPSBJbCh7CiAgICAgICAgICAgICAgICBtb2RlOiAidmlzaWJsZSIsCiAgICAgICAgICAgICAgICBjaGlsZHJlbjogbgogICAgICAgICAgICB9LCBlLm1vZGUsIDAsIG51bGwpKS5yZXR1cm4gPSBlLCBlLmNoaWxkID0gbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQ3IoZSwgbiwgdCwgcikgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gciAmJiBWbihyKSwgTWkobiwgZS5jaGlsZCwgbnVsbCwgdCksIChlID0gRXIobiwgbi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4pKS5mbGFncyB8PSAyLCBuLm1lbW9pemVkU3RhdGUgPSBudWxsLCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB6cihlLCBuLCB0KSB7CiAgICAgICAgICAgIGUubGFuZXMgfD0gbjsKICAgICAgICAgICAgdmFyIHIgPSBlLmFsdGVybmF0ZTsKICAgICAgICAgICAgbnVsbCAhPT0gciAmJiAoci5sYW5lcyB8PSBuKSwgSG4oZS5yZXR1cm4sIG4sIHQpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBOcihlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHZhciBhID0gZS5tZW1vaXplZFN0YXRlOwogICAgICAgICAgICBudWxsID09PSBhID8gZS5tZW1vaXplZFN0YXRlID0gewogICAgICAgICAgICAgICAgaXNCYWNrd2FyZHM6IG4sCiAgICAgICAgICAgICAgICByZW5kZXJpbmc6IG51bGwsCiAgICAgICAgICAgICAgICByZW5kZXJpbmdTdGFydFRpbWU6IDAsCiAgICAgICAgICAgICAgICBsYXN0OiByLAogICAgICAgICAgICAgICAgdGFpbDogdCwKICAgICAgICAgICAgICAgIHRhaWxNb2RlOiBsCiAgICAgICAgICAgIH0gOiAoYS5pc0JhY2t3YXJkcyA9IG4sIGEucmVuZGVyaW5nID0gbnVsbCwgYS5yZW5kZXJpbmdTdGFydFRpbWUgPSAwLCBhLmxhc3QgPSByLCBhLnRhaWwgPSB0LCBhLnRhaWxNb2RlID0gbCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFByKGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuLnBlbmRpbmdQcm9wcywKICAgICAgICAgICAgICAgIGwgPSByLnJldmVhbE9yZGVyLAogICAgICAgICAgICAgICAgYSA9IHIudGFpbDsKICAgICAgICAgICAgaWYgKGZyKGUsIG4sIHIuY2hpbGRyZW4sIHQpLCAwICE9ICgyICYgKHIgPSBVaS5jdXJyZW50KSkpIHIgPSAxICYgciB8IDIsIG4uZmxhZ3MgfD0gMTI4OwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBlICYmIDAgIT0gKDEyOCAmIGUuZmxhZ3MpKSBlOiBmb3IgKGUgPSBuLmNoaWxkOyBudWxsICE9PSBlOykgewogICAgICAgICAgICAgICAgICAgIGlmICgxMyA9PT0gZS50YWcpIG51bGwgIT09IGUubWVtb2l6ZWRTdGF0ZSAmJiB6cihlLCB0LCBuKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgxOSA9PT0gZS50YWcpIHpyKGUsIHQsIG4pOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51bGwgIT09IGUuY2hpbGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5jaGlsZC5yZXR1cm4gPSBlLCBlID0gZS5jaGlsZDsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT09IG4pIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IG51bGwgPT09IGUuc2libGluZzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGUucmV0dXJuIHx8IGUucmV0dXJuID09PSBuKSBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5yZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZS5zaWJsaW5nLnJldHVybiA9IGUucmV0dXJuLCBlID0gZS5zaWJsaW5nCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByICY9IDEKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYm4oVWksIHIpLCAwID09ICgxICYgbi5tb2RlKSkgbi5tZW1vaXplZFN0YXRlID0gbnVsbDsKICAgICAgICAgICAgZWxzZSBzd2l0Y2ggKGwpIHsKICAgICAgICAgICAgICAgIGNhc2UgImZvcndhcmRzIjoKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBuLmNoaWxkLCBsID0gbnVsbDsgbnVsbCAhPT0gdDspIG51bGwgIT09IChlID0gdC5hbHRlcm5hdGUpICYmIG51bGwgPT09IHZ0KGUpICYmIChsID0gdCksIHQgPSB0LnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gKHQgPSBsKSA/IChsID0gbi5jaGlsZCwgbi5jaGlsZCA9IG51bGwpIDogKGwgPSB0LnNpYmxpbmcsIHQuc2libGluZyA9IG51bGwpLCBOcihuLCAhMSwgbCwgdCwgYSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJiYWNrd2FyZHMiOgogICAgICAgICAgICAgICAgICAgIGZvciAodCA9IG51bGwsIGwgPSBuLmNoaWxkLCBuLmNoaWxkID0gbnVsbDsgbnVsbCAhPT0gbDspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IChlID0gbC5hbHRlcm5hdGUpICYmIG51bGwgPT09IHZ0KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNoaWxkID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGwuc2libGluZywgbC5zaWJsaW5nID0gdCwgdCA9IGwsIGwgPSBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIE5yKG4sICEwLCB0LCBudWxsLCBhKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInRvZ2V0aGVyIjoKICAgICAgICAgICAgICAgICAgICBOcihuLCAhMSwgbnVsbCwgbnVsbCwgdm9pZCAwKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgbi5tZW1vaXplZFN0YXRlID0gbnVsbAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuLmNoaWxkCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBfcihlLCBuKSB7CiAgICAgICAgICAgIDAgPT0gKDEgJiBuLm1vZGUpICYmIG51bGwgIT09IGUgJiYgKGUuYWx0ZXJuYXRlID0gbnVsbCwgbi5hbHRlcm5hdGUgPSBudWxsLCBuLmZsYWdzIHw9IDIpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBMcihlLCBuLCByKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSBlICYmIChuLmRlcGVuZGVuY2llcyA9IGUuZGVwZW5kZW5jaWVzKSwgTnMgfD0gbi5sYW5lcywgMCA9PSAociAmIG4uY2hpbGRMYW5lcykpIHJldHVybiBudWxsOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gZSAmJiBuLmNoaWxkICE9PSBlLmNoaWxkKSB0aHJvdyBFcnJvcih0KDE1MykpOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gbi5jaGlsZCkgewogICAgICAgICAgICAgICAgZm9yIChyID0gUmwoZSA9IG4uY2hpbGQsIGUucGVuZGluZ1Byb3BzKSwgbi5jaGlsZCA9IHIsIHIucmV0dXJuID0gbjsgbnVsbCAhPT0gZS5zaWJsaW5nOykgZSA9IGUuc2libGluZywgKHIgPSByLnNpYmxpbmcgPSBSbChlLCBlLnBlbmRpbmdQcm9wcykpLnJldHVybiA9IG47CiAgICAgICAgICAgICAgICByLnNpYmxpbmcgPSBudWxsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG4uY2hpbGQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFRyKGUsIG4pIHsKICAgICAgICAgICAgaWYgKCFraSkgc3dpdGNoIChlLnRhaWxNb2RlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJoaWRkZW4iOgogICAgICAgICAgICAgICAgICAgIG4gPSBlLnRhaWw7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IG51bGw7IG51bGwgIT09IG47KSBudWxsICE9PSBuLmFsdGVybmF0ZSAmJiAodCA9IG4pLCBuID0gbi5zaWJsaW5nOwogICAgICAgICAgICAgICAgICAgIG51bGwgPT09IHQgPyBlLnRhaWwgPSBudWxsIDogdC5zaWJsaW5nID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImNvbGxhcHNlZCI6CiAgICAgICAgICAgICAgICAgICAgdCA9IGUudGFpbDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gbnVsbDsgbnVsbCAhPT0gdDspIG51bGwgIT09IHQuYWx0ZXJuYXRlICYmIChyID0gdCksIHQgPSB0LnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gciA/IG4gfHwgbnVsbCA9PT0gZS50YWlsID8gZS50YWlsID0gbnVsbCA6IGUudGFpbC5zaWJsaW5nID0gbnVsbCA6IHIuc2libGluZyA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTXIoZSkgewogICAgICAgICAgICB2YXIgbiA9IG51bGwgIT09IGUuYWx0ZXJuYXRlICYmIGUuYWx0ZXJuYXRlLmNoaWxkID09PSBlLmNoaWxkLAogICAgICAgICAgICAgICAgdCA9IDAsCiAgICAgICAgICAgICAgICByID0gMDsKICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gZS5jaGlsZDsgbnVsbCAhPT0gbDspIHQgfD0gbC5sYW5lcyB8IGwuY2hpbGRMYW5lcywgciB8PSAxNDY4MDA2NCAmIGwuc3VidHJlZUZsYWdzLCByIHw9IDE0NjgwMDY0ICYgbC5mbGFncywgbC5yZXR1cm4gPSBlLCBsID0gbC5zaWJsaW5nOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmb3IgKGwgPSBlLmNoaWxkOyBudWxsICE9PSBsOykgdCB8PSBsLmxhbmVzIHwgbC5jaGlsZExhbmVzLCByIHw9IGwuc3VidHJlZUZsYWdzLCByIHw9IGwuZmxhZ3MsIGwucmV0dXJuID0gZSwgbCA9IGwuc2libGluZzsKICAgICAgICAgICAgcmV0dXJuIGUuc3VidHJlZUZsYWdzIHw9IHIsIGUuY2hpbGRMYW5lcyA9IHQsIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEZyKGUsIG4sIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSBuLnBlbmRpbmdQcm9wczsKICAgICAgICAgICAgc3dpdGNoIChUbihuKSwgbi50YWcpIHsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBNcihuKSwgbnVsbDsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIGNhc2UgMTc6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHduKG4udHlwZSkgJiYgKHluKGxpKSwgeW4ocmkpKSwgTXIobiksIG51bGw7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwgPSBuLnN0YXRlTm9kZSwgbXQoKSwgeW4obGkpLCB5bihyaSksIHl0KCksIGwucGVuZGluZ0NvbnRleHQgJiYgKGwuY29udGV4dCA9IGwucGVuZGluZ0NvbnRleHQsIGwucGVuZGluZ0NvbnRleHQgPSBudWxsKSwgbnVsbCAhPT0gZSAmJiBudWxsICE9PSBlLmNoaWxkIHx8IChJbihuKSA/IG4uZmxhZ3MgfD0gNCA6IG51bGwgPT09IGUgfHwgZS5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCAmJiAwID09ICgyNTYgJiBuLmZsYWdzKSB8fCAobi5mbGFncyB8PSAxMDI0LCBudWxsICE9PSB3aSAmJiAoc2wod2kpLCB3aSA9IG51bGwpKSksIGFzKGUsIG4pLCBNcihuKSwgbnVsbDsKICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICBndChuKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGR0KElpLmN1cnJlbnQpOwogICAgICAgICAgICAgICAgICAgIGlmIChyID0gbi50eXBlLCBudWxsICE9PSBlICYmIG51bGwgIT0gbi5zdGF0ZU5vZGUpIHVzKGUsIG4sIHIsIGwsIGEpLCBlLnJlZiAhPT0gbi5yZWYgJiYgKG4uZmxhZ3MgfD0gNTEyLCBuLmZsYWdzIHw9IDIwOTcxNTIpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBuLnN0YXRlTm9kZSkgdGhyb3cgRXJyb3IodCgxNjYpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNcihuKSwgbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID0gZHQoRGkuY3VycmVudCksIEluKG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5zdGF0ZU5vZGUsIHIgPSBuLnR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ubWVtb2l6ZWRQcm9wczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobFtLb10gPSBuLCBsW1lvXSA9IG8sIGUgPSAwICE9ICgxICYgbi5tb2RlKSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRpYWxvZyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllKCJjYW5jZWwiLCBsKSwgWWUoImNsb3NlIiwgbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImlmcmFtZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlbWJlZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllKCJsb2FkIiwgbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInZpZGVvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhdWRpbyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IDA7IGEgPCBPby5sZW5ndGg7IGErKykgWWUoT29bYV0sIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzb3VyY2UiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZZSgiZXJyb3IiLCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW1nIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJpbWFnZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllKCJlcnJvciIsIGwpLCBZZSgibG9hZCIsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkZXRhaWxzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWWUoInRvZ2dsZSIsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJpbnB1dCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIobCwgbyksIFllKCJpbnZhbGlkIiwgbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlbGVjdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuX3dyYXBwZXJTdGF0ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhc011bHRpcGxlOiAhIW8ubXVsdGlwbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgWWUoImludmFsaWQiLCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dGFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KGwsIG8pLCBZZSgiaW52YWxpZCIsIGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIEYociwgbyksIGEgPSBudWxsLCBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gb1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkcmVuIiA9PT0gaSA/ICJzdHJpbmciID09IHR5cGVvZiBzID8gbC50ZXh0Q29udGVudCAhPT0gcyAmJiAoITAgIT09IG8uc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nICYmIGFuKGwudGV4dENvbnRlbnQsIHMsIGUpLCBhID0gWyJjaGlsZHJlbiIsIHNdKSA6ICJudW1iZXIiID09IHR5cGVvZiBzICYmIGwudGV4dENvbnRlbnQgIT09ICIiICsgcyAmJiAoITAgIT09IG8uc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nICYmIGFuKGwudGV4dENvbnRlbnQsIHMsIGUpLCBhID0gWyJjaGlsZHJlbiIsICIiICsgc10pIDogcmEuaGFzT3duUHJvcGVydHkoaSkgJiYgbnVsbCAhPSBzICYmICJvblNjcm9sbCIgPT09IGkgJiYgWWUoInNjcm9sbCIsIGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoKGwpLCBTKGwsIG8sICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dGFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoKGwpLCBQKGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzZWxlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9wdGlvbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIG8ub25DbGljayAmJiAobC5vbmNsaWNrID0gdW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYSwgbi51cGRhdGVRdWV1ZSA9IGwsIG51bGwgIT09IGwgJiYgKG4uZmxhZ3MgfD0gNCkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSA5ID09PSBhLm5vZGVUeXBlID8gYSA6IGEub3duZXJEb2N1bWVudCwgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID09PSBlICYmIChlID0gXyhyKSksICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiA9PT0gZSA/ICJzY3JpcHQiID09PSByID8gKChlID0gaS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MID0gIjxzY3JpcHQ+PFwvc2NyaXB0PiIsIGUgPSBlLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCkpIDogInN0cmluZyIgPT0gdHlwZW9mIGwuaXMgPyBlID0gaS5jcmVhdGVFbGVtZW50KHIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpczogbC5pcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiAoZSA9IGkuY3JlYXRlRWxlbWVudChyKSwgInNlbGVjdCIgPT09IHIgJiYgKGkgPSBlLCBsLm11bHRpcGxlID8gaS5tdWx0aXBsZSA9ICEwIDogbC5zaXplICYmIChpLnNpemUgPSBsLnNpemUpKSkgOiBlID0gaS5jcmVhdGVFbGVtZW50TlMoZSwgciksIGVbS29dID0gbiwgZVtZb10gPSBsLCBscyhlLCBuLCAhMSwgITEpLCBuLnN0YXRlTm9kZSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpID0gUihyLCBsKSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkaWFsb2ciOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWWUoImNhbmNlbCIsIGUpLCBZZSgiY2xvc2UiLCBlKSwgYSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaWZyYW1lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW1iZWQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWWUoImxvYWQiLCBlKSwgYSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidmlkZW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhdWRpbyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSAwOyBhIDwgT28ubGVuZ3RoOyBhKyspIFllKE9vW2FdLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNvdXJjZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZZSgiZXJyb3IiLCBlKSwgYSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW1nIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW1hZ2UiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllKCJlcnJvciIsIGUpLCBZZSgibG9hZCIsIGUpLCBhID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkZXRhaWxzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllKCJ0b2dnbGUiLCBlKSwgYSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYihlLCBsKSwgYSA9IHkoZSwgbCksIFllKCJpbnZhbGlkIiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAib3B0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlbGVjdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl93cmFwcGVyU3RhdGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzTXVsdGlwbGU6ICEhbC5tdWx0aXBsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYSA9IExhKHt9LCBsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIFllKCJpbnZhbGlkIiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dGFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeihlLCBsKSwgYSA9IEMoZSwgbCksIFllKCJpbnZhbGlkIiwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvIGluIEYociwgYSksIHMgPSBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5oYXNPd25Qcm9wZXJ0eShvKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBzW29dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlIiA9PT0gbyA/IE0oZSwgYykgOiAiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiID09PSBvID8gbnVsbCAhPSAoYyA9IGMgPyBjLl9faHRtbCA6IHZvaWQgMCkgJiYgRmEoZSwgYykgOiAiY2hpbGRyZW4iID09PSBvID8gInN0cmluZyIgPT0gdHlwZW9mIGMgPyAoInRleHRhcmVhIiAhPT0gciB8fCAiIiAhPT0gYykgJiYgUmEoZSwgYykgOiAibnVtYmVyIiA9PSB0eXBlb2YgYyAmJiBSYShlLCAiIiArIGMpIDogInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIgIT09IG8gJiYgInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIgIT09IG8gJiYgImF1dG9Gb2N1cyIgIT09IG8gJiYgKHJhLmhhc093blByb3BlcnR5KG8pID8gbnVsbCAhPSBjICYmICJvblNjcm9sbCIgPT09IG8gJiYgWWUoInNjcm9sbCIsIGUpIDogbnVsbCAhPSBjICYmIHUoZSwgbywgYywgaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaChlKSwgUyhlLCBsLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dGFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaChlKSwgUChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJvcHRpb24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBsLnZhbHVlICYmIGUuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICIiICsgcChsLnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubXVsdGlwbGUgPSAhIWwubXVsdGlwbGUsIG51bGwgIT0gKG8gPSBsLnZhbHVlKSA/IEUoZSwgISFsLm11bHRpcGxlLCBvLCAhMSkgOiBudWxsICE9IGwuZGVmYXVsdFZhbHVlICYmIEUoZSwgISFsLm11bHRpcGxlLCBsLmRlZmF1bHRWYWx1ZSwgITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBhLm9uQ2xpY2sgJiYgKGUub25jbGljayA9IHVuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYnV0dG9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzZWxlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0ZXh0YXJlYSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gISFsLmF1dG9Gb2N1czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImltZyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCAmJiAobi5mbGFncyB8PSA0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IG4ucmVmICYmIChuLmZsYWdzIHw9IDUxMiwgbi5mbGFncyB8PSAyMDk3MTUyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXIobiksIG51bGw7CiAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgbnVsbCAhPSBuLnN0YXRlTm9kZSkgb3MoZSwgbiwgZS5tZW1vaXplZFByb3BzLCBsKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBsICYmIG51bGwgPT09IG4uc3RhdGVOb2RlKSB0aHJvdyBFcnJvcih0KDE2NikpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGR0KElpLmN1cnJlbnQpLCBkdChEaS5jdXJyZW50KSwgSW4obikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbi5zdGF0ZU5vZGUsIHIgPSBuLm1lbW9pemVkUHJvcHMsIGxbS29dID0gbiwgKG8gPSBsLm5vZGVWYWx1ZSAhPT0gcikgJiYgbnVsbCAhPT0gKGUgPSB5aSkpIHN3aXRjaCAoZS50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuKGwubm9kZVZhbHVlLCByLCAwICE9ICgxICYgZS5tb2RlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITAgIT09IGUubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgJiYgYW4obC5ub2RlVmFsdWUsIHIsIDAgIT0gKDEgJiBlLm1vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyAmJiAobi5mbGFncyB8PSA0KQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UobCA9ICg5ID09PSByLm5vZGVUeXBlID8gciA6IHIub3duZXJEb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUobCkpW0tvXSA9IG4sIG4uc3RhdGVOb2RlID0gbAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXIobiksIG51bGw7CiAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgIGlmICh5bihVaSksIGwgPSBuLm1lbW9pemVkU3RhdGUsIG51bGwgPT09IGUgfHwgbnVsbCAhPT0gZS5tZW1vaXplZFN0YXRlICYmIG51bGwgIT09IGUubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChraSAmJiBudWxsICE9PSBiaSAmJiAwICE9ICgxICYgbi5tb2RlKSAmJiAwID09ICgxMjggJiBuLmZsYWdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gYmk7IG87KSBvID0gZm4oby5uZXh0U2libGluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbigpLCBuLmZsYWdzIHw9IDk4NTYwLCBvID0gITEKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvID0gSW4obiksIG51bGwgIT09IGwgJiYgbnVsbCAhPT0gbC5kZWh5ZHJhdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykgdGhyb3cgRXJyb3IodCgzMTgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShvID0gbnVsbCAhPT0gKG8gPSBuLm1lbW9pemVkU3RhdGUpID8gby5kZWh5ZHJhdGVkIDogbnVsbCkpIHRocm93IEVycm9yKHQoMzE3KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb1tLb10gPSBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgVW4oKSwgMCA9PSAoMTI4ICYgbi5mbGFncykgJiYgKG4ubWVtb2l6ZWRTdGF0ZSA9IG51bGwpLCBuLmZsYWdzIHw9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNcihuKSwgbyA9ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBudWxsICE9PSB3aSAmJiAoc2wod2kpLCB3aSA9IG51bGwpLCBvID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykgcmV0dXJuIDY1NTM2ICYgbi5mbGFncyA/IG4gOiBudWxsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAwICE9ICgxMjggJiBuLmZsYWdzKSA/IChuLmxhbmVzID0gciwgbikgOiAoKGwgPSBudWxsICE9PSBsKSAhPSAobnVsbCAhPT0gZSAmJiBudWxsICE9PSBlLm1lbW9pemVkU3RhdGUpICYmIGwgJiYgKG4uY2hpbGQuZmxhZ3MgfD0gODE5MiwgMCAhPSAoMSAmIG4ubW9kZSkgJiYgKG51bGwgPT09IGUgfHwgMCAhPSAoMSAmIFVpLmN1cnJlbnQpID8gMCA9PT0gQ3MgJiYgKENzID0gMykgOiB2bCgpKSksIG51bGwgIT09IG4udXBkYXRlUXVldWUgJiYgKG4uZmxhZ3MgfD0gNCksIE1yKG4pLCBudWxsKTsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbXQoKSwgYXMoZSwgbiksIG51bGwgPT09IGUgJiYgR2Uobi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksIE1yKG4pLCBudWxsOwogICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gV24obi50eXBlLl9jb250ZXh0KSwgTXIobiksIG51bGw7CiAgICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgICAgIGlmICh5bihVaSksIG51bGwgPT09IChvID0gbi5tZW1vaXplZFN0YXRlKSkgcmV0dXJuIE1yKG4pLCBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmIChsID0gMCAhPSAoMTI4ICYgbi5mbGFncyksIG51bGwgPT09IChpID0gby5yZW5kZXJpbmcpKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkgVHIobywgITEpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBDcyB8fCBudWxsICE9PSBlICYmIDAgIT0gKDEyOCAmIGUuZmxhZ3MpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IG4uY2hpbGQ7IG51bGwgIT09IGU7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAoaSA9IHZ0KGUpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuLmZsYWdzIHw9IDEyOCwgVHIobywgITEpLCBudWxsICE9PSAobCA9IGkudXBkYXRlUXVldWUpICYmIChuLnVwZGF0ZVF1ZXVlID0gbCwgbi5mbGFncyB8PSA0KSwgbi5zdWJ0cmVlRmxhZ3MgPSAwLCBsID0gciwgciA9IG4uY2hpbGQ7IG51bGwgIT09IHI7KSBlID0gbCwgKG8gPSByKS5mbGFncyAmPSAxNDY4MDA2NiwgbnVsbCA9PT0gKGkgPSBvLmFsdGVybmF0ZSkgPyAoby5jaGlsZExhbmVzID0gMCwgby5sYW5lcyA9IGUsIG8uY2hpbGQgPSBudWxsLCBvLnN1YnRyZWVGbGFncyA9IDAsIG8ubWVtb2l6ZWRQcm9wcyA9IG51bGwsIG8ubWVtb2l6ZWRTdGF0ZSA9IG51bGwsIG8udXBkYXRlUXVldWUgPSBudWxsLCBvLmRlcGVuZGVuY2llcyA9IG51bGwsIG8uc3RhdGVOb2RlID0gbnVsbCkgOiAoby5jaGlsZExhbmVzID0gaS5jaGlsZExhbmVzLCBvLmxhbmVzID0gaS5sYW5lcywgby5jaGlsZCA9IGkuY2hpbGQsIG8uc3VidHJlZUZsYWdzID0gMCwgby5kZWxldGlvbnMgPSBudWxsLCBvLm1lbW9pemVkUHJvcHMgPSBpLm1lbW9pemVkUHJvcHMsIG8ubWVtb2l6ZWRTdGF0ZSA9IGkubWVtb2l6ZWRTdGF0ZSwgby51cGRhdGVRdWV1ZSA9IGkudXBkYXRlUXVldWUsIG8udHlwZSA9IGkudHlwZSwgZSA9IGkuZGVwZW5kZW5jaWVzLCBvLmRlcGVuZGVuY2llcyA9IG51bGwgPT09IGUgPyBudWxsIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmVzOiBlLmxhbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0Q29udGV4dDogZS5maXJzdENvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCByID0gci5zaWJsaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJuKFVpLCAxICYgVWkuY3VycmVudCB8IDIpLCBuLmNoaWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUuc2libGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IG8udGFpbCAmJiBzdSgpID4gRnMgJiYgKG4uZmxhZ3MgfD0gMTI4LCBsID0gITAsIFRyKG8sICExKSwgbi5sYW5lcyA9IDQxOTQzMDQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IChlID0gdnQoaSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uZmxhZ3MgfD0gMTI4LCBsID0gITAsIG51bGwgIT09IChyID0gZS51cGRhdGVRdWV1ZSkgJiYgKG4udXBkYXRlUXVldWUgPSByLCBuLmZsYWdzIHw9IDQpLCBUcihvLCAhMCksIG51bGwgPT09IG8udGFpbCAmJiAiaGlkZGVuIiA9PT0gby50YWlsTW9kZSAmJiAhaS5hbHRlcm5hdGUgJiYgIWtpKSByZXR1cm4gTXIobiksIG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAyICogc3UoKSAtIG8ucmVuZGVyaW5nU3RhcnRUaW1lID4gRnMgJiYgMTA3Mzc0MTgyNCAhPT0gciAmJiAobi5mbGFncyB8PSAxMjgsIGwgPSAhMCwgVHIobywgITEpLCBuLmxhbmVzID0gNDE5NDMwNCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uaXNCYWNrd2FyZHMgPyAoaS5zaWJsaW5nID0gbi5jaGlsZCwgbi5jaGlsZCA9IGkpIDogKG51bGwgIT09IChyID0gby5sYXN0KSA/IHIuc2libGluZyA9IGkgOiBuLmNoaWxkID0gaSwgby5sYXN0ID0gaSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IG8udGFpbCA/IChuID0gby50YWlsLCBvLnJlbmRlcmluZyA9IG4sIG8udGFpbCA9IG4uc2libGluZywgby5yZW5kZXJpbmdTdGFydFRpbWUgPSBzdSgpLCBuLnNpYmxpbmcgPSBudWxsLCByID0gVWkuY3VycmVudCwgYm4oVWksIGwgPyAxICYgciB8IDIgOiAxICYgciksIG4pIDogKE1yKG4pLCBudWxsKTsKICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICBjYXNlIDIzOgogICAgICAgICAgICAgICAgICAgIHJldHVybiB4cyA9IEVzLmN1cnJlbnQsIHluKEVzKSwgbCA9IG51bGwgIT09IG4ubWVtb2l6ZWRTdGF0ZSwgbnVsbCAhPT0gZSAmJiBudWxsICE9PSBlLm1lbW9pemVkU3RhdGUgIT09IGwgJiYgKG4uZmxhZ3MgfD0gODE5MiksIGwgJiYgMCAhPSAoMSAmIG4ubW9kZSkgPyAwICE9ICgxMDczNzQxODI0ICYgeHMpICYmIChNcihuKSwgNiAmIG4uc3VidHJlZUZsYWdzICYmIChuLmZsYWdzIHw9IDgxOTIpKSA6IE1yKG4pLCBudWxsOwogICAgICAgICAgICAgICAgY2FzZSAyNDoKICAgICAgICAgICAgICAgIGNhc2UgMjU6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgfQogICAgICAgICAgICB0aHJvdyBFcnJvcih0KDE1Niwgbi50YWcpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUnIoZSwgbiwgcikgewogICAgICAgICAgICBzd2l0Y2ggKFRuKG4pLCBuLnRhZykgewogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgIHJldHVybiB3bihuLnR5cGUpICYmICh5bihsaSksIHluKHJpKSksIDY1NTM2ICYgKGUgPSBuLmZsYWdzKSA/IChuLmZsYWdzID0gLTY1NTM3ICYgZSB8IDEyOCwgbikgOiBudWxsOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBtdCgpLCB5bihsaSksIHluKHJpKSwgeXQoKSwgMCAhPSAoNjU1MzYgJiAoZSA9IG4uZmxhZ3MpKSAmJiAwID09ICgxMjggJiBlKSA/IChuLmZsYWdzID0gLTY1NTM3ICYgZSB8IDEyOCwgbikgOiBudWxsOwogICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBndChuKSwgbnVsbDsKICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgaWYgKHluKFVpKSwgbnVsbCAhPT0gKGUgPSBuLm1lbW9pemVkU3RhdGUpICYmIG51bGwgIT09IGUuZGVoeWRyYXRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gbi5hbHRlcm5hdGUpIHRocm93IEVycm9yKHQoMzQwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFVuKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDY1NTM2ICYgKGUgPSBuLmZsYWdzKSA/IChuLmZsYWdzID0gLTY1NTM3ICYgZSB8IDEyOCwgbikgOiBudWxsOwogICAgICAgICAgICAgICAgY2FzZSAxOToKICAgICAgICAgICAgICAgICAgICByZXR1cm4geW4oVWkpLCBudWxsOwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBtdCgpLCBudWxsOwogICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gV24obi50eXBlLl9jb250ZXh0KSwgbnVsbDsKICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICBjYXNlIDIzOgogICAgICAgICAgICAgICAgICAgIHJldHVybiB4cyA9IEVzLmN1cnJlbnQsIHluKEVzKSwgbnVsbDsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRHIoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IGUucmVmOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gdCkKICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiB0KSB0cnkgewogICAgICAgICAgICAgICAgICAgIHQobnVsbCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICB6bChlLCBuLCB0KQogICAgICAgICAgICAgICAgfSBlbHNlIHQuY3VycmVudCA9IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIE9yKGUsIG4sIHQpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHQoKQogICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICB6bChlLCBuLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBJcihlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gbi51cGRhdGVRdWV1ZTsKICAgICAgICAgICAgaWYgKG51bGwgIT09IChyID0gbnVsbCAhPT0gciA/IHIubGFzdEVmZmVjdCA6IG51bGwpKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHIgPSByLm5leHQ7CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChsLnRhZyAmIGUpID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gbC5kZXN0cm95OwogICAgICAgICAgICAgICAgICAgICAgICBsLmRlc3Ryb3kgPSB2b2lkIDAsIHZvaWQgMCAhPT0gYSAmJiBPcihuLCB0LCBhKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsID0gbC5uZXh0CiAgICAgICAgICAgICAgICB9IHdoaWxlIChsICE9PSByKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBVcihlLCBuKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAobiA9IG51bGwgIT09IChuID0gbi51cGRhdGVRdWV1ZSkgPyBuLmxhc3RFZmZlY3QgOiBudWxsKSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBuID0gbi5uZXh0OwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIGlmICgodC50YWcgJiBlKSA9PT0gZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuY3JlYXRlOwogICAgICAgICAgICAgICAgICAgICAgICB0LmRlc3Ryb3kgPSByKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IHQubmV4dAogICAgICAgICAgICAgICAgfSB3aGlsZSAodCAhPT0gbikKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVnIoZSkgewogICAgICAgICAgICB2YXIgbiA9IGUucmVmOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gbikgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgIGUudGFnLCBlID0gdCwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiA/IG4oZSkgOiBuLmN1cnJlbnQgPSBlCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEFyKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLmFsdGVybmF0ZTsKICAgICAgICAgICAgbnVsbCAhPT0gbiAmJiAoZS5hbHRlcm5hdGUgPSBudWxsLCBBcihuKSksIGUuY2hpbGQgPSBudWxsLCBlLmRlbGV0aW9ucyA9IG51bGwsIGUuc2libGluZyA9IG51bGwsIDUgPT09IGUudGFnICYmIG51bGwgIT09IChuID0gZS5zdGF0ZU5vZGUpICYmIChkZWxldGUgbltLb10sIGRlbGV0ZSBuW1lvXSwgZGVsZXRlIG5bR29dLCBkZWxldGUgbltab10sIGRlbGV0ZSBuW0pvXSksIGUuc3RhdGVOb2RlID0gbnVsbCwgZS5yZXR1cm4gPSBudWxsLCBlLmRlcGVuZGVuY2llcyA9IG51bGwsIGUubWVtb2l6ZWRQcm9wcyA9IG51bGwsIGUubWVtb2l6ZWRTdGF0ZSA9IG51bGwsIGUucGVuZGluZ1Byb3BzID0gbnVsbCwgZS5zdGF0ZU5vZGUgPSBudWxsLCBlLnVwZGF0ZVF1ZXVlID0gbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQnIoZSkgewogICAgICAgICAgICByZXR1cm4gNSA9PT0gZS50YWcgfHwgMyA9PT0gZS50YWcgfHwgNCA9PT0gZS50YWcKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFdyKGUpIHsKICAgICAgICAgICAgZTogZm9yICg7OykgewogICAgICAgICAgICAgICAgZm9yICg7IG51bGwgPT09IGUuc2libGluZzspIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gZS5yZXR1cm4gfHwgQnIoZS5yZXR1cm4pKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICBlID0gZS5yZXR1cm4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoZS5zaWJsaW5nLnJldHVybiA9IGUucmV0dXJuLCBlID0gZS5zaWJsaW5nOyA1ICE9PSBlLnRhZyAmJiA2ICE9PSBlLnRhZyAmJiAxOCAhPT0gZS50YWc7KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDIgJiBlLmZsYWdzKSBjb250aW51ZSBlOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBlLmNoaWxkIHx8IDQgPT09IGUudGFnKSBjb250aW51ZSBlOwogICAgICAgICAgICAgICAgICAgIGUuY2hpbGQucmV0dXJuID0gZSwgZSA9IGUuY2hpbGQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKDIgJiBlLmZsYWdzKSkgcmV0dXJuIGUuc3RhdGVOb2RlCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEhyKGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBlLnRhZzsKICAgICAgICAgICAgaWYgKDUgPT09IHIgfHwgNiA9PT0gcikgZSA9IGUuc3RhdGVOb2RlLCBuID8gOCA9PT0gdC5ub2RlVHlwZSA/IHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgbikgOiB0Lmluc2VydEJlZm9yZShlLCBuKSA6ICg4ID09PSB0Lm5vZGVUeXBlID8gKG4gPSB0LnBhcmVudE5vZGUpLmluc2VydEJlZm9yZShlLCB0KSA6IChuID0gdCkuYXBwZW5kQ2hpbGQoZSksIG51bGwgIT0gKHQgPSB0Ll9yZWFjdFJvb3RDb250YWluZXIpIHx8IG51bGwgIT09IG4ub25jbGljayB8fCAobi5vbmNsaWNrID0gdW4pKTsKICAgICAgICAgICAgZWxzZSBpZiAoNCAhPT0gciAmJiBudWxsICE9PSAoZSA9IGUuY2hpbGQpKQogICAgICAgICAgICAgICAgZm9yIChIcihlLCBuLCB0KSwgZSA9IGUuc2libGluZzsgbnVsbCAhPT0gZTspIEhyKGUsIG4sIHQpLCBlID0gZS5zaWJsaW5nCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBRcihlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gZS50YWc7CiAgICAgICAgICAgIGlmICg1ID09PSByIHx8IDYgPT09IHIpIGUgPSBlLnN0YXRlTm9kZSwgbiA/IHQuaW5zZXJ0QmVmb3JlKGUsIG4pIDogdC5hcHBlbmRDaGlsZChlKTsKICAgICAgICAgICAgZWxzZSBpZiAoNCAhPT0gciAmJiBudWxsICE9PSAoZSA9IGUuY2hpbGQpKQogICAgICAgICAgICAgICAgZm9yIChRcihlLCBuLCB0KSwgZSA9IGUuc2libGluZzsgbnVsbCAhPT0gZTspIFFyKGUsIG4sIHQpLCBlID0gZS5zaWJsaW5nCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBqcihlLCBuLCB0KSB7CiAgICAgICAgICAgIGZvciAodCA9IHQuY2hpbGQ7IG51bGwgIT09IHQ7KSAkcihlLCBuLCB0KSwgdCA9IHQuc2libGluZwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gJHIoZSwgbiwgdCkgewogICAgICAgICAgICBpZiAodnUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdnUub25Db21taXRGaWJlclVubW91bnQpIHRyeSB7CiAgICAgICAgICAgICAgICB2dS5vbkNvbW1pdEZpYmVyVW5tb3VudChndSwgdCkKICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgc3dpdGNoICh0LnRhZykgewogICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgIHNzIHx8IERyKHQsIG4pOwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgIHZhciByID0gcHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBtczsKICAgICAgICAgICAgICAgICAgICBwcyA9IG51bGwsIGpyKGUsIG4sIHQpLCBtcyA9IGwsIG51bGwgIT09IChwcyA9IHIpICYmIChtcyA/IChlID0gcHMsIHQgPSB0LnN0YXRlTm9kZSwgOCA9PT0gZS5ub2RlVHlwZSA/IGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSA6IGUucmVtb3ZlQ2hpbGQodCkpIDogcHMucmVtb3ZlQ2hpbGQodC5zdGF0ZU5vZGUpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gcHMgJiYgKG1zID8gKGUgPSBwcywgdCA9IHQuc3RhdGVOb2RlLCA4ID09PSBlLm5vZGVUeXBlID8gY24oZS5wYXJlbnROb2RlLCB0KSA6IDEgPT09IGUubm9kZVR5cGUgJiYgY24oZSwgdCksIGNlKGUpKSA6IGNuKHBzLCB0LnN0YXRlTm9kZSkpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgIHIgPSBwcywgbCA9IG1zLCBwcyA9IHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sIG1zID0gITAsIGpyKGUsIG4sIHQpLCBwcyA9IHIsIG1zID0gbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICBpZiAoIXNzICYmIG51bGwgIT09IChyID0gdC51cGRhdGVRdWV1ZSkgJiYgbnVsbCAhPT0gKHIgPSByLmxhc3RFZmZlY3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByID0gci5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGEuZGVzdHJveTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhLnRhZywgdm9pZCAwICE9PSB1ICYmICgwICE9ICgyICYgYSkgfHwgMCAhPSAoNCAmIGEpKSAmJiBPcih0LCBuLCB1KSwgbCA9IGwubmV4dAogICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChsICE9PSByKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBqcihlLCBuLCB0KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICBpZiAoIXNzICYmIChEcih0LCBuKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YociA9IHQuc3RhdGVOb2RlKS5jb21wb25lbnRXaWxsVW5tb3VudCkpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIucHJvcHMgPSB0Lm1lbW9pemVkUHJvcHMsIHIuc3RhdGUgPSB0Lm1lbW9pemVkU3RhdGUsIHIuY29tcG9uZW50V2lsbFVubW91bnQoKQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgemwodCwgbiwgZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAganIoZSwgbiwgdCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgICAgICAgIGpyKGUsIG4sIHQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAyMjoKICAgICAgICAgICAgICAgICAgICAxICYgdC5tb2RlID8gKHNzID0gKHIgPSBzcykgfHwgbnVsbCAhPT0gdC5tZW1vaXplZFN0YXRlLCBqcihlLCBuLCB0KSwgc3MgPSByKSA6IGpyKGUsIG4sIHQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBqcihlLCBuLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBxcihlKSB7CiAgICAgICAgICAgIHZhciBuID0gZS51cGRhdGVRdWV1ZTsKICAgICAgICAgICAgaWYgKG51bGwgIT09IG4pIHsKICAgICAgICAgICAgICAgIGUudXBkYXRlUXVldWUgPSBudWxsOwogICAgICAgICAgICAgICAgdmFyIHQgPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgIG51bGwgPT09IHQgJiYgKHQgPSBlLnN0YXRlTm9kZSA9IG5ldyBjcyksIG4uZm9yRWFjaCgoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gTGwuYmluZChudWxsLCBlLCBuKTsKICAgICAgICAgICAgICAgICAgICB0LmhhcyhuKSB8fCAodC5hZGQobiksIG4udGhlbihyLCByKSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBLcihlLCBuLCByKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAociA9IG4uZGVsZXRpb25zKSkKICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgci5sZW5ndGg7IGwrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gcltsXTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvOwogICAgICAgICAgICAgICAgICAgICAgICBlOiBmb3IgKDsgbnVsbCAhPT0gaTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaS50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzID0gaS5zdGF0ZU5vZGUsIG1zID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHMgPSBpLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLCBtcyA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaS5yZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gcHMpIHRocm93IEVycm9yKHQoMTYwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRyKHUsIG8sIGEpLCBwcyA9IG51bGwsIG1zID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gYS5hbHRlcm5hdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IHMgJiYgKHMucmV0dXJuID0gbnVsbCksIGEucmV0dXJuID0gbnVsbAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgemwoYSwgbiwgZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgxMjg1NCAmIG4uc3VidHJlZUZsYWdzKQogICAgICAgICAgICAgICAgZm9yIChuID0gbi5jaGlsZDsgbnVsbCAhPT0gbjspIFlyKG4sIGUpLCBuID0gbi5zaWJsaW5nCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBZcihlLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBsID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgIHN3aXRjaCAociA9IGUuZmxhZ3MsIGUudGFnKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgaWYgKEtyKG4sIGUpLCBYcihlKSwgNCAmIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElyKDMsIGUsIGUucmV0dXJuKSwgVXIoMywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElyKDUsIGUsIGUucmV0dXJuKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6bChlLCBlLnJldHVybiwgbikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICBLcihuLCBlKSwgWHIoZSksIDUxMiAmIHIgJiYgbnVsbCAhPT0gbCAmJiBEcihsLCBsLnJldHVybik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgaWYgKEtyKG4sIGUpLCBYcihlKSwgNTEyICYgciAmJiBudWxsICE9PSBsICYmIERyKGwsIGwucmV0dXJuKSwgMzIgJiBlLmZsYWdzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZS5zdGF0ZU5vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYShhLCAiIikKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKDQgJiByICYmIG51bGwgIT0gKGEgPSBlLnN0YXRlTm9kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLm1lbW9pemVkUHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbnVsbCAhPT0gbCA/IGwubWVtb2l6ZWRQcm9wcyA6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUudXBkYXRlUXVldWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnVwZGF0ZVF1ZXVlID0gbnVsbCwgbnVsbCAhPT0gYykgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIgPT09IHMgJiYgInJhZGlvIiA9PT0gby50eXBlICYmIG51bGwgIT0gby5uYW1lICYmIGsoYSwgbyksIFIocywgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IFIocywgbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYy5sZW5ndGg7IGkgKz0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gY1tpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGNbaSArIDFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZSIgPT09IGQgPyBNKGEsIHApIDogImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiA9PT0gZCA/IEZhKGEsIHApIDogImNoaWxkcmVuIiA9PT0gZCA/IFJhKGEsIHApIDogdShhLCBkLCBwLCBmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3KGEsIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0ZXh0YXJlYSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4oYSwgbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlbGVjdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gYS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUgPSAhIW8ubXVsdGlwbGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gby52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBoID8gRShhLCAhIW8ubXVsdGlwbGUsIGgsICExKSA6IG0gIT09ICEhby5tdWx0aXBsZSAmJiAobnVsbCAhPSBvLmRlZmF1bHRWYWx1ZSA/IEUoYSwgISFvLm11bHRpcGxlLCBvLmRlZmF1bHRWYWx1ZSwgITApIDogRShhLCAhIW8ubXVsdGlwbGUsIG8ubXVsdGlwbGUgPyBbXSA6ICIiLCAhMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW1lvXSA9IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgICAgaWYgKEtyKG4sIGUpLCBYcihlKSwgNCAmIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGUuc3RhdGVOb2RlKSB0aHJvdyBFcnJvcih0KDE2MikpOwogICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5zdGF0ZU5vZGUsIG8gPSBlLm1lbW9pemVkUHJvcHM7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLm5vZGVWYWx1ZSA9IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgaWYgKEtyKG4sIGUpLCBYcihlKSwgNCAmIHIgJiYgbnVsbCAhPT0gbCAmJiBsLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKSB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBjZShuLmNvbnRhaW5lckluZm8pCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICB6bChlLCBlLnJldHVybiwgbikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIEtyKG4sIGUpLCBYcihlKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgS3IobiwgZSksIFhyKGUpLCA4MTkyICYgKGEgPSBlLmNoaWxkKS5mbGFncyAmJiAobyA9IG51bGwgIT09IGEubWVtb2l6ZWRTdGF0ZSwgYS5zdGF0ZU5vZGUuaXNIaWRkZW4gPSBvLCAhbyB8fCBudWxsICE9PSBhLmFsdGVybmF0ZSAmJiBudWxsICE9PSBhLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlIHx8IChNcyA9IHN1KCkpKSwgNCAmIHIgJiYgcXIoZSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDIyOgogICAgICAgICAgICAgICAgICAgIGlmIChkID0gbnVsbCAhPT0gbCAmJiBudWxsICE9PSBsLm1lbW9pemVkU3RhdGUsIDEgJiBlLm1vZGUgPyAoc3MgPSAoZiA9IHNzKSB8fCBkLCBLcihuLCBlKSwgc3MgPSBmKSA6IEtyKG4sIGUpLCBYcihlKSwgODE5MiAmIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBudWxsICE9PSBlLm1lbW9pemVkU3RhdGUsIChlLnN0YXRlTm9kZS5pc0hpZGRlbiA9IGYpICYmICFkICYmIDAgIT0gKDEgJiBlLm1vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmcyA9IGUsIGQgPSBlLmNoaWxkOyBudWxsICE9PSBkOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocCA9IGZzID0gZDsgbnVsbCAhPT0gZnM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaCA9IChtID0gZnMpLmNoaWxkLCBtLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElyKDQsIG0sIG0ucmV0dXJuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcihtLCBtLnJldHVybik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBtLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgZy5jb21wb25lbnRXaWxsVW5tb3VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbSwgbiA9IG0ucmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHIsIGcucHJvcHMgPSBsLm1lbW9pemVkUHJvcHMsIGcuc3RhdGUgPSBsLm1lbW9pemVkU3RhdGUsIGcuY29tcG9uZW50V2lsbFVubW91bnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6bChyLCBuLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyKG0sIG0ucmV0dXJuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IG0ubWVtb2l6ZWRTdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbChwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gaCA/IChoLnJldHVybiA9IG0sIGZzID0gaCkgOiBlbChwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZC5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGU6IGZvciAoZCA9IG51bGwsIHAgPSBlOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICg1ID09PSBwLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHAuc3RhdGVOb2RlLCBmID8gImZ1bmN0aW9uIiA9PSB0eXBlb2YobyA9IGEuc3R5bGUpLnNldFByb3BlcnR5ID8gby5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsICJub25lIiwgImltcG9ydGFudCIpIDogby5kaXNwbGF5ID0gIm5vbmUiIDogKHMgPSBwLnN0YXRlTm9kZSwgaSA9IG51bGwgIT0gKGMgPSBwLm1lbW9pemVkUHJvcHMuc3R5bGUpICYmIGMuaGFzT3duUHJvcGVydHkoImRpc3BsYXkiKSA/IGMuZGlzcGxheSA6IG51bGwsIHMuc3R5bGUuZGlzcGxheSA9IFQoImRpc3BsYXkiLCBpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKDYgPT09IHAudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGQpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuc3RhdGVOb2RlLm5vZGVWYWx1ZSA9IGYgPyAiIiA6IHAubWVtb2l6ZWRQcm9wcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoMjIgIT09IHAudGFnICYmIDIzICE9PSBwLnRhZyB8fCBudWxsID09PSBwLm1lbW9pemVkU3RhdGUgfHwgcCA9PT0gZSkgJiYgbnVsbCAhPT0gcC5jaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuY2hpbGQucmV0dXJuID0gcCwgcCA9IHAuY2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwID09PSBlKSBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG51bGwgPT09IHAuc2libGluZzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gcC5yZXR1cm4gfHwgcC5yZXR1cm4gPT09IGUpIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9PT0gcCAmJiAoZCA9IG51bGwpLCBwID0gcC5yZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPT09IHAgJiYgKGQgPSBudWxsKSwgcC5zaWJsaW5nLnJldHVybiA9IHAucmV0dXJuLCBwID0gcC5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgICAgIEtyKG4sIGUpLCBYcihlKSwgNCAmIHIgJiYgcXIoZSk7CiAgICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBYcihlKSB7CiAgICAgICAgICAgIHZhciBuID0gZS5mbGFnczsKICAgICAgICAgICAgaWYgKDIgJiBuKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IGUucmV0dXJuOyBudWxsICE9PSByOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEJyKHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLnJldHVybgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHQoMTYwKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChsLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGwuc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIgJiBsLmZsYWdzICYmIChSYShhLCAiIiksIGwuZmxhZ3MgJj0gLTMzKSwgUXIoZSwgV3IoZSksIGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBsLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgSHIoZSwgV3IoZSksIHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDE2MSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICB6bChlLCBlLnJldHVybiwgbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUuZmxhZ3MgJj0gLTMKICAgICAgICAgICAgfQogICAgICAgICAgICA0MDk2ICYgbiAmJiAoZS5mbGFncyAmPSAtNDA5NykKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEdyKGUsIG4sIHQpIHsKICAgICAgICAgICAgZnMgPSBlLCBacihlLCBuLCB0KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWnIoZSwgbiwgdCkgewogICAgICAgICAgICBmb3IgKHZhciByID0gMCAhPSAoMSAmIGUubW9kZSk7IG51bGwgIT09IGZzOykgewogICAgICAgICAgICAgICAgdmFyIGwgPSBmcywKICAgICAgICAgICAgICAgICAgICBhID0gbC5jaGlsZDsKICAgICAgICAgICAgICAgIGlmICgyMiA9PT0gbC50YWcgJiYgcikgewogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbnVsbCAhPT0gbC5tZW1vaXplZFN0YXRlIHx8IGlzOwogICAgICAgICAgICAgICAgICAgIGlmICghdSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGwuYWx0ZXJuYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG51bGwgIT09IG8gJiYgbnVsbCAhPT0gby5tZW1vaXplZFN0YXRlIHx8IHNzOwogICAgICAgICAgICAgICAgICAgICAgICBvID0gaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gc3M7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcyA9IHUsIChzcyA9IGkpICYmICFzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmcyA9IGw7IG51bGwgIT09IGZzOykgaSA9ICh1ID0gZnMpLmNoaWxkLCAyMiA9PT0gdS50YWcgJiYgbnVsbCAhPT0gdS5tZW1vaXplZFN0YXRlID8gbmwobCkgOiBudWxsICE9PSBpID8gKGkucmV0dXJuID0gdSwgZnMgPSBpKSA6IG5sKGwpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbnVsbCAhPT0gYTspIGZzID0gYSwgWnIoYSwgbiwgdCksIGEgPSBhLnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIGZzID0gbCwgaXMgPSBvLCBzcyA9IHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgSnIoZSwgbiwgdCkKICAgICAgICAgICAgICAgIH0gZWxzZSAwICE9ICg4NzcyICYgbC5zdWJ0cmVlRmxhZ3MpICYmIG51bGwgIT09IGEgPyAoYS5yZXR1cm4gPSBsLCBmcyA9IGEpIDogSnIoZSwgbiwgdCkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSnIoZSwgbiwgcikgewogICAgICAgICAgICBmb3IgKDsgbnVsbCAhPT0gZnM7KSB7CiAgICAgICAgICAgICAgICBpZiAoMCAhPSAoODc3MiAmIChuID0gZnMpLmZsYWdzKSkgewogICAgICAgICAgICAgICAgICAgIHIgPSBuLmFsdGVybmF0ZTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPSAoODc3MiAmIG4uZmxhZ3MpKSBzd2l0Y2ggKG4udGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcyB8fCBVcig1LCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG4uc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICg0ICYgbi5mbGFncyAmJiAhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSByKSBsLmNvbXBvbmVudERpZE1vdW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuLmVsZW1lbnRUeXBlID09PSBuLnR5cGUgPyByLm1lbW9pemVkUHJvcHMgOiBBbihuLnR5cGUsIHIubWVtb2l6ZWRQcm9wcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmNvbXBvbmVudERpZFVwZGF0ZShhLCByLm1lbW9pemVkU3RhdGUsIGwuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IG4udXBkYXRlUXVldWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gdSAmJiB0dChuLCB1LCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4udXBkYXRlUXVldWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBudWxsLCBudWxsICE9PSBuLmNoaWxkKSBzd2l0Y2ggKG4uY2hpbGQudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4uY2hpbGQuc3RhdGVOb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHQobiwgbywgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gciAmJiA0ICYgbi5mbGFncykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBuLm1lbW9pemVkUHJvcHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobi50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJidXR0b24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRleHRhcmVhIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmF1dG9Gb2N1cyAmJiByLmZvY3VzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJpbWciOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuc3JjICYmIChyLnNyYyA9IHMuc3JjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IG4ubWVtb2l6ZWRTdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IG4uYWx0ZXJuYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBjLm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZi5kZWh5ZHJhdGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGQgJiYgY2UoZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IodCgxNjMpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHNzIHx8IDUxMiAmIG4uZmxhZ3MgJiYgVnIobikKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHpsKG4sIG4ucmV0dXJuLCBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChuID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgZnMgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKHIgPSBuLnNpYmxpbmcpKSB7CiAgICAgICAgICAgICAgICAgICAgci5yZXR1cm4gPSBuLnJldHVybiwgZnMgPSByOwogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmcyA9IG4ucmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGVsKGUpIHsKICAgICAgICAgICAgZm9yICg7IG51bGwgIT09IGZzOykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBmczsKICAgICAgICAgICAgICAgIGlmIChuID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgZnMgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgdCA9IG4uc2libGluZzsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgdC5yZXR1cm4gPSBuLnJldHVybiwgZnMgPSB0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmcyA9IG4ucmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG5sKGUpIHsKICAgICAgICAgICAgZm9yICg7IG51bGwgIT09IGZzOykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBmczsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG4ucmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcig0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsKG4sIHQsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiByLmNvbXBvbmVudERpZE1vdW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBuLnJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmNvbXBvbmVudERpZE1vdW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsKG4sIGwsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuLnJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVnIobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6bChuLCBhLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbi5yZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZyKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemwobiwgdSwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgemwobiwgbi5yZXR1cm4sIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobiA9PT0gZSkgewogICAgICAgICAgICAgICAgICAgIGZzID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIG8gPSBuLnNpYmxpbmc7CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gbykgewogICAgICAgICAgICAgICAgICAgIG8ucmV0dXJuID0gbi5yZXR1cm4sIGZzID0gbzsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZnMgPSBuLnJldHVybgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB0bCgpIHsKICAgICAgICAgICAgRnMgPSBzdSgpICsgNTAwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBybCgpIHsKICAgICAgICAgICAgcmV0dXJuIDAgIT0gKDYgJiBicykgPyBzdSgpIDogLTEgIT09IEhzID8gSHMgOiBIcyA9IHN1KCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGxsKGUpIHsKICAgICAgICAgICAgcmV0dXJuIDAgPT0gKDEgJiBlLm1vZGUpID8gMSA6IDAgIT0gKDIgJiBicykgJiYgMCAhPT0gU3MgPyBTcyAmIC1TcyA6IG51bGwgIT09IFNpLnRyYW5zaXRpb24gPyAoMCA9PT0gUXMgJiYgKFFzID0gWigpKSwgUXMpIDogMCAhPT0gKGUgPSB4dSkgPyBlIDogZSA9IHZvaWQgMCA9PT0gKGUgPSB3aW5kb3cuZXZlbnQpID8gMTYgOiBoZShlLnR5cGUpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBhbChlLCBuLCByLCBsKSB7CiAgICAgICAgICAgIGlmICg1MCA8IEJzKSB0aHJvdyBCcyA9IDAsIFdzID0gbnVsbCwgRXJyb3IodCgxODUpKTsKICAgICAgICAgICAgZWUoZSwgciwgbCksIDAgIT0gKDIgJiBicykgJiYgZSA9PT0ga3MgfHwgKGUgPT09IGtzICYmICgwID09ICgyICYgYnMpICYmIChQcyB8PSByKSwgNCA9PT0gQ3MgJiYgY2woZSwgU3MpKSwgdWwoZSwgbCksIDEgPT09IHIgJiYgMCA9PT0gYnMgJiYgMCA9PSAoMSAmIG4ubW9kZSkgJiYgKHRsKCksIG9pICYmIE5uKCkpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdWwoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IGUuY2FsbGJhY2tOb2RlOwogICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBlLnN1c3BlbmRlZExhbmVzLCByID0gZS5waW5nZWRMYW5lcywgbCA9IGUuZXhwaXJhdGlvblRpbWVzLCBhID0gZS5wZW5kaW5nTGFuZXM7IDAgPCBhOykgewogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gMzEgLSB5dShhKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDEgPDwgdSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGxbdV07IC0gMSA9PT0gaSA/IDAgIT0gKG8gJiB0KSAmJiAwID09IChvICYgcikgfHwgKGxbdV0gPSBYKG8sIG4pKSA6IGkgPD0gbiAmJiAoZS5leHBpcmVkTGFuZXMgfD0gbyksIGEgJj0gfm8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfShlLCBuKTsKICAgICAgICAgICAgdmFyIHIgPSBZKGUsIGUgPT09IGtzID8gU3MgOiAwKTsKICAgICAgICAgICAgaWYgKDAgPT09IHIpIG51bGwgIT09IHQgJiYgdXUodCksIGUuY2FsbGJhY2tOb2RlID0gbnVsbCwgZS5jYWxsYmFja1ByaW9yaXR5ID0gMDsKICAgICAgICAgICAgZWxzZSBpZiAobiA9IHIgJiAtciwgZS5jYWxsYmFja1ByaW9yaXR5ICE9PSBuKSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0ICYmIHV1KHQpLCAxID09PSBuKSAwID09PSBlLnRhZyA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBvaSA9ICEwLCB6bihlKQogICAgICAgICAgICAgICAgfShmbC5iaW5kKG51bGwsIGUpKSA6IHpuKGZsLmJpbmQobnVsbCwgZSkpLCAkbygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgMCA9PSAoNiAmIGJzKSAmJiBObigpCiAgICAgICAgICAgICAgICB9KSksIHQgPSBudWxsOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0ZShyKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZnU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGR1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gcHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1MzY4NzA5MTI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gaHUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IFRsKHQsIG9sLmJpbmQobnVsbCwgZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlLmNhbGxiYWNrUHJpb3JpdHkgPSBuLCBlLmNhbGxiYWNrTm9kZSA9IHQKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb2woZSwgbikgewogICAgICAgICAgICBpZiAoSHMgPSAtMSwgUXMgPSAwLCAwICE9ICg2ICYgYnMpKSB0aHJvdyBFcnJvcih0KDMyNykpOwogICAgICAgICAgICB2YXIgciA9IGUuY2FsbGJhY2tOb2RlOwogICAgICAgICAgICBpZiAoRWwoKSAmJiBlLmNhbGxiYWNrTm9kZSAhPT0gcikgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIHZhciBsID0gWShlLCBlID09PSBrcyA/IFNzIDogMCk7CiAgICAgICAgICAgIGlmICgwID09PSBsKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgaWYgKDAgIT0gKDMwICYgbCkgfHwgMCAhPSAobCAmIGUuZXhwaXJlZExhbmVzKSB8fCBuKSBuID0geWwoZSwgbCk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbiA9IGw7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGJzOwogICAgICAgICAgICAgICAgYnMgfD0gMjsKICAgICAgICAgICAgICAgIHZhciB1ID0gZ2woKTsKICAgICAgICAgICAgICAgIGZvciAoa3MgPT09IGUgJiYgU3MgPT09IG4gfHwgKFJzID0gbnVsbCwgdGwoKSwgbWwoZSwgbikpOzspIHRyeSB7CiAgICAgICAgICAgICAgICAgICAga2woKTsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgIGhsKGUsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBCbigpLCBncy5jdXJyZW50ID0gdSwgYnMgPSBhLCBudWxsICE9PSB3cyA/IG4gPSAwIDogKGtzID0gbnVsbCwgU3MgPSAwLCBuID0gQ3MpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKDAgIT09IG4pIHsKICAgICAgICAgICAgICAgIGlmICgyID09PSBuICYmIDAgIT09IChhID0gRyhlKSkgJiYgKGwgPSBhLCBuID0gaWwoZSwgYSkpLCAxID09PSBuKSB0aHJvdyByID0genMsIG1sKGUsIDApLCBjbChlLCBsKSwgdWwoZSwgc3UoKSksIHI7CiAgICAgICAgICAgICAgICBpZiAoNiA9PT0gbikgY2woZSwgbCk7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGUuY3VycmVudC5hbHRlcm5hdGUsIDAgPT0gKDMwICYgbCkgJiYgISBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gZTs7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDE2Mzg0ICYgbi5mbGFncykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG4udXBkYXRlUXVldWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB0ICYmIG51bGwgIT09ICh0ID0gdC5zdG9yZXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IDA7IHIgPCB0Lmxlbmd0aDsgcisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB0W3JdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbC5nZXRTbmFwc2hvdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbC52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdvKGEoKSwgbCkpIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IG4uY2hpbGQsIDE2Mzg0ICYgbi5zdWJ0cmVlRmxhZ3MgJiYgbnVsbCAhPT0gdCkgdC5yZXR1cm4gPSBuLCBuID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT09IGUpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbnVsbCA9PT0gbi5zaWJsaW5nOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IG4ucmV0dXJuIHx8IG4ucmV0dXJuID09PSBlKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi5yZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNpYmxpbmcucmV0dXJuID0gbi5yZXR1cm4sIG4gPSBuLnNpYmxpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICAgICAgfShhKSAmJiAoMiA9PT0gKG4gPSB5bChlLCBsKSkgJiYgMCAhPT0gKHUgPSBHKGUpKSAmJiAobCA9IHUsIG4gPSBpbChlLCB1KSksIDEgPT09IG4pKSB0aHJvdyByID0genMsIG1sKGUsIDApLCBjbChlLCBsKSwgdWwoZSwgc3UoKSksIHI7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlLmZpbmlzaGVkV29yayA9IGEsIGUuZmluaXNoZWRMYW5lcyA9IGwsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDM0NSkpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhsKGUsIFRzLCBScyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsKGUsIGwpLCAoMTMwMDIzNDI0ICYgbCkgPT09IGwgJiYgMTAgPCAobiA9IE1zICsgNTAwIC0gc3UoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gWShlLCAwKSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoYSA9IGUuc3VzcGVuZGVkTGFuZXMpICYgbCkgIT09IGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmwoKSwgZS5waW5nZWRMYW5lcyB8PSBlLnN1c3BlbmRlZExhbmVzICYgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50aW1lb3V0SGFuZGxlID0gSG8oeGwuYmluZChudWxsLCBlLCBUcywgUnMpLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeGwoZSwgVHMsIFJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2woZSwgbCksICg0MTk0MjQwICYgbCkgPT09IGwpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gZS5ldmVudFRpbWVzLCBhID0gLTE7IDAgPCBsOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gMzEgLSB5dShsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gMSA8PCBvLCAobyA9IG5bb10pID4gYSAmJiAoYSA9IG8pLCBsICY9IH51CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGEsIDEwIDwgKGwgPSAoMTIwID4gKGwgPSBzdSgpIC0gbCkgPyAxMjAgOiA0ODAgPiBsID8gNDgwIDogMTA4MCA+IGwgPyAxMDgwIDogMTkyMCA+IGwgPyAxOTIwIDogM2UzID4gbCA/IDNlMyA6IDQzMjAgPiBsID8gNDMyMCA6IDE5NjAgKiBocyhsIC8gMTk2MCkpIC0gbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRpbWVvdXRIYW5kbGUgPSBIbyh4bC5iaW5kKG51bGwsIGUsIFRzLCBScyksIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bChlLCBUcywgUnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDMyOSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB1bChlLCBzdSgpKSwgZS5jYWxsYmFja05vZGUgPT09IHIgPyBvbC5iaW5kKG51bGwsIGUpIDogbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaWwoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IExzOwogICAgICAgICAgICByZXR1cm4gZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkICYmIChtbChlLCBuKS5mbGFncyB8PSAyNTYpLCAyICE9PSAoZSA9IHlsKGUsIG4pKSAmJiAobiA9IFRzLCBUcyA9IHQsIG51bGwgIT09IG4gJiYgc2wobikpLCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzbChlKSB7CiAgICAgICAgICAgIG51bGwgPT09IFRzID8gVHMgPSBlIDogVHMucHVzaC5hcHBseShUcywgZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGNsKGUsIG4pIHsKICAgICAgICAgICAgZm9yIChuICY9IH5fcywgbiAmPSB+UHMsIGUuc3VzcGVuZGVkTGFuZXMgfD0gbiwgZS5waW5nZWRMYW5lcyAmPSB+biwgZSA9IGUuZXhwaXJhdGlvblRpbWVzOyAwIDwgbjspIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gMzEgLSB5dShuKSwKICAgICAgICAgICAgICAgICAgICByID0gMSA8PCB0OwogICAgICAgICAgICAgICAgZVt0XSA9IC0xLCBuICY9IH5yCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZsKGUpIHsKICAgICAgICAgICAgaWYgKDAgIT0gKDYgJiBicykpIHRocm93IEVycm9yKHQoMzI3KSk7CiAgICAgICAgICAgIEVsKCk7CiAgICAgICAgICAgIHZhciBuID0gWShlLCAwKTsKICAgICAgICAgICAgaWYgKDAgPT0gKDEgJiBuKSkgcmV0dXJuIHVsKGUsIHN1KCkpLCBudWxsOwogICAgICAgICAgICB2YXIgciA9IHlsKGUsIG4pOwogICAgICAgICAgICBpZiAoMCAhPT0gZS50YWcgJiYgMiA9PT0gcikgewogICAgICAgICAgICAgICAgdmFyIGwgPSBHKGUpOwogICAgICAgICAgICAgICAgMCAhPT0gbCAmJiAobiA9IGwsIHIgPSBpbChlLCBsKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoMSA9PT0gcikgdGhyb3cgciA9IHpzLCBtbChlLCAwKSwgY2woZSwgbiksIHVsKGUsIHN1KCkpLCByOwogICAgICAgICAgICBpZiAoNiA9PT0gcikgdGhyb3cgRXJyb3IodCgzNDUpKTsKICAgICAgICAgICAgcmV0dXJuIGUuZmluaXNoZWRXb3JrID0gZS5jdXJyZW50LmFsdGVybmF0ZSwgZS5maW5pc2hlZExhbmVzID0gbiwgeGwoZSwgVHMsIFJzKSwgdWwoZSwgc3UoKSksIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGRsKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBiczsKICAgICAgICAgICAgYnMgfD0gMTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBlKG4pCiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAwID09PSAoYnMgPSB0KSAmJiAodGwoKSwgb2kgJiYgTm4oKSkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcGwoZSkgewogICAgICAgICAgICBudWxsICE9PSBWcyAmJiAwID09PSBWcy50YWcgJiYgMCA9PSAoNiAmIGJzKSAmJiBFbCgpOwogICAgICAgICAgICB2YXIgbiA9IGJzOwogICAgICAgICAgICBicyB8PSAxOwogICAgICAgICAgICB2YXIgdCA9IHlzLnRyYW5zaXRpb24sCiAgICAgICAgICAgICAgICByID0geHU7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBpZiAoeXMudHJhbnNpdGlvbiA9IG51bGwsIHh1ID0gMSwgZSkgcmV0dXJuIGUoKQogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgeHUgPSByLCB5cy50cmFuc2l0aW9uID0gdCwgMCA9PSAoNiAmIChicyA9IG4pKSAmJiBObigpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1sKGUsIG4pIHsKICAgICAgICAgICAgZS5maW5pc2hlZFdvcmsgPSBudWxsLCBlLmZpbmlzaGVkTGFuZXMgPSAwOwogICAgICAgICAgICB2YXIgdCA9IGUudGltZW91dEhhbmRsZTsKICAgICAgICAgICAgaWYgKC0xICE9PSB0ICYmIChlLnRpbWVvdXRIYW5kbGUgPSAtMSwgUW8odCkpLCBudWxsICE9PSB3cykKICAgICAgICAgICAgICAgIGZvciAodCA9IHdzLnJldHVybjsgbnVsbCAhPT0gdDspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQ7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChUbihyKSwgci50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSAociA9IHIudHlwZS5jaGlsZENvbnRleHRUeXBlcykgJiYgKHluKGxpKSwgeW4ocmkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdCgpLCB5bihsaSksIHluKHJpKSwgeXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBndChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5bihVaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFduKHIudHlwZS5fY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzID0gRXMuY3VycmVudCwgeW4oRXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQgPSB0LnJldHVybgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoa3MgPSBlLCB3cyA9IGUgPSBSbChlLmN1cnJlbnQsIG51bGwpLCBTcyA9IHhzID0gbiwgQ3MgPSAwLCB6cyA9IG51bGwsIF9zID0gUHMgPSBOcyA9IDAsIFRzID0gTHMgPSBudWxsLCBudWxsICE9PSBOaSkgewogICAgICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IE5pLmxlbmd0aDsgbisrKQogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAociA9ICh0ID0gTmlbbl0pLmludGVybGVhdmVkKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmludGVybGVhdmVkID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSByLm5leHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5wZW5kaW5nOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBhLm5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLm5leHQgPSBsLCByLm5leHQgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdC5wZW5kaW5nID0gcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIE5pID0gbnVsbAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBobChlLCBuKSB7CiAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgIHZhciByID0gd3M7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlmIChCbigpLCBBaS5jdXJyZW50ID0gWGksICRpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSBIaS5tZW1vaXplZFN0YXRlOyBudWxsICE9PSBsOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBsLnF1ZXVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gYSAmJiAoYS5wZW5kaW5nID0gbnVsbCksIGwgPSBsLm5leHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkaSA9ICExCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChXaSA9IDAsIGppID0gUWkgPSBIaSA9IG51bGwsIHFpID0gITEsIEtpID0gMCwgdnMuY3VycmVudCA9IG51bGwsIG51bGwgPT09IHIgfHwgbnVsbCA9PT0gci5yZXR1cm4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ3MgPSAxLCB6cyA9IG4sIHdzID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gci5yZXR1cm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IFNzLCBpLmZsYWdzIHw9IDMyNzY4LCBudWxsICE9PSBzICYmICJvYmplY3QiID09IHR5cGVvZiBzICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIHMudGhlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmLnRhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09ICgxICYgZi5tb2RlKSAmJiAoMCA9PT0gZCB8fCAxMSA9PT0gZCB8fCAxNSA9PT0gZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGYuYWx0ZXJuYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPyAoZi51cGRhdGVRdWV1ZSA9IHAudXBkYXRlUXVldWUsIGYubWVtb2l6ZWRTdGF0ZSA9IHAubWVtb2l6ZWRTdGF0ZSwgZi5sYW5lcyA9IHAubGFuZXMpIDogKGYudXBkYXRlUXVldWUgPSBudWxsLCBmLm1lbW9pemVkU3RhdGUgPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBzcihvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5mbGFncyAmPSAtMjU3LCBjcihtLCBvLCBpLCAwLCBuKSwgMSAmIG0ubW9kZSAmJiBpcih1LCBjLCBuKSwgcyA9IGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSAobiA9IG0pLnVwZGF0ZVF1ZXVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gbmV3IFNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5hZGQocyksIG4udXBkYXRlUXVldWUgPSBnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGguYWRkKHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09ICgxICYgbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcih1LCBjLCBuKSwgdmwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gRXJyb3IodCg0MjYpKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtpICYmIDEgJiBpLm1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gc3Iobyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gdikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT0gKDY1NTM2ICYgdi5mbGFncykgJiYgKHYuZmxhZ3MgfD0gMjU2KSwgY3IodiwgbywgaSwgMCwgbiksIFZuKHJyKHMsIGkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMgPSBycihzLCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgNCAhPT0gQ3MgJiYgKENzID0gMiksCiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IExzID8gTHMgPSBbdV0gOiBMcy5wdXNoKHUpLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gbztkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHUudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LmZsYWdzIHw9IDY1NTM2LCBuICY9IC1uLCB1LmxhbmVzIHw9IG4sIGV0KHUsIHVyKDAsIHMsIG4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHUudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB1LnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT0gKDEyOCAmIHUuZmxhZ3MpICYmICgiZnVuY3Rpb24iID09IHR5cGVvZiB5LmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciB8fCBudWxsICE9PSBiICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIGIuY29tcG9uZW50RGlkQ2F0Y2ggJiYgKG51bGwgPT09IElzIHx8ICFJcy5oYXMoYikpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5mbGFncyB8PSA2NTUzNiwgbiAmPSAtbiwgdS5sYW5lcyB8PSBuLCBldCh1LCBvcih1LCBpLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB1LnJldHVybgogICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSB1KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBTbChyKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgIG4gPSBlLCB3cyA9PT0gciAmJiBudWxsICE9PSByICYmICh3cyA9IHIgPSByLnJldHVybik7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGdsKCkgewogICAgICAgICAgICB2YXIgZSA9IGdzLmN1cnJlbnQ7CiAgICAgICAgICAgIHJldHVybiBncy5jdXJyZW50ID0gWGksIG51bGwgPT09IGUgPyBYaSA6IGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHZsKCkgewogICAgICAgICAgICAwICE9PSBDcyAmJiAzICE9PSBDcyAmJiAyICE9PSBDcyB8fCAoQ3MgPSA0KSwgbnVsbCA9PT0ga3MgfHwgMCA9PSAoMjY4NDM1NDU1ICYgTnMpICYmIDAgPT0gKDI2ODQzNTQ1NSAmIFBzKSB8fCBjbChrcywgU3MpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB5bChlLCBuKSB7CiAgICAgICAgICAgIHZhciByID0gYnM7CiAgICAgICAgICAgIGJzIHw9IDI7CiAgICAgICAgICAgIHZhciBsID0gZ2woKTsKICAgICAgICAgICAgZm9yIChrcyA9PT0gZSAmJiBTcyA9PT0gbiB8fCAoUnMgPSBudWxsLCBtbChlLCBuKSk7OykgdHJ5IHsKICAgICAgICAgICAgICAgIGJsKCk7CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICBobChlLCBuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChCbigpLCBicyA9IHIsIGdzLmN1cnJlbnQgPSBsLCBudWxsICE9PSB3cykgdGhyb3cgRXJyb3IodCgyNjEpKTsKICAgICAgICAgICAgcmV0dXJuIGtzID0gbnVsbCwgU3MgPSAwLCBDcwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYmwoKSB7CiAgICAgICAgICAgIGZvciAoOyBudWxsICE9PSB3czspIHdsKHdzKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24ga2woKSB7CiAgICAgICAgICAgIGZvciAoOyBudWxsICE9PSB3cyAmJiAhb3UoKTspIHdsKHdzKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd2woZSkgewogICAgICAgICAgICB2YXIgbiA9IGpzKGUuYWx0ZXJuYXRlLCBlLCB4cyk7CiAgICAgICAgICAgIGUubWVtb2l6ZWRQcm9wcyA9IGUucGVuZGluZ1Byb3BzLCBudWxsID09PSBuID8gU2woZSkgOiB3cyA9IG4sIHZzLmN1cnJlbnQgPSBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBTbChlKSB7CiAgICAgICAgICAgIHZhciBuID0gZTsKICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgdmFyIHQgPSBuLmFsdGVybmF0ZTsKICAgICAgICAgICAgICAgIGlmIChlID0gbi5yZXR1cm4sIDAgPT0gKDMyNzY4ICYgbi5mbGFncykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKHQgPSBGcih0LCBuLCB4cykpKSByZXR1cm4gdm9pZCh3cyA9IHQpCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAodCA9IFJyKHQsIG4pKSkgcmV0dXJuIHQuZmxhZ3MgJj0gMzI3NjcsIHZvaWQod3MgPSB0KTsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gZSkgcmV0dXJuIENzID0gNiwgdm9pZCh3cyA9IG51bGwpOwogICAgICAgICAgICAgICAgICAgIGUuZmxhZ3MgfD0gMzI3NjgsIGUuc3VidHJlZUZsYWdzID0gMCwgZS5kZWxldGlvbnMgPSBudWxsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKG4gPSBuLnNpYmxpbmcpKSByZXR1cm4gdm9pZCh3cyA9IG4pOwogICAgICAgICAgICAgICAgd3MgPSBuID0gZQogICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSBuKTsKICAgICAgICAgICAgMCA9PT0gQ3MgJiYgKENzID0gNSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHhsKGUsIG4sIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSB4dSwKICAgICAgICAgICAgICAgIGEgPSB5cy50cmFuc2l0aW9uOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgeXMudHJhbnNpdGlvbiA9IG51bGwsIHh1ID0gMSwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlLCBuLCByLCBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAobnVsbCAhPT0gVnMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPSAoNiAmIGJzKSkgdGhyb3cgRXJyb3IodCgzMjcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUuZmluaXNoZWRXb3JrOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuZmluaXNoZWRMYW5lczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IHIpIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5maW5pc2hlZFdvcmsgPSBudWxsLCBlLmZpbmlzaGVkTGFuZXMgPSAwLCByID09PSBlLmN1cnJlbnQpIHRocm93IEVycm9yKHQoMTc3KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuY2FsbGJhY2tOb2RlID0gbnVsbCwgZS5jYWxsYmFja1ByaW9yaXR5ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSByLmxhbmVzIHwgci5jaGlsZExhbmVzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5wZW5kaW5nTGFuZXMgJiB+bjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnBlbmRpbmdMYW5lcyA9IG4sIGUuc3VzcGVuZGVkTGFuZXMgPSAwLCBlLnBpbmdlZExhbmVzID0gMCwgZS5leHBpcmVkTGFuZXMgJj0gbiwgZS5tdXRhYmxlUmVhZExhbmVzICY9IG4sIGUuZW50YW5nbGVkTGFuZXMgJj0gbiwgbiA9IGUuZW50YW5nbGVtZW50czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUuZXZlbnRUaW1lczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBlLmV4cGlyYXRpb25UaW1lczsgMCA8IHQ7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gMzEgLSB5dSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAxIDw8IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bbF0gPSAwLCByW2xdID0gLTEsIGVbbF0gPSAtMSwgdCAmPSB+YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdSksIGUgPT09IGtzICYmICh3cyA9IGtzID0gbnVsbCwgU3MgPSAwKSwgMCA9PSAoMjA2NCAmIHIuc3VidHJlZUZsYWdzKSAmJiAwID09ICgyMDY0ICYgci5mbGFncykgfHwgVXMgfHwgKFVzID0gITAsIFRsKHB1LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVsKCksIG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSksIHUgPSAwICE9ICgxNTk5MCAmIHIuZmxhZ3MpLCAwICE9ICgxNTk5MCAmIHIuc3VidHJlZUZsYWdzKSB8fCB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0geXMudHJhbnNpdGlvbiwgeXMudHJhbnNpdGlvbiA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHh1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBiczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJzIHw9IDQsIHZzLmN1cnJlbnQgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEJvID0gUnUsIEJlKGUgPSBBZSgpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzZWxlY3Rpb25TdGFydCIgaW4gZSkgdmFyIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGUuc2VsZWN0aW9uU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBlLnNlbGVjdGlvbkVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gKHIgPSAociA9IGUub3duZXJEb2N1bWVudCkgJiYgci5kZWZhdWx0VmlldyB8fCB3aW5kb3cpLmdldFNlbGVjdGlvbiAmJiByLmdldFNlbGVjdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsICYmIDAgIT09IGwucmFuZ2VDb3VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbC5hbmNob3JOb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGwuYW5jaG9yT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGwuZm9jdXNOb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbC5mb2N1c09mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIubm9kZVR5cGUsIHUubm9kZVR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG07IGQgIT09IHIgfHwgMCAhPT0gYSAmJiAzICE9PSBkLm5vZGVUeXBlIHx8IChpID0gbyArIGEpLCBkICE9PSB1IHx8IDAgIT09IGwgJiYgMyAhPT0gZC5ub2RlVHlwZSB8fCAocyA9IG8gKyBsKSwgMyA9PT0gZC5ub2RlVHlwZSAmJiAobyArPSBkLm5vZGVWYWx1ZS5sZW5ndGgpLCBudWxsICE9PSAobSA9IGQuZmlyc3RDaGlsZCk7KSBwID0gZCwgZCA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQgPT09IGUpIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPT09IHIgJiYgKytjID09PSBhICYmIChpID0gbyksIHAgPT09IHUgJiYgKytmID09PSBsICYmIChzID0gbyksIG51bGwgIT09IChtID0gZC5uZXh0U2libGluZykpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAoZCA9IHApLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IC0xID09PSBpIHx8IC0xID09PSBzID8gbnVsbCA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgciA9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFdvID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzZWRFbGVtOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBSdSA9ICExLCBmcyA9IG47IG51bGwgIT09IGZzOykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID0gKG4gPSBmcykuY2hpbGQsIDAgIT0gKDEwMjggJiBuLnN1YnRyZWVGbGFncykgJiYgbnVsbCAhPT0gZSkgZS5yZXR1cm4gPSBuLCBmcyA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG51bGwgIT09IGZzOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IG4uYWx0ZXJuYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gKDEwMjQgJiBuLmZsYWdzKSkgc3dpdGNoIChuLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBoLm1lbW9pemVkUHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGgubWVtb2l6ZWRTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gbi5zdGF0ZU5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHkuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUobi5lbGVtZW50VHlwZSA9PT0gbi50eXBlID8gZyA6IEFuKG4udHlwZSwgZyksIHYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeS5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSA9IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gbi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9PT0gay5ub2RlVHlwZSA/IGsudGV4dENvbnRlbnQgPSAiIiA6IDkgPT09IGsubm9kZVR5cGUgJiYgay5kb2N1bWVudEVsZW1lbnQgJiYgay5yZW1vdmVDaGlsZChrLmRvY3VtZW50RWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHQoMTYzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemwobiwgbi5yZXR1cm4sIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IChlID0gbi5zaWJsaW5nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yZXR1cm4gPSBuLnJldHVybiwgZnMgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcyA9IG4ucmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZHMsIGRzID0gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHIpLCBZcihyLCBlKSwgV2UoV28pLCBSdSA9ICEhQm8sIFdvID0gQm8gPSBudWxsLCBlLmN1cnJlbnQgPSByLCBHcihyLCBlLCBhKSwgaXUoKSwgYnMgPSBpLCB4dSA9IG8sIHlzLnRyYW5zaXRpb24gPSB1CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBlLmN1cnJlbnQgPSByOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoVXMgJiYgKFVzID0gITEsIFZzID0gZSwgQXMgPSBhKSwgMCA9PT0gKHUgPSBlLnBlbmRpbmdMYW5lcykgJiYgKElzID0gbnVsbCksIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodnUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdnUub25Db21taXRGaWJlclJvb3QpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1Lm9uQ29tbWl0RmliZXJSb290KGd1LCBlLCB2b2lkIDAsIDEyOCA9PSAoMTI4ICYgZS5jdXJyZW50LmZsYWdzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShyLnN0YXRlTm9kZSksIHVsKGUsIHN1KCkpLCBudWxsICE9PSBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZS5vblJlY292ZXJhYmxlRXJyb3IsIHIgPSAwOyByIDwgbi5sZW5ndGg7IHIrKykgYSA9IG5bcl0sIGwoYS52YWx1ZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFN0YWNrOiBhLnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdDogYS5kaWdlc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoRHMpIHRocm93IERzID0gITEsIGUgPSBPcywgT3MgPSBudWxsLCBlOwogICAgICAgICAgICAgICAgICAgICAgICAwICE9ICgxICYgQXMpICYmIDAgIT09IGUudGFnICYmIEVsKCksIDAgIT0gKDEgJiAodSA9IGUucGVuZGluZ0xhbmVzKSkgPyBlID09PSBXcyA/IEJzKysgOiAoQnMgPSAwLCBXcyA9IGUpIDogQnMgPSAwLCBObigpCiAgICAgICAgICAgICAgICAgICAgfShlLCBuLCByLCBsKQogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgeXMudHJhbnNpdGlvbiA9IGEsIHh1ID0gbAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBFbCgpIHsKICAgICAgICAgICAgaWYgKG51bGwgIT09IFZzKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRlKEFzKSwKICAgICAgICAgICAgICAgICAgICBuID0geXMudHJhbnNpdGlvbiwKICAgICAgICAgICAgICAgICAgICByID0geHU7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlmICh5cy50cmFuc2l0aW9uID0gbnVsbCwgeHUgPSAxNiA+IGUgPyAxNiA6IGUsIG51bGwgPT09IFZzKSB2YXIgbCA9ICExOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA9IFZzLCBWcyA9IG51bGwsIEFzID0gMCwgMCAhPSAoNiAmIGJzKSkgdGhyb3cgRXJyb3IodCgzMzEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBiczsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChicyB8PSA0LCBmcyA9IGUuY3VycmVudDsgbnVsbCAhPT0gZnM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGZzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB1LmNoaWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gKDE2ICYgZnMuZmxhZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB1LmRlbGV0aW9uczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IGkubGVuZ3RoOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gaVtzXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZnMgPSBjOyBudWxsICE9PSBmczspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGZzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZi50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXIoOCwgZiwgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBmLmNoaWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBkKSBkLnJldHVybiA9IGYsIGZzID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBudWxsICE9PSBmczspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gKGYgPSBmcykuc2libGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gZi5yZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXIoZiksIGYgPT09IGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5yZXR1cm4gPSBtLCBmcyA9IHA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzID0gbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB1LmFsdGVybmF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gaC5jaGlsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5jaGlsZCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IGcuc2libGluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5zaWJsaW5nID0gbnVsbCwgZyA9IHYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSBnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzID0gdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9ICgyMDY0ICYgdS5zdWJ0cmVlRmxhZ3MpICYmIG51bGwgIT09IG8pIG8ucmV0dXJuID0gdSwgZnMgPSBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBlOiBmb3IgKDsgbnVsbCAhPT0gZnM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gKDIwNDggJiAodSA9IGZzKS5mbGFncykpIHN3aXRjaCAodS50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXIoOSwgdSwgdS5yZXR1cm4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gdS5zaWJsaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkucmV0dXJuID0gdS5yZXR1cm4sIGZzID0geTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcyA9IHUucmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBlLmN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZnMgPSBiOyBudWxsICE9PSBmczspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gKG8gPSBmcykuY2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPSAoMjA2NCAmIG8uc3VidHJlZUZsYWdzKSAmJiBudWxsICE9PSBrKSBrLnJldHVybiA9IG8sIGZzID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZTogZm9yIChvID0gYjsgbnVsbCAhPT0gZnM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gKDIwNDggJiAoaSA9IGZzKS5mbGFncykpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaS50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVyKDksIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsKGksIGkucmV0dXJuLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBpLnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdy5yZXR1cm4gPSBpLnJldHVybiwgZnMgPSB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzID0gaS5yZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnMgPSBhLCBObigpLCB2dSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB2dS5vblBvc3RDb21taXRGaWJlclJvb3QpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dS5vblBvc3RDb21taXRGaWJlclJvb3QoZ3UsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbAogICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICB4dSA9IHIsIHlzLnRyYW5zaXRpb24gPSBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBDbChlLCBuLCB0KSB7CiAgICAgICAgICAgIGUgPSBabihlLCBuID0gdXIoMCwgbiA9IHJyKHQsIG4pLCAxKSwgMSksIG4gPSBybCgpLCBudWxsICE9PSBlICYmIChlZShlLCAxLCBuKSwgdWwoZSwgbikpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB6bChlLCBuLCB0KSB7CiAgICAgICAgICAgIGlmICgzID09PSBlLnRhZykgQ2woZSwgZSwgdCk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAoOyBudWxsICE9PSBuOykgewogICAgICAgICAgICAgICAgICAgIGlmICgzID09PSBuLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICBDbChuLCBlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IG4udGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbi5zdGF0ZU5vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiBuLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIHx8ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHIuY29tcG9uZW50RGlkQ2F0Y2ggJiYgKG51bGwgPT09IElzIHx8ICFJcy5oYXMocikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gWm4obiwgZSA9IG9yKG4sIGUgPSBycih0LCBlKSwgMSksIDEpLCBlID0gcmwoKSwgbnVsbCAhPT0gbiAmJiAoZWUobiwgMSwgZSksIHVsKG4sIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbiA9IG4ucmV0dXJuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBObChlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gZS5waW5nQ2FjaGU7CiAgICAgICAgICAgIG51bGwgIT09IHIgJiYgci5kZWxldGUobiksIG4gPSBybCgpLCBlLnBpbmdlZExhbmVzIHw9IGUuc3VzcGVuZGVkTGFuZXMgJiB0LCBrcyA9PT0gZSAmJiAoU3MgJiB0KSA9PT0gdCAmJiAoNCA9PT0gQ3MgfHwgMyA9PT0gQ3MgJiYgKDEzMDAyMzQyNCAmIFNzKSA9PT0gU3MgJiYgNTAwID4gc3UoKSAtIE1zID8gbWwoZSwgMCkgOiBfcyB8PSB0KSwgdWwoZSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFBsKGUsIG4pIHsKICAgICAgICAgICAgMCA9PT0gbiAmJiAoMCA9PSAoMSAmIGUubW9kZSkgPyBuID0gMSA6IChuID0gU3UsIDAgPT0gKDEzMDAyMzQyNCAmIChTdSA8PD0gMSkpICYmIChTdSA9IDQxOTQzMDQpKSk7CiAgICAgICAgICAgIHZhciB0ID0gcmwoKTsKICAgICAgICAgICAgbnVsbCAhPT0gKGUgPSBLbihlLCBuKSkgJiYgKGVlKGUsIG4sIHQpLCB1bChlLCB0KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIF9sKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLm1lbW9pemVkU3RhdGUsCiAgICAgICAgICAgICAgICB0ID0gMDsKICAgICAgICAgICAgbnVsbCAhPT0gbiAmJiAodCA9IG4ucmV0cnlMYW5lKSwgUGwoZSwgdCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIExsKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHIgPSAwOwogICAgICAgICAgICBzd2l0Y2ggKGUudGFnKSB7CiAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgIHZhciBsID0gZS5zdGF0ZU5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gYSAmJiAociA9IGEucmV0cnlMYW5lKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICAgICAgbCA9IGUuc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDMxNCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbnVsbCAhPT0gbCAmJiBsLmRlbGV0ZShuKSwgUGwoZSwgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFRsKGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGF1KGUsIG4pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBNbChlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHRoaXMudGFnID0gZSwgdGhpcy5rZXkgPSB0LCB0aGlzLnNpYmxpbmcgPSB0aGlzLmNoaWxkID0gdGhpcy5yZXR1cm4gPSB0aGlzLnN0YXRlTm9kZSA9IHRoaXMudHlwZSA9IHRoaXMuZWxlbWVudFR5cGUgPSBudWxsLCB0aGlzLmluZGV4ID0gMCwgdGhpcy5yZWYgPSBudWxsLCB0aGlzLnBlbmRpbmdQcm9wcyA9IG4sIHRoaXMuZGVwZW5kZW5jaWVzID0gdGhpcy5tZW1vaXplZFN0YXRlID0gdGhpcy51cGRhdGVRdWV1ZSA9IHRoaXMubWVtb2l6ZWRQcm9wcyA9IG51bGwsIHRoaXMubW9kZSA9IHIsIHRoaXMuc3VidHJlZUZsYWdzID0gdGhpcy5mbGFncyA9IDAsIHRoaXMuZGVsZXRpb25zID0gbnVsbCwgdGhpcy5jaGlsZExhbmVzID0gdGhpcy5sYW5lcyA9IDAsIHRoaXMuYWx0ZXJuYXRlID0gbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRmwoZSkgewogICAgICAgICAgICByZXR1cm4gISghKGUgPSBlLnByb3RvdHlwZSkgfHwgIWUuaXNSZWFjdENvbXBvbmVudCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFJsKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBlLmFsdGVybmF0ZTsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IHQgPyAoKHQgPSAkcyhlLnRhZywgbiwgZS5rZXksIGUubW9kZSkpLmVsZW1lbnRUeXBlID0gZS5lbGVtZW50VHlwZSwgdC50eXBlID0gZS50eXBlLCB0LnN0YXRlTm9kZSA9IGUuc3RhdGVOb2RlLCB0LmFsdGVybmF0ZSA9IGUsIGUuYWx0ZXJuYXRlID0gdCkgOiAodC5wZW5kaW5nUHJvcHMgPSBuLCB0LnR5cGUgPSBlLnR5cGUsIHQuZmxhZ3MgPSAwLCB0LnN1YnRyZWVGbGFncyA9IDAsIHQuZGVsZXRpb25zID0gbnVsbCksIHQuZmxhZ3MgPSAxNDY4MDA2NCAmIGUuZmxhZ3MsIHQuY2hpbGRMYW5lcyA9IGUuY2hpbGRMYW5lcywgdC5sYW5lcyA9IGUubGFuZXMsIHQuY2hpbGQgPSBlLmNoaWxkLCB0Lm1lbW9pemVkUHJvcHMgPSBlLm1lbW9pemVkUHJvcHMsIHQubWVtb2l6ZWRTdGF0ZSA9IGUubWVtb2l6ZWRTdGF0ZSwgdC51cGRhdGVRdWV1ZSA9IGUudXBkYXRlUXVldWUsIG4gPSBlLmRlcGVuZGVuY2llcywgdC5kZXBlbmRlbmNpZXMgPSBudWxsID09PSBuID8gbnVsbCA6IHsKICAgICAgICAgICAgICAgIGxhbmVzOiBuLmxhbmVzLAogICAgICAgICAgICAgICAgZmlyc3RDb250ZXh0OiBuLmZpcnN0Q29udGV4dAogICAgICAgICAgICB9LCB0LnNpYmxpbmcgPSBlLnNpYmxpbmcsIHQuaW5kZXggPSBlLmluZGV4LCB0LnJlZiA9IGUucmVmLCB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBEbChlLCBuLCByLCBsLCBhLCB1KSB7CiAgICAgICAgICAgIHZhciBvID0gMjsKICAgICAgICAgICAgaWYgKGwgPSBlLCAiZnVuY3Rpb24iID09IHR5cGVvZiBlKSBGbChlKSAmJiAobyA9IDEpOwogICAgICAgICAgICBlbHNlIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgbyA9IDU7CiAgICAgICAgICAgIGVsc2UgZTogc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjYXNlIGhhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBPbChyLmNoaWxkcmVuLCBhLCB1LCBuKTsKICAgICAgICAgICAgICAgIGNhc2UgZ2E6CiAgICAgICAgICAgICAgICAgICAgbyA9IDgsIGEgfD0gODsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgdmE6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlID0gJHMoMTIsIHIsIG4sIDIgfCBhKSkuZWxlbWVudFR5cGUgPSB2YSwgZS5sYW5lcyA9IHUsIGU7CiAgICAgICAgICAgICAgICBjYXNlIHdhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSA9ICRzKDEzLCByLCBuLCBhKSkuZWxlbWVudFR5cGUgPSB3YSwgZS5sYW5lcyA9IHUsIGU7CiAgICAgICAgICAgICAgICBjYXNlIFNhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSA9ICRzKDE5LCByLCBuLCBhKSkuZWxlbWVudFR5cGUgPSBTYSwgZS5sYW5lcyA9IHUsIGU7CiAgICAgICAgICAgICAgICBjYXNlIENhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBJbChyLCBhLCB1LCBuKTsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHN3aXRjaCAoZS4kJHR5cGVvZikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHlhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBiYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSA5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBrYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgeGE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDE2LCBsID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IodCgxMzAsIG51bGwgPT0gZSA/IGUgOiB0eXBlb2YgZSwgIiIpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAobiA9ICRzKG8sIHIsIG4sIGEpKS5lbGVtZW50VHlwZSA9IGUsIG4udHlwZSA9IGwsIG4ubGFuZXMgPSB1LCBuCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBPbChlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHJldHVybiAoZSA9ICRzKDcsIGUsIHIsIG4pKS5sYW5lcyA9IHQsIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIElsKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgcmV0dXJuIChlID0gJHMoMjIsIGUsIHIsIG4pKS5lbGVtZW50VHlwZSA9IENhLCBlLmxhbmVzID0gdCwgZS5zdGF0ZU5vZGUgPSB7CiAgICAgICAgICAgICAgICBpc0hpZGRlbjogITEKICAgICAgICAgICAgfSwgZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVWwoZSwgbiwgdCkgewogICAgICAgICAgICByZXR1cm4gKGUgPSAkcyg2LCBlLCBudWxsLCBuKSkubGFuZXMgPSB0LCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBWbChlLCBuLCB0KSB7CiAgICAgICAgICAgIHJldHVybiAobiA9ICRzKDQsIG51bGwgIT09IGUuY2hpbGRyZW4gPyBlLmNoaWxkcmVuIDogW10sIGUua2V5LCBuKSkubGFuZXMgPSB0LCBuLnN0YXRlTm9kZSA9IHsKICAgICAgICAgICAgICAgIGNvbnRhaW5lckluZm86IGUuY29udGFpbmVySW5mbywKICAgICAgICAgICAgICAgIHBlbmRpbmdDaGlsZHJlbjogbnVsbCwKICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uOiBlLmltcGxlbWVudGF0aW9uCiAgICAgICAgICAgIH0sIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEFsKGUsIG4sIHQsIHIsIGwpIHsKICAgICAgICAgICAgdGhpcy50YWcgPSBuLCB0aGlzLmNvbnRhaW5lckluZm8gPSBlLCB0aGlzLmZpbmlzaGVkV29yayA9IHRoaXMucGluZ0NhY2hlID0gdGhpcy5jdXJyZW50ID0gdGhpcy5wZW5kaW5nQ2hpbGRyZW4gPSBudWxsLCB0aGlzLnRpbWVvdXRIYW5kbGUgPSAtMSwgdGhpcy5jYWxsYmFja05vZGUgPSB0aGlzLnBlbmRpbmdDb250ZXh0ID0gdGhpcy5jb250ZXh0ID0gbnVsbCwgdGhpcy5jYWxsYmFja1ByaW9yaXR5ID0gMCwgdGhpcy5ldmVudFRpbWVzID0gSigwKSwgdGhpcy5leHBpcmF0aW9uVGltZXMgPSBKKC0xKSwgdGhpcy5lbnRhbmdsZWRMYW5lcyA9IHRoaXMuZmluaXNoZWRMYW5lcyA9IHRoaXMubXV0YWJsZVJlYWRMYW5lcyA9IHRoaXMuZXhwaXJlZExhbmVzID0gdGhpcy5waW5nZWRMYW5lcyA9IHRoaXMuc3VzcGVuZGVkTGFuZXMgPSB0aGlzLnBlbmRpbmdMYW5lcyA9IDAsIHRoaXMuZW50YW5nbGVtZW50cyA9IEooMCksIHRoaXMuaWRlbnRpZmllclByZWZpeCA9IHIsIHRoaXMub25SZWNvdmVyYWJsZUVycm9yID0gbCwgdGhpcy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhID0gbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQmwoZSwgbiwgdCwgciwgbCwgYSwgdSwgbywgaSwgcykgewogICAgICAgICAgICByZXR1cm4gZSA9IG5ldyBBbChlLCBuLCB0LCBvLCBpKSwgMSA9PT0gbiA/IChuID0gMSwgITAgPT09IGEgJiYgKG4gfD0gOCkpIDogbiA9IDAsIGEgPSAkcygzLCBudWxsLCBudWxsLCBuKSwgZS5jdXJyZW50ID0gYSwgYS5zdGF0ZU5vZGUgPSBlLCBhLm1lbW9pemVkU3RhdGUgPSB7CiAgICAgICAgICAgICAgICBlbGVtZW50OiByLAogICAgICAgICAgICAgICAgaXNEZWh5ZHJhdGVkOiB0LAogICAgICAgICAgICAgICAgY2FjaGU6IG51bGwsCiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uczogbnVsbCwKICAgICAgICAgICAgICAgIHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6IG51bGwKICAgICAgICAgICAgfSwgWW4oYSksIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFdsKGUpIHsKICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gdGk7CiAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChIKGUgPSBlLl9yZWFjdEludGVybmFscykgIT09IGUgfHwgMSAhPT0gZS50YWcpIHRocm93IEVycm9yKHQoMTcwKSk7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGU7ZG8gewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobi50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4uc3RhdGVOb2RlLmNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod24obi50eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4gPSBuLnJldHVybgogICAgICAgICAgICAgICAgfSB3aGlsZSAobnVsbCAhPT0gbik7CiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDE3MSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKDEgPT09IGUudGFnKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IGUudHlwZTsKICAgICAgICAgICAgICAgIGlmICh3bihyKSkgcmV0dXJuIHhuKGUsIHIsIG4pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEhsKGUsIG4sIHQsIHIsIGwsIGEsIHUsIG8sIGksIHMpIHsKICAgICAgICAgICAgcmV0dXJuIChlID0gQmwodCwgciwgITAsIGUsIDAsIGEsIDAsIG8sIGkpKS5jb250ZXh0ID0gV2wobnVsbCksIHQgPSBlLmN1cnJlbnQsIChhID0gR24ociA9IHJsKCksIGwgPSBsbCh0KSkpLmNhbGxiYWNrID0gbnVsbCAhPSBuID8gbiA6IG51bGwsIFpuKHQsIGEsIGwpLCBlLmN1cnJlbnQubGFuZXMgPSBsLCBlZShlLCBsLCByKSwgdWwoZSwgciksIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFFsKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSBuLmN1cnJlbnQsCiAgICAgICAgICAgICAgICBhID0gcmwoKSwKICAgICAgICAgICAgICAgIHUgPSBsbChsKTsKICAgICAgICAgICAgcmV0dXJuIHQgPSBXbCh0KSwgbnVsbCA9PT0gbi5jb250ZXh0ID8gbi5jb250ZXh0ID0gdCA6IG4ucGVuZGluZ0NvbnRleHQgPSB0LCAobiA9IEduKGEsIHUpKS5wYXlsb2FkID0gewogICAgICAgICAgICAgICAgZWxlbWVudDogZQogICAgICAgICAgICB9LCBudWxsICE9PSAociA9IHZvaWQgMCA9PT0gciA/IG51bGwgOiByKSAmJiAobi5jYWxsYmFjayA9IHIpLCBudWxsICE9PSAoZSA9IFpuKGwsIG4sIHUpKSAmJiAoYWwoZSwgbCwgdSwgYSksIEpuKGUsIGwsIHUpKSwgdQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gamwoZSkgewogICAgICAgICAgICByZXR1cm4gKGUgPSBlLmN1cnJlbnQpLmNoaWxkID8gKGUuY2hpbGQudGFnLCBlLmNoaWxkLnN0YXRlTm9kZSkgOiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiAkbChlLCBuKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAoZSA9IGUubWVtb2l6ZWRTdGF0ZSkgJiYgbnVsbCAhPT0gZS5kZWh5ZHJhdGVkKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUucmV0cnlMYW5lOwogICAgICAgICAgICAgICAgZS5yZXRyeUxhbmUgPSAwICE9PSB0ICYmIHQgPCBuID8gdCA6IG4KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcWwoZSwgbikgewogICAgICAgICAgICAkbChlLCBuKSwgKGUgPSBlLmFsdGVybmF0ZSkgJiYgJGwoZSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEtsKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IChlID0gJChlKSkgPyBudWxsIDogZS5zdGF0ZU5vZGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFlsKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFhsKGUpIHsKICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxSb290ID0gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gR2woZSkgewogICAgICAgICAgICB0aGlzLl9pbnRlcm5hbFJvb3QgPSBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBabChlKSB7CiAgICAgICAgICAgIHJldHVybiAhKCFlIHx8IDEgIT09IGUubm9kZVR5cGUgJiYgOSAhPT0gZS5ub2RlVHlwZSAmJiAxMSAhPT0gZS5ub2RlVHlwZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEpsKGUpIHsKICAgICAgICAgICAgcmV0dXJuICEoIWUgfHwgMSAhPT0gZS5ub2RlVHlwZSAmJiA5ICE9PSBlLm5vZGVUeXBlICYmIDExICE9PSBlLm5vZGVUeXBlICYmICg4ICE9PSBlLm5vZGVUeXBlIHx8ICIgcmVhY3QtbW91bnQtcG9pbnQtdW5zdGFibGUgIiAhPT0gZS5ub2RlVmFsdWUpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZWEoKSB7fQoKICAgICAgICBmdW5jdGlvbiBuYShlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHZhciBhID0gdC5fcmVhY3RSb290Q29udGFpbmVyOwogICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAgdmFyIHUgPSBhOwogICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGw7CiAgICAgICAgICAgICAgICAgICAgbCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGpsKHUpOwogICAgICAgICAgICAgICAgICAgICAgICBvLmNhbGwoZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBRbChuLCB1LCBlLCBsKQogICAgICAgICAgICB9IGVsc2UgdSA9IGZ1bmN0aW9uKGUsIG4sIHQsIHIsIGwpIHsKICAgICAgICAgICAgICAgIGlmIChsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSByOwogICAgICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGpsKHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5jYWxsKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBIbChuLCByLCBlLCAwLCBudWxsLCAhMSwgMCwgIiIsIGVhKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5fcmVhY3RSb290Q29udGFpbmVyID0gdSwgZVtYb10gPSB1LmN1cnJlbnQsIEdlKDggPT09IGUubm9kZVR5cGUgPyBlLnBhcmVudE5vZGUgOiBlKSwgcGwoKSwgdQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICg7IGwgPSBlLmxhc3RDaGlsZDspIGUucmVtb3ZlQ2hpbGQobCk7CiAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gcjsKICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gamwoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uY2FsbChlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBpID0gQmwoZSwgMCwgITEsIG51bGwsIDAsICExLCAwLCAiIiwgZWEpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUuX3JlYWN0Um9vdENvbnRhaW5lciA9IGksIGVbWG9dID0gaS5jdXJyZW50LCBHZSg4ID09PSBlLm5vZGVUeXBlID8gZS5wYXJlbnROb2RlIDogZSksIHBsKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBRbChuLCBpLCB0LCByKQogICAgICAgICAgICAgICAgfSkpLCBpCiAgICAgICAgICAgIH0odCwgbiwgZSwgbCwgcik7CiAgICAgICAgICAgIHJldHVybiBqbCh1KQogICAgICAgIH0KICAgICAgICB2YXIgdGEgPSBuZXcgU2V0LAogICAgICAgICAgICByYSA9IHt9LAogICAgICAgICAgICBsYSA9ICEoInVuZGVmaW5lZCIgPT0gdHlwZW9mIHdpbmRvdyB8fCB2b2lkIDAgPT09IHdpbmRvdy5kb2N1bWVudCB8fCB2b2lkIDAgPT09IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSwKICAgICAgICAgICAgYWEgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LAogICAgICAgICAgICB1YSA9IC9eWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRdWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRcLS4wLTlcdTAwQjdcdTAzMDAtXHUwMzZGXHUyMDNGLVx1MjA0MF0qJC8sCiAgICAgICAgICAgIG9hID0ge30sCiAgICAgICAgICAgIGlhID0ge30sCiAgICAgICAgICAgIHNhID0ge307CiAgICAgICAgImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZSIuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNhW2VdID0gbmV3IGEoZSwgMCwgITEsIGUsIG51bGwsICExLCAhMSkKICAgICAgICB9KSksIFsKICAgICAgICAgICAgWyJhY2NlcHRDaGFyc2V0IiwgImFjY2VwdC1jaGFyc2V0Il0sCiAgICAgICAgICAgIFsiY2xhc3NOYW1lIiwgImNsYXNzIl0sCiAgICAgICAgICAgIFsiaHRtbEZvciIsICJmb3IiXSwKICAgICAgICAgICAgWyJodHRwRXF1aXYiLCAiaHR0cC1lcXVpdiJdCiAgICAgICAgXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBuID0gZVswXTsKICAgICAgICAgICAgc2Fbbl0gPSBuZXcgYShuLCAxLCAhMSwgZVsxXSwgbnVsbCwgITEsICExKQogICAgICAgIH0pKSwgWyJjb250ZW50RWRpdGFibGUiLCAiZHJhZ2dhYmxlIiwgInNwZWxsQ2hlY2siLCAidmFsdWUiXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNhW2VdID0gbmV3IGEoZSwgMiwgITEsIGUudG9Mb3dlckNhc2UoKSwgbnVsbCwgITEsICExKQogICAgICAgIH0pKSwgWyJhdXRvUmV2ZXJzZSIsICJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwgImZvY3VzYWJsZSIsICJwcmVzZXJ2ZUFscGhhIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBzYVtlXSA9IG5ldyBhKGUsIDIsICExLCBlLCBudWxsLCAhMSwgITEpCiAgICAgICAgfSkpLCAiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGRpc2FibGVSZW1vdGVQbGF5YmFjayBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZSIuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNhW2VdID0gbmV3IGEoZSwgMywgITEsIGUudG9Mb3dlckNhc2UoKSwgbnVsbCwgITEsICExKQogICAgICAgIH0pKSwgWyJjaGVja2VkIiwgIm11bHRpcGxlIiwgIm11dGVkIiwgInNlbGVjdGVkIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBzYVtlXSA9IG5ldyBhKGUsIDMsICEwLCBlLCBudWxsLCAhMSwgITEpCiAgICAgICAgfSkpLCBbImNhcHR1cmUiLCAiZG93bmxvYWQiXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNhW2VdID0gbmV3IGEoZSwgNCwgITEsIGUsIG51bGwsICExLCAhMSkKICAgICAgICB9KSksIFsiY29scyIsICJyb3dzIiwgInNpemUiLCAic3BhbiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgc2FbZV0gPSBuZXcgYShlLCA2LCAhMSwgZSwgbnVsbCwgITEsICExKQogICAgICAgIH0pKSwgWyJyb3dTcGFuIiwgInN0YXJ0Il0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBzYVtlXSA9IG5ldyBhKGUsIDUsICExLCBlLnRvTG93ZXJDYXNlKCksIG51bGwsICExLCAhMSkKICAgICAgICB9KSk7CiAgICAgICAgdmFyIGNhID0gL1tcLTpdKFthLXpdKS9nLAogICAgICAgICAgICBmYSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlWzFdLnRvVXBwZXJDYXNlKCkKICAgICAgICAgICAgfTsKICAgICAgICAiYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgbiA9IGUucmVwbGFjZShjYSwgZmEpOwogICAgICAgICAgICBzYVtuXSA9IG5ldyBhKG4sIDEsICExLCBlLCBudWxsLCAhMSwgITEpCiAgICAgICAgfSkpLCAieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlIi5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLnJlcGxhY2UoY2EsIGZhKTsKICAgICAgICAgICAgc2Fbbl0gPSBuZXcgYShuLCAxLCAhMSwgZSwgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCAhMSwgITEpCiAgICAgICAgfSkpLCBbInhtbDpiYXNlIiwgInhtbDpsYW5nIiwgInhtbDpzcGFjZSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLnJlcGxhY2UoY2EsIGZhKTsKICAgICAgICAgICAgc2Fbbl0gPSBuZXcgYShuLCAxLCAhMSwgZSwgImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICExLCAhMSkKICAgICAgICB9KSksIFsidGFiSW5kZXgiLCAiY3Jvc3NPcmlnaW4iXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNhW2VdID0gbmV3IGEoZSwgMSwgITEsIGUudG9Mb3dlckNhc2UoKSwgbnVsbCwgITEsICExKQogICAgICAgIH0pKSwgc2EueGxpbmtIcmVmID0gbmV3IGEoInhsaW5rSHJlZiIsIDEsICExLCAieGxpbms6aHJlZiIsICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwgITAsICExKSwgWyJzcmMiLCAiaHJlZiIsICJhY3Rpb24iLCAiZm9ybUFjdGlvbiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgc2FbZV0gPSBuZXcgYShlLCAxLCAhMSwgZS50b0xvd2VyQ2FzZSgpLCBudWxsLCAhMCwgITApCiAgICAgICAgfSkpOwogICAgICAgIHZhciBkYSA9IG4uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsCiAgICAgICAgICAgIHBhID0gU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLAogICAgICAgICAgICBtYSA9IFN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLAogICAgICAgICAgICBoYSA9IFN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksCiAgICAgICAgICAgIGdhID0gU3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSwKICAgICAgICAgICAgdmEgPSBTeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLAogICAgICAgICAgICB5YSA9IFN5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIiksCiAgICAgICAgICAgIGJhID0gU3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLAogICAgICAgICAgICBrYSA9IFN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIiksCiAgICAgICAgICAgIHdhID0gU3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSwKICAgICAgICAgICAgU2EgPSBTeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0IiksCiAgICAgICAgICAgIHhhID0gU3ltYm9sLmZvcigicmVhY3QubWVtbyIpLAogICAgICAgICAgICBFYSA9IFN5bWJvbC5mb3IoInJlYWN0LmxhenkiKTsKICAgICAgICBTeW1ib2wuZm9yKCJyZWFjdC5zY29wZSIpLCBTeW1ib2wuZm9yKCJyZWFjdC5kZWJ1Z190cmFjZV9tb2RlIik7CiAgICAgICAgdmFyIENhID0gU3ltYm9sLmZvcigicmVhY3Qub2Zmc2NyZWVuIik7CiAgICAgICAgU3ltYm9sLmZvcigicmVhY3QubGVnYWN5X2hpZGRlbiIpLCBTeW1ib2wuZm9yKCJyZWFjdC5jYWNoZSIpLCBTeW1ib2wuZm9yKCJyZWFjdC50cmFjaW5nX21hcmtlciIpOwogICAgICAgIHZhciB6YSwgTmEsIFBhLCBfYSA9IFN5bWJvbC5pdGVyYXRvciwKICAgICAgICAgICAgTGEgPSBPYmplY3QuYXNzaWduLAogICAgICAgICAgICBUYSA9ICExLAogICAgICAgICAgICBNYSA9IEFycmF5LmlzQXJyYXksCiAgICAgICAgICAgIEZhID0gKFBhID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgaWYgKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgIT09IGUubmFtZXNwYWNlVVJJIHx8ICJpbm5lckhUTUwiIGluIGUpIGUuaW5uZXJIVE1MID0gbjsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZvciAoKE5hID0gTmEgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTCA9ICI8c3ZnPiIgKyBuLnZhbHVlT2YoKS50b1N0cmluZygpICsgIjwvc3ZnPiIsIG4gPSBOYS5maXJzdENoaWxkOyBlLmZpcnN0Q2hpbGQ7KSBlLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IG4uZmlyc3RDaGlsZDspIGUuYXBwZW5kQ2hpbGQobi5maXJzdENoaWxkKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCAidW5kZWZpbmVkIiAhPSB0eXBlb2YgTVNBcHAgJiYgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24gPyBmdW5jdGlvbihlLCBuLCB0LCByKSB7CiAgICAgICAgICAgICAgICBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhKGUsIG4pCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSA6IFBhKSwKICAgICAgICAgICAgUmEgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5maXJzdENoaWxkOwogICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIHQgPT09IGUubGFzdENoaWxkICYmIDMgPT09IHQubm9kZVR5cGUpIHJldHVybiB2b2lkKHQubm9kZVZhbHVlID0gbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUudGV4dENvbnRlbnQgPSBuCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIERhID0gewogICAgICAgICAgICAgICAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ICEwLAogICAgICAgICAgICAgICAgYXNwZWN0UmF0aW86ICEwLAogICAgICAgICAgICAgICAgYm9yZGVySW1hZ2VPdXRzZXQ6ICEwLAogICAgICAgICAgICAgICAgYm9yZGVySW1hZ2VTbGljZTogITAsCiAgICAgICAgICAgICAgICBib3JkZXJJbWFnZVdpZHRoOiAhMCwKICAgICAgICAgICAgICAgIGJveEZsZXg6ICEwLAogICAgICAgICAgICAgICAgYm94RmxleEdyb3VwOiAhMCwKICAgICAgICAgICAgICAgIGJveE9yZGluYWxHcm91cDogITAsCiAgICAgICAgICAgICAgICBjb2x1bW5Db3VudDogITAsCiAgICAgICAgICAgICAgICBjb2x1bW5zOiAhMCwKICAgICAgICAgICAgICAgIGZsZXg6ICEwLAogICAgICAgICAgICAgICAgZmxleEdyb3c6ICEwLAogICAgICAgICAgICAgICAgZmxleFBvc2l0aXZlOiAhMCwKICAgICAgICAgICAgICAgIGZsZXhTaHJpbms6ICEwLAogICAgICAgICAgICAgICAgZmxleE5lZ2F0aXZlOiAhMCwKICAgICAgICAgICAgICAgIGZsZXhPcmRlcjogITAsCiAgICAgICAgICAgICAgICBncmlkQXJlYTogITAsCiAgICAgICAgICAgICAgICBncmlkUm93OiAhMCwKICAgICAgICAgICAgICAgIGdyaWRSb3dFbmQ6ICEwLAogICAgICAgICAgICAgICAgZ3JpZFJvd1NwYW46ICEwLAogICAgICAgICAgICAgICAgZ3JpZFJvd1N0YXJ0OiAhMCwKICAgICAgICAgICAgICAgIGdyaWRDb2x1bW46ICEwLAogICAgICAgICAgICAgICAgZ3JpZENvbHVtbkVuZDogITAsCiAgICAgICAgICAgICAgICBncmlkQ29sdW1uU3BhbjogITAsCiAgICAgICAgICAgICAgICBncmlkQ29sdW1uU3RhcnQ6ICEwLAogICAgICAgICAgICAgICAgZm9udFdlaWdodDogITAsCiAgICAgICAgICAgICAgICBsaW5lQ2xhbXA6ICEwLAogICAgICAgICAgICAgICAgbGluZUhlaWdodDogITAsCiAgICAgICAgICAgICAgICBvcGFjaXR5OiAhMCwKICAgICAgICAgICAgICAgIG9yZGVyOiAhMCwKICAgICAgICAgICAgICAgIG9ycGhhbnM6ICEwLAogICAgICAgICAgICAgICAgdGFiU2l6ZTogITAsCiAgICAgICAgICAgICAgICB3aWRvd3M6ICEwLAogICAgICAgICAgICAgICAgekluZGV4OiAhMCwKICAgICAgICAgICAgICAgIHpvb206ICEwLAogICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6ICEwLAogICAgICAgICAgICAgICAgZmxvb2RPcGFjaXR5OiAhMCwKICAgICAgICAgICAgICAgIHN0b3BPcGFjaXR5OiAhMCwKICAgICAgICAgICAgICAgIHN0cm9rZURhc2hhcnJheTogITAsCiAgICAgICAgICAgICAgICBzdHJva2VEYXNob2Zmc2V0OiAhMCwKICAgICAgICAgICAgICAgIHN0cm9rZU1pdGVybGltaXQ6ICEwLAogICAgICAgICAgICAgICAgc3Ryb2tlT3BhY2l0eTogITAsCiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogITAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgT2EgPSBbIldlYmtpdCIsICJtcyIsICJNb3oiLCAiTyJdOwogICAgICAgIE9iamVjdC5rZXlzKERhKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIE9hLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgIG4gPSBuICsgZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGUuc3Vic3RyaW5nKDEpLCBEYVtuXSA9IERhW2VdCiAgICAgICAgICAgIH0pKQogICAgICAgIH0pKTsKICAgICAgICB2YXIgSWEgPSBMYSh7CiAgICAgICAgICAgICAgICBtZW51aXRlbTogITAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgYXJlYTogITAsCiAgICAgICAgICAgICAgICBiYXNlOiAhMCwKICAgICAgICAgICAgICAgIGJyOiAhMCwKICAgICAgICAgICAgICAgIGNvbDogITAsCiAgICAgICAgICAgICAgICBlbWJlZDogITAsCiAgICAgICAgICAgICAgICBocjogITAsCiAgICAgICAgICAgICAgICBpbWc6ICEwLAogICAgICAgICAgICAgICAgaW5wdXQ6ICEwLAogICAgICAgICAgICAgICAga2V5Z2VuOiAhMCwKICAgICAgICAgICAgICAgIGxpbms6ICEwLAogICAgICAgICAgICAgICAgbWV0YTogITAsCiAgICAgICAgICAgICAgICBwYXJhbTogITAsCiAgICAgICAgICAgICAgICBzb3VyY2U6ICEwLAogICAgICAgICAgICAgICAgdHJhY2s6ICEwLAogICAgICAgICAgICAgICAgd2JyOiAhMAogICAgICAgICAgICB9KSwKICAgICAgICAgICAgVWEgPSBudWxsLAogICAgICAgICAgICBWYSA9IG51bGwsCiAgICAgICAgICAgIEFhID0gbnVsbCwKICAgICAgICAgICAgQmEgPSBudWxsLAogICAgICAgICAgICBXYSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEhhID0gZnVuY3Rpb24oKSB7fSwKICAgICAgICAgICAgUWEgPSAhMSwKICAgICAgICAgICAgamEgPSAhMTsKICAgICAgICBpZiAobGEpIHRyeSB7CiAgICAgICAgICAgIHZhciAkYSA9IHt9OwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoJGEsICJwYXNzaXZlIiwgewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBqYSA9ICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsICRhLCAkYSksIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IiwgJGEsICRhKQogICAgICAgIH0gY2F0Y2ggKFBhKSB7CiAgICAgICAgICAgIGphID0gITEKICAgICAgICB9CiAgICAgICAgdmFyIHFhLCBLYSwgWWEsIFhhID0gZnVuY3Rpb24oZSwgbiwgdCwgciwgbCwgYSwgdSwgbywgaSkgewogICAgICAgICAgICAgICAgdmFyIHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDMpOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBuLmFwcGx5KHQsIHMpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkVycm9yKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEdhID0gITEsCiAgICAgICAgICAgIFphID0gbnVsbCwKICAgICAgICAgICAgSmEgPSAhMSwKICAgICAgICAgICAgZXUgPSBudWxsLAogICAgICAgICAgICBudSA9IHsKICAgICAgICAgICAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBHYSA9ICEwLCBaYSA9IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdHUgPSBuLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlNjaGVkdWxlciwKICAgICAgICAgICAgcnUgPSB0dS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLAogICAgICAgICAgICBsdSA9IHR1LnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LAogICAgICAgICAgICBhdSA9IHJ1LAogICAgICAgICAgICB1dSA9IHR1LnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLAogICAgICAgICAgICBvdSA9IHR1LnVuc3RhYmxlX3Nob3VsZFlpZWxkLAogICAgICAgICAgICBpdSA9IHR1LnVuc3RhYmxlX3JlcXVlc3RQYWludCwKICAgICAgICAgICAgc3UgPSB0dS51bnN0YWJsZV9ub3csCiAgICAgICAgICAgIGN1ID0gdHUudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsCiAgICAgICAgICAgIGZ1ID0gdHUudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksCiAgICAgICAgICAgIGR1ID0gdHUudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksCiAgICAgICAgICAgIHB1ID0gbHUsCiAgICAgICAgICAgIG11ID0gdHUudW5zdGFibGVfTG93UHJpb3JpdHksCiAgICAgICAgICAgIGh1ID0gdHUudW5zdGFibGVfSWRsZVByaW9yaXR5LAogICAgICAgICAgICBndSA9IG51bGwsCiAgICAgICAgICAgIHZ1ID0gbnVsbCwKICAgICAgICAgICAgeXUgPSBNYXRoLmNsejMyID8gTWF0aC5jbHozMiA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAwID09IChlID4+Pj0gMCkgPyAzMiA6IDMxIC0gKGJ1KGUpIC8ga3UgfCAwKSB8IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYnUgPSBNYXRoLmxvZywKICAgICAgICAgICAga3UgPSBNYXRoLkxOMiwKICAgICAgICAgICAgd3UgPSA2NCwKICAgICAgICAgICAgU3UgPSA0MTk0MzA0LAogICAgICAgICAgICB4dSA9IDAsCiAgICAgICAgICAgIEV1ID0gITEsCiAgICAgICAgICAgIEN1ID0gW10sCiAgICAgICAgICAgIHp1ID0gbnVsbCwKICAgICAgICAgICAgTnUgPSBudWxsLAogICAgICAgICAgICBQdSA9IG51bGwsCiAgICAgICAgICAgIF91ID0gbmV3IE1hcCwKICAgICAgICAgICAgTHUgPSBuZXcgTWFwLAogICAgICAgICAgICBUdSA9IFtdLAogICAgICAgICAgICBNdSA9ICJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0Ii5zcGxpdCgiICIpLAogICAgICAgICAgICBGdSA9IGRhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLAogICAgICAgICAgICBSdSA9ICEwLAogICAgICAgICAgICBEdSA9IG51bGwsCiAgICAgICAgICAgIE91ID0gbnVsbCwKICAgICAgICAgICAgSXUgPSBudWxsLAogICAgICAgICAgICBVdSA9IG51bGwsCiAgICAgICAgICAgIFZ1ID0gewogICAgICAgICAgICAgICAgZXZlbnRQaGFzZTogMCwKICAgICAgICAgICAgICAgIGJ1YmJsZXM6IDAsCiAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiAwLAogICAgICAgICAgICAgICAgdGltZVN0YW1wOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudGltZVN0YW1wIHx8IERhdGUubm93KCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkZWZhdWx0UHJldmVudGVkOiAwLAogICAgICAgICAgICAgICAgaXNUcnVzdGVkOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEF1ID0ga2UoVnUpLAogICAgICAgICAgICBCdSA9IExhKHt9LCBWdSwgewogICAgICAgICAgICAgICAgdmlldzogMCwKICAgICAgICAgICAgICAgIGRldGFpbDogMAogICAgICAgICAgICB9KSwKICAgICAgICAgICAgV3UgPSBrZShCdSksCiAgICAgICAgICAgIEh1ID0gTGEoe30sIEJ1LCB7CiAgICAgICAgICAgICAgICBzY3JlZW5YOiAwLAogICAgICAgICAgICAgICAgc2NyZWVuWTogMCwKICAgICAgICAgICAgICAgIGNsaWVudFg6IDAsCiAgICAgICAgICAgICAgICBjbGllbnRZOiAwLAogICAgICAgICAgICAgICAgcGFnZVg6IDAsCiAgICAgICAgICAgICAgICBwYWdlWTogMCwKICAgICAgICAgICAgICAgIGN0cmxLZXk6IDAsCiAgICAgICAgICAgICAgICBzaGlmdEtleTogMCwKICAgICAgICAgICAgICAgIGFsdEtleTogMCwKICAgICAgICAgICAgICAgIG1ldGFLZXk6IDAsCiAgICAgICAgICAgICAgICBnZXRNb2RpZmllclN0YXRlOiBTZSwKICAgICAgICAgICAgICAgIGJ1dHRvbjogMCwKICAgICAgICAgICAgICAgIGJ1dHRvbnM6IDAsCiAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZS5yZWxhdGVkVGFyZ2V0ID8gZS5mcm9tRWxlbWVudCA9PT0gZS5zcmNFbGVtZW50ID8gZS50b0VsZW1lbnQgOiBlLmZyb21FbGVtZW50IDogZS5yZWxhdGVkVGFyZ2V0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbW92ZW1lbnRYOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtb3ZlbWVudFgiIGluIGUgPyBlLm1vdmVtZW50WCA6IChlICE9PSBZYSAmJiAoWWEgJiYgIm1vdXNlbW92ZSIgPT09IGUudHlwZSA/IChxYSA9IGUuc2NyZWVuWCAtIFlhLnNjcmVlblgsIEthID0gZS5zY3JlZW5ZIC0gWWEuc2NyZWVuWSkgOiBLYSA9IHFhID0gMCwgWWEgPSBlKSwgcWEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbW92ZW1lbnRZOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtb3ZlbWVudFkiIGluIGUgPyBlLm1vdmVtZW50WSA6IEthCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBRdSA9IGtlKEh1KSwKICAgICAgICAgICAganUgPSBrZShMYSh7fSwgSHUsIHsKICAgICAgICAgICAgICAgIGRhdGFUcmFuc2ZlcjogMAogICAgICAgICAgICB9KSksCiAgICAgICAgICAgICR1ID0ga2UoTGEoe30sIEJ1LCB7CiAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiAwCiAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgcXUgPSBrZShMYSh7fSwgVnUsIHsKICAgICAgICAgICAgICAgIGFuaW1hdGlvbk5hbWU6IDAsCiAgICAgICAgICAgICAgICBlbGFwc2VkVGltZTogMCwKICAgICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnQ6IDAKICAgICAgICAgICAgfSkpLAogICAgICAgICAgICBLdSA9IExhKHt9LCBWdSwgewogICAgICAgICAgICAgICAgY2xpcGJvYXJkRGF0YTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2xpcGJvYXJkRGF0YSIgaW4gZSA/IGUuY2xpcGJvYXJkRGF0YSA6IHdpbmRvdy5jbGlwYm9hcmREYXRhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBZdSA9IGtlKEt1KSwKICAgICAgICAgICAgWHUgPSBrZShMYSh7fSwgVnUsIHsKICAgICAgICAgICAgICAgIGRhdGE6IDAKICAgICAgICAgICAgfSkpLAogICAgICAgICAgICBHdSA9IFh1LAogICAgICAgICAgICBadSA9IHsKICAgICAgICAgICAgICAgIEVzYzogIkVzY2FwZSIsCiAgICAgICAgICAgICAgICBTcGFjZWJhcjogIiAiLAogICAgICAgICAgICAgICAgTGVmdDogIkFycm93TGVmdCIsCiAgICAgICAgICAgICAgICBVcDogIkFycm93VXAiLAogICAgICAgICAgICAgICAgUmlnaHQ6ICJBcnJvd1JpZ2h0IiwKICAgICAgICAgICAgICAgIERvd246ICJBcnJvd0Rvd24iLAogICAgICAgICAgICAgICAgRGVsOiAiRGVsZXRlIiwKICAgICAgICAgICAgICAgIFdpbjogIk9TIiwKICAgICAgICAgICAgICAgIE1lbnU6ICJDb250ZXh0TWVudSIsCiAgICAgICAgICAgICAgICBBcHBzOiAiQ29udGV4dE1lbnUiLAogICAgICAgICAgICAgICAgU2Nyb2xsOiAiU2Nyb2xsTG9jayIsCiAgICAgICAgICAgICAgICBNb3pQcmludGFibGVLZXk6ICJVbmlkZW50aWZpZWQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEp1ID0gewogICAgICAgICAgICAgICAgODogIkJhY2tzcGFjZSIsCiAgICAgICAgICAgICAgICA5OiAiVGFiIiwKICAgICAgICAgICAgICAgIDEyOiAiQ2xlYXIiLAogICAgICAgICAgICAgICAgMTM6ICJFbnRlciIsCiAgICAgICAgICAgICAgICAxNjogIlNoaWZ0IiwKICAgICAgICAgICAgICAgIDE3OiAiQ29udHJvbCIsCiAgICAgICAgICAgICAgICAxODogIkFsdCIsCiAgICAgICAgICAgICAgICAxOTogIlBhdXNlIiwKICAgICAgICAgICAgICAgIDIwOiAiQ2Fwc0xvY2siLAogICAgICAgICAgICAgICAgMjc6ICJFc2NhcGUiLAogICAgICAgICAgICAgICAgMzI6ICIgIiwKICAgICAgICAgICAgICAgIDMzOiAiUGFnZVVwIiwKICAgICAgICAgICAgICAgIDM0OiAiUGFnZURvd24iLAogICAgICAgICAgICAgICAgMzU6ICJFbmQiLAogICAgICAgICAgICAgICAgMzY6ICJIb21lIiwKICAgICAgICAgICAgICAgIDM3OiAiQXJyb3dMZWZ0IiwKICAgICAgICAgICAgICAgIDM4OiAiQXJyb3dVcCIsCiAgICAgICAgICAgICAgICAzOTogIkFycm93UmlnaHQiLAogICAgICAgICAgICAgICAgNDA6ICJBcnJvd0Rvd24iLAogICAgICAgICAgICAgICAgNDU6ICJJbnNlcnQiLAogICAgICAgICAgICAgICAgNDY6ICJEZWxldGUiLAogICAgICAgICAgICAgICAgMTEyOiAiRjEiLAogICAgICAgICAgICAgICAgMTEzOiAiRjIiLAogICAgICAgICAgICAgICAgMTE0OiAiRjMiLAogICAgICAgICAgICAgICAgMTE1OiAiRjQiLAogICAgICAgICAgICAgICAgMTE2OiAiRjUiLAogICAgICAgICAgICAgICAgMTE3OiAiRjYiLAogICAgICAgICAgICAgICAgMTE4OiAiRjciLAogICAgICAgICAgICAgICAgMTE5OiAiRjgiLAogICAgICAgICAgICAgICAgMTIwOiAiRjkiLAogICAgICAgICAgICAgICAgMTIxOiAiRjEwIiwKICAgICAgICAgICAgICAgIDEyMjogIkYxMSIsCiAgICAgICAgICAgICAgICAxMjM6ICJGMTIiLAogICAgICAgICAgICAgICAgMTQ0OiAiTnVtTG9jayIsCiAgICAgICAgICAgICAgICAxNDU6ICJTY3JvbGxMb2NrIiwKICAgICAgICAgICAgICAgIDIyNDogIk1ldGEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVvID0gewogICAgICAgICAgICAgICAgQWx0OiAiYWx0S2V5IiwKICAgICAgICAgICAgICAgIENvbnRyb2w6ICJjdHJsS2V5IiwKICAgICAgICAgICAgICAgIE1ldGE6ICJtZXRhS2V5IiwKICAgICAgICAgICAgICAgIFNoaWZ0OiAic2hpZnRLZXkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG5vID0gTGEoe30sIEJ1LCB7CiAgICAgICAgICAgICAgICBrZXk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBadVtlLmtleV0gfHwgZS5rZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiVW5pZGVudGlmaWVkIiAhPT0gbikgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJrZXlwcmVzcyIgPT09IGUudHlwZSA/IDEzID09PSAoZSA9IHZlKGUpKSA/ICJFbnRlciIgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpIDogImtleWRvd24iID09PSBlLnR5cGUgfHwgImtleXVwIiA9PT0gZS50eXBlID8gSnVbZS5rZXlDb2RlXSB8fCAiVW5pZGVudGlmaWVkIiA6ICIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY29kZTogMCwKICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAwLAogICAgICAgICAgICAgICAgY3RybEtleTogMCwKICAgICAgICAgICAgICAgIHNoaWZ0S2V5OiAwLAogICAgICAgICAgICAgICAgYWx0S2V5OiAwLAogICAgICAgICAgICAgICAgbWV0YUtleTogMCwKICAgICAgICAgICAgICAgIHJlcGVhdDogMCwKICAgICAgICAgICAgICAgIGxvY2FsZTogMCwKICAgICAgICAgICAgICAgIGdldE1vZGlmaWVyU3RhdGU6IFNlLAogICAgICAgICAgICAgICAgY2hhckNvZGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImtleXByZXNzIiA9PT0gZS50eXBlID8gdmUoZSkgOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAga2V5Q29kZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAia2V5ZG93biIgPT09IGUudHlwZSB8fCAia2V5dXAiID09PSBlLnR5cGUgPyBlLmtleUNvZGUgOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgd2hpY2g6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImtleXByZXNzIiA9PT0gZS50eXBlID8gdmUoZSkgOiAia2V5ZG93biIgPT09IGUudHlwZSB8fCAia2V5dXAiID09PSBlLnR5cGUgPyBlLmtleUNvZGUgOiAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICB0byA9IGtlKG5vKSwKICAgICAgICAgICAgcm8gPSBrZShMYSh7fSwgSHUsIHsKICAgICAgICAgICAgICAgIHBvaW50ZXJJZDogMCwKICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgaGVpZ2h0OiAwLAogICAgICAgICAgICAgICAgcHJlc3N1cmU6IDAsCiAgICAgICAgICAgICAgICB0YW5nZW50aWFsUHJlc3N1cmU6IDAsCiAgICAgICAgICAgICAgICB0aWx0WDogMCwKICAgICAgICAgICAgICAgIHRpbHRZOiAwLAogICAgICAgICAgICAgICAgdHdpc3Q6IDAsCiAgICAgICAgICAgICAgICBwb2ludGVyVHlwZTogMCwKICAgICAgICAgICAgICAgIGlzUHJpbWFyeTogMAogICAgICAgICAgICB9KSksCiAgICAgICAgICAgIGxvID0ga2UoTGEoe30sIEJ1LCB7CiAgICAgICAgICAgICAgICB0b3VjaGVzOiAwLAogICAgICAgICAgICAgICAgdGFyZ2V0VG91Y2hlczogMCwKICAgICAgICAgICAgICAgIGNoYW5nZWRUb3VjaGVzOiAwLAogICAgICAgICAgICAgICAgYWx0S2V5OiAwLAogICAgICAgICAgICAgICAgbWV0YUtleTogMCwKICAgICAgICAgICAgICAgIGN0cmxLZXk6IDAsCiAgICAgICAgICAgICAgICBzaGlmdEtleTogMCwKICAgICAgICAgICAgICAgIGdldE1vZGlmaWVyU3RhdGU6IFNlCiAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgYW8gPSBrZShMYSh7fSwgVnUsIHsKICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZTogMCwKICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lOiAwLAogICAgICAgICAgICAgICAgcHNldWRvRWxlbWVudDogMAogICAgICAgICAgICB9KSksCiAgICAgICAgICAgIHVvID0gTGEoe30sIEh1LCB7CiAgICAgICAgICAgICAgICBkZWx0YVg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImRlbHRhWCIgaW4gZSA/IGUuZGVsdGFYIDogIndoZWVsRGVsdGFYIiBpbiBlID8gLWUud2hlZWxEZWx0YVggOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVsdGFZOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJkZWx0YVkiIGluIGUgPyBlLmRlbHRhWSA6ICJ3aGVlbERlbHRhWSIgaW4gZSA/IC1lLndoZWVsRGVsdGFZIDogIndoZWVsRGVsdGEiIGluIGUgPyAtZS53aGVlbERlbHRhIDogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlbHRhWjogMCwKICAgICAgICAgICAgICAgIGRlbHRhTW9kZTogMAogICAgICAgICAgICB9KSwKICAgICAgICAgICAgb28gPSBrZSh1byksCiAgICAgICAgICAgIGlvID0gWzksIDEzLCAyNywgMzJdLAogICAgICAgICAgICBzbyA9IGxhICYmICJDb21wb3NpdGlvbkV2ZW50IiBpbiB3aW5kb3csCiAgICAgICAgICAgIGNvID0gbnVsbDsKICAgICAgICBsYSAmJiAiZG9jdW1lbnRNb2RlIiBpbiBkb2N1bWVudCAmJiAoY28gPSBkb2N1bWVudC5kb2N1bWVudE1vZGUpOwogICAgICAgIHZhciBmbyA9IGxhICYmICJUZXh0RXZlbnQiIGluIHdpbmRvdyAmJiAhY28sCiAgICAgICAgICAgIHBvID0gbGEgJiYgKCFzbyB8fCBjbyAmJiA4IDwgY28gJiYgMTEgPj0gY28pLAogICAgICAgICAgICBtbyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLAogICAgICAgICAgICBobyA9ICExLAogICAgICAgICAgICBnbyA9ICExLAogICAgICAgICAgICB2byA9IHsKICAgICAgICAgICAgICAgIGNvbG9yOiAhMCwKICAgICAgICAgICAgICAgIGRhdGU6ICEwLAogICAgICAgICAgICAgICAgZGF0ZXRpbWU6ICEwLAogICAgICAgICAgICAgICAgImRhdGV0aW1lLWxvY2FsIjogITAsCiAgICAgICAgICAgICAgICBlbWFpbDogITAsCiAgICAgICAgICAgICAgICBtb250aDogITAsCiAgICAgICAgICAgICAgICBudW1iZXI6ICEwLAogICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICEwLAogICAgICAgICAgICAgICAgcmFuZ2U6ICEwLAogICAgICAgICAgICAgICAgc2VhcmNoOiAhMCwKICAgICAgICAgICAgICAgIHRlbDogITAsCiAgICAgICAgICAgICAgICB0ZXh0OiAhMCwKICAgICAgICAgICAgICAgIHRpbWU6ICEwLAogICAgICAgICAgICAgICAgdXJsOiAhMCwKICAgICAgICAgICAgICAgIHdlZWs6ICEwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHlvID0gbnVsbCwKICAgICAgICAgICAgYm8gPSBudWxsLAogICAgICAgICAgICBrbyA9ICExOwogICAgICAgIGxhICYmIChrbyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKCFsYSkgcmV0dXJuICExOwogICAgICAgICAgICB2YXIgbiA9IChlID0gIm9uIiArIGUpIGluIGRvY3VtZW50OwogICAgICAgICAgICByZXR1cm4gbiB8fCAoKG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc2V0QXR0cmlidXRlKGUsICJyZXR1cm47IiksIG4gPSAiZnVuY3Rpb24iID09IHR5cGVvZiBuW2VdKSwgbgogICAgICAgIH0oImlucHV0IikgJiYgKCFkb2N1bWVudC5kb2N1bWVudE1vZGUgfHwgOSA8IGRvY3VtZW50LmRvY3VtZW50TW9kZSkpOwogICAgICAgIHZhciB3byA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIE9iamVjdC5pcyA/IE9iamVjdC5pcyA6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBlID09PSBuICYmICgwICE9PSBlIHx8IDEgLyBlID09IDEgLyBuKSB8fCBlICE9IGUgJiYgbiAhPSBuCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNvID0gbGEgJiYgImRvY3VtZW50TW9kZSIgaW4gZG9jdW1lbnQgJiYgMTEgPj0gZG9jdW1lbnQuZG9jdW1lbnRNb2RlLAogICAgICAgICAgICB4byA9IG51bGwsCiAgICAgICAgICAgIEVvID0gbnVsbCwKICAgICAgICAgICAgQ28gPSBudWxsLAogICAgICAgICAgICB6byA9ICExLAogICAgICAgICAgICBObyA9IHsKICAgICAgICAgICAgICAgIGFuaW1hdGlvbmVuZDogUWUoIkFuaW1hdGlvbiIsICJBbmltYXRpb25FbmQiKSwKICAgICAgICAgICAgICAgIGFuaW1hdGlvbml0ZXJhdGlvbjogUWUoIkFuaW1hdGlvbiIsICJBbmltYXRpb25JdGVyYXRpb24iKSwKICAgICAgICAgICAgICAgIGFuaW1hdGlvbnN0YXJ0OiBRZSgiQW5pbWF0aW9uIiwgIkFuaW1hdGlvblN0YXJ0IiksCiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uZW5kOiBRZSgiVHJhbnNpdGlvbiIsICJUcmFuc2l0aW9uRW5kIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG8gPSB7fSwKICAgICAgICAgICAgX28gPSB7fTsKICAgICAgICBsYSAmJiAoX28gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwgIkFuaW1hdGlvbkV2ZW50IiBpbiB3aW5kb3cgfHwgKGRlbGV0ZSBOby5hbmltYXRpb25lbmQuYW5pbWF0aW9uLCBkZWxldGUgTm8uYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbiwgZGVsZXRlIE5vLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksICJUcmFuc2l0aW9uRXZlbnQiIGluIHdpbmRvdyB8fCBkZWxldGUgTm8udHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTsKICAgICAgICB2YXIgTG8gPSBqZSgiYW5pbWF0aW9uZW5kIiksCiAgICAgICAgICAgIFRvID0gamUoImFuaW1hdGlvbml0ZXJhdGlvbiIpLAogICAgICAgICAgICBNbyA9IGplKCJhbmltYXRpb25zdGFydCIpLAogICAgICAgICAgICBGbyA9IGplKCJ0cmFuc2l0aW9uZW5kIiksCiAgICAgICAgICAgIFJvID0gbmV3IE1hcCwKICAgICAgICAgICAgRG8gPSAiYWJvcnQgYXV4Q2xpY2sgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWwiLnNwbGl0KCIgIik7CiAgICAgICAgISBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IDA7IGUgPCBEby5sZW5ndGg7IGUrKykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBEb1tlXTsKICAgICAgICAgICAgICAgICRlKG4udG9Mb3dlckNhc2UoKSwgIm9uIiArIChuID0gblswXS50b1VwcGVyQ2FzZSgpICsgbi5zbGljZSgxKSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGUoTG8sICJvbkFuaW1hdGlvbkVuZCIpLCAkZShUbywgIm9uQW5pbWF0aW9uSXRlcmF0aW9uIiksICRlKE1vLCAib25BbmltYXRpb25TdGFydCIpLCAkZSgiZGJsY2xpY2siLCAib25Eb3VibGVDbGljayIpLCAkZSgiZm9jdXNpbiIsICJvbkZvY3VzIiksICRlKCJmb2N1c291dCIsICJvbkJsdXIiKSwgJGUoRm8sICJvblRyYW5zaXRpb25FbmQiKQogICAgICAgIH0oKSwgbCgib25Nb3VzZUVudGVyIiwgWyJtb3VzZW91dCIsICJtb3VzZW92ZXIiXSksIGwoIm9uTW91c2VMZWF2ZSIsIFsibW91c2VvdXQiLCAibW91c2VvdmVyIl0pLCBsKCJvblBvaW50ZXJFbnRlciIsIFsicG9pbnRlcm91dCIsICJwb2ludGVyb3ZlciJdKSwgbCgib25Qb2ludGVyTGVhdmUiLCBbInBvaW50ZXJvdXQiLCAicG9pbnRlcm92ZXIiXSksIHIoIm9uQ2hhbmdlIiwgImNoYW5nZSBjbGljayBmb2N1c2luIGZvY3Vzb3V0IGlucHV0IGtleWRvd24ga2V5dXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSwgcigib25TZWxlY3QiLCAiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSwgcigib25CZWZvcmVJbnB1dCIsIFsiY29tcG9zaXRpb25lbmQiLCAia2V5cHJlc3MiLCAidGV4dElucHV0IiwgInBhc3RlIl0pLCByKCJvbkNvbXBvc2l0aW9uRW5kIiwgImNvbXBvc2l0aW9uZW5kIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duIi5zcGxpdCgiICIpKSwgcigib25Db21wb3NpdGlvblN0YXJ0IiwgImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLCByKCJvbkNvbXBvc2l0aW9uVXBkYXRlIiwgImNvbXBvc2l0aW9udXBkYXRlIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duIi5zcGxpdCgiICIpKTsKICAgICAgICB2YXIgT28gPSAiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmciLnNwbGl0KCIgIiksCiAgICAgICAgICAgIElvID0gbmV3IFNldCgiY2FuY2VsIGNsb3NlIGludmFsaWQgbG9hZCBzY3JvbGwgdG9nZ2xlIi5zcGxpdCgiICIpLmNvbmNhdChPbykpLAogICAgICAgICAgICBVbyA9ICJfcmVhY3RMaXN0ZW5pbmciICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksCiAgICAgICAgICAgIFZvID0gL1xyXG4/L2csCiAgICAgICAgICAgIEFvID0gL1x1MDAwMHxcdUZGRkQvZywKICAgICAgICAgICAgQm8gPSBudWxsLAogICAgICAgICAgICBXbyA9IG51bGwsCiAgICAgICAgICAgIEhvID0gImZ1bmN0aW9uIiA9PSB0eXBlb2Ygc2V0VGltZW91dCA/IHNldFRpbWVvdXQgOiB2b2lkIDAsCiAgICAgICAgICAgIFFvID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgY2xlYXJUaW1lb3V0ID8gY2xlYXJUaW1lb3V0IDogdm9pZCAwLAogICAgICAgICAgICBqbyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFByb21pc2UgPyBQcm9taXNlIDogdm9pZCAwLAogICAgICAgICAgICAkbyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHF1ZXVlTWljcm90YXNrID8gcXVldWVNaWNyb3Rhc2sgOiB2b2lkIDAgIT09IGpvID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpvLnJlc29sdmUobnVsbCkudGhlbihlKS5jYXRjaChzbikKICAgICAgICAgICAgfSA6IEhvLAogICAgICAgICAgICBxbyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLAogICAgICAgICAgICBLbyA9ICJfX3JlYWN0RmliZXIkIiArIHFvLAogICAgICAgICAgICBZbyA9ICJfX3JlYWN0UHJvcHMkIiArIHFvLAogICAgICAgICAgICBYbyA9ICJfX3JlYWN0Q29udGFpbmVyJCIgKyBxbywKICAgICAgICAgICAgR28gPSAiX19yZWFjdEV2ZW50cyQiICsgcW8sCiAgICAgICAgICAgIFpvID0gIl9fcmVhY3RMaXN0ZW5lcnMkIiArIHFvLAogICAgICAgICAgICBKbyA9ICJfX3JlYWN0SGFuZGxlcyQiICsgcW8sCiAgICAgICAgICAgIGVpID0gW10sCiAgICAgICAgICAgIG5pID0gLTEsCiAgICAgICAgICAgIHRpID0ge30sCiAgICAgICAgICAgIHJpID0gdm4odGkpLAogICAgICAgICAgICBsaSA9IHZuKCExKSwKICAgICAgICAgICAgYWkgPSB0aSwKICAgICAgICAgICAgdWkgPSBudWxsLAogICAgICAgICAgICBvaSA9ICExLAogICAgICAgICAgICBpaSA9ICExLAogICAgICAgICAgICBzaSA9IFtdLAogICAgICAgICAgICBjaSA9IDAsCiAgICAgICAgICAgIGZpID0gbnVsbCwKICAgICAgICAgICAgZGkgPSAwLAogICAgICAgICAgICBwaSA9IFtdLAogICAgICAgICAgICBtaSA9IDAsCiAgICAgICAgICAgIGhpID0gbnVsbCwKICAgICAgICAgICAgZ2kgPSAxLAogICAgICAgICAgICB2aSA9ICIiLAogICAgICAgICAgICB5aSA9IG51bGwsCiAgICAgICAgICAgIGJpID0gbnVsbCwKICAgICAgICAgICAga2kgPSAhMSwKICAgICAgICAgICAgd2kgPSBudWxsLAogICAgICAgICAgICBTaSA9IGRhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLAogICAgICAgICAgICB4aSA9IHZuKG51bGwpLAogICAgICAgICAgICBFaSA9IG51bGwsCiAgICAgICAgICAgIENpID0gbnVsbCwKICAgICAgICAgICAgemkgPSBudWxsLAogICAgICAgICAgICBOaSA9IG51bGwsCiAgICAgICAgICAgIFBpID0gS24sCiAgICAgICAgICAgIF9pID0gITEsCiAgICAgICAgICAgIExpID0gKG5ldyBuLkNvbXBvbmVudCkucmVmcywKICAgICAgICAgICAgVGkgPSB7CiAgICAgICAgICAgICAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gISEoZSA9IGUuX3JlYWN0SW50ZXJuYWxzKSAmJiBIKGUpID09PSBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbihlLCBuLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IGUuX3JlYWN0SW50ZXJuYWxzOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gcmwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGxsKGUpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gR24ociwgbCk7CiAgICAgICAgICAgICAgICAgICAgYS5wYXlsb2FkID0gbiwgbnVsbCAhPSB0ICYmIChhLmNhbGxiYWNrID0gdCksIG51bGwgIT09IChuID0gWm4oZSwgYSwgbCkpICYmIChhbChuLCBlLCBsLCByKSwgSm4obiwgZSwgbCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24oZSwgbiwgdCkgewogICAgICAgICAgICAgICAgICAgIGUgPSBlLl9yZWFjdEludGVybmFsczsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJsKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsbChlKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IEduKHIsIGwpOwogICAgICAgICAgICAgICAgICAgIGEudGFnID0gMSwgYS5wYXlsb2FkID0gbiwgbnVsbCAhPSB0ICYmIChhLmNhbGxiYWNrID0gdCksIG51bGwgIT09IChuID0gWm4oZSwgYSwgbCkpICYmIChhbChuLCBlLCBsLCByKSwgSm4obiwgZSwgbCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IGUuX3JlYWN0SW50ZXJuYWxzOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gcmwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGxsKGUpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gR24odCwgcik7CiAgICAgICAgICAgICAgICAgICAgbC50YWcgPSAyLCBudWxsICE9IG4gJiYgKGwuY2FsbGJhY2sgPSBuKSwgbnVsbCAhPT0gKG4gPSBabihlLCBsLCByKSkgJiYgKGFsKG4sIGUsIHIsIHQpLCBKbihuLCBlLCByKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWkgPSBmdCghMCksCiAgICAgICAgICAgIEZpID0gZnQoITEpLAogICAgICAgICAgICBSaSA9IHt9LAogICAgICAgICAgICBEaSA9IHZuKFJpKSwKICAgICAgICAgICAgT2kgPSB2bihSaSksCiAgICAgICAgICAgIElpID0gdm4oUmkpLAogICAgICAgICAgICBVaSA9IHZuKDApLAogICAgICAgICAgICBWaSA9IFtdLAogICAgICAgICAgICBBaSA9IGRhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsCiAgICAgICAgICAgIEJpID0gZGEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsCiAgICAgICAgICAgIFdpID0gMCwKICAgICAgICAgICAgSGkgPSBudWxsLAogICAgICAgICAgICBRaSA9IG51bGwsCiAgICAgICAgICAgIGppID0gbnVsbCwKICAgICAgICAgICAgJGkgPSAhMSwKICAgICAgICAgICAgcWkgPSAhMSwKICAgICAgICAgICAgS2kgPSAwLAogICAgICAgICAgICBZaSA9IDAsCiAgICAgICAgICAgIFhpID0gewogICAgICAgICAgICAgICAgcmVhZENvbnRleHQ6IGpuLAogICAgICAgICAgICAgICAgdXNlQ2FsbGJhY2s6IGJ0LAogICAgICAgICAgICAgICAgdXNlQ29udGV4dDogYnQsCiAgICAgICAgICAgICAgICB1c2VFZmZlY3Q6IGJ0LAogICAgICAgICAgICAgICAgdXNlSW1wZXJhdGl2ZUhhbmRsZTogYnQsCiAgICAgICAgICAgICAgICB1c2VJbnNlcnRpb25FZmZlY3Q6IGJ0LAogICAgICAgICAgICAgICAgdXNlTGF5b3V0RWZmZWN0OiBidCwKICAgICAgICAgICAgICAgIHVzZU1lbW86IGJ0LAogICAgICAgICAgICAgICAgdXNlUmVkdWNlcjogYnQsCiAgICAgICAgICAgICAgICB1c2VSZWY6IGJ0LAogICAgICAgICAgICAgICAgdXNlU3RhdGU6IGJ0LAogICAgICAgICAgICAgICAgdXNlRGVidWdWYWx1ZTogYnQsCiAgICAgICAgICAgICAgICB1c2VEZWZlcnJlZFZhbHVlOiBidCwKICAgICAgICAgICAgICAgIHVzZVRyYW5zaXRpb246IGJ0LAogICAgICAgICAgICAgICAgdXNlTXV0YWJsZVNvdXJjZTogYnQsCiAgICAgICAgICAgICAgICB1c2VTeW5jRXh0ZXJuYWxTdG9yZTogYnQsCiAgICAgICAgICAgICAgICB1c2VJZDogYnQsCiAgICAgICAgICAgICAgICB1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEdpID0gewogICAgICAgICAgICAgICAgcmVhZENvbnRleHQ6IGpuLAogICAgICAgICAgICAgICAgdXNlQ2FsbGJhY2s6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geHQoKS5tZW1vaXplZFN0YXRlID0gW2UsIHZvaWQgMCA9PT0gbiA/IG51bGwgOiBuXSwgZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZUNvbnRleHQ6IGpuLAogICAgICAgICAgICAgICAgdXNlRWZmZWN0OiBBdCwKICAgICAgICAgICAgICAgIHVzZUltcGVyYXRpdmVIYW5kbGU6IGZ1bmN0aW9uKGUsIG4sIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IG51bGwgIT0gdCA/IHQuY29uY2F0KFtlXSkgOiBudWxsLCBVdCg0MTk0MzA4LCA0LCBRdC5iaW5kKG51bGwsIG4sIGUpLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZUxheW91dEVmZmVjdDogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBVdCg0MTk0MzA4LCA0LCBlLCBuKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZUluc2VydGlvbkVmZmVjdDogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBVdCg0LCAyLCBlLCBuKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZU1lbW86IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHh0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPSB2b2lkIDAgPT09IG4gPyBudWxsIDogbiwgZSA9IGUoKSwgdC5tZW1vaXplZFN0YXRlID0gW2UsIG5dLCBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlUmVkdWNlcjogZnVuY3Rpb24oZSwgbiwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0geHQoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA9IHZvaWQgMCAhPT0gdCA/IHQobikgOiBuLCByLm1lbW9pemVkU3RhdGUgPSByLmJhc2VTdGF0ZSA9IG4sIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmc6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybGVhdmVkOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBsYW5lczogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2g6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZW5kZXJlZFJlZHVjZXI6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZW5kZXJlZFN0YXRlOiBuCiAgICAgICAgICAgICAgICAgICAgfSwgci5xdWV1ZSA9IGUsIGUgPSBlLmRpc3BhdGNoID0gWnQuYmluZChudWxsLCBIaSwgZSksIFtyLm1lbW9pemVkU3RhdGUsIGVdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlUmVmOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGUKICAgICAgICAgICAgICAgICAgICB9LCB4dCgpLm1lbW9pemVkU3RhdGUgPSBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlU3RhdGU6IER0LAogICAgICAgICAgICAgICAgdXNlRGVidWdWYWx1ZTogJHQsCiAgICAgICAgICAgICAgICB1c2VEZWZlcnJlZFZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHh0KCkubWVtb2l6ZWRTdGF0ZSA9IGUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1c2VUcmFuc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IER0KCExKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbMF07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSBYdC5iaW5kKG51bGwsIGVbMV0pLCB4dCgpLm1lbW9pemVkU3RhdGUgPSBlLCBbbiwgZV0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1c2VNdXRhYmxlU291cmNlOiBmdW5jdGlvbihlLCBuLCB0KSB7fSwKICAgICAgICAgICAgICAgIHVzZVN5bmNFeHRlcm5hbFN0b3JlOiBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBIaSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHh0KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGtpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHIpIHRocm93IEVycm9yKHQoNDA3KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByKCkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IG4oKSwgbnVsbCA9PT0ga3MpIHRocm93IEVycm9yKHQoMzQ5KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIDAgIT0gKDMwICYgV2kpIHx8IEx0KGwsIG4sIHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGEubWVtb2l6ZWRTdGF0ZSA9IHI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByLAogICAgICAgICAgICAgICAgICAgICAgICBnZXRTbmFwc2hvdDogbgogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucXVldWUgPSB1LCBBdChNdC5iaW5kKG51bGwsIGwsIHUsIGUpLCBbZV0pLCBsLmZsYWdzIHw9IDIwNDgsIE90KDksIFR0LmJpbmQobnVsbCwgbCwgdSwgciwgbiksIHZvaWQgMCwgbnVsbCksIHIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1c2VJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB4dCgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0ga3MuaWRlbnRpZmllclByZWZpeDsKICAgICAgICAgICAgICAgICAgICBpZiAoa2kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB2aTsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICI6IiArIG4gKyAiUiIgKyAodCA9IChnaSAmIH4oMSA8PCAzMiAtIHl1KGdpKSAtIDEpKS50b1N0cmluZygzMikgKyB0KSwgMCA8ICh0ID0gS2krKykgJiYgKG4gKz0gIkgiICsgdC50b1N0cmluZygzMikpLCBuICs9ICI6IgogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuID0gIjoiICsgbiArICJyIiArICh0ID0gWWkrKykudG9TdHJpbmcoMzIpICsgIjoiOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm1lbW9pemVkU3RhdGUgPSBuCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBaaSA9IHsKICAgICAgICAgICAgICAgIHJlYWRDb250ZXh0OiBqbiwKICAgICAgICAgICAgICAgIHVzZUNhbGxiYWNrOiBxdCwKICAgICAgICAgICAgICAgIHVzZUNvbnRleHQ6IGpuLAogICAgICAgICAgICAgICAgdXNlRWZmZWN0OiBCdCwKICAgICAgICAgICAgICAgIHVzZUltcGVyYXRpdmVIYW5kbGU6IGp0LAogICAgICAgICAgICAgICAgdXNlSW5zZXJ0aW9uRWZmZWN0OiBXdCwKICAgICAgICAgICAgICAgIHVzZUxheW91dEVmZmVjdDogSHQsCiAgICAgICAgICAgICAgICB1c2VNZW1vOiBLdCwKICAgICAgICAgICAgICAgIHVzZVJlZHVjZXI6IHp0LAogICAgICAgICAgICAgICAgdXNlUmVmOiBJdCwKICAgICAgICAgICAgICAgIHVzZVN0YXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHp0KEN0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZURlYnVnVmFsdWU6ICR0LAogICAgICAgICAgICAgICAgdXNlRGVmZXJyZWRWYWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBZdChFdCgpLCBRaS5tZW1vaXplZFN0YXRlLCBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZVRyYW5zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbenQoQ3QpWzBdLCBFdCgpLm1lbW9pemVkU3RhdGVdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlTXV0YWJsZVNvdXJjZTogUHQsCiAgICAgICAgICAgICAgICB1c2VTeW5jRXh0ZXJuYWxTdG9yZTogX3QsCiAgICAgICAgICAgICAgICB1c2VJZDogR3QsCiAgICAgICAgICAgICAgICB1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEppID0gewogICAgICAgICAgICAgICAgcmVhZENvbnRleHQ6IGpuLAogICAgICAgICAgICAgICAgdXNlQ2FsbGJhY2s6IHF0LAogICAgICAgICAgICAgICAgdXNlQ29udGV4dDogam4sCiAgICAgICAgICAgICAgICB1c2VFZmZlY3Q6IEJ0LAogICAgICAgICAgICAgICAgdXNlSW1wZXJhdGl2ZUhhbmRsZToganQsCiAgICAgICAgICAgICAgICB1c2VJbnNlcnRpb25FZmZlY3Q6IFd0LAogICAgICAgICAgICAgICAgdXNlTGF5b3V0RWZmZWN0OiBIdCwKICAgICAgICAgICAgICAgIHVzZU1lbW86IEt0LAogICAgICAgICAgICAgICAgdXNlUmVkdWNlcjogTnQsCiAgICAgICAgICAgICAgICB1c2VSZWY6IEl0LAogICAgICAgICAgICAgICAgdXNlU3RhdGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnQoQ3QpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlRGVidWdWYWx1ZTogJHQsCiAgICAgICAgICAgICAgICB1c2VEZWZlcnJlZFZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBFdCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBRaSA/IG4ubWVtb2l6ZWRTdGF0ZSA9IGUgOiBZdChuLCBRaS5tZW1vaXplZFN0YXRlLCBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZVRyYW5zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbTnQoQ3QpWzBdLCBFdCgpLm1lbW9pemVkU3RhdGVdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlTXV0YWJsZVNvdXJjZTogUHQsCiAgICAgICAgICAgICAgICB1c2VTeW5jRXh0ZXJuYWxTdG9yZTogX3QsCiAgICAgICAgICAgICAgICB1c2VJZDogR3QsCiAgICAgICAgICAgICAgICB1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVzID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgV2Vha01hcCA/IFdlYWtNYXAgOiBNYXAsCiAgICAgICAgICAgIG5zID0gZGEuUmVhY3RDdXJyZW50T3duZXIsCiAgICAgICAgICAgIHRzID0gITEsCiAgICAgICAgICAgIHJzID0gewogICAgICAgICAgICAgICAgZGVoeWRyYXRlZDogbnVsbCwKICAgICAgICAgICAgICAgIHRyZWVDb250ZXh0OiBudWxsLAogICAgICAgICAgICAgICAgcmV0cnlMYW5lOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxzID0gZnVuY3Rpb24oZSwgbiwgdCwgcikgewogICAgICAgICAgICAgICAgZm9yICh0ID0gbi5jaGlsZDsgbnVsbCAhPT0gdDspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoNSA9PT0gdC50YWcgfHwgNiA9PT0gdC50YWcpIGUuYXBwZW5kQ2hpbGQodC5zdGF0ZU5vZGUpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKDQgIT09IHQudGFnICYmIG51bGwgIT09IHQuY2hpbGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5jaGlsZC5yZXR1cm4gPSB0LCB0ID0gdC5jaGlsZDsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPT09IG4pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGZvciAoOyBudWxsID09PSB0LnNpYmxpbmc7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB0LnJldHVybiB8fCB0LnJldHVybiA9PT0gbikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdC5yZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5zaWJsaW5nLnJldHVybiA9IHQucmV0dXJuLCB0ID0gdC5zaWJsaW5nCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFzID0gZnVuY3Rpb24oZSwgbikge30sCiAgICAgICAgICAgIHVzID0gZnVuY3Rpb24oZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICAgICAgdmFyIGEgPSBlLm1lbW9pemVkUHJvcHM7CiAgICAgICAgICAgICAgICBpZiAoYSAhPT0gcikgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZSA9IG4uc3RhdGVOb2RlLCBkdChEaS5jdXJyZW50KSwgbCA9IG51bGwsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHkoZSwgYSksIHIgPSB5KGUsIHIpLCBsID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBMYSh7fSwgYSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCByID0gTGEoe30sIHIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRleHRhcmVhIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBDKGUsIGEpLCByID0gQyhlLCByKSwgbCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iICE9IHR5cGVvZiBhLm9uQ2xpY2sgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygci5vbkNsaWNrICYmIChlLm9uY2xpY2sgPSB1bikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHU7CiAgICAgICAgICAgICAgICAgICAgZm9yIChzIGluIEYodCwgciksIHQgPSBudWxsLCBhKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIuaGFzT3duUHJvcGVydHkocykgJiYgYS5oYXNPd25Qcm9wZXJ0eShzKSAmJiBudWxsICE9IGFbc10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0eWxlIiA9PT0gcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gYVtzXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgaW4gbykgby5oYXNPd25Qcm9wZXJ0eSh1KSAmJiAodCB8fCAodCA9IHt9KSwgdFt1XSA9ICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJkYW5nZXJvdXNseVNldElubmVySFRNTCIgIT09IHMgJiYgImNoaWxkcmVuIiAhPT0gcyAmJiAic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiAhPT0gcyAmJiAic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiAhPT0gcyAmJiAiYXV0b0ZvY3VzIiAhPT0gcyAmJiAocmEuaGFzT3duUHJvcGVydHkocykgPyBsIHx8IChsID0gW10pIDogKGwgPSBsIHx8IFtdKS5wdXNoKHMsIG51bGwpKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHMgaW4gcikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHJbc107CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gbnVsbCAhPSBhID8gYVtzXSA6IHZvaWQgMCwgci5oYXNPd25Qcm9wZXJ0eShzKSAmJiBpICE9PSBvICYmIChudWxsICE9IGkgfHwgbnVsbCAhPSBvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3R5bGUiID09PSBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSBpbiBvKSAhby5oYXNPd25Qcm9wZXJ0eSh1KSB8fCBpICYmIGkuaGFzT3duUHJvcGVydHkodSkgfHwgKHQgfHwgKHQgPSB7fSksIHRbdV0gPSAiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSBpbiBpKSBpLmhhc093blByb3BlcnR5KHUpICYmIG9bdV0gIT09IGlbdV0gJiYgKHQgfHwgKHQgPSB7fSksIHRbdV0gPSBpW3VdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0IHx8IChsIHx8IChsID0gW10pLCBsLnB1c2gocywgdCkpLCB0ID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiID09PSBzID8gKGkgPSBpID8gaS5fX2h0bWwgOiB2b2lkIDAsIG8gPSBvID8gby5fX2h0bWwgOiB2b2lkIDAsIG51bGwgIT0gaSAmJiBvICE9PSBpICYmIChsID0gbCB8fCBbXSkucHVzaChzLCBpKSkgOiAiY2hpbGRyZW4iID09PSBzID8gInN0cmluZyIgIT0gdHlwZW9mIGkgJiYgIm51bWJlciIgIT0gdHlwZW9mIGkgfHwgKGwgPSBsIHx8IFtdKS5wdXNoKHMsICIiICsgaSkgOiAic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiAhPT0gcyAmJiAic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiAhPT0gcyAmJiAocmEuaGFzT3duUHJvcGVydHkocykgPyAobnVsbCAhPSBpICYmICJvblNjcm9sbCIgPT09IHMgJiYgWWUoInNjcm9sbCIsIGUpLCBsIHx8IG8gPT09IGkgfHwgKGwgPSBbXSkpIDogKGwgPSBsIHx8IFtdKS5wdXNoKHMsIGkpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0ICYmIChsID0gbCB8fCBbXSkucHVzaCgic3R5bGUiLCB0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGw7CiAgICAgICAgICAgICAgICAgICAgKG4udXBkYXRlUXVldWUgPSBzKSAmJiAobi5mbGFncyB8PSA0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBvcyA9IGZ1bmN0aW9uKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgICAgIHQgIT09IHIgJiYgKG4uZmxhZ3MgfD0gNCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXMgPSAhMSwKICAgICAgICAgICAgc3MgPSAhMSwKICAgICAgICAgICAgY3MgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBXZWFrU2V0ID8gV2Vha1NldCA6IFNldCwKICAgICAgICAgICAgZnMgPSBudWxsLAogICAgICAgICAgICBkcyA9ICExLAogICAgICAgICAgICBwcyA9IG51bGwsCiAgICAgICAgICAgIG1zID0gITEsCiAgICAgICAgICAgIGhzID0gTWF0aC5jZWlsLAogICAgICAgICAgICBncyA9IGRhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsCiAgICAgICAgICAgIHZzID0gZGEuUmVhY3RDdXJyZW50T3duZXIsCiAgICAgICAgICAgIHlzID0gZGEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsCiAgICAgICAgICAgIGJzID0gMCwKICAgICAgICAgICAga3MgPSBudWxsLAogICAgICAgICAgICB3cyA9IG51bGwsCiAgICAgICAgICAgIFNzID0gMCwKICAgICAgICAgICAgeHMgPSAwLAogICAgICAgICAgICBFcyA9IHZuKDApLAogICAgICAgICAgICBDcyA9IDAsCiAgICAgICAgICAgIHpzID0gbnVsbCwKICAgICAgICAgICAgTnMgPSAwLAogICAgICAgICAgICBQcyA9IDAsCiAgICAgICAgICAgIF9zID0gMCwKICAgICAgICAgICAgTHMgPSBudWxsLAogICAgICAgICAgICBUcyA9IG51bGwsCiAgICAgICAgICAgIE1zID0gMCwKICAgICAgICAgICAgRnMgPSAxIC8gMCwKICAgICAgICAgICAgUnMgPSBudWxsLAogICAgICAgICAgICBEcyA9ICExLAogICAgICAgICAgICBPcyA9IG51bGwsCiAgICAgICAgICAgIElzID0gbnVsbCwKICAgICAgICAgICAgVXMgPSAhMSwKICAgICAgICAgICAgVnMgPSBudWxsLAogICAgICAgICAgICBBcyA9IDAsCiAgICAgICAgICAgIEJzID0gMCwKICAgICAgICAgICAgV3MgPSBudWxsLAogICAgICAgICAgICBIcyA9IC0xLAogICAgICAgICAgICBRcyA9IDAsCiAgICAgICAgICAgIGpzID0gZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGUpCiAgICAgICAgICAgICAgICAgICAgaWYgKGUubWVtb2l6ZWRQcm9wcyAhPT0gbi5wZW5kaW5nUHJvcHMgfHwgbGkuY3VycmVudCkgdHMgPSAhMDsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT0gKGUubGFuZXMgJiByKSAmJiAwID09ICgxMjggJiBuLmZsYWdzKSkgcmV0dXJuIHRzID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlLCBuLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcihuKSwgVW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodChuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3bihuLnR5cGUpICYmIEVuKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0KG4sIG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4udHlwZS5fY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5tZW1vaXplZFByb3BzLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm4oeGksIHIuX2N1cnJlbnRWYWx1ZSksIHIuX2N1cnJlbnRWYWx1ZSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAociA9IG4ubWVtb2l6ZWRTdGF0ZSkpIHJldHVybiBudWxsICE9PSByLmRlaHlkcmF0ZWQgPyAoYm4oVWksIDEgJiBVaS5jdXJyZW50KSwgbi5mbGFncyB8PSAxMjgsIG51bGwpIDogMCAhPSAodCAmIG4uY2hpbGQuY2hpbGRMYW5lcykgPyB4cihlLCBuLCB0KSA6IChibihVaSwgMSAmIFVpLmN1cnJlbnQpLCBudWxsICE9PSAoZSA9IExyKGUsIG4sIHQpKSA/IGUuc2libGluZyA6IG51bGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm4oVWksIDEgJiBVaS5jdXJyZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSAwICE9ICh0ICYgbi5jaGlsZExhbmVzKSwgMCAhPSAoMTI4ICYgZS5mbGFncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgcmV0dXJuIFByKGUsIG4sIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uZmxhZ3MgfD0gMTI4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKGwgPSBuLm1lbW9pemVkU3RhdGUpICYmIChsLnJlbmRlcmluZyA9IG51bGwsIGwudGFpbCA9IG51bGwsIGwubGFzdEVmZmVjdCA9IG51bGwpLCBibihVaSwgVWkuY3VycmVudCksIHIpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5sYW5lcyA9IDAsIGhyKGUsIG4sIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMcihlLCBuLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgdHMgPSAwICE9ICgxMzEwNzIgJiBlLmZsYWdzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgdHMgPSAhMSwga2kgJiYgMCAhPSAoMTA0ODU3NiAmIG4uZmxhZ3MpICYmIF9uKG4sIGRpLCBuLmluZGV4KTsKICAgICAgICAgICAgICAgIHN3aXRjaCAobi5sYW5lcyA9IDAsIG4udGFnKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG4udHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgX3IoZSwgbiksIGUgPSBuLnBlbmRpbmdQcm9wczsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBrbihuLCByaS5jdXJyZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgUW4obiwgciksIGEgPSB3dChudWxsLCBuLCBsLCBlLCBhLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBTdCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5mbGFncyB8PSAxLCAib2JqZWN0IiA9PSB0eXBlb2YgYSAmJiBudWxsICE9PSBhICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIGEucmVuZGVyICYmIHZvaWQgMCA9PT0gYS4kJHR5cGVvZiA/IChuLnRhZyA9IDEsIG4ubWVtb2l6ZWRTdGF0ZSA9IG51bGwsIG4udXBkYXRlUXVldWUgPSBudWxsLCB3bihsKSA/ICh1ID0gITAsIEVuKG4pKSA6IHUgPSAhMSwgbi5tZW1vaXplZFN0YXRlID0gbnVsbCAhPT0gYS5zdGF0ZSAmJiB2b2lkIDAgIT09IGEuc3RhdGUgPyBhLnN0YXRlIDogbnVsbCwgWW4obiksIGEudXBkYXRlciA9IFRpLCBuLnN0YXRlTm9kZSA9IGEsIGEuX3JlYWN0SW50ZXJuYWxzID0gbiwgb3QobiwgbCwgZSwgciksIG4gPSBicihudWxsLCBuLCBsLCAhMCwgdSwgcikpIDogKG4udGFnID0gMCwga2kgJiYgdSAmJiBMbihuKSwgZnIobnVsbCwgbiwgYSwgciksIG4gPSBuLmNoaWxkKSwgbjsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE2OgogICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5lbGVtZW50VHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfcihlLCBuKSwgZSA9IG4ucGVuZGluZ1Byb3BzLCBsID0gKGEgPSBsLl9pbml0KShsLl9wYXlsb2FkKSwgbi50eXBlID0gbCwgYSA9IG4udGFnID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiBlKSByZXR1cm4gRmwoZSkgPyAxIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZSA9IGUuJCR0eXBlb2YpID09PSBrYSkgcmV0dXJuIDExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA9PT0geGEpIHJldHVybiAxNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShsKSwgZSA9IEFuKGwsIGUpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdnIobnVsbCwgbiwgbCwgZSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0geXIobnVsbCwgbiwgbCwgZSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGRyKG51bGwsIG4sIGwsIGUsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBwcihudWxsLCBuLCBsLCBBbihsLnR5cGUsIGUpLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IodCgzMDYsIGwsICIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsID0gbi50eXBlLCBhID0gbi5wZW5kaW5nUHJvcHMsIHZyKGUsIG4sIGwsIGEgPSBuLmVsZW1lbnRUeXBlID09PSBsID8gYSA6IEFuKGwsIGEpLCByKTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsID0gbi50eXBlLCBhID0gbi5wZW5kaW5nUHJvcHMsIHlyKGUsIG4sIGwsIGEgPSBuLmVsZW1lbnRUeXBlID09PSBsID8gYSA6IEFuKGwsIGEpLCByKTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrcihuKSwgbnVsbCA9PT0gZSkgdGhyb3cgRXJyb3IodCgzODcpKTtsID0gbi5wZW5kaW5nUHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gKHUgPSBuLm1lbW9pemVkU3RhdGUpLmVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYbihlLCBuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG50KG4sIGwsIG51bGwsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IG8uZWxlbWVudCwgdS5pc0RlaHlkcmF0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RlaHlkcmF0ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGU6IG8uY2FjaGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOiBvLnBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uczogby50cmFuc2l0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZSA9IHUsIG4ubWVtb2l6ZWRTdGF0ZSA9IHUsIDI1NiAmIG4uZmxhZ3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHdyKGUsIG4sIGwsIHIsIGEgPSBycihFcnJvcih0KDQyMykpLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgIT09IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHdyKGUsIG4sIGwsIHIsIGEgPSBycihFcnJvcih0KDQyNCkpLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChiaSA9IGZuKG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZCksIHlpID0gbiwga2kgPSAhMCwgd2kgPSBudWxsLCByID0gRmkobiwgbnVsbCwgbCwgciksIG4uY2hpbGQgPSByOyByOykgci5mbGFncyA9IC0zICYgci5mbGFncyB8IDQwOTYsIHIgPSByLnNpYmxpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVuKCksIGwgPT09IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IExyKGUsIG4sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyKGUsIG4sIGwsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi5jaGlsZAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGh0KG4pLCBudWxsID09PSBlICYmIERuKG4pLCBsID0gbi50eXBlLCBhID0gbi5wZW5kaW5nUHJvcHMsIHUgPSBudWxsICE9PSBlID8gZS5tZW1vaXplZFByb3BzIDogbnVsbCwgbyA9IGEuY2hpbGRyZW4sIG9uKGwsIGEpID8gbyA9IG51bGwgOiBudWxsICE9PSB1ICYmIG9uKGwsIHUpICYmIChuLmZsYWdzIHw9IDMyKSwgZ3IoZSwgbiksIGZyKGUsIG4sIG8sIHIpLCBuLmNoaWxkOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGUgJiYgRG4obiksIG51bGw7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhyKGUsIG4sIHIpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB0KG4sIG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLCBsID0gbi5wZW5kaW5nUHJvcHMsIG51bGwgPT09IGUgPyBuLmNoaWxkID0gTWkobiwgbnVsbCwgbCwgcikgOiBmcihlLCBuLCBsLCByKSwgbi5jaGlsZDsKICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA9IG4udHlwZSwgYSA9IG4ucGVuZGluZ1Byb3BzLCBkcihlLCBuLCBsLCBhID0gbi5lbGVtZW50VHlwZSA9PT0gbCA/IGEgOiBBbihsLCBhKSwgcik7CiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnIoZSwgbiwgbi5wZW5kaW5nUHJvcHMsIHIpLCBuLmNoaWxkOwogICAgICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnIoZSwgbiwgbi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sIHIpLCBuLmNoaWxkOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbi50eXBlLl9jb250ZXh0LCBhID0gbi5wZW5kaW5nUHJvcHMsIHUgPSBuLm1lbW9pemVkUHJvcHMsIG8gPSBhLnZhbHVlLCBibih4aSwgbC5fY3VycmVudFZhbHVlKSwgbC5fY3VycmVudFZhbHVlID0gbywgbnVsbCAhPT0gdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod28odS52YWx1ZSwgbykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUuY2hpbGRyZW4gPT09IGEuY2hpbGRyZW4gJiYgIWxpLmN1cnJlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBMcihlLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG51bGwgIT09ICh1ID0gbi5jaGlsZCkgJiYgKHUucmV0dXJuID0gbik7IG51bGwgIT09IHU7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHUuZGVwZW5kZW5jaWVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdS5jaGlsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gaS5maXJzdENvbnRleHQ7IG51bGwgIT09IHM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLmNvbnRleHQgPT09IGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSB1LnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzID0gR24oLTEsIHIgJiAtcikpLnRhZyA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB1LnVwZGF0ZVF1ZXVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gKGMgPSBjLnNoYXJlZCkucGVuZGluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZiA/IHMubmV4dCA9IHMgOiAocy5uZXh0ID0gZi5uZXh0LCBmLm5leHQgPSBzKSwgYy5wZW5kaW5nID0gcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUubGFuZXMgfD0gciwgbnVsbCAhPT0gKHMgPSB1LmFsdGVybmF0ZSkgJiYgKHMubGFuZXMgfD0gciksIEhuKHUucmV0dXJuLCByLCBuKSwgaS5sYW5lcyB8PSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcy5uZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgxMCA9PT0gdS50YWcpIG8gPSB1LnR5cGUgPT09IG4udHlwZSA/IG51bGwgOiB1LmNoaWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoMTggPT09IHUudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IChvID0gdS5yZXR1cm4pKSB0aHJvdyBFcnJvcih0KDM0MSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ubGFuZXMgfD0gciwgbnVsbCAhPT0gKGkgPSBvLmFsdGVybmF0ZSkgJiYgKGkubGFuZXMgfD0gciksIEhuKG8sIHIsIG4pLCBvID0gdS5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgbyA9IHUuY2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gbykgby5yZXR1cm4gPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IHU7IG51bGwgIT09IG87KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID09PSBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09ICh1ID0gby5zaWJsaW5nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5yZXR1cm4gPSBvLnJldHVybiwgbyA9IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvLnJldHVybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyKGUsIG4sIGEuY2hpbGRyZW4sIHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4uY2hpbGQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhID0gbi50eXBlLCBsID0gbi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sIFFuKG4sIHIpLCBsID0gbChhID0gam4oYSkpLCBuLmZsYWdzIHw9IDEsIGZyKGUsIG4sIGwsIHIpLCBuLmNoaWxkOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhID0gQW4obCA9IG4udHlwZSwgbi5wZW5kaW5nUHJvcHMpLCBwcihlLCBuLCBsLCBhID0gQW4obC50eXBlLCBhKSwgcik7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1yKGUsIG4sIG4udHlwZSwgbi5wZW5kaW5nUHJvcHMsIHIpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTc6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsID0gbi50eXBlLCBhID0gbi5wZW5kaW5nUHJvcHMsIGEgPSBuLmVsZW1lbnRUeXBlID09PSBsID8gYSA6IEFuKGwsIGEpLCBfcihlLCBuKSwgbi50YWcgPSAxLCB3bihsKSA/IChlID0gITAsIEVuKG4pKSA6IGUgPSAhMSwgUW4obiwgciksIGF0KG4sIGwsIGEpLCBvdChuLCBsLCBhLCByKSwgYnIobnVsbCwgbiwgbCwgITAsIGUsIHIpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcihlLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDIyOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHIoZSwgbiwgcikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHQoMTU2LCBuLnRhZykpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICRzID0gZnVuY3Rpb24oZSwgbiwgdCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNbChlLCBuLCB0LCByKQogICAgICAgICAgICB9LAogICAgICAgICAgICBxcyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHJlcG9ydEVycm9yID8gcmVwb3J0RXJyb3IgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpCiAgICAgICAgICAgIH07CiAgICAgICAgR2wucHJvdG90eXBlLnJlbmRlciA9IFhsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBuID0gdGhpcy5faW50ZXJuYWxSb290OwogICAgICAgICAgICBpZiAobnVsbCA9PT0gbikgdGhyb3cgRXJyb3IodCg0MDkpKTsKICAgICAgICAgICAgUWwoZSwgbiwgbnVsbCwgbnVsbCkKICAgICAgICB9LCBHbC5wcm90b3R5cGUudW5tb3VudCA9IFhsLnByb3RvdHlwZS51bm1vdW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5faW50ZXJuYWxSb290OwogICAgICAgICAgICBpZiAobnVsbCAhPT0gZSkgewogICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxSb290ID0gbnVsbDsKICAgICAgICAgICAgICAgIHZhciBuID0gZS5jb250YWluZXJJbmZvOwogICAgICAgICAgICAgICAgcGwoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIFFsKG51bGwsIGUsIG51bGwsIG51bGwpCiAgICAgICAgICAgICAgICB9KSksIG5bWG9dID0gbnVsbAogICAgICAgICAgICB9CiAgICAgICAgfSwgR2wucHJvdG90eXBlLnVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBHcygpOwogICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICBibG9ja2VkT246IG51bGwsCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBlLAogICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiBuCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCBUdS5sZW5ndGggJiYgMCAhPT0gbiAmJiBuIDwgVHVbdF0ucHJpb3JpdHk7IHQrKyk7CiAgICAgICAgICAgICAgICBUdS5zcGxpY2UodCwgMCwgZSksIDAgPT09IHQgJiYgYWUoZSkKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdmFyIEtzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgc3dpdGNoIChlLnRhZykgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBLKG4ucGVuZGluZ0xhbmVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgIT09IHQgJiYgKG5lKG4sIDEgfCB0KSwgdWwobiwgc3UoKSksIDAgPT0gKDYgJiBicykgJiYgKHRsKCksIE5uKCkpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgIHBsKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gS24oZSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gcmwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbChuLCBlLCAxLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHFsKGUsIDEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFlzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKDEzID09PSBlLnRhZykgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gS24oZSwgMTM0MjE3NzI4KTsKICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBuICYmIGFsKG4sIGUsIDEzNDIxNzcyOCwgcmwoKSksIHFsKGUsIDEzNDIxNzcyOCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgWHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoMTMgPT09IGUudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBsbChlKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IEtuKGUsIG4pOwogICAgICAgICAgICAgICAgICAgIG51bGwgIT09IHQgJiYgYWwodCwgZSwgbiwgcmwoKSksIHFsKGUsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEdzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geHUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgWnMgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHh1OwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geHUgPSBlLCBuKCkKICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgeHUgPSB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgVmEgPSBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJpbnB1dCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3KGUsIHIpLCBuID0gci5uYW1lLCAicmFkaW8iID09PSByLnR5cGUgJiYgbnVsbCAhPSBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBlOyByLnBhcmVudE5vZGU7KSByID0gci5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gci5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIgKyBKU09OLnN0cmluZ2lmeSgiIiArIG4pICsgJ11bdHlwZT0icmFkaW8iXScpLCBuID0gMDsgbiA8IHIubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHJbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgIT09IGUgJiYgbC5mb3JtID09PSBlLmZvcm0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBnbihsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKSB0aHJvdyBFcnJvcih0KDkwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcobCksIHcobCwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dGFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICBOKGUsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJzZWxlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IChuID0gci52YWx1ZSkgJiYgRShlLCAhIXIubXVsdGlwbGUsIG4sICExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBmdW5jdGlvbihlLCBuLCB0KSB7CiAgICAgICAgICAgICAgICBXYSA9IGUsIEhhID0gdAogICAgICAgICAgICB9KGRsLCAwLCBwbCk7CiAgICAgICAgdmFyIEpzID0gewogICAgICAgICAgICB1c2luZ0NsaWVudEVudHJ5UG9pbnQ6ICExLAogICAgICAgICAgICBFdmVudHM6IFttbiwgaG4sIGduLCBJLCBVLCBkbF0KICAgICAgICB9OwogICAgICAgICEgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoZSA9IHsKICAgICAgICAgICAgICAgICAgICBidW5kbGVUeXBlOiBlLmJ1bmRsZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogZS52ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyUGFja2FnZU5hbWU6IGUucmVuZGVyZXJQYWNrYWdlTmFtZSwKICAgICAgICAgICAgICAgICAgICByZW5kZXJlckNvbmZpZzogZS5yZW5kZXJlckNvbmZpZywKICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUhvb2tTdGF0ZTogbnVsbCwKICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGg6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVIb29rU3RhdGVSZW5hbWVQYXRoOiBudWxsLAogICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlUHJvcHM6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGg6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVQcm9wc1JlbmFtZVBhdGg6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JIYW5kbGVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgIHNldFN1c3BlbnNlSGFuZGxlcjogbnVsbCwKICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZVVwZGF0ZTogbnVsbCwKICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGlzcGF0Y2hlclJlZjogZGEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlciwKICAgICAgICAgICAgICAgICAgICBmaW5kSG9zdEluc3RhbmNlQnlGaWJlcjogS2wsCiAgICAgICAgICAgICAgICAgICAgZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6IGUuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2UgfHwgWWwsCiAgICAgICAgICAgICAgICAgICAgZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOiBudWxsLAogICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlUmVmcmVzaDogbnVsbCwKICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZVJvb3Q6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgc2V0UmVmcmVzaEhhbmRsZXI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgZ2V0Q3VycmVudEZpYmVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgIHJlY29uY2lsZXJWZXJzaW9uOiAiMTguMi4wIgogICAgICAgICAgICAgICAgfSwgInVuZGVmaW5lZCIgPT0gdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXykgZSA9ICExOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBuID0gX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fOwogICAgICAgICAgICAgICAgaWYgKG4uaXNEaXNhYmxlZCB8fCAhbi5zdXBwb3J0c0ZpYmVyKSBlID0gITA7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBndSA9IG4uaW5qZWN0KGUpLCB2dSA9IG4KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgIGUgPSAhIW4uY2hlY2tEQ0UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0oewogICAgICAgICAgICBmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTogcG4sCiAgICAgICAgICAgIGJ1bmRsZVR5cGU6IDAsCiAgICAgICAgICAgIHZlcnNpb246ICIxOC4yLjAtbmV4dC05ZTNiNzcyYjgtMjAyMjA2MDgiLAogICAgICAgICAgICByZW5kZXJlclBhY2thZ2VOYW1lOiAicmVhY3QtZG9tIgogICAgICAgIH0pLCBlLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEID0gSnMsIGUuY3JlYXRlUG9ydGFsID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICB2YXIgciA9IDIgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogbnVsbDsKICAgICAgICAgICAgaWYgKCFabChuKSkgdGhyb3cgRXJyb3IodCgyMDApKTsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIG4sIHQpIHsKICAgICAgICAgICAgICAgIHZhciByID0gMyA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbM10gPyBhcmd1bWVudHNbM10gOiBudWxsOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAkJHR5cGVvZjogbWEsCiAgICAgICAgICAgICAgICAgICAga2V5OiBudWxsID09IHIgPyBudWxsIDogIiIgKyByLAogICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBlLAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckluZm86IG4sCiAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb246IHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfShlLCBuLCBudWxsLCByKQogICAgICAgIH0sIGUuY3JlYXRlUm9vdCA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgaWYgKCFabChlKSkgdGhyb3cgRXJyb3IodCgyOTkpKTsKICAgICAgICAgICAgdmFyIHIgPSAhMSwKICAgICAgICAgICAgICAgIGwgPSAiIiwKICAgICAgICAgICAgICAgIGEgPSBxczsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gbiAmJiAoITAgPT09IG4udW5zdGFibGVfc3RyaWN0TW9kZSAmJiAociA9ICEwKSwgdm9pZCAwICE9PSBuLmlkZW50aWZpZXJQcmVmaXggJiYgKGwgPSBuLmlkZW50aWZpZXJQcmVmaXgpLCB2b2lkIDAgIT09IG4ub25SZWNvdmVyYWJsZUVycm9yICYmIChhID0gbi5vblJlY292ZXJhYmxlRXJyb3IpKSwgbiA9IEJsKGUsIDEsICExLCBudWxsLCAwLCByLCAwLCBsLCBhKSwgZVtYb10gPSBuLmN1cnJlbnQsIEdlKDggPT09IGUubm9kZVR5cGUgPyBlLnBhcmVudE5vZGUgOiBlKSwgbmV3IFhsKG4pCiAgICAgICAgfSwgZS5maW5kRE9NTm9kZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIGlmICgxID09PSBlLm5vZGVUeXBlKSByZXR1cm4gZTsKICAgICAgICAgICAgdmFyIG4gPSBlLl9yZWFjdEludGVybmFsczsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gbikgewogICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGUucmVuZGVyKSB0aHJvdyBFcnJvcih0KDE4OCkpOwogICAgICAgICAgICAgICAgdGhyb3cgZSA9IE9iamVjdC5rZXlzKGUpLmpvaW4oIiwiKSwgRXJyb3IodCgyNjgsIGUpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlID0gbnVsbCA9PT0gKGUgPSAkKG4pKSA/IG51bGwgOiBlLnN0YXRlTm9kZQogICAgICAgIH0sIGUuZmx1c2hTeW5jID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gcGwoZSkKICAgICAgICB9LCBlLmh5ZHJhdGUgPSBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgIGlmICghSmwobikpIHRocm93IEVycm9yKHQoMjAwKSk7CiAgICAgICAgICAgIHJldHVybiBuYShudWxsLCBlLCBuLCAhMCwgcikKICAgICAgICB9LCBlLmh5ZHJhdGVSb290ID0gZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICBpZiAoIVpsKGUpKSB0aHJvdyBFcnJvcih0KDQwNSkpOwogICAgICAgICAgICB2YXIgbCA9IG51bGwgIT0gciAmJiByLmh5ZHJhdGVkU291cmNlcyB8fCBudWxsLAogICAgICAgICAgICAgICAgYSA9ICExLAogICAgICAgICAgICAgICAgdSA9ICIiLAogICAgICAgICAgICAgICAgbyA9IHFzOwogICAgICAgICAgICBpZiAobnVsbCAhPSByICYmICghMCA9PT0gci51bnN0YWJsZV9zdHJpY3RNb2RlICYmIChhID0gITApLCB2b2lkIDAgIT09IHIuaWRlbnRpZmllclByZWZpeCAmJiAodSA9IHIuaWRlbnRpZmllclByZWZpeCksIHZvaWQgMCAhPT0gci5vblJlY292ZXJhYmxlRXJyb3IgJiYgKG8gPSByLm9uUmVjb3ZlcmFibGVFcnJvcikpLCBuID0gSGwobiwgbnVsbCwgZSwgMSwgbnVsbCAhPSByID8gciA6IG51bGwsIGEsIDAsIHUsIG8pLCBlW1hvXSA9IG4uY3VycmVudCwgR2UoZSksIGwpCiAgICAgICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgbC5sZW5ndGg7IGUrKykgYSA9IChhID0gKHIgPSBsW2VdKS5fZ2V0VmVyc2lvbikoci5fc291cmNlKSwgbnVsbCA9PSBuLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEgPyBuLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEgPSBbciwgYV0gOiBuLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEucHVzaChyLCBhKTsKICAgICAgICAgICAgcmV0dXJuIG5ldyBHbChuKQogICAgICAgIH0sIGUucmVuZGVyID0gZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICBpZiAoIUpsKG4pKSB0aHJvdyBFcnJvcih0KDIwMCkpOwogICAgICAgICAgICByZXR1cm4gbmEobnVsbCwgZSwgbiwgITEsIHIpCiAgICAgICAgfSwgZS51bm1vdW50Q29tcG9uZW50QXROb2RlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIUpsKGUpKSB0aHJvdyBFcnJvcih0KDQwKSk7CiAgICAgICAgICAgIHJldHVybiAhIWUuX3JlYWN0Um9vdENvbnRhaW5lciAmJiAocGwoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbmEobnVsbCwgbnVsbCwgZSwgITEsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBlLl9yZWFjdFJvb3RDb250YWluZXIgPSBudWxsLCBlW1hvXSA9IG51bGwKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSksICEwKQogICAgICAgIH0sIGUudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMgPSBkbCwgZS51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciA9IGZ1bmN0aW9uKGUsIG4sIHIsIGwpIHsKICAgICAgICAgICAgaWYgKCFKbChyKSkgdGhyb3cgRXJyb3IodCgyMDApKTsKICAgICAgICAgICAgaWYgKG51bGwgPT0gZSB8fCB2b2lkIDAgPT09IGUuX3JlYWN0SW50ZXJuYWxzKSB0aHJvdyBFcnJvcih0KDM4KSk7CiAgICAgICAgICAgIHJldHVybiBuYShlLCBuLCByLCAhMSwgbCkKICAgICAgICB9LCBlLnZlcnNpb24gPSAiMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4IgogICAgfSwgIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IG4oZXhwb3J0cywgcmVxdWlyZSgicmVhY3QiKSkgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImV4cG9ydHMiLCAicmVhY3QiXSwgbikgOiBuKChlID0gZSB8fCBzZWxmKS5SZWFjdERPTSA9IHt9LCBlLlJlYWN0KQp9KCk7"}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":8,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_68x28dp.png","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:12.004Z","timestamp":1785130092004,"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 /images/branding/googlelogo/1x/googlelogo_color_68x28dp.png HTTP/1.1\r\nHost: www.gstatic.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://dreamspinfluence.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, 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\naccept-ranges: bytes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 1597\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:18 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:18 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Fri, 30 Jun 2023 18:58:00 GMT\r\ncontent-type: image/png\r\nvary: Origin\r\nage: 404274\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":1597,"size_decoded":2271,"mime_type":"image/png","magic":"PNG image data, 68 x 28, 8-bit/color RGBA, non-interlaced","md5":"c4a931d597decd2553aac6634b766cf2","sha1":"6ec84fb4a2745b4b71520241be77db1fd1013830","sha256":"f56402b127698db4b4dc611a97a6f081d04c4691c60522c5912d189e37c94a9e","sha512":"4932e0f7f38085a7c52539bdd5c7f470740e560a4471bea30d12ef9e3efe77f6bbfac28d26c62a245c43d98ebf74c824b2b414843080a27edf1563a5f874ac84","ssdeep":"","tlshash":"7c310afff39e8cec419e764069ba5965a362cd68233e928f14499592e4d007710f5f41","first_seen":"2023-04-05T08:27:37Z","last_seen":"2026-08-02T16:04:43.792806Z","times_seen":19268,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAAEQAAAAcCAYAAADYzhkoAAAGBElEQVRYw+1ZXWwUVRQe2N22ViP136gvigZSocTOzLrEynZmdhtiihqkaqw/LzxA1MQHIcRGV9idthIRIdbSWNGHQtYGEkOMYre1CRpLG3nAP9CW1GCg+5d2OzPL1i7d67kzd3Znt9Pd1Sam0t5kMum9Z+ee+91zzvfdW4paasU3pyd0Ay/Kd2w8kCpdtCDwolRZK8rtnChd5EUFqY9XStV6lbOcqOza6IneuNDXwPi3PMv4N7fS/i0vziMakJUT5dZaUZpJA2H6SJcFr1y7kAGhj27uYvxPIQDl838NBu9TjhsWPsI1K68LzVfWc3vkByFt3JxPeR/Aimvjcsc1DQjnk8U0GD7lw7lqhtubuBfGPR4PWn7NAsJ5YytrvdJVAshRCqFl//c6OC9AIPz3ktqQcHvk2+frDPJQyyN19Oowx26IcMwqRFHLCtlPnSxZPd1n3TDVV7IKofz2Dd3IAj5XubxSTZ0ndvM/BQTRtC0sMA+FefujY+71s9eL2YOkyvH5ghER2MawQI+GBRalH469AA48Y2Z/NWBrnA5YRpO9NpR5LBeg39Qeinkj75P+NLDfNO+TW2ANv8AThbr32FyA4I0JCeyr4FNE9y0osKkQR3dNONdVGACRFTLBW6YR5JNf4XzSp+aP8oFuF+bZpgwQdAImO4/fel+It+80fne619qkg/BXjy2R7LGcV9+kD8Z3Ztc5ZYcBiCsAwG8qIFkMGH9yLkAADNEAxARs1I9BgU6SvtO/b7y/VNcdCfLBN8xTSjk2FwVjilYjg3uYxmirCwfEx130CtyPkQ9xrF91gmNngkL1WhWMb2w0LD5FFt6FApRqj/qpCvjbr4LUa5sBm7UkravScsCrHNG1kHOvcidoo28LARLi7OvSYPDMAX3xIa56ZZijo6rfLnaXtmCvMow/BhrkE9OiK0rbgYU6sx5R6dd3iqB/iEw4jHPU+Hs8eTqNeOYg7kv22A6pkRCwDKMfqCz71JdUqSGNDpJNadPlAN2Bsuxd78Tvgk1N5geE2af5x5zFNWvU6SyDvhfAnwFD1JzRKbeTTBZx7EtdVxQzifLbZLd+UtMFQk5H38weHGnXJmVOqYAEbKfJgk3tYbxdHe+xnSIRMkB8NLWv9UlD+QCB+b/WNoQ9BiC0GOsIRHB/2MU+jRoqSzRR5os7DBrEUwiMBg8q0aMK7N8jETKoflxg95sCwrNtxKHvSIQMahFiM7WHsTYyrtrDUWJQS1Fl/xxMOVAUIHo0cPQkjtYob680p16v8pl+ZhGalZfyKlpR/lh1DrSLa8/kAxogTKcWIew51NBgmU1z7AgBpE0DxNJJGOUc6qay7SGFYHyERFAbiciPtLRWfsW0a7SvEaXbwJepvCkjMO+mI0Jgt4+5q6430r5e8wwLnaiAD/5sKJjdUMQewQDg8XoPKgeg6vWdItHRpP8+6LI7MmzCdlx0ONTUu1RPl0PfYZ3iwnx1tVpUe6wOA812pL6nVHt0giqHunKYME8KCmu1xnRxe6aQy+3gV5nuN7DdV4WK6pibWZMu+lDv9PRQ6xtECmzkZRirzwFFuhU+2pdzkEsCvcVy2QV2zJeraElukpBkY5CbQ/ht2JndOWnRkqbdXlsM3kPkjUi67M5Ji+YM7SrjuG4YJENB2gUf3sxoIzqK0xxq2njGP2bHrJTAZxQsfiA6zsyiWUgnDBiMOU0VJwgfQHpbmGNCWcJMoIOQKltzFStWpECx2wCEkFGYQWQEoW/rLMUKGwCgvIzBMPqEtRBsWlCNHl/8iXzCDPuh+pNVT9hLQAbPFz4BA8eDAxzXHH8cy+SalthNRUl3qBlRnrZHeGZTRGBY5HRa89pDzQBg7Mnekk3TASsLWsRa4GRehv3BqhRS6W4VKK8iYUCKuZbA/mG/sH/Yz0L+Lcjmah1fAYr5NagfJ3JP4rjWZQhh8pZFcYsntCTu05kEF1GnKK/BahWipA7q3B/kjuaLRXW1CYX8OcM1Rc4RQglh0BbdfS++wYOIOKlHCz7hYl3kbI3fs6j/G4DZsNhjxlJbakttqf2X7W8TpV8yKnnUNAAAAABJRU5ErkJggg=="}},"time_used":15,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":15,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/images/days.svg","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.086Z","timestamp":1785130090086,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/images/days.svg HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/svg+xml\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=lOO1AQVh1Qo7CDi64GBehsp%2Basi%2BYRozU7leVqSiFd1h33VhmZ%2BijOPPTzDeb%2BUuzuEqJZD8qn%2FbXW%2F58OW1X8by14TnIJi%2BmsVZt5Yq21RXQFks3Bg8qAeDZsYP%2BqLnIwRF%2FBZl3w%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d370e67120a-OSL\r\ncontent-length: 577\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":1166,"size_decoded":1402,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"4bfaac59fa99efdf3b506b99c1a6946e","sha1":"89ade637911943d7a33c4bc84cdcaea9e3989c27","sha256":"4db5f1d02134dd478254dac99db11bb28528ab9273f1e80f7638e47e915168d6","sha512":"fbe428b28dcc318da73b4999d724fe5d716a8735baca32a2e22b0417920ba6619cacdce1892e5f5016d97272cb5389b0c054c14a96b15e35768e4c7ce29509e0","ssdeep":"","tlshash":"8c21dd7a42f94b799485c3af8b14480269e4b0ab922b9984b8df1500df4bcc2ed563db","first_seen":"2026-07-27T03:56:42.604501Z","last_seen":"2026-07-27T05:30:59.830611Z","times_seen":6,"resource_available":false,"data":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX9Ch0LvQvtC5XzIiIGRhdGEtbmFtZT0i0KHQu9C+0LkgMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0xLCAuY2xzLTIgewogICAgICAgIHN0cm9rZS13aWR0aDogMHB4OwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICMzODkwZmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIj4KICAgIDxnPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+CiAgICAgIDxnIGlkPSJEOTZfQm9hcmRfcGVyZm9ybWFuY2UiIGRhdGEtbmFtZT0iRDk2LCBCb2FyZCwgcGVyZm9ybWFuY2UiPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTYzLjUsMzEuNmgtLjFxMCwuMS4xLDBoMFoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03OC4zLDIwLjFIMjAuOGMtLjMsMC0uNi4zLS42LjZzLjMuNi42LjZoNC40djI5LjVjMCw2LjksNS40LDEyLjUsMTIuMSwxMi45bC03LjEsMTQuM2MtLjIuMywwLC43LjMuOC4xLDAsLjIuMS4zLjEuMiwwLC41LS4xLjYtLjNsNy4zLTE0LjdoMjAuNWw3LjMsMTQuN2MuMS4yLjMuMy42LjMuMSwwLC4yLDAsLjMtLjEuMy0uMi40LS41LjMtLjhsLTctMTQuMWguNGM3LjEsMCwxMy01LjgsMTMtMTN2LTI5LjVoNC40Yy4zLDAsLjYtLjMuNi0uNnMtLjUtLjctLjgtLjdaTTY0LjUsMzcuNmgwYy0uNCwwLS42LS4yLS43LS42bC0uMy00LjEtNy4zLDEzLjRjLS4xLjItLjQuNC0uNy4zbC0xMy40LTIuNC03LjMsOC41Yy0uMS4xLS4zLjItLjUuMi0uMSwwLS4zLDAtLjQtLjItLjMtLjItLjMtLjYtLjEtLjlsNy41LTguOGMuMS0uMi40LS4yLjYtLjJsMTMuMywyLjQsNy40LTEzLjJ2LS4xbC00LjMsMS42Yy0uMy4xLS43LDAtLjgtLjQtLjEtLjMsMC0uNy40LS44bDUuOC0yLjJjLjItLjEuNCwwLC42LjEuMi4xLjMuMy4zLjVsLjUsNi4yYzAsLjQtLjIuNy0uNi43WiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":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.27","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:17.106Z","timestamp":1785130097106,"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://dreamspinfluence.com/\r\nOrigin: https://dreamspinfluence.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 05:28:17 GMT\r\ncontent-type: application/json; charset=utf-8\r\naccess-control-allow-origin: *\r\ncache-control: max-age=600\r\nx-response-time: 1ms\r\nx-version: 0dd3c95f86cdb6b59a0dad25ffcd406aa7c7723b\r\nx-77-nzt: k548muuDRWqbPpL9F4zjtjVXmVOB4tv/T7VdKaYOrDoSNSIC2yHfS3pnZW5LHejWvqZs1vs\r\nx-77-nzt-ray: fdb54123a81a3f5571ec666a222afa09\r\nx-77-cache: HIT\r\nx-77-age: 339\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":7216,"size_decoded":3346,"mime_type":"application/json; charset=utf-8","magic":"JSON text data","md5":"05d7604a60456ab25eb809557b353edc","sha1":"e32135b721636e7994e42748da35341e03dfd123","sha256":"5892aca834fe3f9f8fb66f68c8a3eb2295708a3b428cf355d7f3e3c1a0b7b62e","sha512":"db4124c008e22597192e1f07b44575ff191a03322f763bffb1efd129152e0f6f1546d98f5016967b32cc71a8252fefc0546aef0be258e8343fbba4ae2afe00da","ssdeep":"192:Ccdft/hc4l6WKHSY8pZcqq+jT0UHAfoW/Ymz8:CgF/hcbWbYKZcF+jhqoWQmw","tlshash":"48e1b54f9a144ea987c6438276cfb84675bc80734250993afd8cc8b842697cda3e3b94","first_seen":"2026-04-01T12:23:41.393805Z","last_seen":"2026-07-27T13:21:25.866734Z","times_seen":5254,"resource_available":false,"data":"eyJhZ2VudFJhdGluZy5hbGwucGxhY2Vob2xkZXIiOiJMZWF2ZSB1cyBmZWVkYmFjayIsImFnZW50UmF0aW5nLmJhZC5mb3JtVGV4dCI6IlNvIHNvcnJ5IPCfmJMgV2hhdCB3ZW50IHdyb25nPyIsImFnZW50UmF0aW5nLmdvb2QuZm9ybVRleHQiOiJUaGFua3Mg8J+kqSBXaGF0IHdhcyBzbyBncmVhdD8iLCJhZ2VudFJhdGluZy5ub3JtYWwuZm9ybVRleHQiOiJUaGFua3Mg8J+RjSBIb3cgY2FuIHdlIGltcHJvdmU/IiwiYWdlbnRUcmFuc2Zlci5kZWZhdWx0VGV4dCI6IkFnZW50IiwiYWdlbnRUcmFuc2Zlci5qb2luZWQiOiJqb2luZWQgdGhlIGNoYXQiLCJhZ2VudFRyYW5zZmVyLmxlZnQiOiJsZWZ0IiwiYWdlbnRUcmFuc2Zlci5yZWRpcmVjdGVkIjoiaXMgeW91ciBuZXcgYWdlbnQiLCJhcmlhTGFiZWwuYWdlbnRBdmF0YXIiOiJBZ2VudCBhdmF0YXIiLCJhcmlhTGFiZWwuY2FyZCI6IlByb2R1Y3QgY2FyZCIsImFyaWFMYWJlbC5jaGF0Q29udGVudCI6IkNoYXQgY29udGVudCIsImFyaWFMYWJlbC5jaGF0Ym90QXZhdGFyIjoiQ2hhdGJvdCBhdmF0YXIiLCJhcmlhTGFiZWwuZHJhd2VyLmNvbnRlbnQiOiJEcmF3ZXIgY29udGVudCIsImFyaWFMYWJlbC5kcmF3ZXIub3ZlcmxheSI6IkRyYXdlciBvdmVybGF5IiwiYXJpYUxhYmVsLmlubGluZUVtb2ppUGlja2VyLmRlc2NyaXB0aW9uIjoiU2hvd2luZyB7Y291bnR9IGVtb2ppcyIsImFyaWFMYWJlbC5pbmxpbmVFbW9qaVBpY2tlci5sYWJlbCI6IkVtb2ppIHN1Z2dlc3Rpb25zIiwiYXJpYUxhYmVsLmxlZnQiOiJMZWZ0IiwiYXJpYUxhYmVsLm9wZW5DaGF0IjoiT3BlbiBTbWFydHN1cHAgY2hhdCIsImFyaWFMYWJlbC5wb3B1cCI6IlNtYXJ0c3VwcCBjaGF0IHBvcHVwIiwiYXJpYUxhYmVsLnJhdGVDaGF0LmJhZCI6IlJhdGUgY2hhdCBuZWdhdGl2ZWxseSIsImFyaWFMYWJlbC5yYXRlQ2hhdC5nb29kIjoiUmF0ZSBjaGF0IHBvc2l0aXZlbHkiLCJhcmlhTGFiZWwucmF0ZUNoYXQubmV1dHJhbCI6IlJhdGUgY2hhdCBuZXV0cmFsbHkiLCJhcmlhTGFiZWwucmVtb3ZlQXR0YWNobWVudCI6IlJlbW92ZSBhdHRhY2htZW50IiwiYXJpYUxhYmVsLnJpZ2h0IjoiUmlnaHQiLCJhcmlhTGFiZWwuc2Nyb2xsRG93biI6IlNjcm9sbCBkb3duIiwiYXJpYUxhYmVsLnN1Y2Nlc3MiOiJTdWNjZXNzIiwiYXJpYUxhYmVsLnVwbG9hZGluZyI6IlVwbG9hZGluZy4uLiIsImFyaWFMYWJlbC53aWRnZXRCcmFuZGluZyI6IlNtYXJ0c3VwcCBicmFuZGluZyIsImF1dGhGb3JtLmFjY2VwdFRlcm1zIjoiSSBhZ3JlZSB3aXRoIHByaXZhY3kgcG9saWN5IiwiYXV0aEZvcm0uYnV0dG9uLnNlbmQiOiJTZW5kIG1lc3NhZ2UiLCJhdXRoRm9ybS5kZXNjcmlwdGlvbiI6Ildl4oCZbGwgdXNlIHlvdXIgY29udGFjdCBpbmZvIG9ubHkgaWYgYWxsIHRoZSBhZ2VudHMgYXJlIGJ1c3kgYXQgdGhlIG1vbWVudCBhbmQgY2Fubm90IGltbWVkaWF0ZWx5IHJlcGx5LiIsImF1dGhGb3JtLmdyZWV0aW5nIjoi8J+RiyBQbGVhc2UgaW50cm9kdWNlIHlvdXJzZWxmIiwiYXV0aEZvcm0uZ3JvdXAiOiJDaG9vc2UgYSBncm91cCIsImF1dGhGb3JtLmxhYmVsLmVtYWlsIjoiRS1tYWlsIiwiYXV0aEZvcm0ubGFiZWwuZ3JvdXAiOiJHcm91cCIsImF1dGhGb3JtLmxhYmVsLm5hbWUiOiJOYW1lIiwiYXV0aEZvcm0ubGFiZWwucGhvbmUiOiJQaG9uZSIsImF1dGhGb3JtLnN1Ym1pdC5lcnJvciI6IkF1dGhlbnRpY2F0aW9uIGZhaWxlZCIsImF1dGhGb3JtLnN1Ym1pdC5zdWNjZXNzIjoiQXV0aGVudGljYXRpb24gd2FzIHN1Y2Nlc3NmdWwiLCJhdXRoRm9ybS55b3VyRW1haWwiOiJZb3VyIGVtYWlsIiwiYXV0aEZvcm0ueW91ck5hbWUiOiJZb3VyIG5hbWUiLCJhdXRoRm9ybS55b3VyUGhvbmUiOiJQaG9uZSBudW1iZXIiLCJidXR0b24uZ3JlZXRpbmciOiJDaGF0IiwiY2FyZC5saW5rc0xpbWl0UmVhY2hlZCI6IlVuYWJsZSB0byBzZW5kIG1vcmUgdGhhbiAyMCBVUkwgbGlua3MuIiwiY2FyZC5ub1ByZXZpZXdUaXRsZSI6IlByZXZpZXcgbm90IGF2YWlsYWJsZSIsImNhcmQub3BlblVybFRpdGxlIjoiUmVhZCBtb3JlIiwiY2FyZC5zZW5kaW5nSW5Qcm9ncmVzcyI6IlNlbmRpbmcgaW4gcHJvZ3Jlc3MsIHBsZWFzZSB3YWl04oCmIiwiY2hhdElucHV0LnBsYWNlaG9sZGVyIjoiVHlwZSB5b3VyIG1lc3NhZ2UgaGVyZSIsImNoYXRQcmV2aWV3Lm1lc3NhZ2UxIjoiSGksIGlzIGFueWJvZHkgaGVyZT8iLCJjaGF0UHJldmlldy5tZXNzYWdlMiI6IkhlbGxvLCB5ZXMgd2UgYXJlIGhlcmUiLCJjaGF0UHJldmlldy5tZXNzYWdlMyI6Ik9rLCB0aGFua3MiLCJjaGF0Ym90LmdvQmFjayI6IkdvIGJhY2siLCJjbG9zZUNvbnZlcnNhdGlvbk1vZGFsLmJ1dHRvbiI6IlllcywgZW5kIGNoYXQiLCJjbG9zZUNvbnZlcnNhdGlvbk1vZGFsLnRleHQiOiJJcyB0aGF0IHJlYWxseSBhbGw/IElmIHNvbWV0aGluZyBlbHNlIGNvbWVzIHRvIG1pbmQsIHlvdSBjYW4gYWx3YXlzIHJldHVybiB0byB0aGUgY29udmVyc2F0aW9uLiIsImNsb3NlQ29udmVyc2F0aW9uTW9kYWwudGl0bGUiOiJFbmQgY2hhdCIsImRyYWdBbmREcm9wLmRyb3BIZXJlIjoiRHJvcCB5b3VyIGZpbGUocykgaGVyZSIsImVtYWlsVHJhbnNjcmlwdC5wb3NpdGl2ZUZlZWRiYWNrIjoiVHJhbnNjcmlwdCBoYXMgYmVlbiBzZW50IiwiZW1haWxUcmFuc2NyaXB0LnNlbmRDb3B5IjoiU2VuZCBjb252ZXJzYXRpb24gY29weSIsImVycm9yLmZpbGVVcGxvYWQiOiJGaWxlIHVwbG9hZCBmYWlsdXJlIiwiZXJyb3Iubm9JbnRlcm5ldCI6IkludGVybmV0IGNvbm5lY3Rpb24gbG9zdCIsImVycm9yLnNlcnZlckVycm9yIjoiU2VydmVyIGVycm9yIG9jY3VycmVkIiwiZmlsZVVwbG9hZC5iYWRGaWxlVHlwZSI6IlRoaXMgZmlsZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuIiwiZmlsZVVwbG9hZC5maWxlVG9vQmlnIjoiVGhlIGZpbGUgaXMgYmlnZ2VyIHRoYW4gdGhlIGFsbG93ZWQgbGltaXQiLCJmaWxlVXBsb2FkLmZpbGVzV2VyZW50UHJvY2Vzc2VkIjoiU29tZSBmaWxlcyBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIiwiZmlsZVVwbG9hZC5pbWFnZUVycm9yIjoiVGhpcyBpbWFnZSBpcyBub3QgdmFsaWQiLCJmaWxlVXBsb2FkLnRvb01hbnlGaWxlcyI6IkxpbWl0IGZvciB1cGxvYWRpbmcgZmlsZXMgaXMgIiwiZmlsZVVwbG9hZC51cGxvYWRGaWxlIjoiVXBsb2FkIGZpbGUiLCJmb3JtLnN1Ym1pdC5lcnJvciI6IlNvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluLiIsImZvcm0uc3VibWl0LnN1Y2Nlc3MiOiJTdWNjZXNzZnVsbHkgZG9uZSIsImdkcHIuZGF0YVByaXZhY3lIZWFkbGluZSI6IlBlcnNvbmFsIGRhdGEgcHJvY2Vzc2luZyIsImdkcHIuZGF0YVByaXZhY3lUZXh0IjoiU21hcnRzdXBwLmNvbSwgcy5yLm8sIHByb2Nlc3NlcyBwZXJzb25hbCBkYXRhLiwgVkFUIElEIENaMDM2Njg2ODEgKGZ1cnRoZXIgYXMgXCJTbWFydHN1cHBcIikgYXMgYSBkYXRhIHByb2Nlc3NvciB3aG8gYWN0cyBvbiBiZWhhbGYgb2YgdGhlIHdlYnNpdGUgb3duZXIgd2hvIGlzIHRoZSBkYXRhIGNvbnRyb2xsZXIuIFxuXG5TbWFydHN1cHAgaXMgR0RQUiBjb21wbGlhbnQuIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBhYm91dCBTbWFydHN1cHAgcGVyc29uYWwgZGF0YSBwcml2YWN5IGFuZCBwcm9jZXNzaW5nIG9uIGhlbHAuc21hcnRzdXBwLmNvbS9lbl9VUy9wcml2YWN5LiBcblxuUHJvY2Vzc2luZyBvZiB5b3VyIHBlcnNvbmFsIGRhdGEgaXMgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIHByb3ZpZGUgY3VzdG9tZXIgc2VydmljZS4gQWR2YW5jZWQgZmVhdHVyZXMgd2lsbCBvbmx5IGJlIHR1cm5lZCBvbiBpZiB5b3UgaGF2ZSBhZ3JlZWQgdG8gdGhlbS4gXG5cblBsZWFzZSBjb250YWN0IHRoZSB3ZWJzaXRlIG93bmVyIGlmIHlvdSBoYXZlIHF1ZXN0aW9ucyBhYm91dCB0aGUgcHJvY2Vzc2luZyBvZiBwZXJzb25hbCBkYXRhIG9yIGlmIHlvdSB3YW50IHRvIHJlcXVlc3Qgb3IgZXJhc2UgeW91ciBwZXJzb25hbCBkYXRhLiIsImdlbmVyYWwuYmFjayI6IkJhY2siLCJnZW5lcmFsLm5ld01lc3NhZ2VzIjoiTmV3IG1lc3NhZ2VzIiwiZ2VuZXJhbC5zZW5kIjoiU2VuZCIsIm9wdGlvbnMuYWNjZXNzaWJpbGl0eSI6IkFjY2Vzc2liaWxpdHkiLCJvcHRpb25zLmNvcHlyaWdodCI6IsKpIHt5ZWFyfSBTbWFydHN1cHAuY29tIiwib3B0aW9ucy5lbWFpbFRyYW5zY3JpcHQiOiJTZW5kIGVtYWlsIHRyYW5zY3JpcHQiLCJvcHRpb25zLmZlZWRiYWNrIjoiRGlkIHlvdSBmaW5kIGEgYnVnPyIsIm9wdGlvbnMuZ2RwciI6IkdEUFIgYW5kIHByaXZhY3kiLCJvcHRpb25zLnBkZlRyYW5zY3JpcHQiOiJEb3dubG9hZCB0cmFuc2NyaXB0Iiwib3B0aW9ucy5wbGF5U291bmRzIjoiUGxheSB0aGUgc291bmRzIiwib3B0aW9ucy50aXRsZSI6Ik9wdGlvbnMiLCJyYXRpbmcuYnV0dG9uLnJhdGUuYWdlbnQiOiJSYXRlIGNoYXQiLCJyYXRpbmcuYnV0dG9uLnJhdGUuYWkiOiJSYXRlIEFJIGNoYXRib3QiLCJyYXRpbmcuc3VibWl0LnN1Y2Nlc3MiOiJSYXRpbmcgc2VudCIsInJhdGluZy5zdWJtaXRGZWVkYmFjay5zdWNjZXNzIjoiVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrIiwicmF0aW5nLndhc0l0SGVscGZ1bC5hZ2VudCI6IkhvdyB3b3VsZCB5b3UgcmF0ZSBvdXIgc3VwcG9ydD8iLCJyYXRpbmcud2FzSXRIZWxwZnVsLmFpIjoiSG93IHdvdWxkIHlvdSByYXRlIHRoZSBBSSBjaGF0Ym90IGV4cGVyaWVuY2U/Iiwic3RhdHVzQmFyLmJvdElkZW50aXR5IjoiQUkgYXNzaXN0YW50Iiwic3RhdHVzQmFyLm9mZmxpbmVUZXh0IjoiSGFwcHkgdG8gYW5zd2VyIHlvdSBsYXRlciIsInN0YXR1c0Jhci5vbmxpbmVUZXh0IjoiV2UgcmVwbHkgaW1tZWRpYXRlbHkiLCJzeXN0ZW1NZXNzYWdlLmNoYXRDbG9zZWQiOiJDaGF0IHdhcyBjbG9zZWQiLCJzeXN0ZW1NZXNzYWdlLmNoYXRSZXNvbHZlZCI6InJlc29sdmVkIGNvbnZlcnNhdGlvbiIsInRpY2tldEZvcm0ubGFiZWwubWVzc2FnZSI6IldoYXQgY2FuIHdlIGhlbHAgeW91IHdpdGg/IiwidGlja2V0Rm9ybS5tZXNzYWdlLnBsYWNlaG9sZGVyIjoiRGVzY3JpYmUgeW91ciBwcm9ibGVtIiwidGlja2V0Rm9ybS5zdWJtaXQuYnV0dG9uIjoi4pyJ77iPIENvbnRhY3QgdGhlIGFnZW50IGJ5IGVtYWlsIiwidGltZWFnby5YRGF5c0FnbyI6IiclcyBkYXlzIGFnbyIsInRpbWVhZ28uWEhvdXJzQWdvIjoiJXMgaG91cnMgYWdvIiwidGltZWFnby5YTWludXRlc0FnbyI6IiVzIG1pbnV0ZXMgYWdvIiwidGltZWFnby5YTW9udGhzQWdvIjoiJXMgbW9udGhzIGFnbyIsInRpbWVhZ28uWFNlY29uZHNBZ28iOiIlcyBzZWNvbmRzIGFnbyIsInRpbWVhZ28uWFdlZWtzQWdvIjoiJXMgd2Vla3MgYWdvIiwidGltZWFnby5YWWVhcnNBZ28iOiIlcyB5ZWFycyBhZ28iLCJ0aW1lYWdvLmp1c3ROb3ciOiJqdXN0IG5vdyIsInRpbWVhZ28ub25lRGF5QWdvIjoiMSBkYXkgYWdvIiwidGltZWFnby5vbmVIb3VyQWdvIjoiMSBob3VyIGFnbyIsInRpbWVhZ28ub25lTWludXRlQWdvIjoiMSBtaW51dGUgYWdvIiwidGltZWFnby5vbmVNb250aEFnbyI6IjEgbW9udGggYWdvIiwidGltZWFnby5vbmVXZWVrQWdvIjoiMSB3ZWVrIGFnbyIsInRpbWVhZ28ub25lWWVhckFnbyI6IjEgeWVhciBhZ28iLCJ0aW1lYWdvLnJpZ2h0Tm93IjoicmlnaHQgbm93IiwidGltZWFnby5zZWNvbmRzIjoiaW4gJXMgc2Vjb25kcyIsInRvb2x0aXAuYXR0YWNobWVudCI6IkF0dGFjaG1lbnQiLCJ0b29sdGlwLmNsb3NlIjoiQ2xvc2UiLCJ0b29sdGlwLmNvbGxhcHNlIjoiQ29sbGFwc2UgY2hhdCIsInRvb2x0aXAuZW1vamkiOiJFbW9qaSIsInRvb2x0aXAuZXhwYW5kIjoiRXhwYW5kIGNoYXQiLCJ0b29sdGlwLm1pbmltaXplIjoiTWluaW1pemUgY2hhdCIsInRvb2x0aXAubW9yZSI6IlNob3cgbW9yZSIsInRvb2x0aXAubW9yZUJ1dHRvbiI6IlNob3cgTW9yZSIsInRvb2x0aXAucmF0ZUNoYXQiOiJSYXRlIENoYXQiLCJ0b29sdGlwLnNlbmQiOiJTZW5kIiwidG9wQmFyLmVtYWlsVHJhbnNjcmlwdCI6IlNlbmQgZW1haWwgdHJhbnNjcmlwdCIsInRvcEJhci5nZHByVGl0bGUiOiJHRFBSIGFuZCBwcml2YWN5IiwidG9wQmFyLm9mZmxpbmUuaGVsbG8iOiJTZW5kIHVzIGEgbWVzc2FnZSIsInRvcEJhci5vbmxpbmUuaGVsbG8iOiJIb3cgY2FuIHdlIGhlbHA/IiwidG9wQmFyLnR1cm5PZmZTb3VuZHMiOiJUdXJuIG9mZiBzb3VuZHMiLCJ0b3BCYXIudHVybk9uU291bmRzIjoiVHVybiBvbiBzb3VuZHMiLCJ0cmlnZ2VyLm9wZW5DaGF0QnV0dG9uIjoiTGV0J3MgY2hhdCIsInRyaWdnZXIucmVwbHlCdXR0b24iOiJSZXBseSIsInZhbGlkYXRpb25zLmNoZWNrZWRUZXJtcyI6IllvdSBtdXN0IGFncmVlIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIHRvIGNvbnRpbnVlIiwidmFsaWRhdGlvbnMuaXNFbWFpbCI6IlBsZWFzZSBlbnRlciB2YWxpZCBlbWFpbCIsInZhbGlkYXRpb25zLnBob25lIjoiUGxlYXNlIGVudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyIiwidmFsaWRhdGlvbnMucmVxdWlyZWQiOiJQbGVhc2UgZmlsbCBvdXQgdGhpcyBmaWVsZCIsIndhcm5pbmdCYXIubWF4TGVuZ3RoIjoiWW91IGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBjaGFyYWN0ZXJzICgyMDAwKSIsIndhcm5pbmdCYXIuc2FtZU1lc3NhZ2VUd2ljZSI6IkNhbm5vdCBzZW5kIHRoZSBzYW1lIG1lc3NhZ2UgdHdpY2UgaW4gYSByb3cuIiwid2FybmluZ0Jhci5zcGFtUHJvdGVjdGlvbiI6IllvdXIgbWVzc2FnZXMgaGF2ZSBiZWVuIGlkZW50aWZpZWQgYXMgc3BhbS4gUGxlYXNlIHdhaXQgZm9yIDMwIHNlY29uZHMgYmVmb3JlIHNlbmRpbmcgYW5vdGhlciBtZXNzYWdlLiIsIndhcm5pbmdCYXIudXBsb2FkRmlsZU5vdEZpcnN0IjoiRmlyc3QgbWVzc2FnZSBjYW5ub3QgYmUgYSBmaWxlIiwid2lkZ2V0UHJldmlldy5jb250YWN0TWVzc2FnZSI6IvCfjokgTG9va3MgZmFudGFzdGljISDwn5Kq8J+PuyBMZXTCtHMgcm9jayB0aG9zZSBjb252ZXJzYXRpb25zIGFuZCBsZWF2ZSBhIGxhc3RpbmcgaW1wcmVzc2lvbiEg8J+agCIsIndpZGdldFByZXZpZXcud2VsY29tZU1lc3NhZ2UiOiLwn5GL8J+PuyBXZWxjb21lISBUaGlzIGlzIGEgc25lYWsgcGVlayBvZiB5b3VyIGNoYXQgYm94LiBHZXQgcmVhZHkgdG8gc2hpbmUg4pyoIGluIGN1c3RvbWVyIGludGVyYWN0aW9ucyEiLCJtZXNzYWdlLmRlbGV0ZWQiOiJUaGlzIG1lc3NhZ2Ugd2FzIHJlbW92ZWQifQ=="}},"time_used":67,"timings":{"blocked":0,"dns":35,"connect":8,"send":0,"wait":8,"receive":0,"ssl":15},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/images/payments/payment-bitcoin.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.087Z","timestamp":1785130090087,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/images/payments/payment-bitcoin.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=oHHKpLIHQmqzEthzVWYVvqSartbvU53gK3a6YXK3cEivyO90oILbrebpunzfddX9ZUfWwzkNMkoamcokAUmnj7gw1nEIZzHCJ5oxqq36fmHIFFDBEOdMmTowvl3b05JY7jDa3cMObA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d370e68120a-OSL\r\ncontent-length: 5123\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":5123,"size_decoded":5882,"mime_type":"image/png","magic":"PNG image data, 148 x 51, 8-bit/color RGBA, non-interlaced","md5":"ecbcbded965efddfe101c088fce1ab11","sha1":"d45b41b2c2117d00944bbeac1b4189e20bf396cd","sha256":"c0bd3eae65b44545aead96767f97e9e144df7bd320d026ed96558fffaf395600","sha512":"ebfc11849d49dab105c64b0460eb5f5bfa01ddfc9cb6a471c70bed5d98e98f1c6327534b30ec88d4ba5c9c19a180f8475b3b5595a4da43674bbb77033519196f","ssdeep":"96:g77uo3jlvXx6EW5JJdDR9rWX4glsnmH6BSRQ7crLgYtIoilZvWsg7bpMR+:VoTlvkEIHDRxWX4g4mH6SaorcwIo+VWJ","tlshash":"76b16da74aecfc519a64c09ccb7e1b29d582b0f3d7ec9b841eabf51b42d201a1bd6114","first_seen":"2026-07-27T04:11:05.750399Z","last_seen":"2026-07-27T05:30:59.788051Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":5,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":5,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.324Z","timestamp":1785130090324,"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/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.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://dreamspinfluence.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: 50316\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 04:26:34 GMT\r\nexpires: Fri, 23 Jul 2027 04:26:34 GMT\r\ncache-control: public, max-age=31536000\r\nage: 349296\r\nlast-modified: Wed, 10 Sep 2025 16:23:20 GMT\r\ncontent-type: font/woff2\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":50316,"size_decoded":51129,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 50316, version 1.0","md5":"97b33529e13b04b2205144e28a17a1d6","sha1":"9eaf3fe571af16f72a84dbadc1fce0128dff4486","sha256":"1dd49afc07fb2231b2ff686cbf007725fb2742271bb1f28ebd98f22a0d817343","sha512":"ce731a26fac8fd5583137450138d71fc36a9a0c4b79257a5af74be21cc2773b6e3a1ead61055411ec1c2cc857b8b0e6cbc94971f5f0b51820b458d9146af89bf","ssdeep":"768:etWz8e4bJ7xYqUBOYPc1NmWL7TDGrAZrIzcbWomWEjoyW6Md/AE1wBje34U:eZdhUQN5ToAZrIz7uEjR7udw5e34U","tlshash":"a33301e2882ca65cfe1ba7f8c422cc65e3336044f63d461d5766ff6ee470605e83a016","first_seen":"2025-09-12T00:12:40.161531Z","last_seen":"2026-08-02T16:46:21.571857Z","times_seen":23285,"resource_available":false,"data":"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"}},"time_used":94,"timings":{"blocked":32,"dns":0,"connect":0,"send":0,"wait":28,"receive":34,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/ic-control-your-crypto.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"lazy-imageset","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.375Z","timestamp":1785130090375,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/ic-control-your-crypto.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:19 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=DvkdC2z%2BSVLkepTRpp6MoZ%2B4NOedtfjuePG%2BvPoPIW6niG%2Fzr5delobxFMxwPl1qwsMSKhjZ7sps0%2BLYi1U6AsDRudgQazjmCpQN6JOVZB2Dnk2eds5galpLZckKHj9rjdiVPvdmZg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d38de91120a-OSL\r\ncontent-length: 27217\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":27217,"size_decoded":27987,"mime_type":"image/png","magic":"PNG image data, 220 x 220, 8-bit/color RGBA, non-interlaced","md5":"df7707cccc61bf323df03cdbc494c1fb","sha1":"cae9eb91b7f5076653782684c614da293fb19583","sha256":"2f7ddd58da17cb58664c63f97600b17e442fa9177f358e40327c0372a1eaca6a","sha512":"53e3eb501882ede22fe94b02aab1b4ad8759f0d9b0e734e26b7b826bc00db342316e6d545ae9add82d5d826457c966cac0f0d9948f413e5be9c765e0eeef18ba","ssdeep":"768:Kx5654Jyqdh9Auo1WMmUh/HcNka7/vqNThvr7MoP:W65MdhVo8MphukivYSa","tlshash":"13c2e18a73487c2694eb39c0f1c2612ef1125276c7756a3e0dc8d765ac4ce223e5f697","first_seen":"2026-07-27T04:11:05.707398Z","last_seen":"2026-07-27T05:30:59.825558Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.google.com/gen204?sl=en\u0026nca=te_ap\u0026client=te\u0026logld=vTE_20260722","fqdn":"translate.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.178.78","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:12.003Z","timestamp":1785130092003,"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":"*.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:35 GMT","end":"Mon, 21 Sep 2026 08:37:34 GMT"},"fingerprint":{"sha1":"2F:20:3B:91:88:65:20:CD:06:9D:0C:58:4D:17:6F:FC:9D:EC:41:83","sha256":"0C:7B:D3:23:E9:5B:D6:6B:F2:5C:71:91:4D:41:CE:E6:D7:1F:A2:F2:63:BA:25:70:1D:00:F3:C0:72:21:51:6D"}}},"request":{"raw":"GET /gen204?sl=en\u0026nca=te_ap\u0026client=te\u0026logld=vTE_20260722 HTTP/1.1\r\nHost: translate.google.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://dreamspinfluence.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: image/gif; charset=utf-8\r\ncache-control: no-cache, no-store, max-age=0, must-revalidate\r\npragma: no-cache\r\nexpires: Mon, 01 Jan 1990 00:00:00 GMT\r\ndate: Mon, 27 Jul 2026 05:28:12 GMT\r\ncross-origin-resource-policy: cross-origin\r\np3p: CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"\r\ncontent-security-policy: require-trusted-types-for 'script';report-uri /_/TranslateApiHttp/cspreport, script-src 'nonce-wk20CRNbBlTbwnu0odRUlA' 'unsafe-inline';object-src 'none';base-uri 'self';report-uri /_/TranslateApiHttp/cspreport;worker-src 'self'\r\ncross-origin-opener-policy: same-origin\r\naccept-ch: Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-WoW64, Sec-CH-UA-Form-Factors, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version\r\npermissions-policy: ch-ua-arch=*, ch-ua-bitness=*, ch-ua-full-version=*, ch-ua-full-version-list=*, ch-ua-model=*, ch-ua-wow64=*, ch-ua-form-factors=*, ch-ua-platform=*, ch-ua-platform-version=*\r\nreporting-endpoints: default=\"/_/TranslateApiHttp/web-reports?context=eJzj4tDikmJw0JBiEOLmeHNj9mU2gROb19ooKSXlF8aXFCXmFecklqQWpxaVpRbFGxkYmRmYGxnpGRjHFxgAABKQEoI\"\r\nserver: ESF\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nset-cookie: __Secure-ENID=35.SE=ebpuErSSbIJox43-aznOHEBqTgBwTwnMWhq_INsf1hBl2KFByF7nTfSVwN73ueZ8kC5MMLWuK-at80iaMnL3gFAyB3BCUEQdtW5l6I-NBM_JK2rTsddgFgvfif-mUlL2tWyp72CrfgAJy1LF4BW5ihTio4lZOL8yDahoSHsu0cCmGCDrdtFAmDv5lO3nNGpihu8AMihVfCIO2Vj6bPfZFveAgkptIO-qrqayY80BG0A; expires=Thu, 26-Aug-2027 21:46:30 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"image/gif; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-02T16:49:29.666545Z","times_seen":17675151,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/images/tab_img2.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.084Z","timestamp":1785130090084,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/images/tab_img2.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=wuHa6uco03f%2Bk1a1e21p40O%2BilDQAr1T9GYJWPeygyKgbwX7i1Gfethj3G6G3FYzKKFksNdS7rSiEFZ1b2HjXHuhW0WNCPoJZk%2F3X6YkiEa2IM6Wo2NGpAZ0R2bFntMXdbq2T0nWNA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d370e65120a-OSL\r\ncontent-length: 4129\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":4129,"size_decoded":4894,"mime_type":"image/png","magic":"PNG image data, 20 x 21, 8-bit/color RGBA, non-interlaced","md5":"21e99245ae6648ef0ac3fd45d511d4dc","sha1":"424987b797d48a8a9f4cdd51ab54b32c576c008b","sha256":"b27a103c15a9f2bc8fe09fd8b8e85f770bd00d153019320a76abaace7531c15e","sha512":"2f99037a45ead20ff91404df3342d03b822e454286e4d985862f1e9cc0ab724db18022704e7b26b1f49183d2474d8c5adc30cea4d52e13dfc4bda78cf6b2c8c2","ssdeep":"96:/llcHitlIxv9vk7C1+I4wWHLihk/xEtYuI0qAAl:kIIHUCD4wavl","tlshash":"14814d48fe505541220e9be134fbca024a166bc09384bd2c7defc50f56348a03c79adf","first_seen":"2026-07-27T04:11:05.657879Z","last_seen":"2026-07-27T05:30:59.798583Z","times_seen":3,"resource_available":false,"data":"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UmVhZHlxyWU8AAADfWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuZGFiYWNiYiwgMjAyMS8wNC8xNC0wMDozOTo0NCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5QzkwNDI1QTc5NkRFOTExQjkyNkY0QUYxMUQxRTNEQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2QkY3NDFGMDhGNDYxMUVFOTJEMUNCNUQxRDQxQjk2NiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2QkY3NDFFRjhGNDYxMUVFOTJEMUNCNUQxRDQxQjk2NiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU4ZDQ5ZmVjLTVkNWUtNmU0NC1hNDVlLWZlZDA0ZjU0MjRhZiIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhkMjk5NDE5LTNjNmYtZmU0MS05ZWE1LTZmZmRmMDBlODU0NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqs+whYAAAHrSURBVHjanNQ/aFNRFMfx/LFNUlOsJrU6tYNQqB2MSseidpIugaagOFRw6FJaQuwfUtRJEBSHQKkgOqgQERsidejaoYuLQ6uD6KKCWGr/KakU7ev3yq/wfOQlL73wIY+X+85795xzr9+yLJ/LSCMBS9erPg/Dbwt4HPVI4iQacRkD6MdHPMImvmCnUsBhnNGkY7ji+KJDumdesIQQxrDiFrCAPkTwFK/MfwhqyX9wDrMo4jqW8cQZMKDfDT1YwoQCmPETv/AbzxXMjG8Il1tywP61yt9ZvEHeMfcwrqIFf91yuBfQTDiCIUSRxUHH3LDmW5WqfMDnfRRVYZ9eVlcpYFBVvYMm3K0S/K3bkmv5wqTmv8ZXjOM8mvEDMTx05nBCyR+tEvwGFnAKcbQhhcH95nBefWmqfh/vVKyVQJkcrjlyGFGF/bZ7L7GOGWTQqRjxgIcvK+jBC7acd6gfl9XwaVX+u5ccmqTndPLk1PiTmFNffsCUXtruJYeWTp7HOK19nlUR7qmFzPXFf6kyhwOe6bcHKZxACP1oRR5zut+Lz0jomf/sLbmk4yim5Hfhkm2Pb+MBbuM9RnANDW57OaNmjWp5YVWtUQGPap+/wDQWsaWD1/XEdj3VcRPdpopqox0FvIVPtQasaewKMADugrdv9NlLxgAAAABJRU5ErkJggg=="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-7.css?ver=1706574923","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.991Z","timestamp":1785130089991,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/elementor/css/post-7.css?ver=1706574923 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=OJ5167ea%2FwL0P06hMJUUXlCX9vWWTpvAa8hi0mOlNFdBvgQ2q%2BoIc6MdB7fDQqBiYDLcbujEJKPyX%2FzB79ZnXZl7Kd%2FE9hSxKeHl6HrfRx5Urn2abqZD%2F2VWT6YzK0Q49zJe44S2Dw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d367e31120a-OSL\r\ncontent-length: 1146\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":11819,"size_decoded":1962,"mime_type":"text/css","magic":"ASCII text","md5":"111565a2287e69bf12c8b4ba64f407ef","sha1":"fdde0d97d3c5bacd16bacc90737b562bec2cdcd3","sha256":"c206759a3b0b2c56e7a2b1ae7fcfb84c6319d41364c96ab5247d5a6820781275","sha512":"5a5059e78ee09c30bd9e8bc45981386a8059419b1663867cdab6aef30b8347b8c1a4f7dc0edd890315741a1c652c3667c309f8b70da5be1c6d470d8d759df946","ssdeep":"192:tRqSfwL2GgLqcfVnfnxQ63Ik6b6o6tvK6Vf6VYH6CTvcFvvyGCYyVYvdMD20mFaN:tRqOwL2Geq0VfnxQ4IkarQvK+ZaCTvEa","tlshash":"8a3210813e931678b00f201fd697a29d266008cbca3c7a9df5ed194bef74e94b3d1949","first_seen":"2026-07-27T03:56:42.577741Z","last_seen":"2026-07-27T05:30:59.806905Z","times_seen":6,"resource_available":false,"data":"LmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMjRweCAyNHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDMwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA0MHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzFBMjEyRjsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkLAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc3OThhOWQ6OmJlZm9yZSB7CiAgICAtLWJvcmRlci10cmFuc2l0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTMwZjU0ZjYgaW1nIHsKICAgIHdpZHRoOiAyMiU7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTY5NWQ5ZiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDBweCAwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hYjc3MGNhIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYWI3NzBjYS5lLWNvbiB7CiAgICAtLWZsZXgtZ3JvdzogMDsKICAgIC0tZmxleC1zaHJpbms6IDA7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuaGZlLW5hdi1tZW51X190b2dnbGUgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0gewogICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgcGFkZGluZy1yaWdodDogMTBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5tZW51LWl0ZW0gYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoIDEwcHggKyAyMHB4KTsKICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLm1lbnUtaXRlbSB1bCB1bCBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIHBhZGRpbmctbGVmdDogY2FsYyggMTBweCArIDQwcHgpOwogICAgcGFkZGluZy1yaWdodDogMTBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAubWVudS1pdGVtIHVsIHVsIHVsIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgcGFkZGluZy1sZWZ0OiBjYWxjKCAxMHB4ICsgNjBweCk7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4Owp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIC5tZW51LWl0ZW0gdWwgdWwgdWwgdWwgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoIDEwcHggKyA4MHB4KTsKICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5tZW51LWl0ZW0gYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLXRvcDogMHB4OwogICAgcGFkZGluZy1ib3R0b206IDBweDsKfQoKYm9keTpub3QoLnJ0bCkgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgbWFyZ2luLXJpZ2h0OiA2MHB4Owp9Cgpib2R5LnJ0bCAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICBtYXJnaW4tbGVmdDogNjBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdjpub3QoLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwpIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgbWFyZ2luLWJvdHRvbTogNjBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgZm9udC1zaXplOiAyNnB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGxpbmUtaGVpZ2h0OiAzNnB4Owp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuc3ViLW1lbnUgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuc3ViLW1lbnUgYS5oZmUtc3ViLW1lbnUtaXRlbTpob3ZlciwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5tZW51LWl0ZW0uY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAubWVudS1pdGVtLmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5tZW51LWl0ZW0uY3VycmVudC1tZW51LWFuY2VzdG9yIGEuaGZlLW1lbnUtaXRlbSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuc3ViLW1lbnUgYS5oZmUtc3ViLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5lbGVtZW50b3ItbWVudS10b2dnbGUsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24gbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLnN1Yi1tZW51LAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgbmF2LmhmZS1kcm9wZG93biwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24gLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duIC5tZW51LWl0ZW0gYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMUEyMTJGOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuZWxlbWVudG9yLW1lbnUtdG9nZ2xlOmhvdmVyLAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgbmF2LmhmZS1kcm9wZG93biBsaSBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgbmF2LmhmZS1kcm9wZG93bi1leHBhbmRpYmxlIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgdWwuc3ViLW1lbnUgewogICAgd2lkdGg6IDIyMHB4Owp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24gbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLXRvcDogMTVweDsKICAgIHBhZGRpbmctYm90dG9tOiAxNXB4Owp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLnN1Yi1tZW51IGxpLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpLAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgbmF2LmhmZS1kcm9wZG93biBsaS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBub25lOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgZGl2LmhmZS1uYXYtbWVudS1pY29uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBkaXYuaGZlLW5hdi1tZW51LWljb24gc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zOTEzMTZlIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wNDdhZmU2IC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wNDdhZmU2IC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKfQoKQG1lZGlhKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTY5NWQ5ZiB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFiNzcwY2EgewogICAgICAgIC0td2lkdGg6IDgxLjI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzkxMzE2ZSB7CiAgICAgICAgLS13aWR0aDogNTAlOwogICAgfQp9CgpAbWVkaWEobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkIHsKICAgICAgICAtLWdhcDogMjBweCAyMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMjBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAyMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTMwZjU0ZjYgaW1nIHsKICAgICAgICB3aWR0aDogMjUlOwogICAgfQogICAgYm9keTpub3QoLnJ0bCkgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3LmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7CiAgICB9CiAgICBib2R5IC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4OwogICAgfQogICAgYm9keTpub3QoLnJ0bCkgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1yaWdodDogMzBweDsKICAgIH0KICAgIGJvZHkucnRsIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51PmxpLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tbGVmdDogMzBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXY6bm90KC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsKSAuaGZlLW5hdi1tZW51PmxpLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQogICAgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IGEuaGZlLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgICB9Cn0KCkBtZWRpYShtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc5OGE5ZCB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzBmNTRmNiBpbWcgewogICAgICAgIHdpZHRoOiA0NSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFiNzcwY2EgewogICAgICAgIC0td2lkdGg6IDUwJTsKICAgIH0KICAgIGJvZHk6bm90KC5ydGwpIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNy5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1yaWdodDogMHB4OwogICAgfQogICAgYm9keSAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgbmF2LmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBhLmhmZS1tZW51LWl0ZW0sCiAgICAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgfQogICAgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zOTEzMTZlIHsKICAgICAgICAtLXdpZHRoOiA1MCU7CiAgICB9Cn0="}},"time_used":12,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":12,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.011Z","timestamp":1785130090011,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=QRaKVv3AvOdGQGAfi98g8qQZ7%2FZ0xolqZ7D0pHl%2BN0R%2FEreNVMGkPDWLqenu4a4iPyr1vnymeQjN61pfmGsOcSxitWG7gJXmaelFwcynkPN%2Bw2SPLkgliJFqhX8p9lRMewl2D67gPA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d369e3e120a-OSL\r\ncontent-length: 948\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":11699,"size_decoded":1761,"mime_type":"text/css","magic":"ASCII text","md5":"b1e115046f5f8b815ace3f1fb667d214","sha1":"a7162fa3b95d81113fdfc44b18a9b705ee34dab4","sha256":"3b195453d731c95504462ade50f8349ca74bf7b0a0eefaeb0de1311ccfba274d","sha512":"3096b0cbf44e6b585c41d922ce818efb3eb292ec259dc3361735b83d8773b39a94170f6ad56973b9eb9f0a9d28c9cfc071ebc627efa7097c9093b31bdf290c48","ssdeep":"192:qaeGWedRuAWxXi0XXR7KXBcyQghj7IpdVLT8zzSdUcJ/LkNZAEJJJnJ8iJIJr9Jj:U","tlshash":"6232b7957d93410a1aafb81b111b084c61d4d1cfe9baec90f8ad1207dffbec42bb1568","first_seen":"2026-07-27T03:56:42.489568Z","last_seen":"2026-07-27T05:30:59.818587Z","times_seen":6,"resource_available":false,"data":"LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNy0wMi0yMDI0ICovCgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItaWNvbi1saXN0LS1sYXlvdXQtaW5saW5lIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3Itd2lkZ2V0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgbWFyZ2luLXJpZ2h0OiAtOHB4OwogICAgbWFyZ2luLWxlZnQ6IC04cHgKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMuZWxlbWVudG9yLWlubGluZS1pdGVtcyAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIHsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgbWFyZ2luLWxlZnQ6IDhweAp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgd2lkdGg6IGF1dG87CiAgICBsZWZ0OiBhdXRvOwogICAgcmlnaHQ6IGF1dG87CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXItdG9wOiAwOwogICAgYm9yZGVyLWJvdHRvbTogMDsKICAgIGJvcmRlci1yaWdodDogMDsKICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgcmlnaHQ6IC04cHgKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMAp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgZGlzcGxheTogZmxleDsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIGFsaWduLWl0ZW1zOiB2YXIoLS1pY29uLXZlcnRpY2FsLWFsaWduLCBjZW50ZXIpCn0KCi5lbGVtZW50b3Itd2lkZ2V0IC5lbGVtZW50b3ItaWNvbi1saXN0LWljb24rLmVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCB7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICBwYWRkaW5nLWxlZnQ6IDVweAp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pY29uIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IHZhcigtLWljb24tdmVydGljYWwtb2Zmc2V0LCBpbml0aWFsKQp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pY29uIHN2ZyB7CiAgICB3aWR0aDogdmFyKC0tZS1pY29uLWxpc3QtaWNvbi1zaXplLCAxZW0pOwogICAgaGVpZ2h0OiB2YXIoLS1lLWljb24tbGlzdC1pY29uLXNpemUsIDFlbSkKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiBpIHsKICAgIHdpZHRoOiAxLjI1ZW07CiAgICBmb250LXNpemU6IHZhcigtLWUtaWNvbi1saXN0LWljb24tc2l6ZSkKfQoKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiB7CiAgICB0ZXh0LWFsaWduOiB2YXIoLS1lLWljb24tbGlzdC1pY29uLWFsaWduKQp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3Itd2lkZ2V0LWljb24tbGlzdCAuZWxlbWVudG9yLWljb24tbGlzdC1pY29uIHN2ZyB7CiAgICBtYXJnaW46IHZhcigtLWUtaWNvbi1saXN0LWljb24tbWFyZ2luLCAwIGNhbGModmFyKC0tZS1pY29uLWxpc3QtaWNvbi1zaXplLCAxZW0pICogLjI1KSAwIDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1saXN0LWl0ZW0tbGluay1mdWxsX3dpZHRoIGEgewogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgbWFyZ2luOiBhdXRvCn0KCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgIHRleHQtYWxpZ246IGxlZnQKfQoKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAp9CgouZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci1hbGlnbi1yaWdodCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICBsZWZ0OiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLWFsaWduLWxlZnQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgcmlnaHQ6IDAKfQoKQG1lZGlhIChtaW4td2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBtYXJnaW46IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1yaWdodCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbGVmdDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1sZWZ0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICByaWdodDogMAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMSkgewogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIG1hcmdpbjogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1yaWdodCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbGVmdDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWxlZnQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIHJpZ2h0OiAwCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbWFyZ2luOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBsZWZ0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tbGVmdCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgcmlnaHQ6IDAKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbWFyZ2luOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItdGFibGV0LWFsaWduLXJpZ2h0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBsZWZ0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgcmlnaHQ6IDAKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBtYXJnaW46IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIGxlZnQ6IDAKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1sZWZ0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICByaWdodDogMAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIG1hcmdpbjogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1yaWdodCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbGVmdDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWxlZnQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIHJpZ2h0OiAwCiAgICB9Cn0="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/dist/vendor/wp-polyfill.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.028Z","timestamp":1785130090028,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-includes/js/dist/vendor/wp-polyfill.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=GNjbI1IBSXKunCH0evsEDp20If7JreGTLmp0LAZmOkD86%2FqqKsV%2FJOUYKcNYSIVD9mObm3DYv1AQTgKC7MOxBWZmIcR3FpO%2FfCq33n6xpQvHZUCe7%2BBZVkXFwVd9ZJ4Lwyw6vd0jig%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ae49120a-OSL\r\ncontent-length: 43061\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":245400,"size_decoded":43890,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (1496)","md5":"78d592f45c3156d06f02eb64fbba7c24","sha1":"087336e7b9852a1511c21b72b08861307003f566","sha256":"9cf50f241c6056086005b2db74e52c01ac219dc4f3b681396b1ecfaf505b4bb4","sha512":"ce81cbaa09d25a02f5c439622677d68ef7ebf37cef5eb53dd5822a2f079213aeeefe56befeeb04952f6245c67d2f375ed5b2b585fe11a32e16d54f4f5ada5512","ssdeep":"6144:lTcDZtxCb7TJN3piehF2VSwmomo2WAEvYH3HWnUs2AGlEDQCV2MX3sqo0P:l0kdyef3wmLo2WAEvYH3HWnUs2AGlEDX","tlshash":"3c34ad4aaaf13171a243f039866f8909736a548b5d8efd067d0ca2905f5983cc7b9fdc","first_seen":"2026-07-27T03:56:42.485278Z","last_seen":"2026-07-27T05:30:59.796071Z","times_seen":6,"resource_available":true,"data":"ISBmdW5jdGlvbih0KSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgciwgZSwgbjsKICAgIGUgPSB7fSwgKG4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgaWYgKGVbdF0pIHJldHVybiBlW3RdLmV4cG9ydHM7CiAgICAgICAgdmFyIG8gPSBlW3RdID0gewogICAgICAgICAgICBpOiB0LAogICAgICAgICAgICBsOiAhMSwKICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICB9OwogICAgICAgIHJldHVybiByW3RdLmNhbGwoby5leHBvcnRzLCBvLCBvLmV4cG9ydHMsIG4pLCBvLmwgPSAhMCwgby5leHBvcnRzCiAgICB9KS5tID0gciA9IFtmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgxKSwgZSg3MSksIGUoNzgpLCBlKDgxKSwgZSg4MiksIGUoODQpLCBlKDg3KSwgZSg5MSksIGUoOTIpLCBlKDEwMCksIGUoMTAxKSwgZSgxMDQpLCBlKDEwOSksIGUoMTI1KSwgZSgxMjkpLCBlKDEzMCksIGUoMTMyKSwgZSgxMzQpLCBlKDEzNyksIGUoMTM4KSwgZSgxMzkpLCBlKDE0MCksIGUoMTQxKSwgZSgxNDUpLCBlKDE0OCksIGUoMTU1KSwgZSgxNTYpLCBlKDE1OSksIGUoMTYwKSwgZSgxNjYpLCBlKDE2NyksIGUoMTcwKSwgZSgxNzEpLCBlKDE3MiksIGUoMTczKSwgZSgxNzUpLCBlKDE3NiksIGUoMTc4KSwgZSgxNzkpLCBlKDE4MCksIGUoMTgxKSwgZSgxODIpLCBlKDE4MyksIGUoMTg0KSwgZSgxODkpLCBlKDIxMiksIGUoMjEzKSwgZSgyMTQpLCBlKDIxNiksIGUoMjE3KSwgZSgyMTgpLCBlKDIxOSksIGUoMjIwKSwgZSgyMjEpLCBlKDIyNiksIGUoMjI3KSwgZSgyMjgpLCBlKDIyOSksIGUoMjMwKSwgZSgyMzEpLCBlKDIzMyksIGUoMjM0KSwgZSgyMzUpLCBlKDIzNiksIGUoMjM3KSwgZSgyMzgpLCBlKDIzOSksIGUoMjQwKSwgZSgyNDEpLCBlKDI0MiksIGUoMjQzKSwgZSgyNDYpLCBlKDI0OCksIGUoMjUwKSwgZSgyNTIpLCBlKDI1MyksIGUoMjU0KSwgZSgyNTUpLCBlKDI1NiksIGUoMjU3KSwgZSgyNjApLCBlKDI2MSksIGUoMjYzKSwgZSgyNjQpLCBlKDI2NSksIGUoMjY2KSwgZSgyNjcpLCBlKDI2OCksIGUoMjcxKSwgZSgyNzIpLCBlKDI3MyksIGUoMjc0KSwgZSgyNzYpLCBlKDI3NyksIGUoMjc4KSwgZSgyNzkpLCBlKDI4MCksIGUoMjg0KSwgZSgyODUpLCBlKDI4NiksIGUoMjg3KSwgZSgyODgpLCBlKDI4OSksIGUoMjkwKSwgZSgyOTIpLCBlKDI5MyksIGUoMjk0KSwgZSgyOTgpLCBlKDI5OSksIGUoMzAxKSwgZSgzMDIpLCBlKDMwMyksIGUoMzA0KSwgZSgzMTApLCBlKDMxMiksIGUoMzEzKSwgZSgzMTUpLCBlKDMxNiksIGUoMzE3KSwgZSgzMTgpLCBlKDMxOSksIGUoMzIwKSwgZSgzMjEpLCBlKDMyMiksIGUoMzIzKSwgZSgzMjYpLCBlKDMyNyksIGUoMzM0KSwgZSgzMzcpLCBlKDMzOCksIGUoMzM5KSwgZSgzNDApLCBlKDM0MSksIGUoMzQzKSwgZSgzNDQpLCBlKDM0NiksIGUoMzQ3KSwgZSgzNDkpLCBlKDM1MCksIGUoMzUyKSwgZSgzNTMpLCBlKDM1NCksIGUoMzU1KSwgZSgzNTYpLCBlKDM1NyksIGUoMzU4KSwgZSgzNjApLCBlKDM2MSksIGUoMzYzKSwgZSgzNjQpLCBlKDM2NiksIGUoMzY4KSwgZSgzNjkpLCBlKDM3MSksIGUoMzc1KSwgZSgzNzYpLCBlKDM3OCksIGUoMzc5KSwgZSgzODEpLCBlKDM4MiksIGUoMzgzKSwgZSgzODQpLCBlKDM4NSksIGUoMzg2KSwgZSgzODcpLCBlKDM4OCksIGUoMzg5KSwgZSgzOTMpLCBlKDM5NCksIGUoMzk1KSwgZSgzOTYpLCBlKDM5NyksIGUoNDAwKSwgZSg0MDEpLCBlKDQwMiksIGUoNDAzKSwgZSg0MDQpLCBlKDQwNyksIGUoNDA4KSwgZSg0MDkpLCBlKDQxMCksIGUoNDEyKSwgZSg0MTUpLCBlKDQxNyksIGUoNDE4KSwgdC5leHBvcnRzID0gZSg0MTkpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzOSksCiAgICAgICAgICAgIGkgPSBlKDYzKSwKICAgICAgICAgICAgYSA9IGUoNjgpLAogICAgICAgICAgICB1ID0gZSg3MCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBhcml0eTogMSwKICAgICAgICAgICAgZm9yY2VkOiBlKDYpKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiA0Mjk0OTY3Mjk3ICE9PSBbXS5wdXNoLmNhbGwoewogICAgICAgICAgICAgICAgICAgIGxlbmd0aDogNDI5NDk2NzI5NgogICAgICAgICAgICAgICAgfSwgMSkKICAgICAgICAgICAgfSkpIHx8ICEgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgImxlbmd0aCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICExCiAgICAgICAgICAgICAgICAgICAgfSkucHVzaCgpCiAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBUeXBlRXJyb3IKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSgpCiAgICAgICAgfSwgewogICAgICAgICAgICBwdXNoOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG8odGhpcyksCiAgICAgICAgICAgICAgICAgICAgZSA9IGkociksCiAgICAgICAgICAgICAgICAgICAgbiA9IGFyZ3VtZW50cy5sZW5ndGg7CiAgICAgICAgICAgICAgICB1KGUgKyBuKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgbjsgYysrKSByW2VdID0gYXJndW1lbnRzW2NdLCBlKys7CiAgICAgICAgICAgICAgICByZXR1cm4gYShyLCBlKSwgZQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMyksCiAgICAgICAgICAgIGkgPSBuKDQpLmYsCiAgICAgICAgICAgIGEgPSBuKDQzKSwKICAgICAgICAgICAgdSA9IG4oNDcpLAogICAgICAgICAgICBjID0gbigzNyksCiAgICAgICAgICAgIGYgPSBuKDU1KSwKICAgICAgICAgICAgcyA9IG4oNjcpOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgdmFyIG4sIHAsIGwsIGggPSByLnRhcmdldCwKICAgICAgICAgICAgICAgIHYgPSByLmdsb2JhbCwKICAgICAgICAgICAgICAgIHkgPSByLnN0YXQsCiAgICAgICAgICAgICAgICBkID0gdiA/IG8gOiB5ID8gb1toXSB8fCBjKGgsIHt9KSA6IChvW2hdIHx8IHt9KS5wcm90b3R5cGU7CiAgICAgICAgICAgIGlmIChkKQogICAgICAgICAgICAgICAgZm9yIChuIGluIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAocCA9IGVbbl0sIGwgPSByLmRvbnRDYWxsR2V0U2V0ID8gKGwgPSBpKGQsIG4pKSAmJiBsLnZhbHVlIDogZFtuXSwgIXModiA/IG4gOiBoICsgKHkgPyAiLiIgOiAiIyIpICsgbiwgci5mb3JjZWQpICYmIGwgIT09IHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwID09IHR5cGVvZiBsKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgZihwLCBsKQogICAgICAgICAgICAgICAgICAgIH0oci5zaGFtIHx8IGwgJiYgbC5zaGFtKSAmJiBhKHAsICJzaGFtIiwgITApLCB1KGQsIG4sIHAsIHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIGZ1bmN0aW9uIGUodCkgewogICAgICAgICAgICByZXR1cm4gdCAmJiB0Lk1hdGggPT0gTWF0aCAmJiB0CiAgICAgICAgfQogICAgICAgIHQuZXhwb3J0cyA9IGUoIm9iamVjdCIgPT0gdHlwZW9mIGdsb2JhbFRoaXMgJiYgZ2xvYmFsVGhpcykgfHwgZSgib2JqZWN0IiA9PSB0eXBlb2Ygd2luZG93ICYmIHdpbmRvdykgfHwgZSgib2JqZWN0IiA9PSB0eXBlb2Ygc2VsZiAmJiBzZWxmKSB8fCBlKCJvYmplY3QiID09IHR5cGVvZiBnbG9iYWwgJiYgZ2xvYmFsKSB8fCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9KCkgfHwgdGhpcyB8fCBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDUpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoOSksCiAgICAgICAgICAgIGEgPSBlKDEwKSwKICAgICAgICAgICAgdSA9IGUoMTEpLAogICAgICAgICAgICBjID0gZSgxNyksCiAgICAgICAgICAgIGYgPSBlKDM4KSwKICAgICAgICAgICAgcyA9IGUoNDEpLAogICAgICAgICAgICBwID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsKICAgICAgICByLmYgPSBuID8gcCA6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgaWYgKHQgPSB1KHQpLCByID0gYyhyKSwgcykgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBwKHQsIHIpCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgICAgIGlmIChmKHQsIHIpKSByZXR1cm4gYSghbyhpLmYsIHQsIHIpLCB0W3JdKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSg2KSwgdC5leHBvcnRzID0gIWUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gNyAhPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSlbMV0KICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISF0KCkKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoOCk7CiAgICAgICAgdmFyIG4gPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDsKICAgICAgICB0LmV4cG9ydHMgPSBlID8gbi5iaW5kKG4pIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBuLmFwcGx5KG4sIGFyZ3VtZW50cykKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoNiksIHQuZXhwb3J0cyA9ICFlKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbigpIHt9LmJpbmQoKTsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgfHwgdC5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLAogICAgICAgICAgICBvID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwKICAgICAgICAgICAgaSA9IG8gJiYgIW4uY2FsbCh7CiAgICAgICAgICAgICAgICAxOiAyCiAgICAgICAgICAgIH0sIDEpOwogICAgICAgIHIuZiA9IGkgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAhISh0ID0gbyh0aGlzLCB0KSkgJiYgdC5lbnVtZXJhYmxlCiAgICAgICAgfSA6IG4KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhKDEgJiB0KSwKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogISgyICYgdCksCiAgICAgICAgICAgICAgICB3cml0YWJsZTogISg0ICYgdCksCiAgICAgICAgICAgICAgICB2YWx1ZTogcgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMiksCiAgICAgICAgICAgIG8gPSBlKDE1KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBuKG8odCkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMyksCiAgICAgICAgICAgIG8gPSBlKDYpLAogICAgICAgICAgICBpID0gZSgxNCksCiAgICAgICAgICAgIGEgPSBPYmplY3QsCiAgICAgICAgICAgIHUgPSBuKCIiLnNwbGl0KTsKICAgICAgICB0LmV4cG9ydHMgPSBvKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICFhKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCkKICAgICAgICB9KSkgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAiU3RyaW5nIiA9PSBpKHQpID8gdSh0LCAiIikgOiBhKHQpCiAgICAgICAgfSA6IGEKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoOCksCiAgICAgICAgICAgIG8gPSAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSkuY2FsbDsKICAgICAgICBlID0gbiAmJiBlLmJpbmQuYmluZChvLCBvKTsKICAgICAgICB0LmV4cG9ydHMgPSBuID8gZSA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8uYXBwbHkodCwgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gKGUgPSBlKDEzKSkoe30udG9TdHJpbmcpLAogICAgICAgICAgICBvID0gZSgiIi5zbGljZSk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gbyhuKHQpLCA4LCAtMSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDE2KSwKICAgICAgICAgICAgbyA9IFR5cGVFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChuKHQpKSB0aHJvdyBvKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiICsgdCk7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSkgewogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IHIgfHwgciA9PT0gdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTgpLAogICAgICAgICAgICBvID0gZSgyMik7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdCA9IG4odCwgInN0cmluZyIpLCBvKHQpID8gdCA6IHQgKyAiIgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDE5KSwKICAgICAgICAgICAgYSA9IG4oMjIpLAogICAgICAgICAgICB1ID0gbigyOSksCiAgICAgICAgICAgIGMgPSBuKDMyKSwKICAgICAgICAgICAgZiA9IChuID0gbigzMyksIFR5cGVFcnJvciksCiAgICAgICAgICAgIHMgPSBuKCJ0b1ByaW1pdGl2ZSIpOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgaWYgKCFpKHIpIHx8IGEocikpIHJldHVybiByOwogICAgICAgICAgICB2YXIgbiA9IHUociwgcyk7CiAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICBpZiAobiA9IG8obiwgciwgZSA9IGUgPT09IHQgPyAiZGVmYXVsdCIgOiBlKSwgIWkobikgfHwgYShuKSkgcmV0dXJuIG47CiAgICAgICAgICAgICAgICB0aHJvdyBmKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBjKHIsIGUgPSBlID09PSB0ID8gIm51bWJlciIgOiBlKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjApLAogICAgICAgICAgICBvID0gKGUgPSBlKDIxKSkuYWxsOwogICAgICAgIHQuZXhwb3J0cyA9IGUuSVNfSFRNTEREQSA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiB0ID8gbnVsbCAhPT0gdCA6IG4odCkgfHwgdCA9PT0gbwogICAgICAgIH0gOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgdCA/IG51bGwgIT09IHQgOiBuKHQpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gKGUgPSBlKDIxKSkuYWxsOwogICAgICAgIHQuZXhwb3J0cyA9IGUuSVNfSFRNTEREQSA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQgfHwgdCA9PT0gbgogICAgICAgIH0gOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSkgewogICAgICAgIHZhciBuID0gIm9iamVjdCIgPT0gdHlwZW9mIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbDsKICAgICAgICByLmV4cG9ydHMgPSB7CiAgICAgICAgICAgIGFsbDogbiwKICAgICAgICAgICAgSVNfSFRNTEREQTogdm9pZCAwID09PSBuICYmIG4gIT09IHQKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIzKSwKICAgICAgICAgICAgbyA9IGUoMjApLAogICAgICAgICAgICBpID0gZSgyNCksCiAgICAgICAgICAgIGEgPSAoZSA9IGUoMjUpLCBPYmplY3QpOwogICAgICAgIHQuZXhwb3J0cyA9IGUgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAic3ltYm9sIiA9PSB0eXBlb2YgdAogICAgICAgIH0gOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciByID0gbigiU3ltYm9sIik7CiAgICAgICAgICAgIHJldHVybiBvKHIpICYmIGkoci5wcm90b3R5cGUsIGEodCkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigzKSwKICAgICAgICAgICAgaSA9IG4oMjApOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gKG4gPSBvW3JdLCBpKG4pID8gbiA6IHQpIDogb1tyXSAmJiBvW3JdW2VdOwogICAgICAgICAgICB2YXIgbgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSgxMyksIHQuZXhwb3J0cyA9IGUoe30uaXNQcm90b3R5cGVPZikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSgyNiksIHQuZXhwb3J0cyA9IGUgJiYgIVN5bWJvbC5zaGFtICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjcpLAogICAgICAgICAgICBvID0gZSg2KSwKICAgICAgICAgICAgaSA9IGUoMykuU3RyaW5nOwogICAgICAgIHQuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhbygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gU3ltYm9sKCk7CiAgICAgICAgICAgIHJldHVybiAhaSh0KSB8fCAhKE9iamVjdCh0KSBpbnN0YW5jZW9mIFN5bWJvbCkgfHwgIVN5bWJvbC5zaGFtICYmIG4gJiYgbiA8IDQxCiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4sIG8sIGkgPSBlKDMpLAogICAgICAgICAgICBhID0gZSgyOCk7CiAgICAgICAgZSA9IGkucHJvY2VzcywgaSA9IGkuRGVubzsKICAgICAgICAhKG8gPSAoaSA9IChpID0gZSAmJiBlLnZlcnNpb25zIHx8IGkgJiYgaS52ZXJzaW9uKSAmJiBpLnY4KSA/IDAgPCAobiA9IGkuc3BsaXQoIi4iKSlbMF0gJiYgblswXSA8IDQgPyAxIDogKyhuWzBdICsgblsxXSkgOiBvKSAmJiBhICYmICghKG4gPSBhLm1hdGNoKC9FZGdlXC8oXGQrKS8pKSB8fCA3NCA8PSBuWzFdKSAmJiAobiA9IGEubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkgJiYgKG8gPSArblsxXSksIHQuZXhwb3J0cyA9IG8KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbmF2aWdhdG9yICYmIFN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAiIgogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigzMCksCiAgICAgICAgICAgIGkgPSBuKDE2KTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgIHJldHVybiBlID0gcltlXSwgaShlKSA/IHQgOiBvKGUpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyMCksCiAgICAgICAgICAgIG8gPSBlKDMxKSwKICAgICAgICAgICAgaSA9IFR5cGVFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChuKHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgdGhyb3cgaShvKHQpICsgIiBpcyBub3QgYSBmdW5jdGlvbiIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHZhciBlID0gU3RyaW5nOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBlKHQpCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiT2JqZWN0IgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg3KSwKICAgICAgICAgICAgbyA9IGUoMjApLAogICAgICAgICAgICBpID0gZSgxOSksCiAgICAgICAgICAgIGEgPSBUeXBlRXJyb3I7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICB2YXIgZSwgdTsKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09PSByICYmIG8oZSA9IHQudG9TdHJpbmcpICYmICFpKHUgPSBuKGUsIHQpKSkgcmV0dXJuIHU7CiAgICAgICAgICAgIGlmIChvKGUgPSB0LnZhbHVlT2YpICYmICFpKHUgPSBuKGUsIHQpKSkgcmV0dXJuIHU7CiAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPT0gciAmJiBvKGUgPSB0LnRvU3RyaW5nKSAmJiAhaSh1ID0gbihlLCB0KSkpIHJldHVybiB1OwogICAgICAgICAgICB0aHJvdyBhKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBlKDM0KSwKICAgICAgICAgICAgaSA9IGUoMzgpLAogICAgICAgICAgICBhID0gZSg0MCksCiAgICAgICAgICAgIHUgPSBlKDI2KSwKICAgICAgICAgICAgYyA9IChlID0gZSgyNSksIG4uU3ltYm9sKSwKICAgICAgICAgICAgZiA9IG8oIndrcyIpLAogICAgICAgICAgICBzID0gZSA/IGMuZm9yIHx8IGMgOiBjICYmIGMud2l0aG91dFNldHRlciB8fCBhOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGkoZiwgdCkgfHwgKGZbdF0gPSB1ICYmIGkoYywgdCkgPyBjW3RdIDogcygiU3ltYm9sLiIgKyB0KSksIGZbdF0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDM1KSwKICAgICAgICAgICAgaSA9IG4oMzYpOwogICAgICAgIChyLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgIHJldHVybiBpW3JdIHx8IChpW3JdID0gZSAhPT0gdCA/IGUgOiB7fSkKICAgICAgICB9KSgidmVyc2lvbnMiLCBbXSkucHVzaCh7CiAgICAgICAgICAgIHZlcnNpb246ICIzLjMxLjAiLAogICAgICAgICAgICBtb2RlOiBvID8gInB1cmUiIDogImdsb2JhbCIsCiAgICAgICAgICAgIGNvcHlyaWdodDogIsKpIDIwMTQtMjAyMyBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsCiAgICAgICAgICAgIGxpY2Vuc2U6ICJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjMxLjAvTElDRU5TRSIsCiAgICAgICAgICAgIHNvdXJjZTogImh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIgogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgdC5leHBvcnRzID0gITEKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBlKDM3KTsKICAgICAgICBlID0gbltlID0gIl9fY29yZS1qc19zaGFyZWRfXyJdIHx8IG8oZSwge30pOwogICAgICAgIHQuZXhwb3J0cyA9IGUKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgbyhuLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHIsCiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIG5bdF0gPSByCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzKSwKICAgICAgICAgICAgbyA9IGUoMzkpLAogICAgICAgICAgICBpID0gbih7fS5oYXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgdC5leHBvcnRzID0gT2JqZWN0Lmhhc093biB8fCBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiBpKG8odCksIHIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxNSksCiAgICAgICAgICAgIG8gPSBPYmplY3Q7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gbyhuKHQpKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBuID0gbigxMyk7CiAgICAgICAgdmFyIG8gPSAwLAogICAgICAgICAgICBpID0gTWF0aC5yYW5kb20oKSwKICAgICAgICAgICAgYSA9IG4oMS4udG9TdHJpbmcpOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgcmV0dXJuICJTeW1ib2woIiArIChyID09PSB0ID8gIiIgOiByKSArICIpXyIgKyBhKCsrbyArIGksIDM2KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNSksCiAgICAgICAgICAgIG8gPSBlKDYpLAogICAgICAgICAgICBpID0gZSg0Mik7CiAgICAgICAgdC5leHBvcnRzID0gIW4gJiYgIW8oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gNyAhPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoaSgiZGl2IiksICJhIiwgewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gNwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KS5hCiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMpLAogICAgICAgICAgICBvID0gKGUgPSBlKDE5KSwgbi5kb2N1bWVudCksCiAgICAgICAgICAgIGkgPSBlKG8pICYmIGUoby5jcmVhdGVFbGVtZW50KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBpID8gby5jcmVhdGVFbGVtZW50KHQpIDoge30KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDUpLAogICAgICAgICAgICBvID0gZSg0NCksCiAgICAgICAgICAgIGkgPSBlKDEwKTsKICAgICAgICB0LmV4cG9ydHMgPSBuID8gZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgICAgICByZXR1cm4gby5mKHQsIHIsIGkoMSwgZSkpCiAgICAgICAgfSA6IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRbcl0gPSBlLCB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg1KSwKICAgICAgICAgICAgbyA9IGUoNDEpLAogICAgICAgICAgICBpID0gZSg0NSksCiAgICAgICAgICAgIGEgPSBlKDQ2KSwKICAgICAgICAgICAgdSA9IGUoMTcpLAogICAgICAgICAgICBjID0gVHlwZUVycm9yLAogICAgICAgICAgICBmID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LAogICAgICAgICAgICBzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwKICAgICAgICAgICAgcCA9ICJlbnVtZXJhYmxlIiwKICAgICAgICAgICAgbCA9ICJjb25maWd1cmFibGUiLAogICAgICAgICAgICBoID0gIndyaXRhYmxlIjsKICAgICAgICByLmYgPSBuID8gaSA/IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgIHJldHVybiBhKHQpLCByID0gdShyKSwgYShlKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdCAmJiAicHJvdG90eXBlIiA9PT0gciAmJiAidmFsdWUiIGluIGUgJiYgaCBpbiBlICYmICFlW2hdICYmIChuID0gcyh0LCByKSkgJiYgbltoXSAmJiAodFtyXSA9IGUudmFsdWUsIGUgPSB7CiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IChsIGluIGUgPyBlIDogbilbbF0sCiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAocCBpbiBlID8gZSA6IG4pW3BdLAogICAgICAgICAgICAgICAgd3JpdGFibGU6ICExCiAgICAgICAgICAgIH0pLCBmKHQsIHIsIGUpCiAgICAgICAgfSA6IGYgOiBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIGlmIChhKHQpLCByID0gdShyKSwgYShlKSwgbykgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBmKHQsIHIsIGUpCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgICAgIGlmICgiZ2V0IiBpbiBlIHx8ICJzZXQiIGluIGUpIHRocm93IGMoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7CiAgICAgICAgICAgIHJldHVybiAidmFsdWUiIGluIGUgJiYgKHRbcl0gPSBlLnZhbHVlKSwgdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNSk7CiAgICAgICAgZSA9IGUoNik7CiAgICAgICAgdC5leHBvcnRzID0gbiAmJiBlKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIDQyICE9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgoZnVuY3Rpb24oKSB7fSksICJwcm90b3R5cGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogNDIsCiAgICAgICAgICAgICAgICB3cml0YWJsZTogITEKICAgICAgICAgICAgfSkucHJvdG90eXBlCiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDE5KSwKICAgICAgICAgICAgbyA9IFN0cmluZywKICAgICAgICAgICAgaSA9IFR5cGVFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChuKHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgdGhyb3cgaShvKHQpICsgIiBpcyBub3QgYW4gb2JqZWN0IikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIwKSwKICAgICAgICAgICAgaSA9IG4oNDQpLAogICAgICAgICAgICBhID0gbig0OCksCiAgICAgICAgICAgIHUgPSBuKDM3KTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlLCBuLCBjKSB7CiAgICAgICAgICAgIHZhciBmID0gKGMgPSBjIHx8IHt9KS5lbnVtZXJhYmxlLAogICAgICAgICAgICAgICAgcyA9IGMubmFtZSAhPT0gdCA/IGMubmFtZSA6IGU7CiAgICAgICAgICAgIGlmIChvKG4pICYmIGEobiwgcywgYyksIGMuZ2xvYmFsKSBmID8gcltlXSA9IG4gOiB1KGUsIG4pOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgYy51bnNhZmUgPyByW2VdICYmIChmID0gITApIDogZGVsZXRlIHJbZV0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHt9CiAgICAgICAgICAgICAgICBmID8gcltlXSA9IG4gOiBpLmYociwgZSwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogIWMubm9uQ29uZmlndXJhYmxlLAogICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhYy5ub25Xcml0YWJsZQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMTMpLAogICAgICAgICAgICBpID0gbig2KSwKICAgICAgICAgICAgYSA9IG4oMjApLAogICAgICAgICAgICB1ID0gbigzOCksCiAgICAgICAgICAgIGMgPSBuKDUpLAogICAgICAgICAgICBmID0gbig0OSkuQ09ORklHVVJBQkxFLAogICAgICAgICAgICBzID0gbig1MCksCiAgICAgICAgICAgIHAgPSAobiA9IG4oNTEpKS5lbmZvcmNlLAogICAgICAgICAgICBsID0gbi5nZXQsCiAgICAgICAgICAgIGggPSBTdHJpbmcsCiAgICAgICAgICAgIHYgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksCiAgICAgICAgICAgIHkgPSBvKCIiLnNsaWNlKSwKICAgICAgICAgICAgZCA9IG8oIiIucmVwbGFjZSksCiAgICAgICAgICAgIGcgPSBvKFtdLmpvaW4pLAogICAgICAgICAgICBiID0gYyAmJiAhaSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gOCAhPT0gdigoZnVuY3Rpb24oKSB7fSksICJsZW5ndGgiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDgKICAgICAgICAgICAgICAgIH0pLmxlbmd0aAogICAgICAgICAgICB9KSksCiAgICAgICAgICAgIG0gPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIik7CiAgICAgICAgciA9IHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICAgICAgIlN5bWJvbCgiID09PSB5KGgoZSksIDAsIDcpICYmIChlID0gIlsiICsgZChoKGUpLCAvXlN5bWJvbFwoKFteKV0qKVwpLywgIiQxIikgKyAiXSIpLCBuICYmIG4uZ2V0dGVyICYmIChlID0gImdldCAiICsgZSksIG4gJiYgbi5zZXR0ZXIgJiYgKGUgPSAic2V0ICIgKyBlKSwgKCF1KHIsICJuYW1lIikgfHwgZiAmJiByLm5hbWUgIT09IGUpICYmIChjID8gdihyLCAibmFtZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICB9KSA6IHIubmFtZSA9IGUpLCBiICYmIG4gJiYgdShuLCAiYXJpdHkiKSAmJiByLmxlbmd0aCAhPT0gbi5hcml0eSAmJiB2KHIsICJsZW5ndGgiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogbi5hcml0eQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIG4gJiYgdShuLCAiY29uc3RydWN0b3IiKSAmJiBuLmNvbnN0cnVjdG9yID8gYyAmJiB2KHIsICJwcm90b3R5cGUiLCB7CiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICExCiAgICAgICAgICAgICAgICB9KSA6IHIucHJvdG90eXBlICYmIChyLnByb3RvdHlwZSA9IHQpCiAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHt9CiAgICAgICAgICAgIHJldHVybiBuID0gcChyKSwgdShuLCAic291cmNlIikgfHwgKG4uc291cmNlID0gZyhtLCAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGUgOiAiIikpLCByCiAgICAgICAgfTsKICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSByKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGEodGhpcykgJiYgbCh0aGlzKS5zb3VyY2UgfHwgcyh0aGlzKQogICAgICAgIH0pLCAidG9TdHJpbmciKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg1KSwKICAgICAgICAgICAgbyA9IGUoMzgpLAogICAgICAgICAgICBpID0gRnVuY3Rpb24ucHJvdG90eXBlLAogICAgICAgICAgICBhID0gbiAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwogICAgICAgIG8gPSAoZSA9IG8oaSwgIm5hbWUiKSkgJiYgInNvbWV0aGluZyIgPT09IGZ1bmN0aW9uKCkge30ubmFtZSwgaSA9IGUgJiYgKCFuIHx8IG4gJiYgYShpLCAibmFtZSIpLmNvbmZpZ3VyYWJsZSk7CiAgICAgICAgdC5leHBvcnRzID0gewogICAgICAgICAgICBFWElTVFM6IGUsCiAgICAgICAgICAgIFBST1BFUjogbywKICAgICAgICAgICAgQ09ORklHVVJBQkxFOiBpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMyksCiAgICAgICAgICAgIG8gPSBlKDIwKSwKICAgICAgICAgICAgaSA9IChlID0gZSgzNiksIG4oRnVuY3Rpb24udG9TdHJpbmcpKTsKICAgICAgICBvKGUuaW5zcGVjdFNvdXJjZSkgfHwgKGUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGkodCkKICAgICAgICB9KSwgdC5leHBvcnRzID0gZS5pbnNwZWN0U291cmNlCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4sIG8sIGksIGEsIHUgPSBlKDUyKSwKICAgICAgICAgICAgYyA9IGUoMyksCiAgICAgICAgICAgIGYgPSBlKDE5KSwKICAgICAgICAgICAgcyA9IGUoNDMpLAogICAgICAgICAgICBwID0gZSgzOCksCiAgICAgICAgICAgIGwgPSBlKDM2KSwKICAgICAgICAgICAgaCA9IGUoNTMpLAogICAgICAgICAgICB2ID0gKGUgPSBlKDU0KSwgIk9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIiksCiAgICAgICAgICAgIHkgPSBjLlR5cGVFcnJvciwKICAgICAgICAgICAgZCA9IChjID0gYy5XZWFrTWFwLCB1IHx8IGwuc3RhdGUgPyAoKGkgPSBsLnN0YXRlIHx8IChsLnN0YXRlID0gbmV3IGMpKS5nZXQgPSBpLmdldCwgaS5oYXMgPSBpLmhhcywgaS5zZXQgPSBpLnNldCwgbiA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIGlmIChpLmhhcyh0KSkgdGhyb3cgeSh2KTsKICAgICAgICAgICAgICAgIHJldHVybiByLmZhY2FkZSA9IHQsIGkuc2V0KHQsIHIpLCByCiAgICAgICAgICAgIH0sIG8gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaS5nZXQodCkgfHwge30KICAgICAgICAgICAgfSwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkuaGFzKHQpCiAgICAgICAgICAgIH0pIDogKGVbYSA9IGgoInN0YXRlIildID0gITAsIG4gPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICBpZiAocCh0LCBhKSkgdGhyb3cgeSh2KTsKICAgICAgICAgICAgICAgIHJldHVybiByLmZhY2FkZSA9IHQsIHModCwgYSwgciksIHIKICAgICAgICAgICAgfSwgbyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwKHQsIGEpID8gdFthXSA6IHt9CiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwKHQsIGEpCiAgICAgICAgICAgIH0pKTsKICAgICAgICB0LmV4cG9ydHMgPSB7CiAgICAgICAgICAgIHNldDogbiwKICAgICAgICAgICAgZ2V0OiBvLAogICAgICAgICAgICBoYXM6IGQsCiAgICAgICAgICAgIGVuZm9yY2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBkKHQpID8gbyh0KSA6IG4odCwge30pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldHRlckZvcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWYocikgfHwgKGUgPSBvKHIpKS50eXBlICE9PSB0KSB0aHJvdyB5KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIgKyB0ICsgIiByZXF1aXJlZCIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMpOwogICAgICAgIGUgPSBlKDIwKSwgbiA9IG4uV2Vha01hcDsKICAgICAgICB0LmV4cG9ydHMgPSBlKG4pICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcobikpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDM0KSwKICAgICAgICAgICAgbyA9IGUoNDApLAogICAgICAgICAgICBpID0gbigia2V5cyIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGlbdF0gfHwgKGlbdF0gPSBvKHQpKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSB7fQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzOCksCiAgICAgICAgICAgIG8gPSBlKDU2KSwKICAgICAgICAgICAgaSA9IGUoNCksCiAgICAgICAgICAgIGEgPSBlKDQ0KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHUgPSBvKHIpLCBjID0gYS5mLCBmID0gaS5mLCBzID0gMDsgcyA8IHUubGVuZ3RoOyBzKyspIHsKICAgICAgICAgICAgICAgIHZhciBwID0gdVtzXTsKICAgICAgICAgICAgICAgIG4odCwgcCkgfHwgZSAmJiBuKGUsIHApIHx8IGModCwgcCwgZihyLCBwKSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjMpLAogICAgICAgICAgICBvID0gZSgxMyksCiAgICAgICAgICAgIGkgPSBlKDU3KSwKICAgICAgICAgICAgYSA9IGUoNjYpLAogICAgICAgICAgICB1ID0gZSg0NiksCiAgICAgICAgICAgIGMgPSBvKFtdLmNvbmNhdCk7CiAgICAgICAgdC5leHBvcnRzID0gbigiUmVmbGVjdCIsICJvd25LZXlzIikgfHwgZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgciA9IGkuZih1KHQpKSwKICAgICAgICAgICAgICAgIGUgPSBhLmY7CiAgICAgICAgICAgIHJldHVybiBlID8gYyhyLCBlKHQpKSA6IHIKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDU4KSwKICAgICAgICAgICAgbyA9IGUoNjUpLmNvbmNhdCgibGVuZ3RoIiwgInByb3RvdHlwZSIpOwogICAgICAgIHIuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG4odCwgbykKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzKSwKICAgICAgICAgICAgbyA9IGUoMzgpLAogICAgICAgICAgICBpID0gZSgxMSksCiAgICAgICAgICAgIGEgPSBlKDU5KS5pbmRleE9mLAogICAgICAgICAgICB1ID0gZSg1NCksCiAgICAgICAgICAgIGMgPSBuKFtdLnB1c2gpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgdmFyIGUsIG4gPSBpKHQpLAogICAgICAgICAgICAgICAgZiA9IDAsCiAgICAgICAgICAgICAgICBzID0gW107CiAgICAgICAgICAgIGZvciAoZSBpbiBuKSAhbyh1LCBlKSAmJiBvKG4sIGUpICYmIGMocywgZSk7CiAgICAgICAgICAgIGZvciAoOyByLmxlbmd0aCA+IGY7KSBvKG4sIGUgPSByW2YrK10pICYmICh+YShzLCBlKSB8fCBjKHMsIGUpKTsKICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDExKSwKICAgICAgICAgICAgbyA9IGUoNjApLAogICAgICAgICAgICBpID0gZSg2Myk7CiAgICAgICAgZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHIsIGUsIGEpIHsKICAgICAgICAgICAgICAgIHZhciB1LCBjID0gbihyKSwKICAgICAgICAgICAgICAgICAgICBmID0gaShjKSwKICAgICAgICAgICAgICAgICAgICBzID0gbyhhLCBmKTsKICAgICAgICAgICAgICAgIGlmICh0ICYmIGUgIT0gZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAoOyBzIDwgZjspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodSA9IGNbcysrXSkgIT0gdSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgcyA8IGY7IHMrKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0IHx8IHMgaW4gYykgJiYgY1tzXSA9PT0gZSkgcmV0dXJuIHQgfHwgcyB8fCAwOwogICAgICAgICAgICAgICAgcmV0dXJuICF0ICYmIC0xCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHQuZXhwb3J0cyA9IHsKICAgICAgICAgICAgaW5jbHVkZXM6IGUoITApLAogICAgICAgICAgICBpbmRleE9mOiBlKCExKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjEpLAogICAgICAgICAgICBvID0gTWF0aC5tYXgsCiAgICAgICAgICAgIGkgPSBNYXRoLm1pbjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiAodCA9IG4odCkpIDwgMCA/IG8odCArIHIsIDApIDogaSh0LCByKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICh0ID0gK3QpICE9IHQgfHwgMCA9PSB0ID8gMCA6IG4odCkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgdmFyIGUgPSBNYXRoLmNlaWwsCiAgICAgICAgICAgIG4gPSBNYXRoLmZsb29yOwogICAgICAgIHQuZXhwb3J0cyA9IE1hdGgudHJ1bmMgfHwgZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gKDAgPCAodCA9ICt0KSA/IG4gOiBlKSh0KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjQpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG4odC5sZW5ndGgpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg2MSksCiAgICAgICAgICAgIG8gPSBNYXRoLm1pbjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAwIDwgdCA/IG8obih0KSwgOTAwNzE5OTI1NDc0MDk5MSkgOiAwCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHQuZXhwb3J0cyA9IFsiY29uc3RydWN0b3IiLCAiaGFzT3duUHJvcGVydHkiLCAiaXNQcm90b3R5cGVPZiIsICJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsICJ0b0xvY2FsZVN0cmluZyIsICJ0b1N0cmluZyIsICJ2YWx1ZU9mIl0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICByLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDYpLAogICAgICAgICAgICBvID0gZSgyMCksCiAgICAgICAgICAgIGkgPSAvI3xcLnByb3RvdHlwZVwuLywKICAgICAgICAgICAgYSA9IChlID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuICh0ID0gdVthKHQpXSkgPT0gZiB8fCB0ICE9IGMgJiYgKG8ocikgPyBuKHIpIDogISFyKQogICAgICAgICAgICB9LCBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcodCkucmVwbGFjZShpLCAiLiIpLnRvTG93ZXJDYXNlKCkKICAgICAgICAgICAgfSksCiAgICAgICAgICAgIHUgPSBlLmRhdGEgPSB7fSwKICAgICAgICAgICAgYyA9IGUuTkFUSVZFID0gIk4iLAogICAgICAgICAgICBmID0gZS5QT0xZRklMTCA9ICJQIjsKICAgICAgICB0LmV4cG9ydHMgPSBlCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDUpLAogICAgICAgICAgICBpID0gbig2OSksCiAgICAgICAgICAgIGEgPSBUeXBlRXJyb3IsCiAgICAgICAgICAgIHUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwogICAgICAgIG8gPSBvICYmICEgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh0aGlzICE9PSB0KSByZXR1cm4gMTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgImxlbmd0aCIsIHsKICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITEKICAgICAgICAgICAgICAgIH0pLmxlbmd0aCA9IDEKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBUeXBlRXJyb3IKICAgICAgICAgICAgfQogICAgICAgIH0oKTsKICAgICAgICByLmV4cG9ydHMgPSBvID8gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICBpZiAoaSh0KSAmJiAhdSh0LCAibGVuZ3RoIikud3JpdGFibGUpIHRocm93IGEoIkNhbm5vdCBzZXQgcmVhZCBvbmx5IC5sZW5ndGgiKTsKICAgICAgICAgICAgcmV0dXJuIHQubGVuZ3RoID0gcgogICAgICAgIH0gOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiB0Lmxlbmd0aCA9IHIKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDE0KTsKICAgICAgICB0LmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJBcnJheSIgPT0gbih0KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB2YXIgZSA9IFR5cGVFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICg5MDA3MTk5MjU0NzQwOTkxIDwgdCkgdGhyb3cgZSgiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNzIpLAogICAgICAgICAgICBpID0gZSgxMSksCiAgICAgICAgICAgIGEgPSAoZSA9IGUoNzMpLCBBcnJheSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB0b1JldmVyc2VkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKGkodGhpcyksIGEpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgZSgidG9SZXZlcnNlZCIpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDYzKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIGZvciAodmFyIGUgPSBuKHQpLCBvID0gbmV3IHIoZSksIGkgPSAwOyBpIDwgZTsgaSsrKSBvW2ldID0gdFtlIC0gaSAtIDFdOwogICAgICAgICAgICByZXR1cm4gbwogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMzMpLAogICAgICAgICAgICBpID0gbig3NCksCiAgICAgICAgICAgIGEgPSAobiA9IG4oNDQpLmYsIG8oInVuc2NvcGFibGVzIikpLAogICAgICAgICAgICB1ID0gQXJyYXkucHJvdG90eXBlOwogICAgICAgIHVbYV0gPT0gdCAmJiBuKHUsIGEsIHsKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgdmFsdWU6IGkobnVsbCkKICAgICAgICB9KSwgci5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB1W2FdW3RdID0gITAKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgZnVuY3Rpb24gbygpIHt9CgogICAgICAgIGZ1bmN0aW9uIGkodCkgewogICAgICAgICAgICByZXR1cm4gIjxzY3JpcHQ+IiArIHQgKyAiPC8iICsgdiArICI+IgogICAgICAgIH0KICAgICAgICB2YXIgYSwgdSA9IG4oNDYpLAogICAgICAgICAgICBjID0gbig3NSksCiAgICAgICAgICAgIGYgPSBuKDY1KSwKICAgICAgICAgICAgcyA9IG4oNTQpLAogICAgICAgICAgICBwID0gbig3NyksCiAgICAgICAgICAgIGwgPSBuKDQyKSwKICAgICAgICAgICAgaCA9IChuID0gbig1MyksICJwcm90b3R5cGUiKSwKICAgICAgICAgICAgdiA9ICJzY3JpcHQiLAogICAgICAgICAgICB5ID0gbigiSUVfUFJPVE8iKSwKICAgICAgICAgICAgZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBhID0gbmV3IEFjdGl2ZVhPYmplY3QoImh0bWxmaWxlIikKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgIGQgPSAidW5kZWZpbmVkIiA9PSB0eXBlb2YgZG9jdW1lbnQgfHwgZG9jdW1lbnQuZG9tYWluICYmIGEgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdC53cml0ZShpKCIiKSksIHQuY2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQucGFyZW50V2luZG93Lk9iamVjdDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IG51bGwsIHIKICAgICAgICAgICAgICAgIH0oYSkgOiAoKHQgPSBsKCJpZnJhbWUiKSkuc3R5bGUuZGlzcGxheSA9ICJub25lIiwgcC5hcHBlbmRDaGlsZCh0KSwgdC5zcmMgPSBTdHJpbmcoImphdmFzY3JpcHQ6IiksICh0ID0gdC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksIHQud3JpdGUoaSgiZG9jdW1lbnQuRj1PYmplY3QiKSksIHQuY2xvc2UoKSwgdC5GKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBmLmxlbmd0aDsgci0tOykgZGVsZXRlIGRbaF1bZltyXV07CiAgICAgICAgICAgICAgICByZXR1cm4gZCgpCiAgICAgICAgICAgIH07CiAgICAgICAgc1t5XSA9ICEwLCByLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgIHJldHVybiBudWxsICE9PSByID8gKG9baF0gPSB1KHIpLCBuID0gbmV3IG8sIG9baF0gPSBudWxsLCBuW3ldID0gcikgOiBuID0gZCgpLCBlID09PSB0ID8gbiA6IGMuZihuLCBlKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNSksCiAgICAgICAgICAgIG8gPSBlKDQ1KSwKICAgICAgICAgICAgaSA9IGUoNDQpLAogICAgICAgICAgICBhID0gZSg0NiksCiAgICAgICAgICAgIHUgPSBlKDExKSwKICAgICAgICAgICAgYyA9IGUoNzYpOwogICAgICAgIHIuZiA9IG4gJiYgIW8gPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgYSh0KTsKICAgICAgICAgICAgZm9yICh2YXIgZSwgbiA9IHUociksIG8gPSBjKHIpLCBmID0gby5sZW5ndGgsIHMgPSAwOyBzIDwgZjspIGkuZih0LCBlID0gb1tzKytdLCBuW2VdKTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDU4KSwKICAgICAgICAgICAgbyA9IGUoNjUpOwogICAgICAgIHQuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG4odCwgbykKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoMjMpLCB0LmV4cG9ydHMgPSBlKCJkb2N1bWVudCIsICJkb2N1bWVudEVsZW1lbnQiKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTMpLAogICAgICAgICAgICBhID0gbigzMCksCiAgICAgICAgICAgIHUgPSBuKDExKSwKICAgICAgICAgICAgYyA9IG4oNzkpLAogICAgICAgICAgICBmID0gbig4MCksCiAgICAgICAgICAgIHMgPSAobiA9IG4oNzMpLCBBcnJheSksCiAgICAgICAgICAgIHAgPSBpKGYoIkFycmF5Iikuc29ydCk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB0b1NvcnRlZDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgciAhPT0gdCAmJiBhKHIpOwogICAgICAgICAgICAgICAgdmFyIGUgPSB1KHRoaXMpOwogICAgICAgICAgICAgICAgZSA9IGMocywgZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gcChlLCByKQogICAgICAgICAgICB9CiAgICAgICAgfSksIG4oInRvU29ydGVkIikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjMpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IDAsIG8gPSBuKHIpLCBpID0gbmV3IHQobyk7IGUgPCBvOykgaVtlXSA9IHJbZSsrXTsKICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG5bdF0ucHJvdG90eXBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNzMpLAogICAgICAgICAgICBpID0gZSg3MCksCiAgICAgICAgICAgIGEgPSBlKDYzKSwKICAgICAgICAgICAgdSA9IGUoNjApLAogICAgICAgICAgICBjID0gZSgxMSksCiAgICAgICAgICAgIGYgPSBlKDYxKSwKICAgICAgICAgICAgcyA9IEFycmF5LAogICAgICAgICAgICBwID0gTWF0aC5tYXgsCiAgICAgICAgICAgIGwgPSBNYXRoLm1pbjsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXJyYXkiLAogICAgICAgICAgICBwcm90bzogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHRvU3BsaWNlZDogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgdmFyIGUsIG4sIG8sIGgsIHYgPSBjKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIHkgPSBhKHYpLAogICAgICAgICAgICAgICAgICAgIGQgPSB1KHQsIHkpLAogICAgICAgICAgICAgICAgICAgIGcgPSAwOwogICAgICAgICAgICAgICAgZm9yICgwID09PSAodCA9IGFyZ3VtZW50cy5sZW5ndGgpID8gZSA9IG4gPSAwIDogbiA9IDEgPT09IHQgPyAoZSA9IDAsIHkgLSBkKSA6IChlID0gdCAtIDIsIGwocChmKHIpLCAwKSwgeSAtIGQpKSwgbyA9IGkoeSArIGUgLSBuKSwgaCA9IHMobyk7IGcgPCBkOyBnKyspIGhbZ10gPSB2W2ddOwogICAgICAgICAgICAgICAgZm9yICg7IGcgPCBkICsgZTsgZysrKSBoW2ddID0gYXJndW1lbnRzW2cgLSBkICsgMl07CiAgICAgICAgICAgICAgICBmb3IgKDsgZyA8IG87IGcrKykgaFtnXSA9IHZbZyArIG4gLSBlXTsKICAgICAgICAgICAgICAgIHJldHVybiBoCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgbygidG9TcGxpY2VkIikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDgzKSwKICAgICAgICAgICAgaSA9IGUoMTEpLAogICAgICAgICAgICBhID0gQXJyYXk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB3aXRoOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyhpKHRoaXMpLCBhLCB0LCByKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjMpLAogICAgICAgICAgICBvID0gZSg2MSksCiAgICAgICAgICAgIGkgPSBSYW5nZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUsIGEpIHsKICAgICAgICAgICAgdmFyIHUgPSBuKHQpLAogICAgICAgICAgICAgICAgYyA9IChlID0gbyhlKSkgPCAwID8gdSArIGUgOiBlOwogICAgICAgICAgICBpZiAodSA8PSBjIHx8IGMgPCAwKSB0aHJvdyBpKCJJbmNvcnJlY3QgaW5kZXgiKTsKICAgICAgICAgICAgZm9yICh2YXIgZiA9IG5ldyByKHUpLCBzID0gMDsgcyA8IHU7IHMrKykgZltzXSA9IHMgPT09IGMgPyBhIDogdFtzXTsKICAgICAgICAgICAgcmV0dXJuIGYKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMpLAogICAgICAgICAgICBvID0gZSg1KSwKICAgICAgICAgICAgaSA9IGUoODUpLAogICAgICAgICAgICBhID0gZSg4NiksCiAgICAgICAgICAgIHUgPSAoZSA9IGUoNiksIG4uUmVnRXhwKSwKICAgICAgICAgICAgYyA9IHUucHJvdG90eXBlOwogICAgICAgIG8gJiYgZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gITA7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB1KCIuIiwgImQiKQogICAgICAgICAgICB9IGNhdGNoIChyKSB7CiAgICAgICAgICAgICAgICB0ID0gITEKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgciwgZSA9IHt9LAogICAgICAgICAgICAgICAgbiA9ICIiLAogICAgICAgICAgICAgICAgbyA9IHQgPyAiZGdpbXN5IiA6ICJnaW1zeSIsCiAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgIGRvdEFsbDogInMiLAogICAgICAgICAgICAgICAgICAgIGdsb2JhbDogImciLAogICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2U6ICJpIiwKICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmU6ICJtIiwKICAgICAgICAgICAgICAgICAgICBzdGlja3k6ICJ5IgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yIChyIGluIHQgJiYgKGkuaGFzSW5kaWNlcyA9ICJkIiksIGkpICEgZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiArPSByLCAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0ociwgaVtyXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGMsICJmbGFncyIpLmdldC5jYWxsKGUpICE9PSBvIHx8IG4gIT09IG8KICAgICAgICB9KSkgJiYgaShjLCAiZmxhZ3MiLCB7CiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIGdldDogYQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDQ4KSwKICAgICAgICAgICAgbyA9IGUoNDQpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUuZ2V0ICYmIG4oZS5nZXQsIHIsIHsKICAgICAgICAgICAgICAgIGdldHRlcjogITAKICAgICAgICAgICAgfSksIGUuc2V0ICYmIG4oZS5zZXQsIHIsIHsKICAgICAgICAgICAgICAgIHNldHRlcjogITAKICAgICAgICAgICAgfSksIG8uZih0LCByLCBlKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNDYpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IG4odGhpcyksCiAgICAgICAgICAgICAgICByID0gIiI7CiAgICAgICAgICAgIHJldHVybiB0Lmhhc0luZGljZXMgJiYgKHIgKz0gImQiKSwgdC5nbG9iYWwgJiYgKHIgKz0gImciKSwgdC5pZ25vcmVDYXNlICYmIChyICs9ICJpIiksIHQubXVsdGlsaW5lICYmIChyICs9ICJtIiksIHQuZG90QWxsICYmIChyICs9ICJzIiksIHQudW5pY29kZSAmJiAociArPSAidSIpLCB0LnVuaWNvZGVTZXRzICYmIChyICs9ICJ2IiksIHQuc3RpY2t5ICYmIChyICs9ICJ5IiksIHIKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgxMyksCiAgICAgICAgICAgIGkgPSBlKDE1KSwKICAgICAgICAgICAgYSA9IGUoODgpLAogICAgICAgICAgICB1ID0gbygiIi5jaGFyQ29kZUF0KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU3RyaW5nIiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpc1dlbGxGb3JtZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGEoaSh0aGlzKSksIHIgPSB0Lmxlbmd0aCwgZSA9IDA7IGUgPCByOyBlKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHUodCwgZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKDU1Mjk2ID09ICg2MzQ4OCAmIG4pICYmICg1NjMyMCA8PSBuIHx8ICsrZSA+PSByIHx8IDU2MzIwICE9ICg2NDUxMiAmIHUodCwgZSkpKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDg5KSwKICAgICAgICAgICAgbyA9IFN0cmluZzsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgiU3ltYm9sIiA9PT0gbih0KSkgdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpOwogICAgICAgICAgICByZXR1cm4gbyh0KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oOTApLAogICAgICAgICAgICBpID0gbigyMCksCiAgICAgICAgICAgIGEgPSBuKDE0KSwKICAgICAgICAgICAgdSA9IG4oMzMpKCJ0b1N0cmluZ1RhZyIpLAogICAgICAgICAgICBjID0gT2JqZWN0LAogICAgICAgICAgICBmID0gIkFyZ3VtZW50cyIgPT0gYShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMKICAgICAgICAgICAgfSgpKTsKICAgICAgICByLmV4cG9ydHMgPSBvID8gYSA6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIHJldHVybiByID09PSB0ID8gIlVuZGVmaW5lZCIgOiBudWxsID09PSByID8gIk51bGwiIDogInN0cmluZyIgPT0gdHlwZW9mKHIgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0W3JdCiAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICB9KGUgPSBjKHIpLCB1KSkgPyByIDogZiA/IGEoZSkgOiAiT2JqZWN0IiA9PSAociA9IGEoZSkpICYmIGkoZS5jYWxsZWUpID8gIkFyZ3VtZW50cyIgOiByCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0ge307CiAgICAgICAgbltlKDMzKSgidG9TdHJpbmdUYWciKV0gPSAieiIsIHQuZXhwb3J0cyA9ICJbb2JqZWN0IHpdIiA9PT0gU3RyaW5nKG4pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMTMpLAogICAgICAgICAgICBhID0gZSgxNSksCiAgICAgICAgICAgIHUgPSBlKDg4KSwKICAgICAgICAgICAgYyA9IChlID0gZSg2KSwgQXJyYXkpLAogICAgICAgICAgICBmID0gaSgiIi5jaGFyQXQpLAogICAgICAgICAgICBzID0gaSgiIi5jaGFyQ29kZUF0KSwKICAgICAgICAgICAgcCA9IGkoW10uam9pbiksCiAgICAgICAgICAgIGwgPSAiIi50b1dlbGxGb3JtZWQsCiAgICAgICAgICAgIGggPSBsICYmIGUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICIxIiAhPT0gbyhsLCAxKQogICAgICAgICAgICB9KSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlN0cmluZyIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiBoCiAgICAgICAgfSwgewogICAgICAgICAgICB0b1dlbGxGb3JtZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB1KGEodGhpcykpOwogICAgICAgICAgICAgICAgaWYgKGgpIHJldHVybiBvKGwsIHQpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IHQubGVuZ3RoLCBlID0gYyhyKSwgbiA9IDA7IG4gPCByOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHModCwgbik7CiAgICAgICAgICAgICAgICAgICAgNTUyOTYgIT0gKDYzNDg4ICYgaSkgPyBlW25dID0gZih0LCBuKSA6IDU2MzIwIDw9IGkgfHwgciA8PSBuICsgMSB8fCA1NjMyMCAhPSAoNjQ1MTIgJiBzKHQsIG4gKyAxKSkgPyBlW25dID0gIu+/vSIgOiAoZVtuXSA9IGYodCwgbiksIGVbKytuXSA9IGYodCwgbikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcChlLCAiIikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcyKSwKICAgICAgICAgICAgbyA9IGUoOTMpLAogICAgICAgICAgICBpID0gby5hVHlwZWRBcnJheSwKICAgICAgICAgICAgYSA9IChlID0gby5leHBvcnRUeXBlZEFycmF5TWV0aG9kLCBvLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgICAgZSgidG9SZXZlcnNlZCIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG4oaSh0aGlzKSwgYSh0aGlzKSkKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgcmV0dXJuICEhbCh0KSAmJiAodCA9IHYodCksIGgoQywgdCkgfHwgaChfLCB0KSkKICAgICAgICB9CiAgICAgICAgdmFyIGksIGEsIHUsIGMgPSBuKDk0KSwKICAgICAgICAgICAgZiA9IG4oNSksCiAgICAgICAgICAgIHMgPSBuKDMpLAogICAgICAgICAgICBwID0gbigyMCksCiAgICAgICAgICAgIGwgPSBuKDE5KSwKICAgICAgICAgICAgaCA9IG4oMzgpLAogICAgICAgICAgICB2ID0gbig4OSksCiAgICAgICAgICAgIHkgPSBuKDMxKSwKICAgICAgICAgICAgZCA9IG4oNDMpLAogICAgICAgICAgICBnID0gbig0NyksCiAgICAgICAgICAgIGIgPSBuKDg1KSwKICAgICAgICAgICAgbSA9IG4oMjQpLAogICAgICAgICAgICB4ID0gbig5NSksCiAgICAgICAgICAgIHcgPSBuKDk3KSwKICAgICAgICAgICAgUyA9IG4oMzMpLAogICAgICAgICAgICBBID0gbig0MCksCiAgICAgICAgICAgIEUgPSAoSSA9IG4oNTEpKS5lbmZvcmNlLAogICAgICAgICAgICBPID0gSS5nZXQsCiAgICAgICAgICAgIFIgPSAobiA9IHMuSW50OEFycmF5KSAmJiBuLnByb3RvdHlwZSwKICAgICAgICAgICAgSSA9IChJID0gcy5VaW50OENsYW1wZWRBcnJheSkgJiYgSS5wcm90b3R5cGUsCiAgICAgICAgICAgIGsgPSBuICYmIHgobiksCiAgICAgICAgICAgIFQgPSBSICYmIHgoUiksCiAgICAgICAgICAgIE0gPSAobiA9IE9iamVjdC5wcm90b3R5cGUsIHMuVHlwZUVycm9yKSwKICAgICAgICAgICAgaiA9IChTID0gUygidG9TdHJpbmdUYWciKSwgQSgiVFlQRURfQVJSQVlfVEFHIikpLAogICAgICAgICAgICBQID0gIlR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsCiAgICAgICAgICAgIEQgPSBjICYmICEhdyAmJiAiT3BlcmEiICE9PSB2KHMub3BlcmEpLAogICAgICAgICAgICBDID0gKGMgPSAhMSwgewogICAgICAgICAgICAgICAgSW50OEFycmF5OiAxLAogICAgICAgICAgICAgICAgVWludDhBcnJheTogMSwKICAgICAgICAgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5OiAxLAogICAgICAgICAgICAgICAgSW50MTZBcnJheTogMiwKICAgICAgICAgICAgICAgIFVpbnQxNkFycmF5OiAyLAogICAgICAgICAgICAgICAgSW50MzJBcnJheTogNCwKICAgICAgICAgICAgICAgIFVpbnQzMkFycmF5OiA0LAogICAgICAgICAgICAgICAgRmxvYXQzMkFycmF5OiA0LAogICAgICAgICAgICAgICAgRmxvYXQ2NEFycmF5OiA4CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBfID0gewogICAgICAgICAgICAgICAgQmlnSW50NjRBcnJheTogOCwKICAgICAgICAgICAgICAgIEJpZ1VpbnQ2NEFycmF5OiA4CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHgodCk7CiAgICAgICAgICAgICAgICBpZiAobChyKSkgcmV0dXJuICh0ID0gTyhyKSkgJiYgaCh0LCBQKSA/IHRbUF0gOiBOKHIpCiAgICAgICAgICAgIH07CiAgICAgICAgZm9yIChpIGluIEMpKHUgPSAoYSA9IHNbaV0pICYmIGEucHJvdG90eXBlKSA/IEUodSlbUF0gPSBhIDogRCA9ICExOwogICAgICAgIGZvciAoaSBpbiBfKSh1ID0gKGEgPSBzW2ldKSAmJiBhLnByb3RvdHlwZSkgJiYgKEUodSlbUF0gPSBhKTsKICAgICAgICBpZiAoKCFEIHx8ICFwKGspIHx8IGsgPT09IEZ1bmN0aW9uLnByb3RvdHlwZSkgJiYgKGsgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRocm93IE0oIkluY29ycmVjdCBpbnZvY2F0aW9uIikKICAgICAgICAgICAgfSwgRCkpCiAgICAgICAgICAgIGZvciAoaSBpbiBDKSBzW2ldICYmIHcoc1tpXSwgayk7CiAgICAgICAgaWYgKCghRCB8fCAhVCB8fCBUID09PSBuKSAmJiAoVCA9IGsucHJvdG90eXBlLCBEKSkKICAgICAgICAgICAgZm9yIChpIGluIEMpIHNbaV0gJiYgdyhzW2ldLnByb3RvdHlwZSwgVCk7CiAgICAgICAgaWYgKEQgJiYgeChJKSAhPT0gVCAmJiB3KEksIFQpLCBmICYmICFoKFQsIFMpKQogICAgICAgICAgICBmb3IgKGkgaW4gYihULCBTLCB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBjID0gITAsCiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwodGhpcykgPyB0aGlzW2pdIDogdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCBDKSBzW2ldICYmIGQoc1tpXSwgaiwgaSk7CiAgICAgICAgci5leHBvcnRzID0gewogICAgICAgICAgICBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTOiBELAogICAgICAgICAgICBUWVBFRF9BUlJBWV9UQUc6IGMgJiYgaiwKICAgICAgICAgICAgYVR5cGVkQXJyYXk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmIChvKHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgIHRocm93IE0oIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFUeXBlZEFycmF5Q29uc3RydWN0b3I6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmIChwKHQpICYmICghdyB8fCBtKGssIHQpKSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICB0aHJvdyBNKHkodCkgKyAiIGlzIG5vdCBhIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9yIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZXhwb3J0VHlwZWRBcnJheU1ldGhvZDogZnVuY3Rpb24odCwgciwgZSwgbikgewogICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyBpbiBDKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvID0gc1tvXSkgJiYgaChvLnByb3RvdHlwZSwgdCkpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG8ucHJvdG90eXBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5wcm90b3R5cGVbdF0gPSByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBUW3RdICYmICFlIHx8IGcoVCwgdCwgIWUgJiYgRCAmJiBSW3RdIHx8IHIsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuLCBvOwogICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiBpbiBDKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobyA9IHNbbl0pICYmIGgobywgdCkpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvW3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkge30KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtbdF0gJiYgIWUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnKGssIHQsICFlICYmIEQgJiYga1t0XSB8fCByKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKG4gaW4gQykgIShvID0gc1tuXSkgfHwgb1t0XSAmJiAhZSB8fCBnKG8sIHQsIHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjogTiwKICAgICAgICAgICAgaXNWaWV3OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISFsKHQpICYmICgiRGF0YVZpZXciID09PSAodCA9IHYodCkpIHx8IGgoQywgdCkgfHwgaChfLCB0KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXNUeXBlZEFycmF5OiBvLAogICAgICAgICAgICBUeXBlZEFycmF5OiBrLAogICAgICAgICAgICBUeXBlZEFycmF5UHJvdG90eXBlOiBUCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHQuZXhwb3J0cyA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBBcnJheUJ1ZmZlciAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgRGF0YVZpZXcKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMzgpLAogICAgICAgICAgICBvID0gZSgyMCksCiAgICAgICAgICAgIGkgPSBlKDM5KSwKICAgICAgICAgICAgYSA9IGUoNTMpLAogICAgICAgICAgICB1ID0gKGUgPSBlKDk2KSwgYSgiSUVfUFJPVE8iKSksCiAgICAgICAgICAgIGMgPSBPYmplY3QsCiAgICAgICAgICAgIGYgPSBjLnByb3RvdHlwZTsKICAgICAgICB0LmV4cG9ydHMgPSBlID8gYy5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBpKHQpOwogICAgICAgICAgICByZXR1cm4gbihyLCB1KSA/IHJbdV0gOiAodCA9IHIuY29uc3RydWN0b3IsIG8odCkgJiYgciBpbnN0YW5jZW9mIHQgPyB0LnByb3RvdHlwZSA6IHIgaW5zdGFuY2VvZiBjID8gZiA6IG51bGwpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUgPSBlKDYpLCB0LmV4cG9ydHMgPSAhZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7fQogICAgICAgICAgICByZXR1cm4gdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IHQpICE9PSB0LnByb3RvdHlwZQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig5OCksCiAgICAgICAgICAgIGkgPSBuKDQ2KSwKICAgICAgICAgICAgYSA9IG4oOTkpOwogICAgICAgIHIuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoIl9fcHJvdG9fXyIgaW4ge30gPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQsIHIgPSAhMSwKICAgICAgICAgICAgICAgIGUgPSB7fTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICh0ID0gbyhPYmplY3QucHJvdG90eXBlLCAiX19wcm90b19fIiwgInNldCIpKShlLCBbXSksIHIgPSBlIGluc3RhbmNlb2YgQXJyYXkKICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBpKGUpLCBhKG4pLCByID8gdChlLCBuKSA6IGUuX19wcm90b19fID0gbiwgZQogICAgICAgICAgICB9CiAgICAgICAgfSgpIDogdCkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpLAogICAgICAgICAgICBvID0gZSgzMCk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG4obyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpW2VdKSkKICAgICAgICAgICAgfSBjYXRjaCAodCkge30KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIwKSwKICAgICAgICAgICAgbyA9IFN0cmluZywKICAgICAgICAgICAgaSA9IFR5cGVFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCB8fCBuKHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgdGhyb3cgaSgiQ2FuJ3Qgc2V0ICIgKyBvKHQpICsgIiBhcyBhIHByb3RvdHlwZSIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig5MyksCiAgICAgICAgICAgIGkgPSBuKDEzKSwKICAgICAgICAgICAgYSA9IG4oMzApLAogICAgICAgICAgICB1ID0gbig3OSksCiAgICAgICAgICAgIGMgPSBvLmFUeXBlZEFycmF5LAogICAgICAgICAgICBmID0gby5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsCiAgICAgICAgICAgIHMgPSAobiA9IG8uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCwgaShvLlR5cGVkQXJyYXlQcm90b3R5cGUuc29ydCkpOwogICAgICAgIG4oInRvU29ydGVkIiwgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgciAhPT0gdCAmJiBhKHIpOwogICAgICAgICAgICB2YXIgZSA9IGModGhpcyk7CiAgICAgICAgICAgIGUgPSB1KGYoZSksIGUpOwogICAgICAgICAgICByZXR1cm4gcyhlLCByKQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg4MyksCiAgICAgICAgICAgIG8gPSBlKDkzKSwKICAgICAgICAgICAgaSA9IGUoMTAyKSwKICAgICAgICAgICAgYSA9IGUoNjEpLAogICAgICAgICAgICB1ID0gZSgxMDMpLAogICAgICAgICAgICBjID0gby5hVHlwZWRBcnJheSwKICAgICAgICAgICAgZiA9IG8uZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yOwogICAgICAgICgwLCBvLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJ3aXRoIiwgKGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgdmFyIGUgPSBjKHRoaXMpOwogICAgICAgICAgICB0ID0gYSh0KSwgciA9IGkoZSkgPyB1KHIpIDogK3I7CiAgICAgICAgICAgIHJldHVybiBuKGUsIGYoZSksIHQsIHIpCiAgICAgICAgfSksICEgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBuZXcgSW50OEFycmF5KDEpLndpdGgoMiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyA4CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIDggPT09IHQKICAgICAgICAgICAgfQogICAgICAgIH0oKSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoODkpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJCaWdJbnQ2NEFycmF5IiA9PSAodCA9IG4odCkpIHx8ICJCaWdVaW50NjRBcnJheSIgPT0gdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTgpLAogICAgICAgICAgICBvID0gVHlwZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKCJudW1iZXIiID09IHR5cGVvZih0ID0gbih0LCAibnVtYmVyIikpKSB0aHJvdyBvKCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnQiKTsKICAgICAgICAgICAgcmV0dXJuIEJpZ0ludCh0KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDI0KSwKICAgICAgICAgICAgYSA9IG4oOTUpLAogICAgICAgICAgICB1ID0gbig5NyksCiAgICAgICAgICAgIGMgPSBuKDU1KSwKICAgICAgICAgICAgZiA9IG4oNzQpLAogICAgICAgICAgICBzID0gbig0MyksCiAgICAgICAgICAgIHAgPSBuKDEwKSwKICAgICAgICAgICAgbCA9IG4oMTA1KSwKICAgICAgICAgICAgaCA9IG4oMTA4KSwKICAgICAgICAgICAgdiA9IG4oMzMpKCJ0b1N0cmluZ1RhZyIpLAogICAgICAgICAgICB5ID0gRXJyb3IsCiAgICAgICAgICAgIGQgPSBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgbywgYyA9IGkoZywgdGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gdSA/IG8gPSB1KHkoKSwgYyA/IGEodGhpcykgOiBnKSA6IChvID0gYyA/IHRoaXMgOiBmKGcpLCBzKG8sIHYsICJFcnJvciIpKSwgbiAhPT0gdCAmJiBzKG8sICJtZXNzYWdlIiwgaChuKSksIGwobywgZCwgby5zdGFjaywgMSksIHMobywgImVycm9yIiwgciksIHMobywgInN1cHByZXNzZWQiLCBlKSwgbwogICAgICAgICAgICB9OwogICAgICAgIHUgPyB1KGQsIHkpIDogYyhkLCB5LCB7CiAgICAgICAgICAgIG5hbWU6ICEwCiAgICAgICAgfSk7CiAgICAgICAgdmFyIGcgPSBkLnByb3RvdHlwZSA9IGYoeS5wcm90b3R5cGUsIHsKICAgICAgICAgICAgY29uc3RydWN0b3I6IHAoMSwgZCksCiAgICAgICAgICAgIG1lc3NhZ2U6IHAoMSwgIiIpLAogICAgICAgICAgICBuYW1lOiBwKDEsICJTdXBwcmVzc2VkRXJyb3IiKQogICAgICAgIH0pOwogICAgICAgIG8oewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsCiAgICAgICAgICAgIGFyaXR5OiAzCiAgICAgICAgfSwgewogICAgICAgICAgICBTdXBwcmVzc2VkRXJyb3I6IGQKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg0MyksCiAgICAgICAgICAgIG8gPSBlKDEwNiksCiAgICAgICAgICAgIGkgPSBlKDEwNyksCiAgICAgICAgICAgIGEgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlLCB1KSB7CiAgICAgICAgICAgIGkgJiYgKGEgPyBhKHQsIHIpIDogbih0LCAic3RhY2siLCBvKGUsIHUpKSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoMTMpOwogICAgICAgIHZhciBuID0gRXJyb3IsCiAgICAgICAgICAgIG8gPSBlKCIiLnJlcGxhY2UpLAogICAgICAgICAgICBpID0gKGUgPSBTdHJpbmcobigienhjYXNkIikuc3RhY2spLCAvXG5ccyphdCBbXjpdKjpbXlxuXSovKSwKICAgICAgICAgICAgYSA9IGkudGVzdChlKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIGlmIChhICYmICJzdHJpbmciID09IHR5cGVvZiB0ICYmICFuLnByZXBhcmVTdGFja1RyYWNlKQogICAgICAgICAgICAgICAgZm9yICg7IHItLTspIHQgPSBvKHQsIGksICIiKTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDYpLAogICAgICAgICAgICBvID0gZSgxMCk7CiAgICAgICAgdC5leHBvcnRzID0gIW4oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IEVycm9yKCJhIik7CiAgICAgICAgICAgIHJldHVybiAhKCJzdGFjayIgaW4gdCkgfHwgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAic3RhY2siLCBvKDEsIDcpKSwgNyAhPT0gdC5zdGFjaykKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oODgpOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIHIgPT09IHQgPyBhcmd1bWVudHMubGVuZ3RoIDwgMiA/ICIiIDogZSA6IG8ocikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgc3RhdDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZyb21Bc3luYzogZSgxMTApCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKCkgewogICAgICAgICAgICByZXR1cm4gbmV3IFModGhpcykKICAgICAgICB9CiAgICAgICAgdmFyIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDEzKSwKICAgICAgICAgICAgdSA9IG4oMzkpLAogICAgICAgICAgICBjID0gbigxMTMpLAogICAgICAgICAgICBmID0gbigxMTQpLAogICAgICAgICAgICBzID0gbigxMTkpLAogICAgICAgICAgICBwID0gbigxMjIpLAogICAgICAgICAgICBsID0gbigxMjApLAogICAgICAgICAgICBoID0gbigyOSksCiAgICAgICAgICAgIHYgPSBuKDgwKSwKICAgICAgICAgICAgeSA9IG4oMjMpLAogICAgICAgICAgICBkID0gbigzMyksCiAgICAgICAgICAgIGcgPSBuKDExNSksCiAgICAgICAgICAgIGIgPSBuKDEyMykudG9BcnJheSwKICAgICAgICAgICAgbSA9IGQoImFzeW5jSXRlcmF0b3IiKSwKICAgICAgICAgICAgeCA9IGEodigiQXJyYXkiKS52YWx1ZXMpLAogICAgICAgICAgICB3ID0gYSh4KFtdKS5uZXh0KSwKICAgICAgICAgICAgUyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXRlcmF0b3IgPSB4KHQpCiAgICAgICAgICAgIH07CiAgICAgICAgUy5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdyh0aGlzLml0ZXJhdG9yKQogICAgICAgIH0sIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgbiA9IGFyZ3VtZW50cy5sZW5ndGgsCiAgICAgICAgICAgICAgICBhID0gMSA8IG4gPyBhcmd1bWVudHNbMV0gOiB0LAogICAgICAgICAgICAgICAgdiA9IDIgPCBuID8gYXJndW1lbnRzWzJdIDogdDsKICAgICAgICAgICAgcmV0dXJuIG5ldyh5KCJQcm9taXNlIikpKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICB2YXIgeSA9IHUocik7CiAgICAgICAgICAgICAgICBhICE9PSB0ICYmIChhID0gaShhLCB2KSk7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGgoeSwgbSksCiAgICAgICAgICAgICAgICAgICAgeCA9IGQgPyB0IDogbCh5KSB8fCBvLAogICAgICAgICAgICAgICAgICAgIHcgPSBjKGUpID8gbmV3IGUgOiBbXTsKICAgICAgICAgICAgICAgIHggPSBkID8gZih5LCBkKSA6IG5ldyBnKHAocyh5LCB4KSkpOwogICAgICAgICAgICAgICAgbihiKHgsIGEsIHcpKQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDExMiksCiAgICAgICAgICAgIGkgPSBuKDMwKSwKICAgICAgICAgICAgYSA9IG4oOCksCiAgICAgICAgICAgIHUgPSBvKG8uYmluZCk7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICByZXR1cm4gaShyKSwgZSA9PT0gdCA/IHIgOiBhID8gdShyLCBlKSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHIuYXBwbHkoZSwgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxNCksCiAgICAgICAgICAgIG8gPSBlKDEzKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgiRnVuY3Rpb24iID09PSBuKHQpKSByZXR1cm4gbyh0KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBmdW5jdGlvbiBuKCkge30KCiAgICAgICAgZnVuY3Rpb24gbyh0KSB7CiAgICAgICAgICAgIGlmICghdSh0KSkgcmV0dXJuICExOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIGwobiwgcCwgdCksICEwCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBpID0gZSgxMyksCiAgICAgICAgICAgIGEgPSBlKDYpLAogICAgICAgICAgICB1ID0gZSgyMCksCiAgICAgICAgICAgIGMgPSBlKDg5KSwKICAgICAgICAgICAgZiA9IGUoMjMpLAogICAgICAgICAgICBzID0gZSg1MCksCiAgICAgICAgICAgIHAgPSBbXSwKICAgICAgICAgICAgbCA9IGYoIlJlZmxlY3QiLCAiY29uc3RydWN0IiksCiAgICAgICAgICAgIGggPSAvXlxzKig/OmNsYXNzfGZ1bmN0aW9uKVxiLywKICAgICAgICAgICAgdiA9IGkoaC5leGVjKSwKICAgICAgICAgICAgeSA9ICFoLmV4ZWMobik7CiAgICAgICAgaSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKCF1KHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgIHN3aXRjaCAoYyh0KSkgewogICAgICAgICAgICAgICAgY2FzZSAiQXN5bmNGdW5jdGlvbiI6CiAgICAgICAgICAgICAgICBjYXNlICJHZW5lcmF0b3JGdW5jdGlvbiI6CiAgICAgICAgICAgICAgICBjYXNlICJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIHkgfHwgISF2KGgsIHModCkpCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBpLnNoYW0gPSAhMCwgdC5leHBvcnRzID0gIWwgfHwgYSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICByZXR1cm4gbyhvLmNhbGwpIHx8ICFvKE9iamVjdCkgfHwgIW8oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdCA9ICEwCiAgICAgICAgICAgIH0pKSB8fCB0CiAgICAgICAgfSkpID8gaSA6IG8KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNyksCiAgICAgICAgICAgIG8gPSBlKDExNSksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IGUoMTE5KSwKICAgICAgICAgICAgdSA9IGUoMTIyKSwKICAgICAgICAgICAgYyA9IGUoMjkpLAogICAgICAgICAgICBmID0gZSgzMykoImFzeW5jSXRlcmF0b3IiKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiAociA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYyh0LCBmKSA6IHIpID8gaShuKHIsIHQpKSA6IG5ldyBvKHUoYSh0KSkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIGZ1bmN0aW9uIG8odCwgciwgZSkgewogICAgICAgICAgICB2YXIgbiA9IHQuZG9uZTsKICAgICAgICAgICAgdi5yZXNvbHZlKHQudmFsdWUpLnRoZW4oKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHIoaCh0LCBuKSkKICAgICAgICAgICAgfSksIGUpCiAgICAgICAgfQogICAgICAgIHZhciBpID0gbig3KSwKICAgICAgICAgICAgYSA9IG4oNDYpLAogICAgICAgICAgICB1ID0gbig3NCksCiAgICAgICAgICAgIGMgPSBuKDI5KSwKICAgICAgICAgICAgZiA9IG4oMTE2KSwKICAgICAgICAgICAgcyA9IG4oNTEpLAogICAgICAgICAgICBwID0gbigyMyksCiAgICAgICAgICAgIGwgPSBuKDExNyksCiAgICAgICAgICAgIGggPSBuKDExOCksCiAgICAgICAgICAgIHYgPSBwKCJQcm9taXNlIiksCiAgICAgICAgICAgIHkgPSAiQXN5bmNGcm9tU3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgZCA9IHMuc2V0LAogICAgICAgICAgICBnID0gcy5nZXR0ZXJGb3IoeSk7CiAgICAgICAgcyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdC50eXBlID0geSwgZCh0aGlzLCB0KQogICAgICAgIH07CiAgICAgICAgcy5wcm90b3R5cGUgPSBmKHUobCksIHsKICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGcodGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHYoKGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgICAgICBvKGEoaSh0Lm5leHQsIHQuaXRlcmF0b3IpKSwgciwgZSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZXR1cm46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBnKHRoaXMpLml0ZXJhdG9yOwogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB2KChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBjKHIsICJyZXR1cm4iKTsKICAgICAgICAgICAgICAgICAgICBpZiAodSA9PT0gdCkgcmV0dXJuIGUoaCh0LCAhMCkpOwogICAgICAgICAgICAgICAgICAgIG8odSA9IGEoaSh1LCByKSksIGUsIG4pCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQogICAgICAgIH0pLCByLmV4cG9ydHMgPSBzCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDQ3KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIGZvciAodmFyIG8gaW4gcikgbih0LCBvLCByW29dLCBlKTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4sIG8sIGkgPSBlKDMpLAogICAgICAgICAgICBhID0gZSgzNiksCiAgICAgICAgICAgIHUgPSBlKDIwKSwKICAgICAgICAgICAgYyA9IGUoNzQpLAogICAgICAgICAgICBmID0gZSg5NSksCiAgICAgICAgICAgIHMgPSBlKDQ3KSwKICAgICAgICAgICAgcCA9IGUoMzMpLAogICAgICAgICAgICBsID0gZSgzNSksCiAgICAgICAgICAgIGggPSAiVVNFX0ZVTkNUSU9OX0NPTlNUUlVDVE9SIiwKICAgICAgICAgICAgdiA9IHAoImFzeW5jSXRlcmF0b3IiKTsKICAgICAgICBlID0gaS5Bc3luY0l0ZXJhdG9yOwogICAgICAgIGlmIChwID0gYS5Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKSBuID0gcDsKICAgICAgICBlbHNlIGlmICh1KGUpKSBuID0gZS5wcm90b3R5cGU7CiAgICAgICAgZWxzZSBpZiAoYVtoXSB8fCBpW2hdKSB0cnkgewogICAgICAgICAgICBvID0gZihmKGYoRnVuY3Rpb24oInJldHVybiBhc3luYyBmdW5jdGlvbiooKXt9KCkiKSgpKSkpLCBmKG8pID09PSBPYmplY3QucHJvdG90eXBlICYmIChuID0gbykKICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgIG4gPyBsICYmIChuID0gYyhuKSkgOiBuID0ge30sIHUoblt2XSkgfHwgcyhuLCB2LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSkpLCB0LmV4cG9ydHMgPSBuCiAgICB9LCBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdmFsdWU6IHQsCiAgICAgICAgICAgICAgICBkb25lOiByCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcpLAogICAgICAgICAgICBvID0gZSgzMCksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IGUoMzEpLAogICAgICAgICAgICB1ID0gZSgxMjApLAogICAgICAgICAgICBjID0gVHlwZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgaWYgKHIgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHUodCkgOiByLCBvKHIpKSByZXR1cm4gaShuKHIsIHQpKTsKICAgICAgICAgICAgdGhyb3cgYyhhKHQpICsgIiBpcyBub3QgaXRlcmFibGUiKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoODkpLAogICAgICAgICAgICBvID0gZSgyOSksCiAgICAgICAgICAgIGkgPSBlKDE2KSwKICAgICAgICAgICAgYSA9IGUoMTIxKSwKICAgICAgICAgICAgdSA9IGUoMzMpKCJpdGVyYXRvciIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKCFpKHQpKSByZXR1cm4gbyh0LCB1KSB8fCBvKHQsICJAQGl0ZXJhdG9yIikgfHwgYVtuKHQpXQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSB7fQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGl0ZXJhdG9yOiB0LAogICAgICAgICAgICAgICAgbmV4dDogdC5uZXh0LAogICAgICAgICAgICAgICAgZG9uZTogITEKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDMwKSwKICAgICAgICAgICAgYSA9IG4oNDYpLAogICAgICAgICAgICB1ID0gbigxOSksCiAgICAgICAgICAgIGMgPSBuKDcwKSwKICAgICAgICAgICAgZiA9IG4oMjMpLAogICAgICAgICAgICBzID0gbigxMjIpLAogICAgICAgICAgICBwID0gbigxMjQpOwogICAgICAgIG4gPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHZhciBlID0gMCA9PSByLAogICAgICAgICAgICAgICAgbiA9IDEgPT0gciwKICAgICAgICAgICAgICAgIGwgPSAyID09IHIsCiAgICAgICAgICAgICAgICBoID0gMyA9PSByOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24ociwgdiwgeSkgewogICAgICAgICAgICAgICAgYShyKTsKICAgICAgICAgICAgICAgIHZhciBkID0gdiAhPT0gdDsKICAgICAgICAgICAgICAgICFkICYmIGUgfHwgaSh2KTsKICAgICAgICAgICAgICAgIHIgPSBzKHIpOwogICAgICAgICAgICAgICAgdmFyIGcgPSBmKCJQcm9taXNlIiksCiAgICAgICAgICAgICAgICAgICAgYiA9IHIuaXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgbSA9IHIubmV4dCwKICAgICAgICAgICAgICAgICAgICB4ID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgZygoZnVuY3Rpb24ociwgaSkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYodCkgewogICAgICAgICAgICAgICAgICAgICAgICBwKGIsIGksIHQsIGkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCkgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZih0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5yZXNvbHZlKGEobyhtLCBiKSkpLnRoZW4oKGZ1bmN0aW9uKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYShvKS5kb25lKSBlID8gKHkubGVuZ3RoID0geCwgcih5KSkgOiByKCFoICYmIChsIHx8IHQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYywgbSwgdyA9IG8udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPyAoYyA9IHYodywgeCksIG0gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKSBzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGwpIHQgPyBzKCkgOiBwKGIsIHIsICExLCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZSkgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlbeCsrXSA9IHQsIHMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0ID8gcChiLCByLCBoIHx8IHcsIGkpIDogcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdShjKSA/IGcucmVzb2x2ZShjKS50aGVuKG0sIGYpIDogbShjKSkgOiAoeVt4KytdID0gdywgcygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYobykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHMoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHIuZXhwb3J0cyA9IHsKICAgICAgICAgICAgdG9BcnJheTogbigwKSwKICAgICAgICAgICAgZm9yRWFjaDogbigxKSwKICAgICAgICAgICAgZXZlcnk6IG4oMiksCiAgICAgICAgICAgIHNvbWU6IG4oMyksCiAgICAgICAgICAgIGZpbmQ6IG4oNCkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcpLAogICAgICAgICAgICBvID0gZSgyMyksCiAgICAgICAgICAgIGkgPSBlKDI5KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlLCBhKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IGkodCwgInJldHVybiIpOwogICAgICAgICAgICAgICAgaWYgKHUpIHJldHVybiBvKCJQcm9taXNlIikucmVzb2x2ZShuKHUsIHQpKS50aGVuKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByKGUpCiAgICAgICAgICAgICAgICB9KSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBhKHQpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGEodCkKICAgICAgICAgICAgfQogICAgICAgICAgICByKGUpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTI2KS5maWx0ZXJSZWplY3Q7CiAgICAgICAgbiA9IG4oNzMpOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJBcnJheSIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmlsdGVyT3V0OiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCByLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgbigiZmlsdGVyT3V0IikKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMTExKSwKICAgICAgICAgICAgaSA9IG4oMTMpLAogICAgICAgICAgICBhID0gbigxMiksCiAgICAgICAgICAgIHUgPSBuKDM5KSwKICAgICAgICAgICAgYyA9IG4oNjMpLAogICAgICAgICAgICBmID0gbigxMjcpLAogICAgICAgICAgICBzID0gaShbXS5wdXNoKTsKICAgICAgICBpID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICB2YXIgZSA9IDEgPT0gciwKICAgICAgICAgICAgICAgIG4gPSAyID09IHIsCiAgICAgICAgICAgICAgICBpID0gMyA9PSByLAogICAgICAgICAgICAgICAgcCA9IDQgPT0gciwKICAgICAgICAgICAgICAgIGwgPSA2ID09IHIsCiAgICAgICAgICAgICAgICBoID0gNyA9PSByLAogICAgICAgICAgICAgICAgdiA9IDUgPT0gciB8fCBsOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeSwgZCwgZywgYikgewogICAgICAgICAgICAgICAgZm9yICh2YXIgbSwgeCwgdyA9IHUoeSksIFMgPSBhKHcpLCBBID0gbyhkLCBnKSwgRSA9IGMoUyksIE8gPSAwLCBSID0gKGIgPSBiIHx8IGYsIGUgPyBiKHksIEUpIDogbiB8fCBoID8gYih5LCAwKSA6IHQpOyBPIDwgRTsgTysrKQogICAgICAgICAgICAgICAgICAgIGlmICgodiB8fCBPIGluIFMpICYmICh4ID0gQShtID0gU1tPXSwgTywgdyksIHIpKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgUltPXSA9IHg7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHgpIHN3aXRjaCAocikgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG07CiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTzsKICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIHMoUiwgbSkKICAgICAgICAgICAgICAgIH0gZWxzZSBzd2l0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICAgICAgICAgIHMoUiwgbSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBsID8gLTEgOiBpIHx8IHAgPyBwIDogUgogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICByLmV4cG9ydHMgPSB7CiAgICAgICAgICAgIGZvckVhY2g6IGkoMCksCiAgICAgICAgICAgIG1hcDogaSgxKSwKICAgICAgICAgICAgZmlsdGVyOiBpKDIpLAogICAgICAgICAgICBzb21lOiBpKDMpLAogICAgICAgICAgICBldmVyeTogaSg0KSwKICAgICAgICAgICAgZmluZDogaSg1KSwKICAgICAgICAgICAgZmluZEluZGV4OiBpKDYpLAogICAgICAgICAgICBmaWx0ZXJSZWplY3Q6IGkoNykKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEyOCk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICByZXR1cm4gbmV3KG4odCkpKDAgPT09IHIgPyAwIDogcikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDY5KSwKICAgICAgICAgICAgaSA9IG4oMTEzKSwKICAgICAgICAgICAgYSA9IG4oMTkpLAogICAgICAgICAgICB1ID0gbigzMykoInNwZWNpZXMiKSwKICAgICAgICAgICAgYyA9IEFycmF5OwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIHJldHVybiBvKHIpICYmIChlID0gci5jb25zdHJ1Y3RvciwgKGkoZSkgJiYgKGUgPT09IGMgfHwgbyhlLnByb3RvdHlwZSkpIHx8IGEoZSkgJiYgbnVsbCA9PT0gKGUgPSBlW3VdKSkgJiYgKGUgPSB0KSksIGUgPT09IHQgPyBjIDogZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDEyNikuZmlsdGVyUmVqZWN0OwogICAgICAgIG4gPSBuKDczKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXJyYXkiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZpbHRlclJlamVjdDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgcmV0dXJuIGkodGhpcywgciwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KQogICAgICAgICAgICB9CiAgICAgICAgfSksIG4oImZpbHRlclJlamVjdCIpCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxMzEpOwogICAgICAgIG4gPSBuKDczKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXJyYXkiLAogICAgICAgICAgICBwcm90bzogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGdyb3VwOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCByLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgbigiZ3JvdXAiKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMTEpLAogICAgICAgICAgICBvID0gZSgxMyksCiAgICAgICAgICAgIGkgPSBlKDEyKSwKICAgICAgICAgICAgYSA9IGUoMzkpLAogICAgICAgICAgICB1ID0gZSgxNyksCiAgICAgICAgICAgIGMgPSBlKDYzKSwKICAgICAgICAgICAgZiA9IGUoNzQpLAogICAgICAgICAgICBzID0gZSg3OSksCiAgICAgICAgICAgIHAgPSBBcnJheSwKICAgICAgICAgICAgbCA9IG8oW10ucHVzaCk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgciwgZSwgbykgewogICAgICAgICAgICBmb3IgKHZhciBoLCB2LCB5LCBkID0gYSh0KSwgZyA9IGkoZCksIGIgPSBuKHIsIGUpLCBtID0gZihudWxsKSwgeCA9IGMoZyksIHcgPSAwOyB3IDwgeDsgdysrKSB5ID0gZ1t3XSwgKHYgPSB1KGIoeSwgdywgZCkpKSBpbiBtID8gbChtW3ZdLCB5KSA6IG1bdl0gPSBbeV07CiAgICAgICAgICAgIGlmIChvICYmIChoID0gbyhkKSkgIT09IHApCiAgICAgICAgICAgICAgICBmb3IgKHYgaW4gbSkgbVt2XSA9IHMoaCwgbVt2XSk7CiAgICAgICAgICAgIHJldHVybiBtCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTMxKSwKICAgICAgICAgICAgYSA9IG4oMTMzKTsKICAgICAgICBuID0gbig3Myk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICFhKCJncm91cEJ5IikKICAgICAgICB9LCB7CiAgICAgICAgICAgIGdyb3VwQnk6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBpKHRoaXMsIHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCkKICAgICAgICAgICAgfQogICAgICAgIH0pLCBuKCJncm91cEJ5IikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNik7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICB2YXIgZSA9IFtdW3RdOwogICAgICAgICAgICByZXR1cm4gISFlICYmIG4oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZS5jYWxsKG51bGwsIHIgfHwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgICAgICAgIH0sIDEpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDEzMyksCiAgICAgICAgICAgIGkgPSBlKDczKSwKICAgICAgICAgICAgYSA9IGUoMTM1KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXJyYXkiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIG5hbWU6ICJncm91cFRvTWFwIiwKICAgICAgICAgICAgZm9yY2VkOiBlKDM1KSB8fCAhbygiZ3JvdXBCeVRvTWFwIikKICAgICAgICB9LCB7CiAgICAgICAgICAgIGdyb3VwQnlUb01hcDogYQogICAgICAgIH0pLCBpKCJncm91cEJ5VG9NYXAiKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigxMTEpLAogICAgICAgICAgICBpID0gbigxMyksCiAgICAgICAgICAgIGEgPSBuKDEyKSwKICAgICAgICAgICAgdSA9IG4oMzkpLAogICAgICAgICAgICBjID0gbig2MyksCiAgICAgICAgICAgIGYgPSAobiA9IG4oMTM2KSkuTWFwLAogICAgICAgICAgICBzID0gbi5nZXQsCiAgICAgICAgICAgIHAgPSBuLmhhcywKICAgICAgICAgICAgbCA9IG4uc2V0LAogICAgICAgICAgICBoID0gaShbXS5wdXNoKTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIGZvciAodmFyIGUsIG4sIGkgPSB1KHRoaXMpLCB2ID0gYShpKSwgeSA9IG8ociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KSwgZCA9IG5ldyBmLCBnID0gYyh2KSwgYiA9IDA7IGIgPCBnOyBiKyspIGUgPSB5KG4gPSB2W2JdLCBiLCBpKSwgcChkLCBlKSA/IGgocyhkLCBlKSwgbikgOiBsKGQsIGUsIFtuXSk7CiAgICAgICAgICAgIHJldHVybiBkCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMyk7CiAgICAgICAgZSA9IE1hcC5wcm90b3R5cGU7CiAgICAgICAgdC5leHBvcnRzID0gewogICAgICAgICAgICBNYXA6IE1hcCwKICAgICAgICAgICAgc2V0OiBuKGUuc2V0KSwKICAgICAgICAgICAgZ2V0OiBuKGUuZ2V0KSwKICAgICAgICAgICAgaGFzOiBuKGUuaGFzKSwKICAgICAgICAgICAgcmVtb3ZlOiBuKGUuZGVsZXRlKSwKICAgICAgICAgICAgcHJvdG86IGUKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3MyksCiAgICAgICAgICAgIGkgPSBlKDEzNSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6IGUoMzUpCiAgICAgICAgfSwgewogICAgICAgICAgICBncm91cFRvTWFwOiBpCiAgICAgICAgfSksIG8oImdyb3VwVG9NYXAiKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIGZ1bmN0aW9uIG8ociwgZSkgewogICAgICAgICAgICBpZiAoIXUgfHwgIWEocikgfHwgIXUocikpIHJldHVybiAhMTsKICAgICAgICAgICAgZm9yICh2YXIgbiwgbyA9IDAsIGkgPSByLmxlbmd0aDsgbyA8IGk7KQogICAgICAgICAgICAgICAgaWYgKCEoInN0cmluZyIgPT0gdHlwZW9mKG4gPSByW28rK10pIHx8IGUgJiYgbiA9PT0gdCkpIHJldHVybiAhMTsKICAgICAgICAgICAgcmV0dXJuIDAgIT09IGkKICAgICAgICB9CiAgICAgICAgdmFyIGkgPSBuKDIpLAogICAgICAgICAgICBhID0gbig2OSksCiAgICAgICAgICAgIHUgPSBPYmplY3QuaXNGcm96ZW47CiAgICAgICAgaSh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIHNoYW06ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpc1RlbXBsYXRlT2JqZWN0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIW8odCwgITApKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICB2YXIgciA9IHQucmF3OwogICAgICAgICAgICAgICAgcmV0dXJuIHIubGVuZ3RoID09PSB0Lmxlbmd0aCAmJiBvKHIsICExKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNSksCiAgICAgICAgICAgIG8gPSBlKDczKSwKICAgICAgICAgICAgaSA9IGUoMzkpLAogICAgICAgICAgICBhID0gZSg2Myk7CiAgICAgICAgZSA9IGUoODUpOwogICAgICAgIG4gJiYgKGUoQXJyYXkucHJvdG90eXBlLCAibGFzdEluZGV4IiwgewogICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBpKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIDAgPT0gKHQgPSBhKHQpKSA/IDAgOiB0IC0gMQogICAgICAgICAgICB9CiAgICAgICAgfSksIG8oImxhc3RJbmRleCIpKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig1KSwKICAgICAgICAgICAgaSA9IG4oNzMpLAogICAgICAgICAgICBhID0gbigzOSksCiAgICAgICAgICAgIHUgPSBuKDYzKTsKICAgICAgICBuID0gbig4NSk7CiAgICAgICAgbyAmJiAobihBcnJheS5wcm90b3R5cGUsICJsYXN0SXRlbSIsIHsKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciByID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBlID0gdShyKTsKICAgICAgICAgICAgICAgIHJldHVybiAwID09IGUgPyB0IDogcltlIC0gMV0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgZSA9IHUocik7CiAgICAgICAgICAgICAgICByZXR1cm4gclswID09IGUgPyAwIDogZSAtIDFdID0gdAogICAgICAgICAgICB9CiAgICAgICAgfSksIGkoImxhc3RJdGVtIikpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3Myk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB1bmlxdWVCeTogZSgxNDIpCiAgICAgICAgfSksIG8oInVuaXF1ZUJ5IikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpLAogICAgICAgICAgICBvID0gZSgzMCksCiAgICAgICAgICAgIGkgPSBlKDE2KSwKICAgICAgICAgICAgYSA9IGUoNjMpLAogICAgICAgICAgICB1ID0gZSgzOSksCiAgICAgICAgICAgIGMgPSBlKDEzNiksCiAgICAgICAgICAgIGYgPSBlKDE0MyksCiAgICAgICAgICAgIHMgPSBjLk1hcCwKICAgICAgICAgICAgcCA9IGMuaGFzLAogICAgICAgICAgICBsID0gYy5zZXQsCiAgICAgICAgICAgIGggPSBuKFtdLnB1c2gpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgZm9yICh2YXIgciwgZSwgbiA9IHUodGhpcyksIGMgPSBhKG4pLCB2ID0gW10sIHkgPSBuZXcgcywgZCA9IGkodCkgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgIH0gOiBvKHQpLCBnID0gMDsgZyA8IGM7IGcrKykgZSA9IGQociA9IG5bZ10pLCBwKHksIGUpIHx8IGwoeSwgZSwgcik7CiAgICAgICAgICAgIHJldHVybiBmKHksIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBoKHYsIHQpCiAgICAgICAgICAgIH0pKSwgdgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiwgbyA9IGUoMTMpLAogICAgICAgICAgICBpID0gZSgxNDQpLAogICAgICAgICAgICBhID0gKGUgPSAobiA9IGUoMTM2KSkuTWFwLCBvKChuID0gbi5wcm90bykuZm9yRWFjaCkpLAogICAgICAgICAgICB1ID0gbyhuLmVudHJpZXMpLAogICAgICAgICAgICBjID0gdShuZXcgZSkubmV4dDsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIHJldHVybiBlID8gaSh1KHQpLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHIodFsxXSwgdFswXSkKICAgICAgICAgICAgfSksIGMpIDogYSh0LCByKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyk7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgICAgICBmb3IgKHZhciBpLCBhID0gbiB8fCByLm5leHQ7ICEoaSA9IG8oYSwgcikpLmRvbmU7KQogICAgICAgICAgICAgICAgaWYgKChpID0gZShpLnZhbHVlKSkgIT09IHQpIHJldHVybiBpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg1KSwKICAgICAgICAgICAgbyA9IGUoODUpLAogICAgICAgICAgICBpID0gZSgxNDYpOwogICAgICAgIGUgPSBBcnJheUJ1ZmZlci5wcm90b3R5cGU7CiAgICAgICAgIW4gfHwgImRldGFjaGVkIiBpbiBlIHx8IG8oZSwgImRldGFjaGVkIiwgewogICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkodGhpcykKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzKSwKICAgICAgICAgICAgbyA9IGUoMTQ3KSwKICAgICAgICAgICAgaSA9IG4oQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgwICE9PSBvKHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0LCAwLCAwKSwgITEKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDk4KSwKICAgICAgICAgICAgbyA9IGUoMTQpLAogICAgICAgICAgICBpID0gVHlwZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IG4oQXJyYXlCdWZmZXIucHJvdG90eXBlLCAiYnl0ZUxlbmd0aCIsICJnZXQiKSB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgiQXJyYXlCdWZmZXIiICE9IG8odCkpIHRocm93IGkoIkFycmF5QnVmZmVyIGV4cGVjdGVkIik7CiAgICAgICAgICAgIHJldHVybiB0LmJ5dGVMZW5ndGgKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxNDkpOwogICAgICAgIGkgJiYgbyh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5QnVmZmVyIiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB0cmFuc2ZlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzBdIDogdCwgITApCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigzKSwKICAgICAgICAgICAgaSA9IG4oMTMpLAogICAgICAgICAgICBhID0gbig5OCksCiAgICAgICAgICAgIHUgPSBuKDE1MCksCiAgICAgICAgICAgIGMgPSBuKDE0NiksCiAgICAgICAgICAgIGYgPSBuKDE0NyksCiAgICAgICAgICAgIHMgPSBuKDE1MSksCiAgICAgICAgICAgIHAgPSBvLlR5cGVFcnJvciwKICAgICAgICAgICAgbCA9IG8uc3RydWN0dXJlZENsb25lLAogICAgICAgICAgICBoID0gby5BcnJheUJ1ZmZlciwKICAgICAgICAgICAgdiA9IG8uRGF0YVZpZXcsCiAgICAgICAgICAgIHkgPSBNYXRoLm1pbiwKICAgICAgICAgICAgZCA9IChuID0gaC5wcm90b3R5cGUsIG8gPSB2LnByb3RvdHlwZSwgaShuLnNsaWNlKSksCiAgICAgICAgICAgIGcgPSBhKG4sICJyZXNpemFibGUiLCAiZ2V0IiksCiAgICAgICAgICAgIGIgPSBhKG4sICJtYXhCeXRlTGVuZ3RoIiwgImdldCIpLAogICAgICAgICAgICBtID0gaShvLmdldEludDgpLAogICAgICAgICAgICB4ID0gaShvLnNldEludDgpOwogICAgICAgIHIuZXhwb3J0cyA9IHMgJiYgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgICAgICB2YXIgbyA9IGYociksCiAgICAgICAgICAgICAgICBpID0gZSA9PT0gdCA/IG8gOiB1KGUpOwogICAgICAgICAgICBlID0gIWcgfHwgIWcocik7CiAgICAgICAgICAgIGlmIChjKHIpKSB0aHJvdyBwKCJBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZCIpOwogICAgICAgICAgICBpZiAociA9IGwociwgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyOiBbcl0KICAgICAgICAgICAgICAgIH0pLCBvID09IGkgJiYgKG4gfHwgZSkpIHJldHVybiByOwogICAgICAgICAgICBpZiAoaSA8PSBvICYmICghbiB8fCBlKSkgcmV0dXJuIGQociwgMCwgaSk7CiAgICAgICAgICAgIGUgPSBuICYmICFlICYmIGIgPyB7CiAgICAgICAgICAgICAgICBtYXhCeXRlTGVuZ3RoOiBiKHIpCiAgICAgICAgICAgIH0gOiB0LCBlID0gbmV3IGgoaSwgZSk7CiAgICAgICAgICAgIGZvciAodmFyIGEgPSBuZXcgdihyKSwgcyA9IG5ldyB2KGUpLCB3ID0geShpLCBvKSwgUyA9IDA7IFMgPCB3OyBTKyspIHgocywgUywgbShhLCBTKSk7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig2MSksCiAgICAgICAgICAgIGkgPSBuKDY0KSwKICAgICAgICAgICAgYSA9IFJhbmdlRXJyb3I7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICBpZiAociA9PT0gdCkgcmV0dXJuIDA7CiAgICAgICAgICAgIHZhciBlID0gbyhyKTsKICAgICAgICAgICAgaWYgKGUgIT09IChyID0gaShlKSkpIHRocm93IGEoIldyb25nIGxlbmd0aCBvciBpbmRleCIpOwogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBlKDYpLAogICAgICAgICAgICBpID0gZSgyNyksCiAgICAgICAgICAgIGEgPSBlKDE1MiksCiAgICAgICAgICAgIHUgPSBlKDE1MyksCiAgICAgICAgICAgIGMgPSBlKDE1NCksCiAgICAgICAgICAgIGYgPSBuLnN0cnVjdHVyZWRDbG9uZTsKICAgICAgICB0LmV4cG9ydHMgPSAhIWYgJiYgIW8oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAodSAmJiA5MiA8IGkgfHwgYyAmJiA5NCA8IGkgfHwgYSAmJiA5NyA8IGkpIHJldHVybiAhMTsKICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXlCdWZmZXIoOCksCiAgICAgICAgICAgICAgICByID0gZih0LCB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXI6IFt0XQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiAwICE9IHQuYnl0ZUxlbmd0aCB8fCA4ICE9IHIuYnl0ZUxlbmd0aAogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxNTMpOwogICAgICAgIGUgPSBlKDE1NCk7CiAgICAgICAgdC5leHBvcnRzID0gIW4gJiYgIWUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdyAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZG9jdW1lbnQKICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSAib2JqZWN0IiA9PSB0eXBlb2YgRGVubyAmJiBEZW5vICYmICJvYmplY3QiID09IHR5cGVvZiBEZW5vLnZlcnNpb24KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSgxNCksIHQuZXhwb3J0cyA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBwcm9jZXNzICYmICJwcm9jZXNzIiA9PSBlKHByb2Nlc3MpCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxNDkpOwogICAgICAgIGkgJiYgbyh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5QnVmZmVyIiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB0cmFuc2ZlclRvRml4ZWRMZW5ndGg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkodGhpcywgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1swXSA6IHQsICExKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgaWYgKCh0ID0gUyh0KSkuc3RhdGUgPT0gRSkgdGhyb3cgbSh4ICsgIiBhbHJlYWR5IGRpc3Bvc2VkIik7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpKCkgewogICAgICAgICAgICB3KHModGhpcywgTyksIHsKICAgICAgICAgICAgICAgIHR5cGU6IHgsCiAgICAgICAgICAgICAgICBzdGF0ZTogInBlbmRpbmciLAogICAgICAgICAgICAgICAgc3RhY2s6IFtdCiAgICAgICAgICAgIH0pLCB1IHx8ICh0aGlzLmRpc3Bvc2VkID0gITEpCiAgICAgICAgfQogICAgICAgIHZhciBhID0gbigyKSwKICAgICAgICAgICAgdSA9IG4oNSksCiAgICAgICAgICAgIGMgPSBuKDIzKSwKICAgICAgICAgICAgZiA9IG4oMzApLAogICAgICAgICAgICBzID0gbigxNTcpLAogICAgICAgICAgICBwID0gbig0NyksCiAgICAgICAgICAgIGwgPSBuKDExNiksCiAgICAgICAgICAgIGggPSBuKDg1KSwKICAgICAgICAgICAgdiA9IG4oMzMpLAogICAgICAgICAgICB5ID0gbig1MSksCiAgICAgICAgICAgIGQgPSBuKDE1OCksCiAgICAgICAgICAgIGcgPSBjKCJQcm9taXNlIiksCiAgICAgICAgICAgIGIgPSBjKCJTdXBwcmVzc2VkRXJyb3IiKSwKICAgICAgICAgICAgbSA9IFJlZmVyZW5jZUVycm9yLAogICAgICAgICAgICB4ID0gKGMgPSB2KCJhc3luY0Rpc3Bvc2UiKSwgdiA9IHYoInRvU3RyaW5nVGFnIiksICJBc3luY0Rpc3Bvc2FibGVTdGFjayIpLAogICAgICAgICAgICB3ID0geS5zZXQsCiAgICAgICAgICAgIFMgPSB5LmdldHRlckZvcih4KSwKICAgICAgICAgICAgQSA9ICJhc3luYy1kaXNwb3NlIiwKICAgICAgICAgICAgRSA9ICJkaXNwb3NlZCIsCiAgICAgICAgICAgIE8gPSBpLnByb3RvdHlwZTsKICAgICAgICBsKE8sIHsKICAgICAgICAgICAgZGlzcG9zZUFzeW5jOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdGhpczsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgZygoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gUyhyKTsKICAgICAgICAgICAgICAgICAgICBpZiAoby5zdGF0ZSA9PSBFKSByZXR1cm4gZSh0KTsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaSh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBzID8gbmV3IGIodCwgYSkgOiAocyA9ICEwLCB0KSwgcCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG8uc3RhdGUgPSBFLCB1IHx8IChyLmRpc3Bvc2VkID0gITApOwogICAgICAgICAgICAgICAgICAgIHZhciBhLCBjID0gby5zdGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGMubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBjWy0tZl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tmXSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5yZXNvbHZlKHIoKSkudGhlbihwLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBvLnN0YWNrID0gbnVsbCwgcyA/IG4oYSkgOiBlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcCgpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZChvKHRoaXMpLCB0LCBBKSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBhZG9wdDogZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBvKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGYoZSksIGQobiwgdCwgQSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHIpCiAgICAgICAgICAgICAgICB9KSksIHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVmZXI6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gbyh0aGlzKTsKICAgICAgICAgICAgICAgIGYociksIGQoZSwgdCwgQSwgcikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbW92ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IG8odGhpcyksCiAgICAgICAgICAgICAgICAgICAgciA9IG5ldyBpOwogICAgICAgICAgICAgICAgcmV0dXJuIFMocikuc3RhY2sgPSB0LnN0YWNrLCB0LnN0YWNrID0gW10sIHQuc3RhdGUgPSBFLCB1IHx8ICh0aGlzLmRpc3Bvc2VkID0gITApLCByCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgdSAmJiBoKE8sICJkaXNwb3NlZCIsIHsKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBTKHRoaXMpLnN0YXRlID09IEUKICAgICAgICAgICAgfQogICAgICAgIH0pLCBwKE8sIGMsIE8uZGlzcG9zZUFzeW5jLCB7CiAgICAgICAgICAgIG5hbWU6ICJkaXNwb3NlQXN5bmMiCiAgICAgICAgfSksIHAoTywgdiwgeCwgewogICAgICAgICAgICBub25Xcml0YWJsZTogITAKICAgICAgICB9KSwgYSh7CiAgICAgICAgICAgIGdsb2JhbDogITAsCiAgICAgICAgICAgIGNvbnN0cnVjdG9yOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgQXN5bmNEaXNwb3NhYmxlU3RhY2s6IGkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyNCksCiAgICAgICAgICAgIG8gPSBUeXBlRXJyb3I7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICBpZiAobihyLCB0KSkgcmV0dXJuIHQ7CiAgICAgICAgICAgIHRocm93IG8oIkluY29ycmVjdCBpbnZvY2F0aW9uIikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgZnVuY3Rpb24gbyh0LCByLCBlKSB7CiAgICAgICAgICAgIHJldHVybiBhKGUgfHwgKGUgPSB0LCAiYXN5bmMtZGlzcG9zZSIgPT0gciAmJiBmKGUsIHMpIHx8IGYoZSwgcCkpLCB0KQogICAgICAgIH0KICAgICAgICB2YXIgaSA9IG4oMTMpLAogICAgICAgICAgICBhID0gbigxMTEpLAogICAgICAgICAgICB1ID0gbig0NiksCiAgICAgICAgICAgIGMgPSBuKDE2KSwKICAgICAgICAgICAgZiA9IG4oMjkpLAogICAgICAgICAgICBzID0gKG4gPSBuKDMzKSkoImFzeW5jRGlzcG9zZSIpLAogICAgICAgICAgICBwID0gbigiZGlzcG9zZSIpLAogICAgICAgICAgICBsID0gaShbXS5wdXNoKTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlLCBuLCBpKSB7CiAgICAgICAgICAgIHZhciBhOwogICAgICAgICAgICBpZiAoaSkgYSA9IG8odCwgbiwgaSk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGMoZSkpIHJldHVybjsKICAgICAgICAgICAgICAgIGEgPSBvKHUoZSksIG4pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbChyLnN0YWNrLCBhKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDE1NyksCiAgICAgICAgICAgIGkgPSBlKDQzKSwKICAgICAgICAgICAgYSA9IGUoMzgpLAogICAgICAgICAgICB1ID0gZSgzMyksCiAgICAgICAgICAgIGMgPSBlKDExNyksCiAgICAgICAgICAgIGYgPSBlKDM1KTsKICAgICAgICBlID0gdSgidG9TdHJpbmdUYWciKTsKICAgICAgICBhKCh1ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG8odGhpcywgYykKICAgICAgICB9KS5wcm90b3R5cGUgPSBjLCBlKSB8fCBpKGMsIGUsICJBc3luY0l0ZXJhdG9yIiksICFmICYmIGEoYywgImNvbnN0cnVjdG9yIikgJiYgYy5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0IHx8IGkoYywgImNvbnN0cnVjdG9yIiwgdSksIG4oewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsCiAgICAgICAgICAgIGZvcmNlZDogZgogICAgICAgIH0sIHsKICAgICAgICAgICAgQXN5bmNJdGVyYXRvcjogdQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkFzeW5jSXRlcmF0b3IiLAogICAgICAgICAgICBuYW1lOiAiaW5kZXhlZCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGFzSW5kZXhlZFBhaXJzOiBlKDE2MSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4odCwgcikgewogICAgICAgICAgICByZXR1cm4gW3IsIHRdCiAgICAgICAgfQogICAgICAgIHZhciBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMTYyKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG8oaSwgdGhpcywgbikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDcpLAogICAgICAgICAgICBpID0gbigzMCksCiAgICAgICAgICAgIGEgPSBuKDQ2KSwKICAgICAgICAgICAgdSA9IG4oMTkpLAogICAgICAgICAgICBjID0gbigxMjIpLAogICAgICAgICAgICBmID0gbigxNjMpLAogICAgICAgICAgICBzID0gbigxMTgpLAogICAgICAgICAgICBwID0gbigxMjQpLAogICAgICAgICAgICBsID0gZigoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLml0ZXJhdG9yLAogICAgICAgICAgICAgICAgICAgIGkgPSBlLm1hcHBlcjsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgcigoZnVuY3Rpb24oYywgZikgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwodCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmRvbmUgPSAhMCwgZih0KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaCh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHAobiwgbCwgdCwgbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgci5yZXNvbHZlKGEobyhlLm5leHQsIG4pKSkudGhlbigoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEobikuZG9uZSkgZS5kb25lID0gITAsIGMocyh0LCAhMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gaShvLCBlLmNvdW50ZXIrKyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMocyh0LCAhMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KGYpID8gci5yZXNvbHZlKGYpLnRoZW4ocCwgaCkgOiBwKGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgbCkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSk7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gYSh0aGlzKSwgaSh0KSwgbmV3IGwoYyh0aGlzKSwgewogICAgICAgICAgICAgICAgbWFwcGVyOiB0CiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig3KSwKICAgICAgICAgICAgaSA9IG4oMTY0KSwKICAgICAgICAgICAgYSA9IG4oNDYpLAogICAgICAgICAgICB1ID0gbig3NCksCiAgICAgICAgICAgIGMgPSBuKDQzKSwKICAgICAgICAgICAgZiA9IG4oMTE2KSwKICAgICAgICAgICAgcyA9IG4oMzMpLAogICAgICAgICAgICBwID0gbig1MSksCiAgICAgICAgICAgIGwgPSBuKDIzKSwKICAgICAgICAgICAgaCA9IG4oMjkpLAogICAgICAgICAgICB2ID0gbigxMTcpLAogICAgICAgICAgICB5ID0gbigxMTgpLAogICAgICAgICAgICBkID0gbigxNjUpLAogICAgICAgICAgICBnID0gbCgiUHJvbWlzZSIpLAogICAgICAgICAgICBiID0gKGwgPSBzKCJ0b1N0cmluZ1RhZyIpLCAiQXN5bmNJdGVyYXRvckhlbHBlciIpLAogICAgICAgICAgICBtID0gIldyYXBGb3JWYWxpZEFzeW5jSXRlcmF0b3IiLAogICAgICAgICAgICB4ID0gcC5zZXQsCiAgICAgICAgICAgIHcgPSAocyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUocikgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gKG8gPSBpKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjKHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkuZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlIHx8IG4gJiYgby5kb25lID8gewogICAgICAgICAgICAgICAgICAgICAgICBleGl0OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUgPyBnLnJlamVjdChvKSA6IGcucmVzb2x2ZSh5KHQsICEwKSkKICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICBleGl0OiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG8KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbiA9ICFyLAogICAgICAgICAgICAgICAgICAgIGMgPSBwLmdldHRlckZvcihyID8gbSA6IGIpOwogICAgICAgICAgICAgICAgcmV0dXJuIGYodSh2KSwgewogICAgICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IChyID0gZSh0aGlzKSkudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmV4aXQpIHJldHVybiB0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IChuID0gaSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEodC5uZXh0SGFuZGxlcihnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkuZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgJiYgKHQuZG9uZSA9ICEwKSwgciA/IGcucmVqZWN0KG4pIDogZy5yZXNvbHZlKG4pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZXR1cm46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uZXhpdCkgcmV0dXJuIHU7CiAgICAgICAgICAgICAgICAgICAgICAgIHUuZG9uZSA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHUuaXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUuaW5uZXIpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQodS5pbm5lci5pdGVyYXRvciwgIm5vcm1hbCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZChjLCAidGhyb3ciLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaChjLCAicmV0dXJuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuID0gZi52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYuZXJyb3IgPyBnLnJlamVjdChuKSA6IHMgPT09IHQgPyBnLnJlc29sdmUoeSh0LCAhMCkpIDogKG4gPSAoZiA9IGkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8ocywgYykKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKS52YWx1ZSwgZi5lcnJvciA/IGcucmVqZWN0KG4pIDogciA/IGcucmVzb2x2ZShuKSA6IGcucmVzb2x2ZShuKS50aGVuKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYShyKSwgeSh0LCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sIHMoITApKSwKICAgICAgICAgICAgUyA9IHMoITEpOwogICAgICAgIGMoUywgbCwgIkFzeW5jIEl0ZXJhdG9yIEhlbHBlciIpLCByLmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgbikgewogICAgICAgICAgICAgICAgbiA/IChuLml0ZXJhdG9yID0gZS5pdGVyYXRvciwgbi5uZXh0ID0gZS5uZXh0KSA6IG4gPSBlLCBuLnR5cGUgPSByID8gbSA6IGIsIG4ubmV4dEhhbmRsZXIgPSB0LCBuLmNvdW50ZXIgPSAwLCBuLmRvbmUgPSAhMSwgeCh0aGlzLCBuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlLnByb3RvdHlwZSA9IHIgPyB3IDogUywgZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGVycm9yOiAhMSwKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICEwLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcpLAogICAgICAgICAgICBvID0gZSg0NiksCiAgICAgICAgICAgIGkgPSBlKDI5KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIHZhciBhLCB1OwogICAgICAgICAgICBvKHQpOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKCEoYSA9IGkodCwgInJldHVybiIpKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgidGhyb3ciID09PSByKSB0aHJvdyBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhID0gbihhLCB0KQogICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICB1ID0gITAsIGEgPSB0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCJ0aHJvdyIgPT09IHIpIHRocm93IGU7CiAgICAgICAgICAgIGlmICh1KSB0aHJvdyBhOwogICAgICAgICAgICByZXR1cm4gbyhhKSwgZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDQ3KSwKICAgICAgICAgICAgYSA9IG4oMjMpLAogICAgICAgICAgICB1ID0gbigyOSksCiAgICAgICAgICAgIGMgPSBuKDM4KSwKICAgICAgICAgICAgZiA9IG4oMzMpLAogICAgICAgICAgICBzID0gKG4gPSBuKDExNyksIGYgPSBmKCJhc3luY0Rpc3Bvc2UiKSwgYSgiUHJvbWlzZSIpKTsKICAgICAgICBjKG4sIGYpIHx8IGkobiwgZiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgciA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiBuZXcgcygoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgdmFyIGkgPSB1KHIsICJyZXR1cm4iKTsKICAgICAgICAgICAgICAgIGkgPyBzLnJlc29sdmUobyhpLCByKSkudGhlbigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZSh0KQogICAgICAgICAgICAgICAgfSksIG4pIDogZSh0KQogICAgICAgICAgICB9KSkKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDcpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBuKDEyMiksCiAgICAgICAgICAgIGMgPSBuKDE2OCksCiAgICAgICAgICAgIGYgPSBuKDE2OSksCiAgICAgICAgICAgIHMgPSBuKDE2MyksCiAgICAgICAgICAgIHAgPSBuKDExOCksCiAgICAgICAgICAgIGwgPSBzKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHIoKGZ1bmN0aW9uKG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5kb25lID0gITAsIG8odCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmVzb2x2ZShhKGkoZS5uZXh0LCBlLml0ZXJhdG9yKSkpLnRoZW4oKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKHIpLmRvbmUgPyAoZS5kb25lID0gITAsIG4ocCh0LCAhMCkpKSA6IGUucmVtYWluaW5nID8gKGUucmVtYWluaW5nLS0sIGMoKSkgOiBuKHAoci52YWx1ZSwgITEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdShyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB1KQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGMoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRyb3A6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhKHRoaXMpLCB0ID0gZihjKCt0KSksIG5ldyBsKHUodGhpcyksIHsKICAgICAgICAgICAgICAgICAgICByZW1haW5pbmc6IHQKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHZhciBlID0gUmFuZ2VFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICh0ID09IHQpIHJldHVybiB0OwogICAgICAgICAgICB0aHJvdyBlKCJOYU4gaXMgbm90IGFsbG93ZWQiKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjEpLAogICAgICAgICAgICBvID0gUmFuZ2VFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgodCA9IG4odCkpIDwgMCkgdGhyb3cgbygiVGhlIGFyZ3VtZW50IGNhbid0IGJlIGxlc3MgdGhhbiAwIik7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTIzKS5ldmVyeTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGV2ZXJ5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyh0aGlzLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDcpLAogICAgICAgICAgICBhID0gbigzMCksCiAgICAgICAgICAgIHUgPSBuKDQ2KSwKICAgICAgICAgICAgYyA9IG4oMTkpLAogICAgICAgICAgICBmID0gbigxMjIpLAogICAgICAgICAgICBzID0gbigxNjMpLAogICAgICAgICAgICBwID0gbigxMTgpLAogICAgICAgICAgICBsID0gbigxMjQpLAogICAgICAgICAgICBoID0gcygoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLml0ZXJhdG9yLAogICAgICAgICAgICAgICAgICAgIG8gPSBlLnByZWRpY2F0ZTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgcigoZnVuY3Rpb24oYSwgZikgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHModCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmRvbmUgPSAhMCwgZih0KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaCh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwobiwgcywgdCwgcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmVzb2x2ZSh1KGkoZS5uZXh0LCBuKSkpLnRoZW4oKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodShuKS5kb25lKSBlLmRvbmUgPSAhMCwgYShwKHQsICEwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IG8oaSwgZS5jb3VudGVyKyspLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA/IGEocChpLCAhMSkpIDogdigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyhmKSA/IHIucmVzb2x2ZShmKS50aGVuKGwsIGgpIDogbChmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyhuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBzKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHYoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHUodGhpcyksIGEodCksIG5ldyBoKGYodGhpcyksIHsKICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGU6IHQKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTIzKS5maW5kOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJBc3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmluZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8odGhpcywgdCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbig3KSwKICAgICAgICAgICAgYSA9IG4oMzApLAogICAgICAgICAgICB1ID0gbig0NiksCiAgICAgICAgICAgIGMgPSBuKDE5KSwKICAgICAgICAgICAgZiA9IG4oMTIyKSwKICAgICAgICAgICAgcyA9IG4oMTYzKSwKICAgICAgICAgICAgcCA9IG4oMTE4KSwKICAgICAgICAgICAgbCA9IG4oMTc0KSwKICAgICAgICAgICAgaCA9IG4oMTI0KSwKICAgICAgICAgICAgdiA9IHMoKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBuID0gZS5pdGVyYXRvciwKICAgICAgICAgICAgICAgICAgICBvID0gZS5tYXBwZXI7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHIoKGZ1bmN0aW9uKGEsIGYpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5kb25lID0gITAsIGYodCkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYodCkgewogICAgICAgICAgICAgICAgICAgICAgICBoKG4sIHMsIHQsIHMpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB5KCkgewogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgci5yZXNvbHZlKHUoaShlLm5leHQsIG4pKSkudGhlbigoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1KG4pLmRvbmUpIGUuZG9uZSA9ICEwLCBhKHAodCwgITApKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gbyhpLCBlLmNvdW50ZXIrKyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaW5uZXIgPSBsKHQpLCBkKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2KHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyhmKSA/IHIucmVzb2x2ZShmKS50aGVuKGgsIHYpIDogaChmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyhuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBzKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmlubmVyOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmVzb2x2ZSh1KGkodC5uZXh0LCB0Lml0ZXJhdG9yKSkpLnRoZW4oKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KHQpLmRvbmUgPyAoZS5pbm5lciA9IG51bGwsIHkoKSkgOiBhKHAodC52YWx1ZSwgITEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdih0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB2KQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2KHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB5KCkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGQoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZsYXRNYXA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB1KHRoaXMpLCBhKHQpLCBuZXcgdihmKHRoaXMpLCB7CiAgICAgICAgICAgICAgICAgICAgbWFwcGVyOiB0LAogICAgICAgICAgICAgICAgICAgIGlubmVyOiBudWxsCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDIwKSwKICAgICAgICAgICAgYSA9IG4oNDYpLAogICAgICAgICAgICB1ID0gbigxMjIpLAogICAgICAgICAgICBjID0gbigxMjApLAogICAgICAgICAgICBmID0gbigyOSksCiAgICAgICAgICAgIHMgPSBuKDMzKSwKICAgICAgICAgICAgcCA9IG4oMTE1KSwKICAgICAgICAgICAgbCA9IHMoImFzeW5jSXRlcmF0b3IiKTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHZhciBlLCBuID0gYShyKSwKICAgICAgICAgICAgICAgIHMgPSAhMDsKICAgICAgICAgICAgciA9IGYobiwgbCk7CiAgICAgICAgICAgIHJldHVybiBpKHIpIHx8IChyID0gYyhuKSwgcyA9ICExKSwgciAhPT0gdCA/IGUgPSBvKHIsIG4pIDogKGUgPSBuLCBzID0gITApLCBhKGUpLCB1KHMgPyBlIDogbmV3IHAodShlKSkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTIzKS5mb3JFYWNoOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJBc3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZm9yRWFjaDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8odGhpcywgdCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzOSksCiAgICAgICAgICAgIGkgPSBlKDI0KSwKICAgICAgICAgICAgYSA9IGUoMTc0KSwKICAgICAgICAgICAgdSA9IGUoMTE3KSwKICAgICAgICAgICAgYyA9IGUoMTc3KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHN0YXQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmcm9tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCA9IGEoInN0cmluZyIgPT0gdHlwZW9mIHQgPyBvKHQpIDogdCksIGkodSwgdC5pdGVyYXRvcikgPyB0Lml0ZXJhdG9yIDogbmV3IGModCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcpOwogICAgICAgIGUgPSBlKDE2Myk7CiAgICAgICAgdC5leHBvcnRzID0gZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBuKHRoaXMubmV4dCwgdGhpcy5pdGVyYXRvcikKICAgICAgICB9KSwgITApCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkFzeW5jSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpbmRleGVkOiBlKDE2MSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJBc3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgbWFwOiBlKDE2MikKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oNyksCiAgICAgICAgICAgIGEgPSBuKDMwKSwKICAgICAgICAgICAgdSA9IG4oNDYpLAogICAgICAgICAgICBjID0gbigxOSksCiAgICAgICAgICAgIGYgPSBuKDIzKSwKICAgICAgICAgICAgcyA9IG4oMTIyKSwKICAgICAgICAgICAgcCA9IG4oMTI0KSwKICAgICAgICAgICAgbCA9IGYoIlByb21pc2UiKSwKICAgICAgICAgICAgaCA9IFR5cGVFcnJvcjsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHJlZHVjZTogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdSh0aGlzKSwgYShyKTsKICAgICAgICAgICAgICAgIHZhciBlID0gcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gZS5pdGVyYXRvciwKICAgICAgICAgICAgICAgICAgICBvID0gZS5uZXh0LAogICAgICAgICAgICAgICAgICAgIGYgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiwKICAgICAgICAgICAgICAgICAgICB2ID0gZiA/IHQgOiBhcmd1bWVudHNbMV0sCiAgICAgICAgICAgICAgICAgICAgeSA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGwoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcChuLCBlLCB0LCBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5yZXNvbHZlKHUoaShvLCBuKSkpLnRoZW4oKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodShuKS5kb25lKSBmID8gZShoKCJSZWR1Y2Ugb2YgZW1wdHkgaXRlcmF0b3Igd2l0aCBubyBpbml0aWFsIHZhbHVlIikpIDogdCh2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZikgZiA9ICExLCB2ID0gbywgcygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gcih2LCBvLCB5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0LCBzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKGkpID8gbC5yZXNvbHZlKGkpLnRoZW4ocCwgYSkgOiBwKGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYShuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkrKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZShuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHMoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTIzKS5zb21lOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJBc3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgc29tZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8odGhpcywgdCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbig3KSwKICAgICAgICAgICAgYSA9IG4oNDYpLAogICAgICAgICAgICB1ID0gbigxMjIpLAogICAgICAgICAgICBjID0gbigxNjgpLAogICAgICAgICAgICBmID0gbigxNjkpLAogICAgICAgICAgICBzID0gbigxNjMpLAogICAgICAgICAgICBwID0gbigxMTgpLAogICAgICAgICAgICBsID0gcygoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUsIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIG8gPSBuLml0ZXJhdG9yOwogICAgICAgICAgICAgICAgaWYgKG4ucmVtYWluaW5nLS0pIHJldHVybiByLnJlc29sdmUoaShuLm5leHQsIG8pKS50aGVuKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEocikuZG9uZSA/IChuLmRvbmUgPSAhMCwgcCh0LCAhMCkpIDogcChyLnZhbHVlLCAhMSkKICAgICAgICAgICAgICAgIH0pKS50aGVuKG51bGwsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbi5kb25lID0gITAsIHQKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIHZhciB1ID0gcCh0LCAhMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gbi5kb25lID0gITAsIChlID0gby5yZXR1cm4pICE9PSB0ID8gci5yZXNvbHZlKGkoZSwgbywgdCkpLnRoZW4oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB1CiAgICAgICAgICAgICAgICB9KSkgOiB1CiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHRha2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhKHRoaXMpLCB0ID0gZihjKCt0KSksIG5ldyBsKHUodGhpcyksIHsKICAgICAgICAgICAgICAgICAgICByZW1haW5pbmc6IHQKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTIzKS50b0FycmF5OwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJBc3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgdG9BcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCB0LCBbXSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgxODUpOwogICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIEJpZ0ludCAmJiBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQmlnSW50IiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHJhbmdlOiBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IG8odCwgciwgZSwgImJpZ2ludCIsIEJpZ0ludCgwKSwgQmlnSW50KDEpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNTEpLAogICAgICAgICAgICBpID0gbigxODYpLAogICAgICAgICAgICBhID0gbigxMTgpLAogICAgICAgICAgICB1ID0gbigxNiksCiAgICAgICAgICAgIGMgPSBuKDE5KSwKICAgICAgICAgICAgZiA9IG4oODUpLAogICAgICAgICAgICBzID0gbig1KSwKICAgICAgICAgICAgcCA9ICJJbmNvcnJlY3QgSXRlcmF0b3IucmFuZ2UgYXJndW1lbnRzIiwKICAgICAgICAgICAgbCA9ICJOdW1lcmljUmFuZ2VJdGVyYXRvciIsCiAgICAgICAgICAgIGggPSBvLnNldCwKICAgICAgICAgICAgdiA9IG8uZ2V0dGVyRm9yKGwpLAogICAgICAgICAgICB5ID0gUmFuZ2VFcnJvciwKICAgICAgICAgICAgZCA9IFR5cGVFcnJvciwKICAgICAgICAgICAgZyA9IGkoKGZ1bmN0aW9uKHIsIGUsIG4sIG8sIGksIGEpIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPSBvIHx8IGUgIT09IDEgLyAwICYmIGUgIT09IC0xIC8gMCAmJiB0eXBlb2YgZSAhPSBvKSB0aHJvdyBkKHApOwogICAgICAgICAgICAgICAgaWYgKHIgPT09IDEgLyAwIHx8IHIgPT09IC0xIC8gMCkgdGhyb3cgeShwKTsKICAgICAgICAgICAgICAgIHZhciBmLCB2ID0gciA8IGUsCiAgICAgICAgICAgICAgICAgICAgZyA9ICExOwogICAgICAgICAgICAgICAgaWYgKG4gPT09IHQpIGYgPSB0OwogICAgICAgICAgICAgICAgZWxzZSBpZiAoYyhuKSkgZiA9IG4uc3RlcCwgZyA9ICEhbi5pbmNsdXNpdmU7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG4gIT0gbykgdGhyb3cgZChwKTsKICAgICAgICAgICAgICAgICAgICBmID0gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHR5cGVvZihmID0gdShmKSA/IHYgPyBhIDogLWEgOiBmKSAhPSBvKSB0aHJvdyBkKHApOwogICAgICAgICAgICAgICAgaWYgKGYgPT09IDEgLyAwIHx8IGYgPT09IC0xIC8gMCB8fCBmID09PSBpICYmIHIgIT09IGUpIHRocm93IHkocCk7CiAgICAgICAgICAgICAgICBoKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiBsLAogICAgICAgICAgICAgICAgICAgIHN0YXJ0OiByLAogICAgICAgICAgICAgICAgICAgIGVuZDogZSwKICAgICAgICAgICAgICAgICAgICBzdGVwOiBmLAogICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogZywKICAgICAgICAgICAgICAgICAgICBoaXRzRW5kOiByICE9IHIgfHwgZSAhPSBlIHx8IGYgIT0gZiB8fCByIDwgZSAhPSBpIDwgZiwKICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q291bnQ6IGksCiAgICAgICAgICAgICAgICAgICAgemVybzogaQogICAgICAgICAgICAgICAgfSksIHMgfHwgKHRoaXMuc3RhcnQgPSByLCB0aGlzLmVuZCA9IGUsIHRoaXMuc3RlcCA9IGYsIHRoaXMuaW5jbHVzaXZlID0gZykKICAgICAgICAgICAgfSksIGwsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdih0aGlzKTsKICAgICAgICAgICAgICAgIGlmIChyLmhpdHNFbmQpIHJldHVybiBhKHQsICEwKTsKICAgICAgICAgICAgICAgIHZhciBlID0gci5zdGFydCwKICAgICAgICAgICAgICAgICAgICBuID0gci5lbmQsCiAgICAgICAgICAgICAgICAgICAgbyA9IGUgKyByLnN0ZXAgKiByLmN1cnJlbnRDb3VudCsrOwogICAgICAgICAgICAgICAgbyA9PT0gbiAmJiAoci5oaXRzRW5kID0gITApOwogICAgICAgICAgICAgICAgdmFyIGkgPSByLmluY2x1c2l2ZTsKICAgICAgICAgICAgICAgIHJldHVybiAobiA9IGUgPCBuID8gaSA/IG4gPCBvIDogbiA8PSBvIDogaSA/IG8gPCBuIDogbyA8PSBuKSA/IChyLmhpdHNFbmQgPSAhMCwgYSh0LCAhMCkpIDogYShvLCAhMSkKICAgICAgICAgICAgfSkpOwogICAgICAgIGkgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGYoZy5wcm90b3R5cGUsIHQsIHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYodGhpcylbdF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEKICAgICAgICAgICAgfSkKICAgICAgICB9OwogICAgICAgIHMgJiYgKGkoInN0YXJ0IiksIGkoImVuZCIpLCBpKCJpbmNsdXNpdmUiKSwgaSgic3RlcCIpKSwgci5leHBvcnRzID0gZwogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfQogICAgICAgIHZhciBvID0gZSgxODcpLkl0ZXJhdG9yUHJvdG90eXBlLAogICAgICAgICAgICBpID0gZSg3NCksCiAgICAgICAgICAgIGEgPSBlKDEwKSwKICAgICAgICAgICAgdSA9IGUoMTg4KSwKICAgICAgICAgICAgYyA9IGUoMTIxKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlLCBmKSB7CiAgICAgICAgICAgIHJldHVybiByICs9ICIgSXRlcmF0b3IiLCB0LnByb3RvdHlwZSA9IGkobywgewogICAgICAgICAgICAgICAgbmV4dDogYSgrIWYsIGUpCiAgICAgICAgICAgIH0pLCB1KHQsIHIsICExLCAhMCksIGNbcl0gPSBuLCB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuLCBvID0gZSg2KSwKICAgICAgICAgICAgaSA9IGUoMjApLAogICAgICAgICAgICBhID0gZSgxOSksCiAgICAgICAgICAgIHUgPSBlKDc0KSwKICAgICAgICAgICAgYyA9IGUoOTUpLAogICAgICAgICAgICBmID0gZSg0NyksCiAgICAgICAgICAgIHMgPSBlKDMzKSwKICAgICAgICAgICAgcCA9IGUoMzUpLAogICAgICAgICAgICBsID0gcygiaXRlcmF0b3IiKTsKICAgICAgICBlID0gITE7CiAgICAgICAgW10ua2V5cyAmJiAoIm5leHQiIGluIChzID0gW10ua2V5cygpKSA/IChzID0gYyhjKHMpKSkgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgKG4gPSBzKSA6IGUgPSAhMCksICFhKG4pIHx8IG8oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHt9OwogICAgICAgICAgICByZXR1cm4gbltsXS5jYWxsKHQpICE9PSB0CiAgICAgICAgfSkpID8gbiA9IHt9IDogcCAmJiAobiA9IHUobikpLCBpKG5bbF0pIHx8IGYobiwgbCwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0pKSwgdC5leHBvcnRzID0gewogICAgICAgICAgICBJdGVyYXRvclByb3RvdHlwZTogbiwKICAgICAgICAgICAgQlVHR1lfU0FGQVJJX0lURVJBVE9SUzogZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNDQpLmYsCiAgICAgICAgICAgIG8gPSBlKDM4KSwKICAgICAgICAgICAgaSA9IGUoMzMpKCJ0b1N0cmluZ1RhZyIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgKHQgPSB0ICYmICFlID8gdC5wcm90b3R5cGUgOiB0KSAmJiAhbyh0LCBpKSAmJiBuKHQsIGksIHsKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICB2YWx1ZTogcgogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICB2YXIgdCA9IHUoIk9iamVjdCIsICJmcmVlemUiKTsKICAgICAgICAgICAgcmV0dXJuIHQgPyB0KGMobnVsbCkpIDogYyhudWxsKQogICAgICAgIH0KICAgICAgICB2YXIgbyA9IGUoMiksCiAgICAgICAgICAgIGkgPSBlKDE5MCksCiAgICAgICAgICAgIGEgPSBlKDE5MSksCiAgICAgICAgICAgIHUgPSBlKDIzKSwKICAgICAgICAgICAgYyA9IGUoNzQpLAogICAgICAgICAgICBmID0gT2JqZWN0OwogICAgICAgIG8oewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBjb21wb3NpdGVLZXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkoYSwgZiwgYXJndW1lbnRzKS5nZXQoIm9iamVjdCIsIG4pCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg4KSwKICAgICAgICAgICAgbyA9IChlID0gRnVuY3Rpb24ucHJvdG90eXBlKS5hcHBseSwKICAgICAgICAgICAgaSA9IGUuY2FsbDsKICAgICAgICB0LmV4cG9ydHMgPSAib2JqZWN0IiA9PSB0eXBlb2YgUmVmbGVjdCAmJiBSZWZsZWN0LmFwcGx5IHx8IChuID8gaS5iaW5kKG8pIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBpLmFwcGx5KG8sIGFyZ3VtZW50cykKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgIHRoaXMub2JqZWN0ID0gbnVsbCwgdGhpcy5zeW1ib2wgPSBudWxsLCB0aGlzLnByaW1pdGl2ZXMgPSBudWxsLCB0aGlzLm9iamVjdHNCeUluZGV4ID0gaShudWxsKQogICAgICAgIH0KICAgICAgICBlKDE5MiksIGUoMjA5KTsKICAgICAgICB2YXIgbyA9IGUoMjMpLAogICAgICAgICAgICBpID0gZSg3NCksCiAgICAgICAgICAgIGEgPSBlKDE5KSwKICAgICAgICAgICAgdSA9IE9iamVjdCwKICAgICAgICAgICAgYyA9IFR5cGVFcnJvciwKICAgICAgICAgICAgZiA9IG8oIk1hcCIpLAogICAgICAgICAgICBzID0gbygiV2Vha01hcCIpOwogICAgICAgIG4ucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXNbdF0gfHwgKHRoaXNbdF0gPSByKCkpCiAgICAgICAgfSwgbi5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuICh0ID0gKGUgPSBlID8gdGhpcy5vYmplY3RzQnlJbmRleFt0XSB8fCAodGhpcy5vYmplY3RzQnlJbmRleFt0XSA9IG5ldyBzKSA6IHRoaXMucHJpbWl0aXZlcyB8fCAodGhpcy5wcmltaXRpdmVzID0gbmV3IGYpKS5nZXQocikpIHx8IGUuc2V0KHIsIHQgPSBuZXcgbiksIHQKICAgICAgICB9OwogICAgICAgIHZhciBwID0gbmV3IG47CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQsIHIgPSBwLCBlID0gYXJndW1lbnRzLmxlbmd0aCwgbiA9IDA7IG4gPCBlOyBuKyspIGEodCA9IGFyZ3VtZW50c1tuXSkgJiYgKHIgPSByLm5leHQobiwgdCwgITApKTsKICAgICAgICAgICAgaWYgKHRoaXMgPT09IHUgJiYgciA9PT0gcCkgdGhyb3cgYygiQ29tcG9zaXRlIGtleXMgbXVzdCBjb250YWluIGEgbm9uLXByaW1pdGl2ZSBjb21wb25lbnQiKTsKICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGU7IG4rKykgYSh0ID0gYXJndW1lbnRzW25dKSB8fCAociA9IHIubmV4dChuLCB0LCAhMSkpOwogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDE5MykKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBuKDE5NCkoIk1hcCIsIChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiByKHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMF0gOiB0KQogICAgICAgICAgICB9CiAgICAgICAgfSksIG4oMjA2KSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDMpLAogICAgICAgICAgICBhID0gbigxMyksCiAgICAgICAgICAgIHUgPSBuKDY3KSwKICAgICAgICAgICAgYyA9IG4oNDcpLAogICAgICAgICAgICBmID0gbigxOTUpLAogICAgICAgICAgICBzID0gbigyMDIpLAogICAgICAgICAgICBwID0gbigxNTcpLAogICAgICAgICAgICBsID0gbigyMCksCiAgICAgICAgICAgIGggPSBuKDE2KSwKICAgICAgICAgICAgdiA9IG4oMTkpLAogICAgICAgICAgICB5ID0gbig2KSwKICAgICAgICAgICAgZCA9IG4oMjA0KSwKICAgICAgICAgICAgZyA9IG4oMTg4KSwKICAgICAgICAgICAgYiA9IG4oMjA1KTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIG0ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhKFRbcl0pOwogICAgICAgICAgICAgICAgYyhULCByLCAiYWRkIiA9PSByID8gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHRoaXMsIDAgPT09IHQgPyAwIDogdCksIHRoaXMKICAgICAgICAgICAgICAgIH0gOiAiZGVsZXRlIiA9PSByID8gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFIgJiYgIXYodCkpICYmIGUodGhpcywgMCA9PT0gdCA/IDAgOiB0KQogICAgICAgICAgICAgICAgfSA6ICJnZXQiID09IHIgPyBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFIgJiYgIXYocikgPyB0IDogZSh0aGlzLCAwID09PSByID8gMCA6IHIpCiAgICAgICAgICAgICAgICB9IDogImhhcyIgPT0gciA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShSICYmICF2KHQpKSAmJiBlKHRoaXMsIDAgPT09IHQgPyAwIDogdCkKICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUodGhpcywgMCA9PT0gdCA/IDAgOiB0LCByKSwgdGhpcwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgeCwgdywgUywgQSwgRSwgTyA9IC0xICE9PSByLmluZGV4T2YoIk1hcCIpLAogICAgICAgICAgICAgICAgUiA9IC0xICE9PSByLmluZGV4T2YoIldlYWsiKSwKICAgICAgICAgICAgICAgIEkgPSBPID8gInNldCIgOiAiYWRkIiwKICAgICAgICAgICAgICAgIGsgPSBpW3JdLAogICAgICAgICAgICAgICAgVCA9IGsgJiYgay5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICBNID0gaywKICAgICAgICAgICAgICAgIGogPSB7fTsKICAgICAgICAgICAgcmV0dXJuIHUociwgIWwoaykgfHwgIShSIHx8IFQuZm9yRWFjaCAmJiAheSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAobmV3IGspLmVudHJpZXMoKS5uZXh0KCkKICAgICAgICAgICAgfSkpKSkgPyAoTSA9IG4uZ2V0Q29uc3RydWN0b3IoZSwgciwgTywgSSksIGYuZW5hYmxlKCkpIDogdShyLCAhMCkgJiYgKHcgPSAoeCA9IG5ldyBNKVtJXShSID8ge30gOiAtMCwgMSkgIT0geCwgUyA9IHkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgeC5oYXMoMSkKICAgICAgICAgICAgfSkpLCBBID0gZCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgbmV3IGsodCkKICAgICAgICAgICAgfSkpLCBFID0gIVIgJiYgeSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gbmV3IGssIHIgPSA1OyByLS07KSB0W0ldKHIsIHIpOwogICAgICAgICAgICAgICAgcmV0dXJuICF0LmhhcygtMCkKICAgICAgICAgICAgfSkpLCBBIHx8ICgoKE0gPSBlKChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcCh0LCBUKSwgdCA9IGIobmV3IGssIHQsIE0pLCBoKHIpIHx8IHMociwgdFtJXSwgewogICAgICAgICAgICAgICAgICAgIHRoYXQ6IHQsCiAgICAgICAgICAgICAgICAgICAgQVNfRU5UUklFUzogTwogICAgICAgICAgICAgICAgfSksIHQKICAgICAgICAgICAgfSkpKS5wcm90b3R5cGUgPSBUKS5jb25zdHJ1Y3RvciA9IE0pLCAoUyB8fCBFKSAmJiAobSgiZGVsZXRlIiksIG0oImhhcyIpLCBPICYmIG0oImdldCIpKSwgKEUgfHwgdykgJiYgbShJKSwgUiAmJiBULmNsZWFyICYmIGRlbGV0ZSBULmNsZWFyKSwgaltyXSA9IE0sIG8oewogICAgICAgICAgICAgICAgZ2xvYmFsOiAhMCwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiAhMCwKICAgICAgICAgICAgICAgIGZvcmNlZDogTSAhPSBrCiAgICAgICAgICAgIH0sIGopLCBnKE0sIHIpLCBSIHx8IG4uc2V0U3Ryb25nKE0sIHIsIE8pLCBNCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4odCkgewogICAgICAgICAgICBmKHQsIGQsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiB7CiAgICAgICAgICAgICAgICAgICAgb2JqZWN0SUQ6ICJPIiArIGcrKywKICAgICAgICAgICAgICAgICAgICB3ZWFrRGF0YToge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgdmFyIG8gPSBlKDIpLAogICAgICAgICAgICBpID0gZSgxMyksCiAgICAgICAgICAgIGEgPSBlKDU0KSwKICAgICAgICAgICAgdSA9IGUoMTkpLAogICAgICAgICAgICBjID0gZSgzOCksCiAgICAgICAgICAgIGYgPSBlKDQ0KS5mLAogICAgICAgICAgICBzID0gZSg1NyksCiAgICAgICAgICAgIHAgPSBlKDE5NiksCiAgICAgICAgICAgIGwgPSBlKDE5OSksCiAgICAgICAgICAgIGggPSBlKDQwKSwKICAgICAgICAgICAgdiA9IGUoMjAxKSwKICAgICAgICAgICAgeSA9ICExLAogICAgICAgICAgICBkID0gaCgibWV0YSIpLAogICAgICAgICAgICBnID0gMCwKICAgICAgICAgICAgYiA9IHQuZXhwb3J0cyA9IHsKICAgICAgICAgICAgICAgIGVuYWJsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgYi5lbmFibGUgPSBmdW5jdGlvbigpIHt9LCB5ID0gITA7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBzLmYsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpKFtdLnNwbGljZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB7fTsKICAgICAgICAgICAgICAgICAgICBlW2RdID0gMSwgdChlKS5sZW5ndGggJiYgKHMuZiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IHQoZSksIG8gPSAwLCBpID0gbi5sZW5ndGg7IG8gPCBpOyBvKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobltvXSA9PT0gZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIobiwgbywgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9LCBvKHsKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiAiT2JqZWN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdldE93blByb3BlcnR5TmFtZXM6IHAuZgogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZhc3RLZXk6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXUodCkpIHJldHVybiAic3ltYm9sIiA9PSB0eXBlb2YgdCA/IHQgOiAoInN0cmluZyIgPT0gdHlwZW9mIHQgPyAiUyIgOiAiUCIpICsgdDsKICAgICAgICAgICAgICAgICAgICBpZiAoIWModCwgZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKHQpKSByZXR1cm4gIkYiOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIpIHJldHVybiAiRSI7CiAgICAgICAgICAgICAgICAgICAgICAgIG4odCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbZF0ub2JqZWN0SUQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRXZWFrRGF0YTogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIGlmICghYyh0LCBkKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWwodCkpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIG4odCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbZF0ud2Vha0RhdGEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbkZyZWV6ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2ICYmIHkgJiYgbCh0KSAmJiAhYyh0LCBkKSAmJiBuKHQpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgYVtkXSA9ICEwCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDE0KSwKICAgICAgICAgICAgbyA9IGUoMTEpLAogICAgICAgICAgICBpID0gZSg1NykuZiwKICAgICAgICAgICAgYSA9IGUoMTk3KSwKICAgICAgICAgICAgdSA9ICJvYmplY3QiID09IHR5cGVvZiB3aW5kb3cgJiYgd2luZG93ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdOwogICAgICAgIHQuZXhwb3J0cy5mID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdSAmJiAiV2luZG93IiA9PSBuKHQpID8gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSh0KQogICAgICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhKHUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0odCkgOiBpKG8odCkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig2MCksCiAgICAgICAgICAgIGkgPSBuKDYzKSwKICAgICAgICAgICAgYSA9IG4oMTk4KSwKICAgICAgICAgICAgdSA9IEFycmF5LAogICAgICAgICAgICBjID0gTWF0aC5tYXg7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgICAgICBmb3IgKHZhciBmID0gaShyKSwgcyA9IG8oZSwgZiksIHAgPSBvKG4gPT09IHQgPyBmIDogbiwgZiksIGwgPSB1KGMocCAtIHMsIDApKSwgaCA9IDA7IHMgPCBwOyBzKyssIGgrKykgYShsLCBoLCByW3NdKTsKICAgICAgICAgICAgcmV0dXJuIGwubGVuZ3RoID0gaCwgbAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTcpLAogICAgICAgICAgICBvID0gZSg0NCksCiAgICAgICAgICAgIGkgPSBlKDEwKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIChyID0gbihyKSkgaW4gdCA/IG8uZih0LCByLCBpKDAsIGUpKSA6IHRbcl0gPSBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg2KSwKICAgICAgICAgICAgbyA9IGUoMTkpLAogICAgICAgICAgICBpID0gZSgxNCksCiAgICAgICAgICAgIGEgPSBlKDIwMCksCiAgICAgICAgICAgIHUgPSBPYmplY3QuaXNFeHRlbnNpYmxlOwogICAgICAgIG4gPSBuKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdSgxKQogICAgICAgIH0pKTsKICAgICAgICB0LmV4cG9ydHMgPSBuIHx8IGEgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAhIW8odCkgJiYgKCFhIHx8ICJBcnJheUJ1ZmZlciIgIT0gaSh0KSkgJiYgKCF1IHx8IHUodCkpCiAgICAgICAgfSA6IHUKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSg2KSwgdC5leHBvcnRzID0gZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBBcnJheUJ1ZmZlciAmJiAodCA9IG5ldyBBcnJheUJ1ZmZlcig4KSwgT2JqZWN0LmlzRXh0ZW5zaWJsZSh0KSAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgImEiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogOAogICAgICAgICAgICB9KSkKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSg2KSwgdC5leHBvcnRzID0gIWUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4odCwgcikgewogICAgICAgICAgICB0aGlzLnN0b3BwZWQgPSB0LCB0aGlzLnJlc3VsdCA9IHIKICAgICAgICB9CiAgICAgICAgdmFyIG8gPSBlKDExMSksCiAgICAgICAgICAgIGkgPSBlKDcpLAogICAgICAgICAgICBhID0gZSg0NiksCiAgICAgICAgICAgIHUgPSBlKDMxKSwKICAgICAgICAgICAgYyA9IGUoMjAzKSwKICAgICAgICAgICAgZiA9IGUoNjMpLAogICAgICAgICAgICBzID0gZSgyNCksCiAgICAgICAgICAgIHAgPSBlKDExOSksCiAgICAgICAgICAgIGwgPSBlKDEyMCksCiAgICAgICAgICAgIGggPSBlKDE2NSksCiAgICAgICAgICAgIHYgPSBUeXBlRXJyb3IsCiAgICAgICAgICAgIHkgPSBuLnByb3RvdHlwZTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGQodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGIgJiYgaChiLCAibm9ybWFsIiwgdCksIG5ldyBuKCEwLCB0KQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBnKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBPID8gKGEodCksIGsgPyBUKHRbMF0sIHRbMV0sIGQpIDogVCh0WzBdLCB0WzFdKSkgOiBrID8gVCh0LCBkKSA6IFQodCkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYiwgbSwgeCwgdywgUywgQSwgRSA9IGUgJiYgZS50aGF0LAogICAgICAgICAgICAgICAgTyA9ICEoIWUgfHwgIWUuQVNfRU5UUklFUyksCiAgICAgICAgICAgICAgICBSID0gISghZSB8fCAhZS5JU19SRUNPUkQpLAogICAgICAgICAgICAgICAgSSA9ICEoIWUgfHwgIWUuSVNfSVRFUkFUT1IpLAogICAgICAgICAgICAgICAgayA9ICEoIWUgfHwgIWUuSU5URVJSVVBURUQpLAogICAgICAgICAgICAgICAgVCA9IG8ociwgRSk7CiAgICAgICAgICAgIGlmIChSKSBiID0gdC5pdGVyYXRvcjsKICAgICAgICAgICAgZWxzZSBpZiAoSSkgYiA9IHQ7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCEoSSA9IGwodCkpKSB0aHJvdyB2KHUodCkgKyAiIGlzIG5vdCBpdGVyYWJsZSIpOwogICAgICAgICAgICAgICAgaWYgKGMoSSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKG0gPSAwLCB4ID0gZih0KTsgbSA8IHg7IG0rKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh3ID0gZyh0W21dKSkgJiYgcyh5LCB3KSkgcmV0dXJuIHc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBuKCExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYiA9IHAodCwgSSkKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKFMgPSAoUiA/IHQgOiBiKS5uZXh0OyAhKEEgPSBpKFMsIGIpKS5kb25lOykgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB3ID0gZyhBLnZhbHVlKQogICAgICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgICAgIGgoYiwgInRocm93IiwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdyAmJiB3ICYmIHMoeSwgdykpIHJldHVybiB3CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG5ldyBuKCExKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMzMpLAogICAgICAgICAgICBpID0gbigxMjEpLAogICAgICAgICAgICBhID0gbygiaXRlcmF0b3IiKSwKICAgICAgICAgICAgdSA9IEFycmF5LnByb3RvdHlwZTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHJldHVybiByICE9PSB0ICYmIChpLkFycmF5ID09PSByIHx8IHVbYV0gPT09IHIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzMykoIml0ZXJhdG9yIiksCiAgICAgICAgICAgIG8gPSAhMTsKICAgICAgICB0cnkgewogICAgICAgICAgICB2YXIgaSA9IDAsCiAgICAgICAgICAgICAgICBhID0gewogICAgICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTogISFpKysKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgYVtuXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgfSwgQXJyYXkuZnJvbShhLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAyCiAgICAgICAgICAgIH0pKQogICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICBpZiAoIXIgJiYgIW8pIHJldHVybiAhMTsKICAgICAgICAgICAgdmFyIGUgPSAhMTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciBpID0ge307CiAgICAgICAgICAgICAgICBpW25dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmU6IGUgPSAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgdChpKQogICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjApLAogICAgICAgICAgICBvID0gZSgxOSksCiAgICAgICAgICAgIGkgPSBlKDk3KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIHZhciBhLCB1OwogICAgICAgICAgICByZXR1cm4gaSAmJiBuKGEgPSByLmNvbnN0cnVjdG9yKSAmJiBhICE9PSBlICYmIG8odSA9IGEucHJvdG90eXBlKSAmJiB1ICE9PSBlLnByb3RvdHlwZSAmJiBpKHQsIHUpLCB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig3NCksCiAgICAgICAgICAgIGkgPSBuKDg1KSwKICAgICAgICAgICAgYSA9IG4oMTE2KSwKICAgICAgICAgICAgdSA9IG4oMTExKSwKICAgICAgICAgICAgYyA9IG4oMTU3KSwKICAgICAgICAgICAgZiA9IG4oMTYpLAogICAgICAgICAgICBzID0gbigyMDIpLAogICAgICAgICAgICBwID0gbigyMDcpLAogICAgICAgICAgICBsID0gbigxMTgpLAogICAgICAgICAgICBoID0gbigyMDgpLAogICAgICAgICAgICB2ID0gbig1KSwKICAgICAgICAgICAgeSA9IG4oMTk1KS5mYXN0S2V5LAogICAgICAgICAgICBkID0gKG4gPSBuKDUxKSkuc2V0LAogICAgICAgICAgICBnID0gbi5nZXR0ZXJGb3I7CiAgICAgICAgci5leHBvcnRzID0gewogICAgICAgICAgICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24ociwgZSwgbiwgcCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gbChyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGkgPSBiKHIpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbShyLCBlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA/IGEudmFsdWUgPSBuIDogKGkubGFzdCA9IGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvID0geShlLCAhMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzOiBuID0gaS5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiB0LAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkOiAhMQogICAgICAgICAgICAgICAgICAgIH0sIGkuZmlyc3QgfHwgKGkuZmlyc3QgPSBhKSwgbiAmJiAobi5uZXh0ID0gYSksIHYgPyBpLnNpemUrKyA6IHIuc2l6ZSsrLCAiRiIgIT09IG8gJiYgKGkuaW5kZXhbb10gPSBhKSksIHIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHIgPSByKChmdW5jdGlvbihyLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgYyhyLCBoKSwgZChyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvKG51bGwpLAogICAgICAgICAgICAgICAgICAgICAgICBmaXJzdDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogMAogICAgICAgICAgICAgICAgICAgIH0pLCB2IHx8IChyLnNpemUgPSAwKSwgZihpKSB8fCBzKGksIHJbcF0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdDogciwKICAgICAgICAgICAgICAgICAgICAgICAgQVNfRU5UUklFUzogbgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICB2YXIgaCA9IHIucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgIGIgPSBnKGUpLAogICAgICAgICAgICAgICAgICAgIG0gPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCBuID0gYih0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJGIiAhPT0gKHQgPSB5KHIpKSkgcmV0dXJuIG4uaW5kZXhbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IG4uZmlyc3Q7IGU7IGUgPSBlLm5leHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT0gcikgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIGEoaCwgewogICAgICAgICAgICAgICAgICAgIGNsZWFyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IGIodGhpcyksIGUgPSByLmluZGV4LCBuID0gci5maXJzdDsgbjspIG4ucmVtb3ZlZCA9ICEwLCBuLnByZXZpb3VzICYmIChuLnByZXZpb3VzID0gbi5wcmV2aW91cy5uZXh0ID0gdCksIGRlbGV0ZSBlW24uaW5kZXhdLCBuID0gbi5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICByLmZpcnN0ID0gci5sYXN0ID0gdCwgdiA/IHIuc2l6ZSA9IDAgOiB0aGlzLnNpemUgPSAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkZWxldGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIGUgPSBiKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG0odGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIChyID0gbi5uZXh0LCB0ID0gbi5wcmV2aW91cywgZGVsZXRlIGUuaW5kZXhbbi5pbmRleF0sIG4ucmVtb3ZlZCA9ICEwLCB0ICYmICh0Lm5leHQgPSByKSwgciAmJiAoci5wcmV2aW91cyA9IHQpLCBlLmZpcnN0ID09IG4gJiYgKGUuZmlyc3QgPSByKSwgZS5sYXN0ID09IG4gJiYgKGUubGFzdCA9IHQpLCB2ID8gZS5zaXplLS0gOiB0aGlzLnNpemUtLSksICEhbgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZm9yRWFjaDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlLCBuID0gYih0aGlzKSwgbyA9IHUociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KTsgZSA9IGUgPyBlLm5leHQgOiBuLmZpcnN0OykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyhlLnZhbHVlLCBlLmtleSwgdGhpcyk7IGUgJiYgZS5yZW1vdmVkOykgZSA9IGUucHJldmlvdXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFtKHRoaXMsIHQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIGEoaCwgbiA/IHsKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0ID0gbSh0aGlzLCB0KSkgJiYgdC52YWx1ZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsKHRoaXMsIDAgPT09IHQgPyAwIDogdCwgcikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCh0aGlzLCB0ID0gMCA9PT0gdCA/IDAgOiB0LCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCB2ICYmIGkoaCwgInNpemUiLCB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYih0aGlzKS5zaXplCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0U3Ryb25nOiBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IGUgKyAiIEl0ZXJhdG9yIiwKICAgICAgICAgICAgICAgICAgICBpID0gZyhlKSwKICAgICAgICAgICAgICAgICAgICBhID0gZyhvKTsKICAgICAgICAgICAgICAgIHAociwgZSwgKGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgICAgICBkKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogbywKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiByLAogICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogaShyKSwKICAgICAgICAgICAgICAgICAgICAgICAga2luZDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDogdAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBhKHRoaXMpLCBlID0gci5raW5kLCBuID0gci5sYXN0OyBuICYmIG4ucmVtb3ZlZDspIG4gPSBuLnByZXZpb3VzOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByLnRhcmdldCAmJiAoci5sYXN0ID0gbiA9IG4gPyBuLm5leHQgOiByLnN0YXRlLmZpcnN0KSA/IGwoImtleXMiID09IGUgPyBuLmtleSA6ICJ2YWx1ZXMiID09IGUgPyBuLnZhbHVlIDogW24ua2V5LCBuLnZhbHVlXSwgITEpIDogKHIudGFyZ2V0ID0gdCwgbCh0LCAhMCkpCiAgICAgICAgICAgICAgICB9KSwgbiA/ICJlbnRyaWVzIiA6ICJ2YWx1ZXMiLCAhbiwgITApLCBoKGUpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZnVuY3Rpb24gbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9CiAgICAgICAgdmFyIG8gPSBlKDIpLAogICAgICAgICAgICBpID0gZSg3KSwKICAgICAgICAgICAgYSA9IGUoMzUpLAogICAgICAgICAgICB1ID0gZSg0OSksCiAgICAgICAgICAgIGMgPSBlKDIwKSwKICAgICAgICAgICAgZiA9IGUoMTg2KSwKICAgICAgICAgICAgcyA9IGUoOTUpLAogICAgICAgICAgICBwID0gZSg5NyksCiAgICAgICAgICAgIGwgPSBlKDE4OCksCiAgICAgICAgICAgIGggPSBlKDQzKSwKICAgICAgICAgICAgdiA9IGUoNDcpLAogICAgICAgICAgICB5ID0gZSgzMyksCiAgICAgICAgICAgIGQgPSBlKDEyMSksCiAgICAgICAgICAgIGcgPSAoZSA9IGUoMTg3KSwgdS5QUk9QRVIpLAogICAgICAgICAgICBiID0gdS5DT05GSUdVUkFCTEUsCiAgICAgICAgICAgIG0gPSBlLkl0ZXJhdG9yUHJvdG90eXBlLAogICAgICAgICAgICB4ID0gZS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTLAogICAgICAgICAgICB3ID0geSgiaXRlcmF0b3IiKSwKICAgICAgICAgICAgUyA9ICJ2YWx1ZXMiLAogICAgICAgICAgICBBID0gImVudHJpZXMiOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUsIHUsIHksIEUsIE8pIHsKICAgICAgICAgICAgZnVuY3Rpb24gUih0KSB7CiAgICAgICAgICAgICAgICBpZiAodCA9PT0geSAmJiBDKSByZXR1cm4gQzsKICAgICAgICAgICAgICAgIGlmICgheCAmJiB0IGluIFApIHJldHVybiBQW3RdOwogICAgICAgICAgICAgICAgc3dpdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5cyI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSBTOgogICAgICAgICAgICAgICAgICAgIGNhc2UgQToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBlKHRoaXMsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGUodGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmKGUsIHIsIHUpOwogICAgICAgICAgICB2YXIgSSwgaywgVCwgTSA9IHIgKyAiIEl0ZXJhdG9yIiwKICAgICAgICAgICAgICAgIGogPSAhMSwKICAgICAgICAgICAgICAgIFAgPSB0LnByb3RvdHlwZSwKICAgICAgICAgICAgICAgIEQgPSBQW3ddIHx8IFBbIkBAaXRlcmF0b3IiXSB8fCB5ICYmIFBbeV0sCiAgICAgICAgICAgICAgICBDID0gIXggJiYgRCB8fCBSKHkpOwogICAgICAgICAgICBpZiAoKHUgPSAiQXJyYXkiID09IHIgJiYgUC5lbnRyaWVzIHx8IEQpICYmIChJID0gcyh1LmNhbGwobmV3IHQpKSkgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSS5uZXh0ICYmIChhIHx8IHMoSSkgPT09IG0gfHwgKHAgPyBwKEksIG0pIDogYyhJW3ddKSB8fCB2KEksIHcsIG4pKSwgbChJLCBNLCAhMCwgITApLCBhICYmIChkW01dID0gbikpLCBnICYmIHkgPT0gUyAmJiBEICYmIEQubmFtZSAhPT0gUyAmJiAoIWEgJiYgYiA/IGgoUCwgIm5hbWUiLCBTKSA6IChqID0gITAsIEMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaShELCB0aGlzKQogICAgICAgICAgICAgICAgfSkpLCB5KQogICAgICAgICAgICAgICAgaWYgKGsgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogUihTKSwKICAgICAgICAgICAgICAgICAgICAgICAga2V5czogRSA/IEMgOiBSKCJrZXlzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXM6IFIoQSkKICAgICAgICAgICAgICAgICAgICB9LCBPKQogICAgICAgICAgICAgICAgICAgIGZvciAoVCBpbiBrKSAheCAmJiAhaiAmJiBUIGluIFAgfHwgdihQLCBULCBrW1RdKTsKICAgICAgICAgICAgICAgIGVsc2Ugbyh7CiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiByLAogICAgICAgICAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgICAgICAgICBmb3JjZWQ6IHggfHwgagogICAgICAgICAgICAgICAgfSwgayk7CiAgICAgICAgICAgIHJldHVybiBhICYmICFPIHx8IFBbd10gPT09IEMgfHwgdihQLCB3LCBDLCB7CiAgICAgICAgICAgICAgICBuYW1lOiB5CiAgICAgICAgICAgIH0pLCBkW3JdID0gQywgawogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjMpLAogICAgICAgICAgICBvID0gZSg4NSksCiAgICAgICAgICAgIGkgPSBlKDMzKSwKICAgICAgICAgICAgYSA9IGUoNSksCiAgICAgICAgICAgIHUgPSBpKCJzcGVjaWVzIik7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB0ID0gbih0KSwgYSAmJiB0ICYmICF0W3VdICYmIG8odCwgdSwgewogICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyMTApCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8sIGksIGEsIHUsIGMgPSBuKDIwMSksCiAgICAgICAgICAgIGYgPSBuKDMpLAogICAgICAgICAgICBzID0gbigxMyksCiAgICAgICAgICAgIHAgPSBuKDExNiksCiAgICAgICAgICAgIGwgPSBuKDE5NSksCiAgICAgICAgICAgIGggPSBuKDE5NCksCiAgICAgICAgICAgIHYgPSBuKDIxMSksCiAgICAgICAgICAgIHkgPSBuKDE5KSwKICAgICAgICAgICAgZCA9IG4oNTEpLmVuZm9yY2UsCiAgICAgICAgICAgIGcgPSBuKDYpLAogICAgICAgICAgICBiID0gbig1MiksCiAgICAgICAgICAgIG0gPSAobiA9IE9iamVjdCwgQXJyYXkuaXNBcnJheSksCiAgICAgICAgICAgIHggPSBuLmlzRXh0ZW5zaWJsZSwKICAgICAgICAgICAgdyA9IG4uaXNGcm96ZW4sCiAgICAgICAgICAgIFMgPSBuLmlzU2VhbGVkLAogICAgICAgICAgICBBID0gbi5mcmVlemUsCiAgICAgICAgICAgIEUgPSBuLnNlYWwsCiAgICAgICAgICAgIE8gPSB7fSwKICAgICAgICAgICAgUiA9IHt9LAogICAgICAgICAgICBJID0gKG4gPSAhZi5BY3RpdmVYT2JqZWN0ICYmICJBY3RpdmVYT2JqZWN0IiBpbiBmLCBmID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiByKHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMF0gOiB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBoKCJXZWFrTWFwIiwgZiwgdikpLAogICAgICAgICAgICBrID0gcygoaCA9IEkucHJvdG90eXBlKS5zZXQpOwogICAgICAgIGIgJiYgKG4gPyAobyA9IHYuZ2V0Q29uc3RydWN0b3IoZiwgIldlYWtNYXAiLCAhMCksIGwuZW5hYmxlKCksIGkgPSBzKGguZGVsZXRlKSwgYSA9IHMoaC5oYXMpLCB1ID0gcyhoLmdldCksIHAoaCwgewogICAgICAgICAgICBkZWxldGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmICgheSh0KSB8fCB4KHQpKSByZXR1cm4gaSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgIHZhciByID0gZCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByLmZyb3plbiB8fCAoci5mcm96ZW4gPSBuZXcgbyksIGkodGhpcywgdCkgfHwgci5mcm96ZW4uZGVsZXRlKHQpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhhczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKCF5KHQpIHx8IHgodCkpIHJldHVybiBhKHRoaXMsIHQpOwogICAgICAgICAgICAgICAgdmFyIHIgPSBkKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIHIuZnJvemVuIHx8IChyLmZyb3plbiA9IG5ldyBvKSwgYSh0aGlzLCB0KSB8fCByLmZyb3plbi5oYXModCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIXkodCkgfHwgeCh0KSkgcmV0dXJuIHUodGhpcywgdCk7CiAgICAgICAgICAgICAgICB2YXIgciA9IGQodGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gci5mcm96ZW4gfHwgKHIuZnJvemVuID0gbmV3IG8pLCBhKHRoaXMsIHQpID8gdSh0aGlzLCB0KSA6IHIuZnJvemVuLmdldCh0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgcmV0dXJuIHkodCkgJiYgIXgodCkgPyAoKGUgPSBkKHRoaXMpKS5mcm96ZW4gfHwgKGUuZnJvemVuID0gbmV3IG8pLCBhKHRoaXMsIHQpID8gayh0aGlzLCB0LCByKSA6IGUuZnJvemVuLnNldCh0LCByKSkgOiBrKHRoaXMsIHQsIHIpLCB0aGlzCiAgICAgICAgICAgIH0KICAgICAgICB9KSkgOiBjICYmIGcoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IEEoW10pOwogICAgICAgICAgICByZXR1cm4gayhuZXcgSSwgdCwgMSksICF3KHQpCiAgICAgICAgfSkpICYmIHAoaCwgewogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgcmV0dXJuIG0odCkgJiYgKHcodCkgPyBlID0gTyA6IFModCkgJiYgKGUgPSBSKSksIGsodGhpcywgdCwgciksIGUgPT0gTyAmJiBBKHQpLCBlID09IFIgJiYgRSh0KSwgdGhpcwogICAgICAgICAgICB9CiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgZnVuY3Rpb24gbyh0KSB7CiAgICAgICAgICAgIHJldHVybiB0LmZyb3plbiB8fCAodC5mcm96ZW4gPSBuZXcgUykKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGkodCwgcikgewogICAgICAgICAgICByZXR1cm4gYih0LmVudHJpZXMsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdFswXSA9PT0gcgogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICAgICAgdmFyIGEgPSBuKDEzKSwKICAgICAgICAgICAgdSA9IG4oMTE2KSwKICAgICAgICAgICAgYyA9IG4oMTk1KS5nZXRXZWFrRGF0YSwKICAgICAgICAgICAgZiA9IG4oMTU3KSwKICAgICAgICAgICAgcyA9IG4oNDYpLAogICAgICAgICAgICBwID0gbigxNiksCiAgICAgICAgICAgIGwgPSBuKDE5KSwKICAgICAgICAgICAgaCA9IG4oMjAyKSwKICAgICAgICAgICAgdiA9IG4oMTI2KSwKICAgICAgICAgICAgeSA9IG4oMzgpLAogICAgICAgICAgICBkID0gKG4gPSBuKDUxKSkuc2V0LAogICAgICAgICAgICBnID0gbi5nZXR0ZXJGb3IsCiAgICAgICAgICAgIGIgPSB2LmZpbmQsCiAgICAgICAgICAgIG0gPSB2LmZpbmRJbmRleCwKICAgICAgICAgICAgeCA9IGEoW10uc3BsaWNlKSwKICAgICAgICAgICAgdyA9IDAsCiAgICAgICAgICAgIFMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcyA9IFtdCiAgICAgICAgICAgIH07CiAgICAgICAgUy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKHQgPSBpKHRoaXMsIHQpKSByZXR1cm4gdFsxXQogICAgICAgICAgICB9LAogICAgICAgICAgICBoYXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhIWkodGhpcywgdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGkodGhpcywgdCk7CiAgICAgICAgICAgICAgICBlID8gZVsxXSA9IHIgOiB0aGlzLmVudHJpZXMucHVzaChbdCwgcl0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRlbGV0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBtKHRoaXMuZW50cmllcywgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gclswXSA9PT0gdAogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIH5yICYmIHgodGhpcy5lbnRyaWVzLCByLCAxKSwgISF+cgogICAgICAgICAgICB9CiAgICAgICAgfSwgci5leHBvcnRzID0gewogICAgICAgICAgICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24ociwgZSwgbiwgaSkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gYSh0LCByLCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBiKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gYyhzKHIpLCAhMCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwID09PSBpID8gbyhuKS5zZXQociwgZSkgOiBpW24uaWRdID0gZSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgciA9IHIoKGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICBmKHIsIHYpLCBkKHIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHcrKywKICAgICAgICAgICAgICAgICAgICAgICAgZnJvemVuOiB0CiAgICAgICAgICAgICAgICAgICAgfSksIHAobykgfHwgaChvLCByW2ldLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIEFTX0VOVFJJRVM6IG4KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgdmFyIHYgPSByLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICBiID0gZyhlKTsKICAgICAgICAgICAgICAgIHJldHVybiB1KHYsIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBiKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWwodCkpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBjKHQpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IGUgPyBvKHIpLmRlbGV0ZSh0KSA6IGUgJiYgeShlLCByLmlkKSAmJiBkZWxldGUgZVtyLmlkXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaGFzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYih0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYyh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwID09PSBlID8gbyhyKS5oYXModCkgOiBlICYmIHkoZSwgci5pZCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgdSh2LCBuID8gewogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGIodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGMocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IG4gPyBvKGUpLmdldChyKSA6IG4gPyBuW2UuaWRdIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEodGhpcywgdCwgcikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzLCB0LCAhMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgcgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTkxKSwKICAgICAgICAgICAgaSA9IGUoMjMpLAogICAgICAgICAgICBhID0gZSgxOTApOwogICAgICAgIG4oewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBjb21wb3NpdGVTeW1ib2w6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIDEgPT0gYXJndW1lbnRzLmxlbmd0aCAmJiAic3RyaW5nIiA9PSB0eXBlb2YgYXJndW1lbnRzWzBdID8gaSgiU3ltYm9sIikuZm9yKGFyZ3VtZW50c1swXSkgOiBhKG8sIG51bGwsIGFyZ3VtZW50cykuZ2V0KCJzeW1ib2wiLCBpKCJTeW1ib2wiKSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgZnVuY3Rpb24gbyh0KSB7CiAgICAgICAgICAgIGlmICgodCA9IHcodCkpLnN0YXRlID09IEEpIHRocm93IGIobSArICIgYWxyZWFkeSBkaXNwb3NlZCIpOwogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaSgpIHsKICAgICAgICAgICAgeChzKHRoaXMsIEUpLCB7CiAgICAgICAgICAgICAgICB0eXBlOiBtLAogICAgICAgICAgICAgICAgc3RhdGU6ICJwZW5kaW5nIiwKICAgICAgICAgICAgICAgIHN0YWNrOiBbXQogICAgICAgICAgICB9KSwgdSB8fCAodGhpcy5kaXNwb3NlZCA9ICExKQogICAgICAgIH0KICAgICAgICB2YXIgYSA9IG4oMiksCiAgICAgICAgICAgIHUgPSBuKDUpLAogICAgICAgICAgICBjID0gbigyMyksCiAgICAgICAgICAgIGYgPSBuKDMwKSwKICAgICAgICAgICAgcyA9IG4oMTU3KSwKICAgICAgICAgICAgcCA9IG4oNDcpLAogICAgICAgICAgICBsID0gbigxMTYpLAogICAgICAgICAgICBoID0gbig4NSksCiAgICAgICAgICAgIHYgPSBuKDMzKSwKICAgICAgICAgICAgeSA9IG4oNTEpLAogICAgICAgICAgICBkID0gbigxNTgpLAogICAgICAgICAgICBnID0gYygiU3VwcHJlc3NlZEVycm9yIiksCiAgICAgICAgICAgIGIgPSBSZWZlcmVuY2VFcnJvciwKICAgICAgICAgICAgbSA9IChjID0gdigiZGlzcG9zZSIpLCB2ID0gdigidG9TdHJpbmdUYWciKSwgIkRpc3Bvc2FibGVTdGFjayIpLAogICAgICAgICAgICB4ID0geS5zZXQsCiAgICAgICAgICAgIHcgPSB5LmdldHRlckZvcihtKSwKICAgICAgICAgICAgUyA9ICJzeW5jLWRpc3Bvc2UiLAogICAgICAgICAgICBBID0gImRpc3Bvc2VkIiwKICAgICAgICAgICAgRSA9IGkucHJvdG90eXBlOwogICAgICAgIGwoRSwgewogICAgICAgICAgICBkaXNwb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdyh0aGlzKTsKICAgICAgICAgICAgICAgIGlmICh0LnN0YXRlICE9IEEpIHsKICAgICAgICAgICAgICAgICAgICB0LnN0YXRlID0gQSwgdSB8fCAodGhpcy5kaXNwb3NlZCA9ICEwKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByLCBlID0gdC5zdGFjaywgbiA9IGUubGVuZ3RoLCBvID0gITE7IG47KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZVstLW5dOwogICAgICAgICAgICAgICAgICAgICAgICBlW25dID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkoKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbyA/IG5ldyBnKHQsIHIpIDogKG8gPSAhMCwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodC5zdGFjayA9IG51bGwsIG8pIHRocm93IHIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZChvKHRoaXMpLCB0LCBTKSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBhZG9wdDogZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBvKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGYoZSksIGQobiwgdCwgUywgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGUocikKICAgICAgICAgICAgICAgIH0pKSwgcgogICAgICAgICAgICB9LAogICAgICAgICAgICBkZWZlcjogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBvKHRoaXMpOwogICAgICAgICAgICAgICAgZihyKSwgZChlLCB0LCBTLCByKQogICAgICAgICAgICB9LAogICAgICAgICAgICBtb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gbyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICByID0gbmV3IGk7CiAgICAgICAgICAgICAgICByZXR1cm4gdyhyKS5zdGFjayA9IHQuc3RhY2ssIHQuc3RhY2sgPSBbXSwgdC5zdGF0ZSA9IEEsIHUgfHwgKHRoaXMuZGlzcG9zZWQgPSAhMCksIHIKICAgICAgICAgICAgfQogICAgICAgIH0pLCB1ICYmIGgoRSwgImRpc3Bvc2VkIiwgewogICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHcodGhpcykuc3RhdGUgPT0gQQogICAgICAgICAgICB9CiAgICAgICAgfSksIHAoRSwgYywgRS5kaXNwb3NlLCB7CiAgICAgICAgICAgIG5hbWU6ICJkaXNwb3NlIgogICAgICAgIH0pLCBwKEUsIHYsIG0sIHsKICAgICAgICAgICAgbm9uV3JpdGFibGU6ICEwCiAgICAgICAgfSksIGEoewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIERpc3Bvc2FibGVTdGFjazogaQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkZ1bmN0aW9uIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBkZW1ldGhvZGl6ZTogZSgyMTUpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpLAogICAgICAgICAgICBvID0gZSgzMCk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBuKG8odGhpcykpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTMpLAogICAgICAgICAgICBpID0gZSgyMCksCiAgICAgICAgICAgIGEgPSBlKDUwKSwKICAgICAgICAgICAgdSA9IGUoMzgpLAogICAgICAgICAgICBjID0gZSg1KSwKICAgICAgICAgICAgZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCiAgICAgICAgICAgIHMgPSAvXlxzKmNsYXNzXGIvLAogICAgICAgICAgICBwID0gbyhzLmV4ZWMpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJGdW5jdGlvbiIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBzaGFtOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNDYWxsYWJsZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkodCkgJiYgISBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjIHx8ICFwKHMsIGEodCkpKSByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICAgICAgICAgIHJldHVybiAhISh0ID0gZih0LCAicHJvdG90eXBlIikpICYmIHUodCwgIndyaXRhYmxlIikgJiYgIXQud3JpdGFibGUKICAgICAgICAgICAgICAgIH0odCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkZ1bmN0aW9uIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGlzQ29uc3RydWN0b3I6IGUoMTEzKQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDMzKSwKICAgICAgICAgICAgaSA9IG4oNDQpLmY7CiAgICAgICAgbiA9IG8oIm1ldGFkYXRhIik7CiAgICAgICAgKG8gPSBGdW5jdGlvbi5wcm90b3R5cGUpW25dID09PSB0ICYmIGkobywgbiwgewogICAgICAgICAgICB2YWx1ZTogbnVsbAogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkZ1bmN0aW9uIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwLAogICAgICAgICAgICBuYW1lOiAiZGVtZXRob2RpemUiCiAgICAgICAgfSwgewogICAgICAgICAgICB1blRoaXM6IGUoMjE1KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzKSwKICAgICAgICAgICAgaSA9IGUoMTU3KSwKICAgICAgICAgICAgYSA9IGUoMjApLAogICAgICAgICAgICB1ID0gZSg0MyksCiAgICAgICAgICAgIGMgPSBlKDYpLAogICAgICAgICAgICBmID0gZSgzOCksCiAgICAgICAgICAgIHMgPSBlKDMzKSwKICAgICAgICAgICAgcCA9IGUoMTg3KS5JdGVyYXRvclByb3RvdHlwZSwKICAgICAgICAgICAgbCA9IChlID0gZSgzNSksIHMgPSBzKCJ0b1N0cmluZ1RhZyIpLCBvLkl0ZXJhdG9yKTsKICAgICAgICBhID0gZSB8fCAhYShsKSB8fCBsLnByb3RvdHlwZSAhPT0gcCB8fCAhYygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGwoe30pCiAgICAgICAgfSkpLCBjID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGkodGhpcywgcCkKICAgICAgICB9OwogICAgICAgIGYocCwgcykgfHwgdShwLCBzLCAiSXRlcmF0b3IiKSwgIWEgJiYgZihwLCAiY29uc3RydWN0b3IiKSAmJiBwLmNvbnN0cnVjdG9yICE9PSBPYmplY3QgfHwgdShwLCAiY29uc3RydWN0b3IiLCBjKSwgYy5wcm90b3R5cGUgPSBwLCBuKHsKICAgICAgICAgICAgZ2xvYmFsOiAhMCwKICAgICAgICAgICAgY29uc3RydWN0b3I6ICEwLAogICAgICAgICAgICBmb3JjZWQ6IGEKICAgICAgICB9LCB7CiAgICAgICAgICAgIEl0ZXJhdG9yOiBjCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDIpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBuYW1lOiAiaW5kZXhlZCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGFzSW5kZXhlZFBhaXJzOiBlKDIyMikKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4odCwgcikgewogICAgICAgICAgICByZXR1cm4gW3IsIHRdCiAgICAgICAgfQogICAgICAgIHZhciBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMjIzKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG8oaSwgdGhpcywgbikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcpLAogICAgICAgICAgICBvID0gZSgzMCksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IGUoMTIyKSwKICAgICAgICAgICAgdSA9IGUoMjI0KSwKICAgICAgICAgICAgYyA9IGUoMjI1KSwKICAgICAgICAgICAgZiA9IHUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLml0ZXJhdG9yLAogICAgICAgICAgICAgICAgICAgIHIgPSBpKG4odGhpcy5uZXh0LCB0KSk7CiAgICAgICAgICAgICAgICBpZiAoISh0aGlzLmRvbmUgPSAhIXIuZG9uZSkpIHJldHVybiBjKHQsIHRoaXMubWFwcGVyLCBbci52YWx1ZSwgdGhpcy5jb3VudGVyKytdLCAhMCkKICAgICAgICAgICAgfSkpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGkodGhpcyksIG8odCksIG5ldyBmKGEodGhpcyksIHsKICAgICAgICAgICAgICAgIG1hcHBlcjogdAogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDc0KSwKICAgICAgICAgICAgYSA9IG4oNDMpLAogICAgICAgICAgICB1ID0gbigxMTYpLAogICAgICAgICAgICBjID0gbigzMyksCiAgICAgICAgICAgIGYgPSBuKDUxKSwKICAgICAgICAgICAgcyA9IG4oMjkpLAogICAgICAgICAgICBwID0gbigxODcpLkl0ZXJhdG9yUHJvdG90eXBlLAogICAgICAgICAgICBsID0gbigxMTgpLAogICAgICAgICAgICBoID0gbigxNjUpLAogICAgICAgICAgICB2ID0gKG4gPSBjKCJ0b1N0cmluZ1RhZyIpLCAiSXRlcmF0b3JIZWxwZXIiKSwKICAgICAgICAgICAgeSA9ICJXcmFwRm9yVmFsaWRJdGVyYXRvciIsCiAgICAgICAgICAgIGQgPSBmLnNldCwKICAgICAgICAgICAgZyA9IChjID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBmLmdldHRlckZvcihyID8geSA6IHYpOwogICAgICAgICAgICAgICAgcmV0dXJuIHUoaShwKSwgewogICAgICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKSByZXR1cm4gbi5uZXh0SGFuZGxlcigpOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLmRvbmUgPyB0IDogbi5uZXh0SGFuZGxlcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwobywgbi5kb25lKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuLmRvbmUgPSAhMCwgbwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZXR1cm46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5pdGVyYXRvcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uZG9uZSA9ICEwLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHMoaSwgInJldHVybiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPyBvKGEsIGkpIDogbCh0LCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5pbm5lcikgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgobi5pbm5lci5pdGVyYXRvciwgIm5vcm1hbCIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoKGksICJ0aHJvdyIsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgoaSwgIm5vcm1hbCIpLCBsKHQsICEwKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sIGMoITApKSwKICAgICAgICAgICAgYiA9IGMoITEpOwogICAgICAgIGEoYiwgbiwgIkl0ZXJhdG9yIEhlbHBlciIpLCByLmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgbikgewogICAgICAgICAgICAgICAgbiA/IChuLml0ZXJhdG9yID0gZS5pdGVyYXRvciwgbi5uZXh0ID0gZS5uZXh0KSA6IG4gPSBlLCBuLnR5cGUgPSByID8geSA6IHYsIG4ubmV4dEhhbmRsZXIgPSB0LCBuLmNvdW50ZXIgPSAwLCBuLmRvbmUgPSAhMSwgZCh0aGlzLCBuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlLnByb3RvdHlwZSA9IHIgPyBnIDogYiwgZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNDYpLAogICAgICAgICAgICBvID0gZSgxNjUpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUsIGkpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBpID8gcihuKGUpWzBdLCBlWzFdKSA6IHIoZSkKICAgICAgICAgICAgfSBjYXRjaCAocikgewogICAgICAgICAgICAgICAgbyh0LCAidGhyb3ciLCByKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg3KSwKICAgICAgICAgICAgbyA9IGUoNDcpLAogICAgICAgICAgICBpID0gZSgyOSksCiAgICAgICAgICAgIGEgPSBlKDM4KSwKICAgICAgICAgICAgdSA9IGUoMzMpOwogICAgICAgIGEoZSA9IGUoMTg3KS5JdGVyYXRvclByb3RvdHlwZSwgdSA9IHUoImRpc3Bvc2UiKSkgfHwgbyhlLCB1LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gaSh0aGlzLCAicmV0dXJuIik7CiAgICAgICAgICAgIHQgJiYgbih0LCB0aGlzKQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IGUoMTIyKSwKICAgICAgICAgICAgdSA9IGUoMTY4KSwKICAgICAgICAgICAgYyA9IGUoMTY5KSwKICAgICAgICAgICAgZiA9IGUoMjI0KSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByID0gdGhpcy5pdGVyYXRvciwgZSA9IHRoaXMubmV4dDsgdGhpcy5yZW1haW5pbmc7KQogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbWFpbmluZy0tLCB0ID0gaShvKGUsIHIpKSwgdGhpcy5kb25lID0gISF0LmRvbmUpIHJldHVybjsKICAgICAgICAgICAgICAgIGlmICh0ID0gaShvKGUsIHIpKSwgISh0aGlzLmRvbmUgPSAhIXQuZG9uZSkpIHJldHVybiB0LnZhbHVlCiAgICAgICAgICAgIH0pKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBkcm9wOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzKSwgdCA9IGModSgrdCkpLCBuZXcgZihhKHRoaXMpLCB7CiAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nOiB0CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDIwMiksCiAgICAgICAgICAgIGkgPSBlKDMwKSwKICAgICAgICAgICAgYSA9IGUoNDYpLAogICAgICAgICAgICB1ID0gZSgxMjIpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGV2ZXJ5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBhKHRoaXMpLCBpKHQpOwogICAgICAgICAgICAgICAgdmFyIHIgPSB1KHRoaXMpLAogICAgICAgICAgICAgICAgICAgIGUgPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICFvKHIsIChmdW5jdGlvbihyLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0KHIsIGUrKykpIHJldHVybiBuKCkKICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgSVNfUkVDT1JEOiAhMCwKICAgICAgICAgICAgICAgICAgICBJTlRFUlJVUFRFRDogITAKICAgICAgICAgICAgICAgIH0pLnN0b3BwZWQKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMzApLAogICAgICAgICAgICBhID0gZSg0NiksCiAgICAgICAgICAgIHUgPSBlKDEyMiksCiAgICAgICAgICAgIGMgPSBlKDIyNCksCiAgICAgICAgICAgIGYgPSBlKDIyNSksCiAgICAgICAgICAgIHMgPSBjKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIHIgPSB0aGlzLml0ZXJhdG9yLCBlID0gdGhpcy5wcmVkaWNhdGUsIG4gPSB0aGlzLm5leHQ7OykgewogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gYShvKG4sIHIpKSwgdGhpcy5kb25lID0gISF0LmRvbmUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQudmFsdWUsIGYociwgZSwgW3QsIHRoaXMuY291bnRlcisrXSwgITApKSByZXR1cm4gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzKSwgaSh0KSwgbmV3IHModSh0aGlzKSwgewogICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZTogdAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyMDIpLAogICAgICAgICAgICBpID0gZSgzMCksCiAgICAgICAgICAgIGEgPSBlKDQ2KSwKICAgICAgICAgICAgdSA9IGUoMTIyKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmaW5kOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBhKHRoaXMpLCBpKHQpOwogICAgICAgICAgICAgICAgdmFyIHIgPSB1KHRoaXMpLAogICAgICAgICAgICAgICAgICAgIGUgPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuIG8ociwgKGZ1bmN0aW9uKHIsIG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAodChyLCBlKyspKSByZXR1cm4gbihyKQogICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICBJU19SRUNPUkQ6ICEwLAogICAgICAgICAgICAgICAgICAgIElOVEVSUlVQVEVEOiAhMAogICAgICAgICAgICAgICAgfSkucmVzdWx0CiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDMwKSwKICAgICAgICAgICAgYSA9IGUoNDYpLAogICAgICAgICAgICB1ID0gZSgxMjIpLAogICAgICAgICAgICBjID0gZSgyMzIpLAogICAgICAgICAgICBmID0gZSgyMjQpLAogICAgICAgICAgICBzID0gZSgxNjUpLAogICAgICAgICAgICBwID0gZigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByLCBlID0gdGhpcy5pdGVyYXRvciwgbiA9IHRoaXMubWFwcGVyOzspIHsKICAgICAgICAgICAgICAgICAgICBpZiAociA9IHRoaXMuaW5uZXIpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBhKG8oci5uZXh0LCByLml0ZXJhdG9yKSkpLmRvbmUpIHJldHVybiB0LnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlubmVyID0gbnVsbAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcyhlLCAidGhyb3ciLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGEobyh0aGlzLm5leHQsIGUpKSwgdGhpcy5kb25lID0gISF0LmRvbmUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlubmVyID0gYyhuKHQudmFsdWUsIHRoaXMuY291bnRlcisrKSkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMoZSwgInRocm93IiwgdCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmbGF0TWFwOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzKSwgaSh0KSwgbmV3IHAodSh0aGlzKSwgewogICAgICAgICAgICAgICAgICAgIG1hcHBlcjogdCwKICAgICAgICAgICAgICAgICAgICBpbm5lcjogbnVsbAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDcpLAogICAgICAgICAgICBpID0gbig0NiksCiAgICAgICAgICAgIGEgPSBuKDEyMiksCiAgICAgICAgICAgIHUgPSBuKDEyMCk7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICB2YXIgZSA9IGkocik7CiAgICAgICAgICAgIHIgPSB1KGUpOwogICAgICAgICAgICByZXR1cm4gYShpKHIgIT09IHQgPyBvKHIsIGUpIDogZSkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMjAyKSwKICAgICAgICAgICAgaSA9IGUoMzApLAogICAgICAgICAgICBhID0gZSg0NiksCiAgICAgICAgICAgIHUgPSBlKDEyMik7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZm9yRWFjaDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgYSh0aGlzKSwgaSh0KTsKICAgICAgICAgICAgICAgIHZhciByID0gdSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBlID0gMDsKICAgICAgICAgICAgICAgIG8ociwgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICB0KHIsIGUrKykKICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgSVNfUkVDT1JEOiAhMAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMzkpLAogICAgICAgICAgICBhID0gZSgyNCksCiAgICAgICAgICAgIHUgPSBlKDE4NykuSXRlcmF0b3JQcm90b3R5cGUsCiAgICAgICAgICAgIGMgPSBlKDIyNCksCiAgICAgICAgICAgIGYgPSBlKDIzMiksCiAgICAgICAgICAgIHMgPSBjKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKHRoaXMubmV4dCwgdGhpcy5pdGVyYXRvcikKICAgICAgICAgICAgfSksICEwKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBzdGF0OiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZnJvbTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgPSBmKCJzdHJpbmciID09IHR5cGVvZiB0ID8gaSh0KSA6IHQpLCBhKHUsIHQuaXRlcmF0b3IpID8gdC5pdGVyYXRvciA6IG5ldyBzKHQpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGluZGV4ZWQ6IGUoMjIyKQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgbWFwOiBlKDIyMykKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTg1KSwKICAgICAgICAgICAgaSA9IFR5cGVFcnJvcjsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgcmFuZ2U6IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgICAgIGlmICgibnVtYmVyIiA9PSB0eXBlb2YgdCkgcmV0dXJuIG5ldyBvKHQsIHIsIGUsICJudW1iZXIiLCAwLCAxKTsKICAgICAgICAgICAgICAgIGlmICgiYmlnaW50IiA9PSB0eXBlb2YgdCkgcmV0dXJuIG5ldyBvKHQsIHIsIGUsICJiaWdpbnQiLCBCaWdJbnQoMCksIEJpZ0ludCgxKSk7CiAgICAgICAgICAgICAgICB0aHJvdyBpKCJJbmNvcnJlY3QgSXRlcmF0b3IucmFuZ2UgYXJndW1lbnRzIikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigyMDIpLAogICAgICAgICAgICBhID0gbigzMCksCiAgICAgICAgICAgIHUgPSBuKDQ2KSwKICAgICAgICAgICAgYyA9IG4oMTIyKSwKICAgICAgICAgICAgZiA9IFR5cGVFcnJvcjsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICByZWR1Y2U6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHUodGhpcyksIGEocik7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGModGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGFyZ3VtZW50cy5sZW5ndGggPCAyLAogICAgICAgICAgICAgICAgICAgIG8gPSBuID8gdCA6IGFyZ3VtZW50c1sxXSwKICAgICAgICAgICAgICAgICAgICBzID0gMDsKICAgICAgICAgICAgICAgIGlmIChpKGUsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gKG4gPSAhMSwgdCkgOiByKG8sIHQsIHMpLCBzKysKICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICBJU19SRUNPUkQ6ICEwCiAgICAgICAgICAgICAgICAgICAgfSksIG4pIHRocm93IGYoIlJlZHVjZSBvZiBlbXB0eSBpdGVyYXRvciB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTsKICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMjAyKSwKICAgICAgICAgICAgaSA9IGUoMzApLAogICAgICAgICAgICBhID0gZSg0NiksCiAgICAgICAgICAgIHUgPSBlKDEyMik7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgc29tZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgYSh0aGlzKSwgaSh0KTsKICAgICAgICAgICAgICAgIHZhciByID0gdSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBlID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiBvKHIsIChmdW5jdGlvbihyLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQociwgZSsrKSkgcmV0dXJuIG4oKQogICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICBJU19SRUNPUkQ6ICEwLAogICAgICAgICAgICAgICAgICAgIElOVEVSUlVQVEVEOiAhMAogICAgICAgICAgICAgICAgfSkuc3RvcHBlZAogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDcpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBuKDEyMiksCiAgICAgICAgICAgIGMgPSBuKDE2OCksCiAgICAgICAgICAgIGYgPSBuKDE2OSksCiAgICAgICAgICAgIHMgPSBuKDIyNCksCiAgICAgICAgICAgIHAgPSBuKDE2NSksCiAgICAgICAgICAgIGwgPSBzKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5pdGVyYXRvcjsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbWFpbmluZy0tID8gKHIgPSBhKGkodGhpcy5uZXh0LCByKSksICh0aGlzLmRvbmUgPSAhIXIuZG9uZSkgPyB2b2lkIDAgOiByLnZhbHVlKSA6ICh0aGlzLmRvbmUgPSAhMCwgcChyLCAibm9ybWFsIiwgdCkpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB0YWtlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzKSwgdCA9IGYoYygrdCkpLCBuZXcgbCh1KHRoaXMpLCB7CiAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nOiB0CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDQ2KSwKICAgICAgICAgICAgaSA9IGUoMjAyKSwKICAgICAgICAgICAgYSA9IGUoMTIyKSwKICAgICAgICAgICAgdSA9IFtdLnB1c2g7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgdG9BcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IFtdOwogICAgICAgICAgICAgICAgcmV0dXJuIGkoYShvKHRoaXMpKSwgdSwgewogICAgICAgICAgICAgICAgICAgIHRoYXQ6IHQsCiAgICAgICAgICAgICAgICAgICAgSVNfUkVDT1JEOiAhMAogICAgICAgICAgICAgICAgfSksIHQKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg0NiksCiAgICAgICAgICAgIGkgPSBlKDExNSksCiAgICAgICAgICAgIGEgPSBlKDE3NyksCiAgICAgICAgICAgIHUgPSBlKDEyMik7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgdG9Bc3luYzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGEodShuZXcgaSh1KG8odGhpcykpKSkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJKU09OIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogIWUoMjQ0KQogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNSYXdKU09OOiBlKDI0NSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUgPSBlKDYpLCB0LmV4cG9ydHMgPSAhZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gIjkwMDcxOTkyNTQ3NDA5OTMiLAogICAgICAgICAgICAgICAgciA9IEpTT04ucmF3SlNPTih0KTsKICAgICAgICAgICAgcmV0dXJuICFKU09OLmlzUmF3SlNPTihyKSB8fCBKU09OLnN0cmluZ2lmeShyKSAhPT0gdAogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxOSksCiAgICAgICAgICAgIG8gPSBlKDUxKS5nZXQ7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gISFuKHQpICYmICghISh0ID0gbyh0KSkgJiYgIlJhd0pTT04iID09PSB0LnR5cGUpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIGZ1bmN0aW9uIG8odCwgciwgZSwgbikgewogICAgICAgICAgICB0aGlzLnZhbHVlID0gdCwgdGhpcy5lbmQgPSByLCB0aGlzLnNvdXJjZSA9IGUsIHRoaXMubm9kZXMgPSBuCiAgICAgICAgfQogICAgICAgIHZhciBpID0gbigyKSwKICAgICAgICAgICAgYSA9IG4oNSksCiAgICAgICAgICAgIHUgPSBuKDMpLAogICAgICAgICAgICBjID0gbigyMyksCiAgICAgICAgICAgIGYgPSBuKDEzKSwKICAgICAgICAgICAgcyA9IG4oNyksCiAgICAgICAgICAgIHAgPSBuKDIwKSwKICAgICAgICAgICAgbCA9IG4oMTkpLAogICAgICAgICAgICBoID0gbig2OSksCiAgICAgICAgICAgIHYgPSBuKDM4KSwKICAgICAgICAgICAgeSA9IG4oODgpLAogICAgICAgICAgICBkID0gbig2MyksCiAgICAgICAgICAgIGcgPSBuKDE5OCksCiAgICAgICAgICAgIGIgPSBuKDYpLAogICAgICAgICAgICBtID0gbigyNDcpLAogICAgICAgICAgICB4ID0gbigyNiksCiAgICAgICAgICAgIHcgPSAobiA9IHUuSlNPTiwgdS5OdW1iZXIpLAogICAgICAgICAgICBTID0gdS5TeW50YXhFcnJvciwKICAgICAgICAgICAgQSA9IG4gJiYgbi5wYXJzZSwKICAgICAgICAgICAgRSA9IGMoIk9iamVjdCIsICJrZXlzIiksCiAgICAgICAgICAgIE8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLAogICAgICAgICAgICBSID0gZigiIi5jaGFyQXQpLAogICAgICAgICAgICBJID0gZigiIi5zbGljZSksCiAgICAgICAgICAgIGsgPSBmKC8uLy5leGVjKSwKICAgICAgICAgICAgVCA9IGYoW10ucHVzaCksCiAgICAgICAgICAgIE0gPSAvXlxkJC8sCiAgICAgICAgICAgIGogPSAvXlsxLTldJC8sCiAgICAgICAgICAgIFAgPSAvXigtfFxkKSQvLAogICAgICAgICAgICBEID0gL15bXHRcblxyIF0kLywKICAgICAgICAgICAgQyA9IGZ1bmN0aW9uKHIsIGUsIG4sIG8pIHsKICAgICAgICAgICAgICAgIHZhciBpLCBhLCB1LCBjLCBmLCBwID0gcltlXSwKICAgICAgICAgICAgICAgICAgICB5ID0gbyAmJiBwID09PSBvLnZhbHVlLAogICAgICAgICAgICAgICAgICAgIGcgPSB5ICYmICJzdHJpbmciID09IHR5cGVvZiBvLnNvdXJjZSA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBvLnNvdXJjZQogICAgICAgICAgICAgICAgICAgIH0gOiB7fTsKICAgICAgICAgICAgICAgIGlmIChsKHApKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBoKHApLAogICAgICAgICAgICAgICAgICAgICAgICBtID0geSA/IG8ubm9kZXMgOiBiID8gW10gOiB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAoYikKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gbS5sZW5ndGgsIHUgPSBkKHApLCBjID0gMDsgYyA8IHU7IGMrKykgXyhwLCBjLCBDKHAsICIiICsgYywgbiwgYyA8IGkgPyBtW2NdIDogdCkpOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gRShwKSwgdSA9IGQoYSksIGMgPSAwOyBjIDwgdTsgYysrKSBmID0gYVtjXSwgXyhwLCBmLCBDKHAsIGYsIG4sIHYobSwgZikgPyBtW2ZdIDogdCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcyhuLCByLCBlLCBwLCBnKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfID0gZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE8ociwgZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG8gJiYgIW8uY29uZmlndXJhYmxlKSByZXR1cm4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4gPT09IHQgPyBkZWxldGUgcltlXSA6IGcociwgZSwgbikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTiA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHRoaXMuc291cmNlID0gdCwgdGhpcy5pbmRleCA9IHIKICAgICAgICAgICAgfTsKICAgICAgICBOLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgZm9yazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOKHRoaXMuc291cmNlLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBwYXJzZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuc291cmNlLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnNraXAoRCwgdGhpcy5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuZm9yayhyKTsKICAgICAgICAgICAgICAgIHQgPSBSKHQsIHIpOwogICAgICAgICAgICAgICAgaWYgKGsoUCwgdCkpIHJldHVybiBlLm51bWJlcigpOwogICAgICAgICAgICAgICAgc3dpdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAieyI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm9iamVjdCgpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIlsiOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hcnJheSgpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJyInOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ0IjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUua2V5d29yZCghMCk7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiZiI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmtleXdvcmQoITEpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIm4iOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5rZXl3b3JkKG51bGwpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aHJvdyBTKCdVbmV4cGVjdGVkIGNoYXJhY3RlcjogIicgKyB0ICsgJyIgYXQ6ICcgKyByKQogICAgICAgICAgICB9LAogICAgICAgICAgICBub2RlOiBmdW5jdGlvbih0LCByLCBlLCBuLCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IG8ociwgbiwgdCA/IG51bGwgOiBJKHRoaXMuc291cmNlLCBlLCBuKSwgaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb2JqZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSB0aGlzLnNvdXJjZSwgciA9IHRoaXMuaW5kZXggKyAxLCBlID0gITEsIG4gPSB7fSwgbyA9IHt9OyByIDwgdC5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSB0aGlzLnVudGlsKFsnIicsICJ9Il0sIHIpLCAifSIgPT0gUih0LCByKSAmJiAhZSkgewogICAgICAgICAgICAgICAgICAgICAgICByKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5mb3JrKHIpLnN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gaS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICByID0gaS5lbmQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSB0aGlzLnVudGlsKFsiOiJdLCByKSArIDEsIHIgPSB0aGlzLnNraXAoRCwgciksIGkgPSB0aGlzLmZvcmsocikucGFyc2UoKSwgZyhvLCBhLCBpKSwgZyhuLCBhLCBpLnZhbHVlKSwgciA9IHRoaXMudW50aWwoWyIsIiwgIn0iXSwgaS5lbmQpLCAiLCIgPT0gKGkgPSBSKHQsIHIpKSkgZSA9ICEwLCByKys7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIn0iID09IGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcisrOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUoMSwgbiwgdGhpcy5pbmRleCwgciwgbykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IHRoaXMuc291cmNlLCByID0gdGhpcy5pbmRleCArIDEsIGUgPSAhMSwgbiA9IFtdLCBvID0gW107IHIgPCB0Lmxlbmd0aDspIHsKICAgICAgICAgICAgICAgICAgICBpZiAociA9IHRoaXMuc2tpcChELCByKSwgIl0iID09IFIodCwgcikgJiYgIWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcisrOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuZm9yayhyKS5wYXJzZSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChUKG8sIGkpLCBUKG4sIGkudmFsdWUpLCByID0gdGhpcy51bnRpbChbIiwiLCAiXSJdLCBpLmVuZCksICIsIiA9PSBSKHQsIHIpKSBlID0gITAsIHIrKzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgiXSIgPT0gUih0LCByKSkgewogICAgICAgICAgICAgICAgICAgICAgICByKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZSgxLCBuLCB0aGlzLmluZGV4LCByLCBvKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmluZGV4LAogICAgICAgICAgICAgICAgICAgIHIgPSBtKHRoaXMuc291cmNlLCB0aGlzLmluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKDAsIHIudmFsdWUsIHQsIHIuZW5kKQogICAgICAgICAgICB9LAogICAgICAgICAgICBudW1iZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5pbmRleCwKICAgICAgICAgICAgICAgICAgICBlID0gcjsKICAgICAgICAgICAgICAgIGlmICgiLSIgPT0gUih0LCBlKSAmJiBlKyssICIwIiA9PSBSKHQsIGUpKSBlKys7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWsoaiwgUih0LCBlKSkpIHRocm93IFMoIkZhaWxlZCB0byBwYXJzZSBudW1iZXIgYXQ6ICIgKyBlKTsKICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5za2lwKE0sICsrZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKCIuIiA9PSBSKHQsIGUpICYmIChlID0gdGhpcy5za2lwKE0sICsrZSkpLCAiZSIgIT0gUih0LCBlKSAmJiAiRSIgIT0gUih0LCBlKSB8fCAoIisiICE9IFIodCwgKytlKSAmJiAiLSIgIT0gUih0LCBlKSB8fCBlKyssIGUgIT0gKGUgPSB0aGlzLnNraXAoTSwgZSkpKSkpIHRocm93IFMoIkZhaWxlZCB0byBwYXJzZSBudW1iZXIncyBleHBvbmVudCB2YWx1ZSBhdDogIiArIGUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZSgwLCB3KEkodCwgciwgZSkpLCByLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBrZXl3b3JkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9ICIiICsgdCwKICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5pbmRleCwKICAgICAgICAgICAgICAgICAgICBuID0gZSArIHIubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYgKEkodGhpcy5zb3VyY2UsIGUsIG4pICE9IHIpIHRocm93IFMoIkZhaWxlZCB0byBwYXJzZSB2YWx1ZSBhdDogIiArIGUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZSgwLCB0LCBlLCBuKQogICAgICAgICAgICB9LAogICAgICAgICAgICBza2lwOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy5zb3VyY2U7IHIgPCBlLmxlbmd0aCAmJiBrKHQsIFIoZSwgcikpOyByKyspOwogICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdW50aWw6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHIgPSB0aGlzLnNraXAoRCwgcik7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gUih0aGlzLnNvdXJjZSwgciksIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykKICAgICAgICAgICAgICAgICAgICBpZiAodFtuXSA9PSBlKSByZXR1cm4gcjsKICAgICAgICAgICAgICAgIHRocm93IFMoJ1VuZXhwZWN0ZWQgY2hhcmFjdGVyOiAiJyArIGUgKyAnIiBhdDogJyArIHIpCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGYgPSBiKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQsIHIgPSAiOTAwNzE5OTI1NDc0MDk5MyI7CiAgICAgICAgICAgIHJldHVybiBBKHIsIChmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICB0ID0gbi5zb3VyY2UKICAgICAgICAgICAgfSkpLCB0ICE9PSByCiAgICAgICAgfSkpOwogICAgICAgIHZhciBGID0geCAmJiAhYigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAxIC8gQSgiLTAgXHQiKSAhPSAtMSAvIDAKICAgICAgICB9KSk7CiAgICAgICAgaSh7CiAgICAgICAgICAgIHRhcmdldDogIkpTT04iLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiBmCiAgICAgICAgfSwgewogICAgICAgICAgICBwYXJzZTogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIEYgJiYgIXAocikgPyBBKHQpIDogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIHQgPSB5KHQpOwogICAgICAgICAgICAgICAgICAgIHZhciBlLCBuID0gKGUgPSBuZXcgTih0LCAwLCAiIikpLnBhcnNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGlmICgoZSA9IGUuc2tpcChELCBuLmVuZCkpIDwgdC5sZW5ndGgpIHRocm93IFMoJ1VuZXhwZWN0ZWQgZXh0cmEgY2hhcmFjdGVyOiAiJyArIFIodCwgZSkgKyAnIiBhZnRlciB0aGUgcGFyc2VkIGRhdGEgYXQ6ICcgKyBlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcChyKSA/IEMoewogICAgICAgICAgICAgICAgICAgICAgICAiIjogbwogICAgICAgICAgICAgICAgICAgIH0sICIiLCByLCBuKSA6IG8KICAgICAgICAgICAgICAgIH0odCwgcikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzKSwKICAgICAgICAgICAgbyA9IGUoMzgpLAogICAgICAgICAgICBpID0gU3ludGF4RXJyb3IsCiAgICAgICAgICAgIGEgPSBwYXJzZUludCwKICAgICAgICAgICAgdSA9IFN0cmluZy5mcm9tQ2hhckNvZGUsCiAgICAgICAgICAgIGMgPSBuKCIiLmNoYXJBdCksCiAgICAgICAgICAgIGYgPSBuKCIiLnNsaWNlKSwKICAgICAgICAgICAgcyA9IG4oLy4vLmV4ZWMpLAogICAgICAgICAgICBwID0gewogICAgICAgICAgICAgICAgJ1xcIic6ICciJywKICAgICAgICAgICAgICAgICJcXFxcIjogIlxcIiwKICAgICAgICAgICAgICAgICJcXC8iOiAiLyIsCiAgICAgICAgICAgICAgICAiXFxiIjogIlxiIiwKICAgICAgICAgICAgICAgICJcXGYiOiAiXGYiLAogICAgICAgICAgICAgICAgIlxcbiI6ICJcbiIsCiAgICAgICAgICAgICAgICAiXFxyIjogIlxyIiwKICAgICAgICAgICAgICAgICJcXHQiOiAiXHQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGwgPSAvXltcZGEtZl17NH0kL2ksCiAgICAgICAgICAgIGggPSAvXltcdTAwMDAtXHUwMDFGXSQvOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9ICEwLCBuID0gIiI7IHIgPCB0Lmxlbmd0aDspIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gYyh0LCByKTsKICAgICAgICAgICAgICAgIGlmICgiXFwiID09IHYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGYodCwgciwgciArIDIpOwogICAgICAgICAgICAgICAgICAgIGlmIChvKHAsIHkpKSBuICs9IHBbeV0sIHIgKz0gMjsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJcXHUiICE9IHkpIHRocm93IGkoJ1Vua25vd24gZXNjYXBlIHNlcXVlbmNlOiAiJyArIHkgKyAnIicpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeSA9IGYodCwgciArPSAyLCByICsgNCksICFzKGwsIHkpKSB0aHJvdyBpKCJCYWQgVW5pY29kZSBlc2NhcGUgYXQ6ICIgKyByKTsKICAgICAgICAgICAgICAgICAgICAgICAgbiArPSB1KGEoeSwgMTYpKSwgciArPSA0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJyInID09IHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9ICExLCByKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChzKGgsIHYpKSB0aHJvdyBpKCJCYWQgY29udHJvbCBjaGFyYWN0ZXIgaW4gc3RyaW5nIGxpdGVyYWwgYXQ6ICIgKyByKTsKICAgICAgICAgICAgICAgICAgICBuICs9IHYsIHIrKwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChlKSB0aHJvdyBpKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGF0OiAiICsgcik7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgIGVuZDogcgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMjAxKSwKICAgICAgICAgICAgaSA9IGUoMjQ0KSwKICAgICAgICAgICAgYSA9IGUoMjMpLAogICAgICAgICAgICB1ID0gZSg3KSwKICAgICAgICAgICAgYyA9IGUoMTMpLAogICAgICAgICAgICBmID0gZSgyMCksCiAgICAgICAgICAgIHMgPSBlKDI0NSksCiAgICAgICAgICAgIHAgPSBlKDg4KSwKICAgICAgICAgICAgbCA9IGUoMTk4KSwKICAgICAgICAgICAgaCA9IGUoMjQ3KSwKICAgICAgICAgICAgdiA9IGUoMjQ5KSwKICAgICAgICAgICAgeSA9IGUoNDApLAogICAgICAgICAgICBkID0gZSg1MSkuc2V0LAogICAgICAgICAgICBnID0gU3RyaW5nLAogICAgICAgICAgICBiID0gU3ludGF4RXJyb3IsCiAgICAgICAgICAgIG0gPSBhKCJKU09OIiwgInBhcnNlIiksCiAgICAgICAgICAgIHggPSBhKCJKU09OIiwgInN0cmluZ2lmeSIpLAogICAgICAgICAgICB3ID0gYSgiT2JqZWN0IiwgImNyZWF0ZSIpLAogICAgICAgICAgICBTID0gYSgiT2JqZWN0IiwgImZyZWV6ZSIpLAogICAgICAgICAgICBBID0gYygiIi5jaGFyQXQpLAogICAgICAgICAgICBFID0gYygiIi5zbGljZSksCiAgICAgICAgICAgIE8gPSBjKC8uLy5leGVjKSwKICAgICAgICAgICAgUiA9IGMoW10ucHVzaCksCiAgICAgICAgICAgIEkgPSB5KCksCiAgICAgICAgICAgIGsgPSBJLmxlbmd0aCwKICAgICAgICAgICAgVCA9ICJVbmFjY2VwdGFibGUgYXMgcmF3IEpTT04iLAogICAgICAgICAgICBNID0gL15bXHRcblxyIF0kLzsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSlNPTiIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICFpCiAgICAgICAgfSwgewogICAgICAgICAgICByYXdKU09OOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHAodCk7CiAgICAgICAgICAgICAgICBpZiAoIiIgPT0gciB8fCBPKE0sIEEociwgMCkpIHx8IE8oTSwgQShyLCByLmxlbmd0aCAtIDEpKSkgdGhyb3cgYihUKTsKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YodCA9IG0ocikpICYmIG51bGwgIT09IHQpIHRocm93IGIoVCk7CiAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHcobnVsbCksIGQodCwgewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICJSYXdKU09OIgogICAgICAgICAgICAgICAgfSksIGwodCwgInJhd0pTT04iLCByKSwgbyA/IFModCkgOiB0CiAgICAgICAgICAgIH0KICAgICAgICB9KSwgeCAmJiBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSlNPTiIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBhcml0eTogMywKICAgICAgICAgICAgZm9yY2VkOiAhaQogICAgICAgIH0sIHsKICAgICAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHYociksCiAgICAgICAgICAgICAgICAgICAgbyA9IFtdLAogICAgICAgICAgICAgICAgICAgIGkgPSB4KHQsIChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByID0gZihuKSA/IHUobiwgdGhpcywgZyh0KSwgcikgOiByLCBzKHIpID8gSSArIChSKG8sIHIucmF3SlNPTikgLSAxKSA6IHIKICAgICAgICAgICAgICAgICAgICB9KSwgZSk7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIGkpIHJldHVybiBpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9ICIiLCBjID0gaS5sZW5ndGgsIHAgPSAwOyBwIDwgYzsgcCsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwsIHksIGQgPSBBKGksIHApOwogICAgICAgICAgICAgICAgICAgICciJyA9PSBkID8gKGwgPSBoKGksICsrcCkuZW5kIC0gMSwgeSA9IEUoaSwgcCwgbCksIGEgKz0gRSh5LCAwLCBrKSA9PSBJID8gb1tFKHksIGspXSA6ICciJyArIHkgKyAnIicsIHAgPSBsKSA6IGEgKz0gZAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzKSwKICAgICAgICAgICAgbyA9IGUoNjkpLAogICAgICAgICAgICBpID0gZSgyMCksCiAgICAgICAgICAgIGEgPSBlKDE0KSwKICAgICAgICAgICAgdSA9IGUoODgpLAogICAgICAgICAgICBjID0gbihbXS5wdXNoKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChpKHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgaWYgKG8odCkpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSB0Lmxlbmd0aCwgZSA9IFtdLCBuID0gMDsgbiA8IHI7IG4rKykgewogICAgICAgICAgICAgICAgICAgIHZhciBmID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgZiA/IGMoZSwgZikgOiAibnVtYmVyIiAhPSB0eXBlb2YgZiAmJiAiTnVtYmVyIiAhPSBhKGYpICYmICJTdHJpbmciICE9IGEoZikgfHwgYyhlLCB1KGYpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHMgPSBlLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICBwID0gITA7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIGlmIChwKSByZXR1cm4gcCA9ICExLCByOwogICAgICAgICAgICAgICAgICAgIGlmIChvKHRoaXMpKSByZXR1cm4gcjsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHM7IG4rKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbbl0gPT09IHQpIHJldHVybiByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyNTEpLAogICAgICAgICAgICBpID0gZSgxMzYpLnJlbW92ZTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZGVsZXRlQWxsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIHIgPSBvKHRoaXMpLCBlID0gITAsIG4gPSAwLCBhID0gYXJndW1lbnRzLmxlbmd0aDsgbiA8IGE7IG4rKykgdCA9IGkociwgYXJndW1lbnRzW25dKSwgZSA9IGUgJiYgdDsKICAgICAgICAgICAgICAgIHJldHVybiAhIWUKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzNikuaGFzOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG4odCksIHQKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyNTEpLAogICAgICAgICAgICBpID0gKGUgPSBlKDEzNikpLmdldCwKICAgICAgICAgICAgYSA9IGUuaGFzLAogICAgICAgICAgICB1ID0gZS5zZXQ7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGVtcGxhY2U6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBlLCBuID0gbyh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiBhKG4sIHQpID8gKGUgPSBpKG4sIHQpLCAidXBkYXRlIiBpbiByICYmIChlID0gci51cGRhdGUoZSwgdCwgbiksIHUobiwgdCwgZSkpLCBlKSA6IChyID0gci5pbnNlcnQodCwgbiksIHUobiwgdCwgciksIHIpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTExKSwKICAgICAgICAgICAgYSA9IG4oMjUxKSwKICAgICAgICAgICAgdSA9IG4oMTQzKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZXZlcnk6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gaShyLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpOwogICAgICAgICAgICAgICAgcmV0dXJuICExICE9PSB1KGUsIChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFuKHQsIHIsIGUpKSByZXR1cm4gITEKICAgICAgICAgICAgICAgIH0pLCAhMCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxMTEpLAogICAgICAgICAgICBhID0gbigyNTEpLAogICAgICAgICAgICB1ID0gbigxMzYpLAogICAgICAgICAgICBjID0gbigxNDMpLAogICAgICAgICAgICBmID0gdS5NYXAsCiAgICAgICAgICAgIHMgPSB1LnNldDsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KSwKICAgICAgICAgICAgICAgICAgICBvID0gbmV3IGY7CiAgICAgICAgICAgICAgICByZXR1cm4gYyhlLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIG4odCwgciwgZSkgJiYgcyhvLCByLCB0KQogICAgICAgICAgICAgICAgfSkpLCBvCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTExKSwKICAgICAgICAgICAgYSA9IG4oMjUxKSwKICAgICAgICAgICAgdSA9IG4oMTQzKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmluZDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIG4gPSBpKHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCk7CiAgICAgICAgICAgICAgICByID0gdShlLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIGlmIChuKHQsIHIsIGUpKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCAhMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gciAmJiByLnZhbHVlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTExKSwKICAgICAgICAgICAgYSA9IG4oMjUxKSwKICAgICAgICAgICAgdSA9IG4oMTQzKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmluZEtleTogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIG4gPSBpKHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCk7CiAgICAgICAgICAgICAgICByID0gdShlLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIGlmIChuKHQsIHIsIGUpKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgITApOwogICAgICAgICAgICAgICAgcmV0dXJuIHIgJiYgci5rZXkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmcm9tOiBlKDI1OCkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigxMTEpLAogICAgICAgICAgICBpID0gbig3KSwKICAgICAgICAgICAgYSA9IG4oMzApLAogICAgICAgICAgICB1ID0gbigyNTkpLAogICAgICAgICAgICBjID0gbigxNiksCiAgICAgICAgICAgIGYgPSBuKDIwMiksCiAgICAgICAgICAgIHMgPSBbXS5wdXNoOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGUsIG4sIHAsIGwsIGggPSBhcmd1bWVudHMubGVuZ3RoLAogICAgICAgICAgICAgICAgdiA9IDEgPCBoID8gYXJndW1lbnRzWzFdIDogdDsKICAgICAgICAgICAgcmV0dXJuIHUodGhpcyksIChlID0gdiAhPT0gdCkgJiYgYSh2KSwgYyhyKSA/IG5ldyB0aGlzIDogKG4gPSBbXSwgZSA/IChwID0gMCwgbCA9IG8odiwgMiA8IGggPyBhcmd1bWVudHNbMl0gOiB0KSwgZihyLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaShzLCBuLCBsKHQsIHArKykpCiAgICAgICAgICAgIH0pKSkgOiBmKHIsIHMsIHsKICAgICAgICAgICAgICAgIHRoYXQ6IG4KICAgICAgICAgICAgfSksIG5ldyB0aGlzKG4pKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTEzKSwKICAgICAgICAgICAgbyA9IGUoMzEpLAogICAgICAgICAgICBpID0gVHlwZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKG4odCkpIHJldHVybiB0OwogICAgICAgICAgICB0aHJvdyBpKG8odCkgKyAiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgxMyksCiAgICAgICAgICAgIGkgPSBlKDMwKSwKICAgICAgICAgICAgYSA9IGUoMTUpLAogICAgICAgICAgICB1ID0gZSgyMDIpLAogICAgICAgICAgICBjID0gKGUgPSBlKDEzNikpLk1hcCwKICAgICAgICAgICAgZiA9IGUuaGFzLAogICAgICAgICAgICBzID0gZS5nZXQsCiAgICAgICAgICAgIHAgPSBlLnNldCwKICAgICAgICAgICAgbCA9IG8oW10ucHVzaCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBncm91cEJ5OiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICBhKHQpLCBpKHIpOwogICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcgYywKICAgICAgICAgICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiB1KHQsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSByKHQsIG4rKyk7CiAgICAgICAgICAgICAgICAgICAgZihlLCBvKSA/IGwocyhlLCBvKSwgdCkgOiBwKGUsIG8sIFt0XSkKICAgICAgICAgICAgICAgIH0pKSwgZQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDI2MiksCiAgICAgICAgICAgIGkgPSBlKDI1MSksCiAgICAgICAgICAgIGEgPSBlKDE0Myk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGluY2x1ZGVzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IGEoaSh0aGlzKSwgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobyhyLCB0KSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9KSwgITApCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgcmV0dXJuIHQgPT09IHIgfHwgdCAhPSB0ICYmIHIgIT0gcgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDcpLAogICAgICAgICAgICBpID0gZSgyMDIpLAogICAgICAgICAgICBhID0gZSgyMCksCiAgICAgICAgICAgIHUgPSBlKDMwKSwKICAgICAgICAgICAgYyA9IGUoMTM2KS5NYXA7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBrZXlCeTogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcoYSh0aGlzKSA/IHRoaXMgOiBjKTsKICAgICAgICAgICAgICAgIHUocik7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHUoZS5zZXQpOwogICAgICAgICAgICAgICAgcmV0dXJuIGkodCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBvKG4sIGUsIHIodCksIHQpCiAgICAgICAgICAgICAgICB9KSksIGUKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyNTEpLAogICAgICAgICAgICBpID0gZSgxNDMpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBrZXlPZjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBpKG8odGhpcyksIChmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHQpIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCAhMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gciAmJiByLmtleQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDI1MSksCiAgICAgICAgICAgIHUgPSBuKDEzNiksCiAgICAgICAgICAgIGMgPSBuKDE0MyksCiAgICAgICAgICAgIGYgPSB1Lk1hcCwKICAgICAgICAgICAgcyA9IHUuc2V0OwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBtYXBLZXlzOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KSwKICAgICAgICAgICAgICAgICAgICBvID0gbmV3IGY7CiAgICAgICAgICAgICAgICByZXR1cm4gYyhlLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIHMobywgbih0LCByLCBlKSwgdCkKICAgICAgICAgICAgICAgIH0pKSwgbwogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDI1MSksCiAgICAgICAgICAgIHUgPSBuKDEzNiksCiAgICAgICAgICAgIGMgPSBuKDE0MyksCiAgICAgICAgICAgIGYgPSB1Lk1hcCwKICAgICAgICAgICAgcyA9IHUuc2V0OwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBtYXBWYWx1ZXM6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gaShyLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgZjsKICAgICAgICAgICAgICAgIHJldHVybiBjKGUsIChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgcyhvLCByLCBuKHQsIHIsIGUpKQogICAgICAgICAgICAgICAgfSkpLCBvCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMjUxKSwKICAgICAgICAgICAgaSA9IGUoMjAyKSwKICAgICAgICAgICAgYSA9IGUoMTM2KS5zZXQ7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGFyaXR5OiAxLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBtZXJnZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IG8odGhpcyksIGUgPSBhcmd1bWVudHMubGVuZ3RoLCBuID0gMDsgbiA8IGU7KSBpKGFyZ3VtZW50c1tuKytdLCAoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIGEociwgdCwgZSkKICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgQVNfRU5UUklFUzogITAKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgeyBvZjogZSgyNjkpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjcwKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzKG4oYXJndW1lbnRzKSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoMTMpLCB0LmV4cG9ydHMgPSBlKFtdLnNsaWNlKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMzApLAogICAgICAgICAgICBhID0gbigyNTEpLAogICAgICAgICAgICB1ID0gbigxNDMpLAogICAgICAgICAgICBjID0gVHlwZUVycm9yOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICByZWR1Y2U6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA8IDIsCiAgICAgICAgICAgICAgICAgICAgbyA9IG4gPyB0IDogYXJndW1lbnRzWzFdOwogICAgICAgICAgICAgICAgaWYgKGkociksIHUoZSwgKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4gPyAobiA9ICExLCB0KSA6IHIobywgdCwgaSwgZSkKICAgICAgICAgICAgICAgICAgICB9KSksIG4pIHRocm93IGMoIlJlZHVjZSBvZiBlbXB0eSBtYXAgd2l0aCBubyBpbml0aWFsIHZhbHVlIik7CiAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDI1MSksCiAgICAgICAgICAgIHUgPSBuKDE0Myk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHNvbWU6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gaShyLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpOwogICAgICAgICAgICAgICAgcmV0dXJuICEwID09PSB1KGUsIChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4odCwgciwgZSkpIHJldHVybiAhMAogICAgICAgICAgICAgICAgfSksICEwKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDMwKSwKICAgICAgICAgICAgYSA9IG4oMjUxKSwKICAgICAgICAgICAgdSA9IChuID0gbigxMzYpLCBUeXBlRXJyb3IpLAogICAgICAgICAgICBjID0gbi5nZXQsCiAgICAgICAgICAgIGYgPSBuLmhhcywKICAgICAgICAgICAgcyA9IG4uc2V0OwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBvID0gYXJndW1lbnRzLmxlbmd0aDsKICAgICAgICAgICAgICAgIGkoZSk7CiAgICAgICAgICAgICAgICB2YXIgcCA9IGYobiwgcik7CiAgICAgICAgICAgICAgICBpZiAoIXAgJiYgbyA8IDMpIHRocm93IHUoIlVwZGF0aW5nIGFic2VudCB2YWx1ZSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIG8gPSBwID8gYyhuLCByKSA6IGkoMiA8IG8gPyBhcmd1bWVudHNbMl0gOiB0KShyLCBuKSwgcyhuLCByLCBlKG8sIHIsIG4pKSwgbgogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDIpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgbmFtZTogInVwc2VydCIsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHVwZGF0ZU9ySW5zZXJ0OiBlKDI3NSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig3KSwKICAgICAgICAgICAgaSA9IG4oMzApLAogICAgICAgICAgICBhID0gbigyMCksCiAgICAgICAgICAgIHUgPSBuKDQ2KSwKICAgICAgICAgICAgYyA9IFR5cGVFcnJvcjsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgIHZhciBuLCBmID0gdSh0aGlzKSwKICAgICAgICAgICAgICAgIHMgPSBpKGYuZ2V0KSwKICAgICAgICAgICAgICAgIHAgPSBpKGYuaGFzKSwKICAgICAgICAgICAgICAgIGwgPSBpKGYuc2V0KSwKICAgICAgICAgICAgICAgIGggPSAyIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1syXSA6IHQ7CiAgICAgICAgICAgIGlmICghYShlKSAmJiAhYShoKSkgdGhyb3cgYygiQXQgbGVhc3Qgb25lIGNhbGxiYWNrIHJlcXVpcmVkIik7CiAgICAgICAgICAgIHJldHVybiBvKHAsIGYsIHIpID8gKG4gPSBvKHMsIGYsIHIpLCBhKGUpICYmIChuID0gZShuKSwgbyhsLCBmLCByLCBuKSkpIDogYShoKSAmJiAobiA9IGgoKSwgbyhsLCBmLCByLCBuKSksIG4KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHVwc2VydDogZSgyNzUpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSgyKTsKICAgICAgICB2YXIgbiA9IE1hdGgubWluLAogICAgICAgICAgICBvID0gTWF0aC5tYXg7CiAgICAgICAgZSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hdGgiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgY2xhbXA6IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuKGUsIG8ociwgdCkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIG5vbkNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIG5vbldyaXRhYmxlOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgREVHX1BFUl9SQUQ6IE1hdGguUEkgLyAxODAKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUgPSBlKDIpOwogICAgICAgIHZhciBuID0gMTgwIC8gTWF0aC5QSTsKICAgICAgICBlKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWF0aCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBkZWdyZWVzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCAqIG4KICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyODEpLAogICAgICAgICAgICBpID0gZSgyODIpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZzY2FsZTogZnVuY3Rpb24odCwgciwgZSwgbiwgYSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkobyh0LCByLCBlLCBuLCBhKSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgdC5leHBvcnRzID0gTWF0aC5zY2FsZSB8fCBmdW5jdGlvbih0LCByLCBlLCBuLCBvKSB7CiAgICAgICAgICAgIHJldHVybiByID0gK3IsIGUgPSArZSwgbiA9ICtuLCBvID0gK28sICh0ID0gK3QpICE9IHQgfHwgciAhPSByIHx8IGUgIT0gZSB8fCBuICE9IG4gfHwgbyAhPSBvID8gTmFOIDogdCA9PSAxIC8gMCB8fCB0ID09IC0xIC8gMCA/IHQgOiAodCAtIHIpICogKG8gLSBuKSAvIChlIC0gcikgKyBuCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyODMpLAogICAgICAgICAgICBvID0gTWF0aC5hYnMsCiAgICAgICAgICAgIGkgPSAoZSA9IE1hdGgucG93KSgyLCAtNTIpLAogICAgICAgICAgICBhID0gZSgyLCAtMjMpLAogICAgICAgICAgICB1ID0gZSgyLCAxMjcpICogKDIgLSBhKSwKICAgICAgICAgICAgYyA9IGUoMiwgLTEyNik7CiAgICAgICAgdC5leHBvcnRzID0gTWF0aC5mcm91bmQgfHwgZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgciA9ICt0LAogICAgICAgICAgICAgICAgZSA9IG8ocik7CiAgICAgICAgICAgIHQgPSBuKHIpOwogICAgICAgICAgICByZXR1cm4gZSA8IGMgPyB0ICogKGUgLyBjIC8gYSArIDEgLyBpIC0gMSAvIGkpICogYyAqIGEgOiB1IDwgKGUgPSAociA9ICgxICsgYSAvIGkpICogZSkgLSAociAtIGUpKSB8fCBlICE9IGUgPyB0ICogKDEgLyAwKSA6IHQgKiBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHQuZXhwb3J0cyA9IE1hdGguc2lnbiB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAwID09ICh0ID0gK3QpIHx8IHQgIT0gdCA/IHQgOiB0IDwgMCA/IC0xIDogMQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDIpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWF0aCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpYWRkaDogZnVuY3Rpb24odCwgciwgZSwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIChyID4+PiAwKSArIChuID4+PiAwKSArICgoKHQgPj4+PSAwKSAmIChlID4+Pj0gMCkgfCAodCB8IGUpICYgfih0ICsgZSA+Pj4gMCkpID4+PiAzMSkgfCAwCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGltdWxoOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbjsKICAgICAgICAgICAgICAgIHQgPSA2NTUzNSAmIChlID0gK3QpLCByID0gNjU1MzUgJiAobiA9ICtyKTsKICAgICAgICAgICAgICAgIHJldHVybiAoZSA9IGUgPj4gMTYpICogKG4gPSBuID4+IDE2KSArICgociA9IChlICogciA+Pj4gMCkgKyAodCAqIHIgPj4+IDE2KSkgPj4gMTYpICsgKCh0ICogbiA+Pj4gMCkgKyAoNjU1MzUgJiByKSA+PiAxNikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hdGgiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaXN1Ymg6IGZ1bmN0aW9uKHQsIHIsIGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiAociA+Pj4gMCkgLSAobiA+Pj4gMCkgLSAoKH4odCA+Pj49IDApICYgKGUgPj4+PSAwKSB8IH4odCBeIGUpICYgdCAtIGUgPj4+IDApID4+PiAzMSkgfCAwCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIG5vbkNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIG5vbldyaXRhYmxlOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgUkFEX1BFUl9ERUc6IDE4MCAvIE1hdGguUEkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUgPSBlKDIpOwogICAgICAgIHZhciBuID0gTWF0aC5QSSAvIDE4MDsKICAgICAgICBlKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWF0aCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICByYWRpYW5zOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCAqIG4KICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hdGgiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgc2NhbGU6IGUoMjgxKQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg0NiksCiAgICAgICAgICAgIGkgPSBlKDI5MSksCiAgICAgICAgICAgIGEgPSBlKDE4NiksCiAgICAgICAgICAgIHUgPSBlKDExOCksCiAgICAgICAgICAgIGMgPSBlKDUxKSwKICAgICAgICAgICAgZiA9IChlID0gIlNlZWRlZCBSYW5kb20iKSArICIgR2VuZXJhdG9yIiwKICAgICAgICAgICAgcyA9IGMuc2V0LAogICAgICAgICAgICBwID0gYy5nZXR0ZXJGb3IoZiksCiAgICAgICAgICAgIGwgPSBUeXBlRXJyb3IsCiAgICAgICAgICAgIGggPSBhKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBzKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiBmLAogICAgICAgICAgICAgICAgICAgIHNlZWQ6IHQgJSAyMTQ3NDgzNjQ3CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSwgZSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAodCA9IHAodGhpcykpLnNlZWQgPSAoMTEwMzUxNTI0NSAqIHQuc2VlZCArIDEyMzQ1KSAlIDIxNDc0ODM2NDc7CiAgICAgICAgICAgICAgICByZXR1cm4gdSgoMTA3Mzc0MTgyMyAmIHQpIC8gMTA3Mzc0MTgyMywgITEpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWF0aCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBzZWVkZWRQUk5HOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAodCA9IG8odCkuc2VlZCwgIWkodCkpIHRocm93IGwoJ01hdGguc2VlZGVkUFJORygpIGFyZ3VtZW50IHNob3VsZCBoYXZlIGEgInNlZWQiIGZpZWxkIHdpdGggYSBmaW5pdGUgdmFsdWUuJyk7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGgodCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMpLmlzRmluaXRlOwogICAgICAgIHQuZXhwb3J0cyA9IE51bWJlci5pc0Zpbml0ZSB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAibnVtYmVyIiA9PSB0eXBlb2YgdCAmJiBuKHQpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHNpZ25iaXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAodCA9ICt0KSA9PSB0ICYmIDAgPT0gdCA/IDEgLyB0ID09IC0xIC8gMCA6IHQgPCAwCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHVtdWxoOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbjsKICAgICAgICAgICAgICAgIHQgPSA2NTUzNSAmIChlID0gK3QpLCByID0gNjU1MzUgJiAobiA9ICtyKTsKICAgICAgICAgICAgICAgIHJldHVybiAoZSA9IGUgPj4+IDE2KSAqIChuID0gbiA+Pj4gMTYpICsgKChyID0gKGUgKiByID4+PiAwKSArICh0ICogciA+Pj4gMTYpKSA+Pj4gMTYpICsgKCh0ICogbiA+Pj4gMCkgKyAoNjU1MzUgJiByKSA+Pj4gMTYpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTMpLAogICAgICAgICAgICBhID0gbig2MSksCiAgICAgICAgICAgIHUgPSBuKDI5NSksCiAgICAgICAgICAgIGMgPSAiSW52YWxpZCBudW1iZXIgcmVwcmVzZW50YXRpb24iLAogICAgICAgICAgICBmID0gUmFuZ2VFcnJvciwKICAgICAgICAgICAgcyA9IFN5bnRheEVycm9yLAogICAgICAgICAgICBwID0gVHlwZUVycm9yLAogICAgICAgICAgICBsID0gL15bXGRhLXpdKyQvLAogICAgICAgICAgICBoID0gaSgiIi5jaGFyQXQpLAogICAgICAgICAgICB2ID0gaShsLmV4ZWMpLAogICAgICAgICAgICB5ID0gaSgxLi50b1N0cmluZyksCiAgICAgICAgICAgIGQgPSBpKCIiLnNsaWNlKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTnVtYmVyIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZyb21TdHJpbmc6IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuLCBvID0gMTsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgcikgdGhyb3cgcChjKTsKICAgICAgICAgICAgICAgIGlmICghci5sZW5ndGgpIHRocm93IHMoYyk7CiAgICAgICAgICAgICAgICBpZiAoIi0iID09IGgociwgMCkgJiYgKG8gPSAtMSwgIShyID0gZChyLCAxKSkubGVuZ3RoKSkgdGhyb3cgcyhjKTsKICAgICAgICAgICAgICAgIGlmICgoZSA9IGUgPT09IHQgPyAxMCA6IGEoZSkpIDwgMiB8fCAzNiA8IGUpIHRocm93IGYoIkludmFsaWQgcmFkaXgiKTsKICAgICAgICAgICAgICAgIGlmICghdihsLCByKSB8fCB5KG4gPSB1KHIsIGUpLCBlKSAhPT0gcikgdGhyb3cgcyhjKTsKICAgICAgICAgICAgICAgIHJldHVybiBvICogbgogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBlKDYpLAogICAgICAgICAgICBpID0gZSgxMyksCiAgICAgICAgICAgIGEgPSBlKDg4KSwKICAgICAgICAgICAgdSA9IGUoMjk2KS50cmltLAogICAgICAgICAgICBjID0gKGUgPSBlKDI5NyksIG4ucGFyc2VJbnQpLAogICAgICAgICAgICBmID0gKG4gPSBuLlN5bWJvbCkgJiYgbi5pdGVyYXRvciwKICAgICAgICAgICAgcyA9IC9eWystXT8weC9pLAogICAgICAgICAgICBwID0gaShzLmV4ZWMpOwogICAgICAgIG8gPSA4ICE9PSBjKGUgKyAiMDgiKSB8fCAyMiAhPT0gYyhlICsgIjB4MTYiKSB8fCBmICYmICFvKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgYyhPYmplY3QoZikpCiAgICAgICAgfSkpOwogICAgICAgIHQuZXhwb3J0cyA9IG8gPyBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiB0ID0gdShhKHQpKSwgYyh0LCByID4+PiAwIHx8IChwKHMsIHQpID8gMTYgOiAxMCkpCiAgICAgICAgfSA6IGMKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpLAogICAgICAgICAgICBvID0gZSgxNSksCiAgICAgICAgICAgIGkgPSBlKDg4KSwKICAgICAgICAgICAgYSA9IChlID0gZSgyOTcpLCBuKCIiLnJlcGxhY2UpKSwKICAgICAgICAgICAgdSA9IFJlZ0V4cCgiXlsiICsgZSArICJdKyIpLAogICAgICAgICAgICBjID0gUmVnRXhwKCIoXnxbXiIgKyBlICsgIl0pWyIgKyBlICsgIl0rJCIpOwogICAgICAgIGUgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gciA9IGkobyhyKSksIDEgJiB0ICYmIChyID0gYShyLCB1LCAiIikpLCAyICYgdCA/IGEociwgYywgIiQxIikgOiByCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHQuZXhwb3J0cyA9IHsKICAgICAgICAgICAgc3RhcnQ6IGUoMSksCiAgICAgICAgICAgIGVuZDogZSgyKSwKICAgICAgICAgICAgdHJpbTogZSgzKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSAiXHRcblx2XGZcciDCoOGagOKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZiIKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDE4NSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk51bWJlciIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICByYW5nZTogZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBvKHQsIHIsIGUsICJudW1iZXIiLCAwLCAxKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDMwMCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk9iamVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpdGVyYXRlRW50cmllczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBvKHQsICJlbnRyaWVzIikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDUxKSwKICAgICAgICAgICAgaSA9IG4oMTg2KSwKICAgICAgICAgICAgYSA9IG4oMTE4KSwKICAgICAgICAgICAgdSA9IG4oMzgpLAogICAgICAgICAgICBjID0gbig3NiksCiAgICAgICAgICAgIGYgPSBuKDM5KSwKICAgICAgICAgICAgcyA9ICJPYmplY3QgSXRlcmF0b3IiLAogICAgICAgICAgICBwID0gby5zZXQsCiAgICAgICAgICAgIGwgPSBvLmdldHRlckZvcihzKTsKICAgICAgICByLmV4cG9ydHMgPSBpKChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHQgPSBmKHQpLCBwKHRoaXMsIHsKICAgICAgICAgICAgICAgIHR5cGU6IHMsCiAgICAgICAgICAgICAgICBtb2RlOiByLAogICAgICAgICAgICAgICAgb2JqZWN0OiB0LAogICAgICAgICAgICAgICAga2V5czogYyh0KSwKICAgICAgICAgICAgICAgIGluZGV4OiAwCiAgICAgICAgICAgIH0pCiAgICAgICAgfSksICJPYmplY3QiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIHIgPSBsKHRoaXMpLCBlID0gci5rZXlzOzspIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBlIHx8IHIuaW5kZXggPj0gZS5sZW5ndGgpIHJldHVybiByLm9iamVjdCA9IHIua2V5cyA9IG51bGwsIGEodCwgITApOwogICAgICAgICAgICAgICAgdmFyIG4gPSBlW3IuaW5kZXgrK10sCiAgICAgICAgICAgICAgICAgICAgbyA9IHIub2JqZWN0OwogICAgICAgICAgICAgICAgaWYgKHUobywgbikpIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHIubW9kZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJrZXlzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKG4sICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidmFsdWVzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKG9bbl0sICExKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYShbbiwgb1tuXV0sICExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzMDApOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJPYmplY3QiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaXRlcmF0ZUtleXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgbyh0LCAia2V5cyIpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzAwKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiT2JqZWN0IiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGl0ZXJhdGVWYWx1ZXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgbyh0LCAidmFsdWVzIikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyMyksCiAgICAgICAgICAgIGkgPSBlKDEzKSwKICAgICAgICAgICAgYSA9IGUoMzApLAogICAgICAgICAgICB1ID0gZSgxNSksCiAgICAgICAgICAgIGMgPSBlKDE3KSwKICAgICAgICAgICAgZiA9IGUoMjAyKSwKICAgICAgICAgICAgcyA9IG8oIk9iamVjdCIsICJjcmVhdGUiKSwKICAgICAgICAgICAgcCA9IGkoW10ucHVzaCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk9iamVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBncm91cEJ5OiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICB1KHQpLCBhKHIpOwogICAgICAgICAgICAgICAgdmFyIGUgPSBzKG51bGwpLAogICAgICAgICAgICAgICAgICAgIG4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuIGYodCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGMocih0LCBuKyspKTsKICAgICAgICAgICAgICAgICAgICBvIGluIGUgPyBwKGVbb10sIHQpIDogZVtvXSA9IFt0XQogICAgICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMzA1KSwgZSgzMDgpLCBlKDMwOSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKHIpIHsKICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IHMociksIHRoaXMuY2xlYW51cCA9IHQsIHRoaXMuc3Vic2NyaXB0aW9uT2JzZXJ2ZXIgPSB0CiAgICAgICAgfQogICAgICAgIHZhciBpID0gbigyKSwKICAgICAgICAgICAgYSA9IG4oNyksCiAgICAgICAgICAgIHUgPSBuKDUpLAogICAgICAgICAgICBjID0gbigyMDgpLAogICAgICAgICAgICBmID0gbigzMCksCiAgICAgICAgICAgIHMgPSBuKDQ2KSwKICAgICAgICAgICAgcCA9IG4oMTU3KSwKICAgICAgICAgICAgbCA9IG4oMjApLAogICAgICAgICAgICBoID0gbigxNiksCiAgICAgICAgICAgIHYgPSBuKDE5KSwKICAgICAgICAgICAgeSA9IG4oMjkpLAogICAgICAgICAgICBkID0gbig0NyksCiAgICAgICAgICAgIGcgPSBuKDExNiksCiAgICAgICAgICAgIGIgPSBuKDg1KSwKICAgICAgICAgICAgbSA9IG4oMzA2KSwKICAgICAgICAgICAgeCA9IG4oMzMpLAogICAgICAgICAgICB3ID0gbig1MSksCiAgICAgICAgICAgIFMgPSBuKDMwNyksCiAgICAgICAgICAgIEEgPSB4KCJvYnNlcnZhYmxlIiksCiAgICAgICAgICAgIEUgPSAiT2JzZXJ2YWJsZSIsCiAgICAgICAgICAgIE8gPSAobiA9ICJTdWJzY3JpcHRpb24iLCAiU3Vic2NyaXB0aW9uT2JzZXJ2ZXIiKSwKICAgICAgICAgICAgUiA9ICh4ID0gdy5nZXR0ZXJGb3IsIHcuc2V0KSwKICAgICAgICAgICAgSSA9IHgoRSksCiAgICAgICAgICAgIGsgPSB4KG4pLAogICAgICAgICAgICBUID0geChPKTsKCiAgICAgICAgZnVuY3Rpb24gTSh0LCByKSB7CiAgICAgICAgICAgIHZhciBlLCBuID0gUih0aGlzLCBuZXcgbyh0KSk7CiAgICAgICAgICAgIHUgfHwgKHRoaXMuY2xvc2VkID0gITEpOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgKGUgPSB5KHQsICJzdGFydCIpKSAmJiBhKGUsIHQsIHRoaXMpCiAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHsKICAgICAgICAgICAgICAgIG0ocikKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIW4uaXNDbG9zZWQoKSkgewogICAgICAgICAgICAgICAgdCA9IG4uc3Vic2NyaXB0aW9uT2JzZXJ2ZXIgPSBuZXcgaihuKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gaTsKICAgICAgICAgICAgICAgICAgICBoKGkpIHx8IChuLmNsZWFudXAgPSBsKGkudW5zdWJzY3JpYmUpID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGMudW5zdWJzY3JpYmUoKQogICAgICAgICAgICAgICAgICAgIH0gOiBmKGkpKQogICAgICAgICAgICAgICAgfSBjYXRjaCAocikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIHQuZXJyb3IocikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4uaXNDbG9zZWQoKSAmJiBuLmNsZWFuKCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBvLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgdHlwZTogbiwKICAgICAgICAgICAgY2xlYW46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLmNsZWFudXA7CiAgICAgICAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYW51cCA9IHQ7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcigpCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAocikgewogICAgICAgICAgICAgICAgICAgICAgICBtKHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgZTsKICAgICAgICAgICAgICAgIHUgfHwgKHIgPSB0aGlzLmZhY2FkZSwgZSA9IHRoaXMuc3Vic2NyaXB0aW9uT2JzZXJ2ZXIsIHIuY2xvc2VkID0gITAsIGUgJiYgKGUuY2xvc2VkID0gITApKSwgdGhpcy5vYnNlcnZlciA9IHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXNDbG9zZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2ZXIgPT09IHQKICAgICAgICAgICAgfQogICAgICAgIH0sIE0ucHJvdG90eXBlID0gZyh7fSwgewogICAgICAgICAgICB1bnN1YnNjcmliZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGsodGhpcyk7CiAgICAgICAgICAgICAgICB0LmlzQ2xvc2VkKCkgfHwgKHQuY2xvc2UoKSwgdC5jbGVhbigpKQogICAgICAgICAgICB9CiAgICAgICAgfSksIHUgJiYgYihNLnByb3RvdHlwZSwgImNsb3NlZCIsIHsKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBrKHRoaXMpLmlzQ2xvc2VkKCkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHZhciBqID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBSKHRoaXMsIHsKICAgICAgICAgICAgICAgIHR5cGU6IE8sCiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25TdGF0ZTogdAogICAgICAgICAgICB9KSwgdSB8fCAodGhpcy5jbG9zZWQgPSAhMSkKICAgICAgICB9OwogICAgICAgIGoucHJvdG90eXBlID0gZyh7fSwgewogICAgICAgICAgICBuZXh0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IFQodGhpcykuc3Vic2NyaXB0aW9uU3RhdGU7CiAgICAgICAgICAgICAgICBpZiAoIXIuaXNDbG9zZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHIgPSByLm9ic2VydmVyOwogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0geShyLCAibmV4dCIpOwogICAgICAgICAgICAgICAgICAgICAgICBlICYmIGEoZSwgciwgdCkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG0odCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IFQodGhpcykuc3Vic2NyaXB0aW9uU3RhdGU7CiAgICAgICAgICAgICAgICBpZiAoIXIuaXNDbG9zZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gci5vYnNlcnZlcjsKICAgICAgICAgICAgICAgICAgICByLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB5KGUsICJlcnJvciIpOwogICAgICAgICAgICAgICAgICAgICAgICBuID8gYShuLCBlLCB0KSA6IG0odCkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG0odCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgci5jbGVhbigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gVCh0aGlzKS5zdWJzY3JpcHRpb25TdGF0ZTsKICAgICAgICAgICAgICAgIGlmICghdC5pc0Nsb3NlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0Lm9ic2VydmVyOwogICAgICAgICAgICAgICAgICAgIHQuY2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHkociwgImNvbXBsZXRlIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgYShlLCByKQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbSh0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LmNsZWFuKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pLCB1ICYmIGIoai5wcm90b3R5cGUsICJjbG9zZWQiLCB7CiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gVCh0aGlzKS5zdWJzY3JpcHRpb25TdGF0ZS5pc0Nsb3NlZCgpCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBiID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBwKHRoaXMsIFApLCBSKHRoaXMsIHsKICAgICAgICAgICAgICAgIHR5cGU6IEUsCiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyOiBmKHQpCiAgICAgICAgICAgIH0pCiAgICAgICAgfTsKICAgICAgICB2YXIgUCA9IGIucHJvdG90eXBlOwogICAgICAgIGcoUCwgewogICAgICAgICAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aDsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTShsKHIpID8gewogICAgICAgICAgICAgICAgICAgIG5leHQ6IHIsCiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IDEgPCBlID8gYXJndW1lbnRzWzFdIDogdCwKICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogMiA8IGUgPyBhcmd1bWVudHNbMl0gOiB0CiAgICAgICAgICAgICAgICB9IDogdihyKSA/IHIgOiB7fSwgSSh0aGlzKS5zdWJzY3JpYmVyKQogICAgICAgICAgICB9CiAgICAgICAgfSksIGQoUCwgQSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0pKSwgaSh7CiAgICAgICAgICAgIGdsb2JhbDogITAsCiAgICAgICAgICAgIGNvbnN0cnVjdG9yOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiBTCiAgICAgICAgfSwgewogICAgICAgICAgICBPYnNlcnZhYmxlOiBiCiAgICAgICAgfSksIGMoRSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAxID09IGFyZ3VtZW50cy5sZW5ndGggPyBjb25zb2xlLmVycm9yKHQpIDogY29uc29sZS5lcnJvcih0LCByKQogICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBlKDIwKSwKICAgICAgICAgICAgaSA9IGUoMzMpKCJvYnNlcnZhYmxlIik7CiAgICAgICAgbiA9IChlID0gbi5PYnNlcnZhYmxlKSAmJiBlLnByb3RvdHlwZTsKICAgICAgICB0LmV4cG9ydHMgPSAhKG8oZSkgJiYgbyhlLmZyb20pICYmIG8oZS5vZikgJiYgbyhuLnN1YnNjcmliZSkgJiYgbyhuW2ldKSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDIzKSwKICAgICAgICAgICAgaSA9IGUoNyksCiAgICAgICAgICAgIGEgPSBlKDQ2KSwKICAgICAgICAgICAgdSA9IGUoMTEzKSwKICAgICAgICAgICAgYyA9IGUoMTE5KSwKICAgICAgICAgICAgZiA9IGUoMjkpLAogICAgICAgICAgICBzID0gZSgyMDIpLAogICAgICAgICAgICBwID0gZSgzMyksCiAgICAgICAgICAgIGwgPSAoZSA9IGUoMzA3KSwgcCgib2JzZXJ2YWJsZSIpKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiT2JzZXJ2YWJsZSIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6IGUKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZyb206IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdSh0aGlzKSA/IHRoaXMgOiBvKCJPYnNlcnZhYmxlIiksCiAgICAgICAgICAgICAgICAgICAgZSA9IGYoYSh0KSwgbCk7CiAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gYShpKGUsIHQpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5jb25zdHJ1Y3RvciA9PT0gciA/IG4gOiBuZXcgcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zdWJzY3JpYmUodCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBwID0gYyh0KTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHMocCwgKGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQubmV4dChyKSwgdC5jbG9zZWQpIHJldHVybiBlKCkKICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICBJU19JVEVSQVRPUjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIElOVEVSUlVQVEVEOiAhMAogICAgICAgICAgICAgICAgICAgIH0pLCB0LmNvbXBsZXRlKCkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDIzKSwKICAgICAgICAgICAgaSA9IGUoMTEzKSwKICAgICAgICAgICAgYSA9IChlID0gZSgzMDcpLCBvKCJBcnJheSIpKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiT2JzZXJ2YWJsZSIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6IGUKICAgICAgICB9LCB7IG9mOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBpKHRoaXMpID8gdGhpcyA6IG8oIk9ic2VydmFibGUiKSwgciA9IGFyZ3VtZW50cy5sZW5ndGgsIGUgPSBhKHIpLCBuID0gMDsgbiA8IHI7KSBlW25dID0gYXJndW1lbnRzW24rK107CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHI7IG4rKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQubmV4dChlW25dKSwgdC5jbG9zZWQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0LmNvbXBsZXRlKCkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDMxMSksCiAgICAgICAgICAgIGkgPSBlKDE2NCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlByb21pc2UiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgdHJ5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG8uZih0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiAoKHQgPSBpKHQpKS5lcnJvciA/IHIucmVqZWN0IDogci5yZXNvbHZlKSh0LnZhbHVlKSwgci5wcm9taXNlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIGZ1bmN0aW9uIG8ocikgewogICAgICAgICAgICB2YXIgZSwgbjsKICAgICAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IHIoKGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgICAgIGlmIChlICE9PSB0IHx8IG4gIT09IHQpIHRocm93IGEoIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yIik7CiAgICAgICAgICAgICAgICBlID0gciwgbiA9IG8KICAgICAgICAgICAgfSkpLCB0aGlzLnJlc29sdmUgPSBpKGUpLCB0aGlzLnJlamVjdCA9IGkobikKICAgICAgICB9CiAgICAgICAgdmFyIGkgPSBuKDMwKSwKICAgICAgICAgICAgYSA9IFR5cGVFcnJvcjsKICAgICAgICByLmV4cG9ydHMuZiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBvKHQpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzExKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiUHJvbWlzZSIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB3aXRoUmVzb2x2ZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gby5mKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBwcm9taXNlOiB0LnByb21pc2UsCiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZTogdC5yZXNvbHZlLAogICAgICAgICAgICAgICAgICAgIHJlamVjdDogdC5yZWplY3QKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzMTQpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBpLnRvS2V5LAogICAgICAgICAgICBjID0gaS5zZXQ7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlJlZmxlY3QiLAogICAgICAgICAgICBzdGF0OiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZGVmaW5lTWV0YWRhdGE6IGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICAgICAgICAgIHZhciBvID0gYXJndW1lbnRzLmxlbmd0aCA8IDQgPyB0IDogdShhcmd1bWVudHNbM10pOwogICAgICAgICAgICAgICAgYyhyLCBlLCBhKG4pLCBvKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKHQsIHIsIGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBmLmdldCh0KTsKICAgICAgICAgICAgaWYgKCFuKSB7CiAgICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybjsKICAgICAgICAgICAgICAgIGYuc2V0KHQsIG4gPSBuZXcgdSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoISh0ID0gbi5nZXQocikpKSB7CiAgICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybjsKICAgICAgICAgICAgICAgIG4uc2V0KHIsIHQgPSBuZXcgdSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0KICAgICAgICBuKDE5MiksIG4oMjA5KTsKICAgICAgICB2YXIgaSA9IG4oMjMpLAogICAgICAgICAgICBhID0gbigxMyksCiAgICAgICAgICAgIHUgPSAobiA9IG4oMzQpLCBpKCJNYXAiKSksCiAgICAgICAgICAgIGMgPSAoaSA9IGkoIldlYWtNYXAiKSwgYShbXS5wdXNoKSksCiAgICAgICAgICAgIGYgPSAobiA9IG4oIm1ldGFkYXRhIikpLnN0b3JlIHx8IChuLnN0b3JlID0gbmV3IGkpOwogICAgICAgIHIuZXhwb3J0cyA9IHsKICAgICAgICAgICAgc3RvcmU6IGYsCiAgICAgICAgICAgIGdldE1hcDogbywKICAgICAgICAgICAgaGFzOiBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKG4gPSBvKGUsIG4sICExKSkgIT09IHQgJiYgbi5oYXMocikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKG4gPSBvKGUsIG4sICExKSkgPT09IHQgPyB0IDogbi5nZXQocikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih0LCByLCBlLCBuKSB7CiAgICAgICAgICAgICAgICBvKGUsIG4sICEwKS5zZXQodCwgcikKICAgICAgICAgICAgfSwKICAgICAgICAgICAga2V5czogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgciA9IG8odCwgciwgITEpOwogICAgICAgICAgICAgICAgdmFyIGUgPSBbXTsKICAgICAgICAgICAgICAgIHJldHVybiByICYmIHIuZm9yRWFjaCgoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIGMoZSwgcikKICAgICAgICAgICAgICAgIH0pKSwgZQogICAgICAgICAgICB9LAogICAgICAgICAgICB0b0tleTogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgcmV0dXJuIHIgPT09IHQgfHwgInN5bWJvbCIgPT0gdHlwZW9mIHIgPyByIDogU3RyaW5nKHIpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzMTQpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBpLnRvS2V5LAogICAgICAgICAgICBjID0gaS5nZXRNYXAsCiAgICAgICAgICAgIGYgPSBpLnN0b3JlOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJSZWZsZWN0IiwKICAgICAgICAgICAgc3RhdDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRlbGV0ZU1ldGFkYXRhOiBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdCA6IHUoYXJndW1lbnRzWzJdKSwKICAgICAgICAgICAgICAgICAgICBvID0gYyhhKGUpLCBuLCAhMSk7CiAgICAgICAgICAgICAgICByZXR1cm4gIShvID09PSB0IHx8ICFvLmRlbGV0ZShyKSkgJiYgKCEhby5zaXplIHx8ICgobyA9IGYuZ2V0KGUpKS5kZWxldGUobiksICEhby5zaXplIHx8IGYuZGVsZXRlKGUpKSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzMTQpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBuKDk1KSwKICAgICAgICAgICAgYyA9IGkuaGFzLAogICAgICAgICAgICBmID0gaS5nZXQsCiAgICAgICAgICAgIHMgPSBpLnRvS2V5LAogICAgICAgICAgICBwID0gZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIGMociwgZSwgbikgPyBmKHIsIGUsIG4pIDogbnVsbCAhPT0gKGUgPSB1KGUpKSA/IHAociwgZSwgbikgOiB0CiAgICAgICAgICAgIH07CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlJlZmxlY3QiLAogICAgICAgICAgICBzdGF0OiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZ2V0TWV0YWRhdGE6IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB0IDogcyhhcmd1bWVudHNbMl0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHAociwgYShlKSwgbikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxMyksCiAgICAgICAgICAgIGEgPSBuKDMxNCksCiAgICAgICAgICAgIHUgPSBuKDQ2KSwKICAgICAgICAgICAgYyA9IG4oOTUpLAogICAgICAgICAgICBmID0gaShuKDE0MikpLAogICAgICAgICAgICBzID0gaShbXS5jb25jYXQpLAogICAgICAgICAgICBwID0gYS5rZXlzLAogICAgICAgICAgICBsID0gYS50b0tleSwKICAgICAgICAgICAgaCA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gcCh0LCByKTsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSAodCA9IGModCkpID8gZSA6IChyID0gaCh0LCByKSkubGVuZ3RoID8gZS5sZW5ndGggPyBmKHMoZSwgcikpIDogciA6IGUKICAgICAgICAgICAgfTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiUmVmbGVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBnZXRNZXRhZGF0YUtleXM6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyB0IDogbChhcmd1bWVudHNbMV0pOwogICAgICAgICAgICAgICAgcmV0dXJuIGgodShyKSwgZSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzMTQpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBpLmdldCwKICAgICAgICAgICAgYyA9IGkudG9LZXk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlJlZmxlY3QiLAogICAgICAgICAgICBzdGF0OiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZ2V0T3duTWV0YWRhdGE6IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB0IDogYyhhcmd1bWVudHNbMl0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHUociwgYShlKSwgbikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzMTQpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBpLmtleXMsCiAgICAgICAgICAgIGMgPSBpLnRvS2V5OwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJSZWZsZWN0IiwKICAgICAgICAgICAgc3RhdDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGdldE93bk1ldGFkYXRhS2V5czogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHQgOiBjKGFyZ3VtZW50c1sxXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdShhKHIpLCBlKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDMxNCksCiAgICAgICAgICAgIGEgPSBuKDQ2KSwKICAgICAgICAgICAgdSA9IG4oOTUpLAogICAgICAgICAgICBjID0gaS5oYXMsCiAgICAgICAgICAgIGYgPSBpLnRvS2V5LAogICAgICAgICAgICBzID0gZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICEhYyh0LCByLCBlKSB8fCBudWxsICE9PSAociA9IHUocikpICYmIHModCwgciwgZSkKICAgICAgICAgICAgfTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiUmVmbGVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBoYXNNZXRhZGF0YTogZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHQgOiBmKGFyZ3VtZW50c1syXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gcyhyLCBhKGUpLCBuKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDMxNCksCiAgICAgICAgICAgIGEgPSBuKDQ2KSwKICAgICAgICAgICAgdSA9IGkuaGFzLAogICAgICAgICAgICBjID0gaS50b0tleTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiUmVmbGVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBoYXNPd25NZXRhZGF0YTogZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHQgOiBjKGFyZ3VtZW50c1syXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdShyLCBhKGUpLCBuKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDMxNCksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IG8udG9LZXksCiAgICAgICAgICAgIHUgPSBvLnNldDsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiUmVmbGVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBtZXRhZGF0YTogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB1KHQsIHIsIGkoZSksIGEobikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzI0KSwKICAgICAgICAgICAgaSA9IGUoMzI1KS5hZGQ7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGFkZEFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gbyh0aGlzKSwgciA9IDAsIGUgPSBhcmd1bWVudHMubGVuZ3RoOyByIDwgZTsgcisrKSBpKHQsIGFyZ3VtZW50c1tyXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMzI1KS5oYXM7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gbih0KSwgdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpOwogICAgICAgIGUgPSBTZXQucHJvdG90eXBlOwogICAgICAgIHQuZXhwb3J0cyA9IHsKICAgICAgICAgICAgU2V0OiBTZXQsCiAgICAgICAgICAgIGFkZDogbihlLmFkZCksCiAgICAgICAgICAgIGhhczogbihlLmhhcyksCiAgICAgICAgICAgIHJlbW92ZTogbihlLmRlbGV0ZSksCiAgICAgICAgICAgIHByb3RvOiBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzI0KSwKICAgICAgICAgICAgaSA9IGUoMzI1KS5yZW1vdmU7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRlbGV0ZUFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByID0gbyh0aGlzKSwgZSA9ICEwLCBuID0gMCwgYSA9IGFyZ3VtZW50cy5sZW5ndGg7IG4gPCBhOyBuKyspIHQgPSBpKHIsIGFyZ3VtZW50c1tuXSksIGUgPSBlICYmIHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzI4KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhZSgzMzMpKCJkaWZmZXJlbmNlIikKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRpZmZlcmVuY2U6IG8KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzMjQpLAogICAgICAgICAgICBvID0gZSgzMjUpLAogICAgICAgICAgICBpID0gZSgzMjkpLAogICAgICAgICAgICBhID0gZSgzMzEpLAogICAgICAgICAgICB1ID0gZSgzMzIpLAogICAgICAgICAgICBjID0gZSgzMzApLAogICAgICAgICAgICBmID0gZSgxNDQpLAogICAgICAgICAgICBzID0gby5oYXMsCiAgICAgICAgICAgIHAgPSBvLnJlbW92ZTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciByID0gbih0aGlzKSwKICAgICAgICAgICAgICAgIGUgPSB1KHQpLAogICAgICAgICAgICAgICAgbyA9IGkocik7CiAgICAgICAgICAgIHJldHVybiBhKHIpIDw9IGUuc2l6ZSA/IGMociwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGUuaW5jbHVkZXModCkgJiYgcChvLCB0KQogICAgICAgICAgICB9KSkgOiBmKGUuZ2V0SXRlcmF0b3IoKSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHMociwgdCkgJiYgcChvLCB0KQogICAgICAgICAgICB9KSksIG8KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMyNSksCiAgICAgICAgICAgIG8gPSBlKDMzMCksCiAgICAgICAgICAgIGkgPSBuLlNldCwKICAgICAgICAgICAgYSA9IG4uYWRkOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuZXcgaTsKICAgICAgICAgICAgcmV0dXJuIG8odCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGEociwgdCkKICAgICAgICAgICAgfSkpLCByCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuLCBvID0gZSgxMyksCiAgICAgICAgICAgIGkgPSBlKDE0NCksCiAgICAgICAgICAgIGEgPSAoZSA9IChuID0gZSgzMjUpKS5TZXQsIG8oKG4gPSBuLnByb3RvKS5mb3JFYWNoKSksCiAgICAgICAgICAgIHUgPSBvKG4ua2V5cyksCiAgICAgICAgICAgIGMgPSB1KG5ldyBlKS5uZXh0OwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgPyBpKHUodCksIHIsIGMpIDogYSh0LCByKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoOTgpOwogICAgICAgIGUgPSBlKDMyNSk7CiAgICAgICAgdC5leHBvcnRzID0gbihlLnByb3RvLCAic2l6ZSIsICJnZXQiKSB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0LnNpemUKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZnVuY3Rpb24gbih0LCByLCBlLCBuKSB7CiAgICAgICAgICAgIHRoaXMuc2V0ID0gdCwgdGhpcy5zaXplID0gciwgdGhpcy5oYXMgPSBlLCB0aGlzLmtleXMgPSBuCiAgICAgICAgfQogICAgICAgIHZhciBvID0gZSgzMCksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IGUoNyksCiAgICAgICAgICAgIHUgPSBlKDYxKSwKICAgICAgICAgICAgYyA9IFR5cGVFcnJvciwKICAgICAgICAgICAgZiA9IE1hdGgubWF4OwogICAgICAgIG4ucHJvdG90eXBlID0gewogICAgICAgICAgICBnZXRJdGVyYXRvcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaShhKHRoaXMua2V5cywgdGhpcy5zZXQpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbmNsdWRlczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGEodGhpcy5oYXMsIHRoaXMuc2V0LCB0KQogICAgICAgICAgICB9CiAgICAgICAgfSwgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBpKHQpOwogICAgICAgICAgICB2YXIgciA9ICt0LnNpemU7CiAgICAgICAgICAgIGlmIChyICE9IHIpIHRocm93IGMoIkludmFsaWQgc2l6ZSIpOwogICAgICAgICAgICByZXR1cm4gbmV3IG4odCwgZih1KHIpLCAwKSwgbyh0LmhhcyksIG8odC5rZXlzKSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIzKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKG5ldyhuKCJTZXQiKSkpW3RdKHsKICAgICAgICAgICAgICAgICAgICBzaXplOiAwLAogICAgICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAga2V5czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCAhMAogICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDcpLAogICAgICAgICAgICBpID0gZSgzMzUpLAogICAgICAgICAgICBhID0gZSgzMjgpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJTZXQiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBkaWZmZXJlbmNlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyhhLCB0aGlzLCBpKHQpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjMpLAogICAgICAgICAgICBvID0gZSgyMCksCiAgICAgICAgICAgIGkgPSBlKDMzNiksCiAgICAgICAgICAgIGEgPSBlKDE5KSwKICAgICAgICAgICAgdSA9IG4oIlNldCIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGEociA9IHQpICYmICJudW1iZXIiID09IHR5cGVvZiByLnNpemUgJiYgbyhyLmhhcykgJiYgbyhyLmtleXMpIHx8ICFpKHQpID8gdCA6IG5ldyB1KHQpOwogICAgICAgICAgICB2YXIgcgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oODkpLAogICAgICAgICAgICBpID0gbigzOCksCiAgICAgICAgICAgIGEgPSBuKDE2KSwKICAgICAgICAgICAgdSA9IG4oMzMpLAogICAgICAgICAgICBjID0gbigxMjEpLAogICAgICAgICAgICBmID0gdSgiaXRlcmF0b3IiKSwKICAgICAgICAgICAgcyA9IE9iamVjdDsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHJldHVybiAhYShyKSAmJiAoKHIgPSBzKHIpKVtmXSAhPT0gdCB8fCAiQEBpdGVyYXRvciIgaW4gciB8fCBpKGMsIG8ocikpKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDMyNCksCiAgICAgICAgICAgIHUgPSBuKDMzMCk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGV2ZXJ5OiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KTsKICAgICAgICAgICAgICAgIHJldHVybiAhMSAhPT0gdShlLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGlmICghbih0LCB0LCBlKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9KSwgITApCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTExKSwKICAgICAgICAgICAgYSA9IG4oMzI0KSwKICAgICAgICAgICAgdSA9IG4oMzI1KSwKICAgICAgICAgICAgYyA9IG4oMzMwKSwKICAgICAgICAgICAgZiA9IHUuU2V0LAogICAgICAgICAgICBzID0gdS5hZGQ7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIG4gPSBpKHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCksCiAgICAgICAgICAgICAgICAgICAgbyA9IG5ldyBmOwogICAgICAgICAgICAgICAgcmV0dXJuIGMoZSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBuKHQsIHQsIGUpICYmIHMobywgdCkKICAgICAgICAgICAgICAgIH0pKSwgbwogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDMyNCksCiAgICAgICAgICAgIHUgPSBuKDMzMCk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZpbmQ6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gaShyLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpOwogICAgICAgICAgICAgICAgcmV0dXJuIChyID0gdShlLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGlmIChuKHQsIHQsIGUpKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCAhMCkpICYmIHIudmFsdWUKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmcm9tOiBlKDI1OCkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNiksCiAgICAgICAgICAgIGkgPSBlKDM0Mik7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogIWUoMzMzKSgiaW50ZXJzZWN0aW9uIikgfHwgbygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIjMsMiIgIT0gQXJyYXkuZnJvbShuZXcgU2V0KFsxLCAyLCAzXSkuaW50ZXJzZWN0aW9uKG5ldyBTZXQoWzMsIDJdKSkpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sIHsKICAgICAgICAgICAgaW50ZXJzZWN0aW9uOiBpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMzI0KSwKICAgICAgICAgICAgbyA9IGUoMzI1KSwKICAgICAgICAgICAgaSA9IGUoMzMxKSwKICAgICAgICAgICAgYSA9IGUoMzMyKSwKICAgICAgICAgICAgdSA9IGUoMzMwKSwKICAgICAgICAgICAgYyA9IGUoMTQ0KSwKICAgICAgICAgICAgZiA9IG8uU2V0LAogICAgICAgICAgICBzID0gby5hZGQsCiAgICAgICAgICAgIHAgPSBvLmhhczsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciByID0gbih0aGlzKSwKICAgICAgICAgICAgICAgIGUgPSBhKHQpLAogICAgICAgICAgICAgICAgbyA9IG5ldyBmOwogICAgICAgICAgICByZXR1cm4gaShyKSA+IGUuc2l6ZSA/IGMoZS5nZXRJdGVyYXRvcigpLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcChyLCB0KSAmJiBzKG8sIHQpCiAgICAgICAgICAgIH0pKSA6IHUociwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGUuaW5jbHVkZXModCkgJiYgcyhvLCB0KQogICAgICAgICAgICB9KSksIG8KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMzM1KSwKICAgICAgICAgICAgYSA9IGUoMzQyKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaW50ZXJzZWN0aW9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyhhLCB0aGlzLCBpKHQpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDM0NSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogIWUoMzMzKSgiaXNEaXNqb2ludEZyb20iKQogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNEaXNqb2ludEZyb206IG8KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzMjQpLAogICAgICAgICAgICBvID0gZSgzMjUpLmhhcywKICAgICAgICAgICAgaSA9IGUoMzMxKSwKICAgICAgICAgICAgYSA9IGUoMzMyKSwKICAgICAgICAgICAgdSA9IGUoMzMwKSwKICAgICAgICAgICAgYyA9IGUoMTQ0KSwKICAgICAgICAgICAgZiA9IGUoMTY1KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciByID0gbih0aGlzKSwKICAgICAgICAgICAgICAgIGUgPSBhKHQpOwogICAgICAgICAgICBpZiAoaShyKSA8PSBlLnNpemUpIHJldHVybiAhMSAhPT0gdShyLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKGUuaW5jbHVkZXModCkpIHJldHVybiAhMQogICAgICAgICAgICB9KSwgITApOwogICAgICAgICAgICB2YXIgcyA9IGUuZ2V0SXRlcmF0b3IoKTsKICAgICAgICAgICAgcmV0dXJuICExICE9PSBjKHMsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAobyhyLCB0KSkgcmV0dXJuIGYocywgIm5vcm1hbCIsICExKQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMzM1KSwKICAgICAgICAgICAgYSA9IGUoMzQ1KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNEaXNqb2ludEZyb206IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKGEsIHRoaXMsIGkodCkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzQ4KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhZSgzMzMpKCJpc1N1YnNldE9mIikKICAgICAgICB9LCB7CiAgICAgICAgICAgIGlzU3Vic2V0T2Y6IG8KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzMjQpLAogICAgICAgICAgICBvID0gZSgzMzEpLAogICAgICAgICAgICBpID0gZSgzMzApLAogICAgICAgICAgICBhID0gZSgzMzIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuKHRoaXMpLAogICAgICAgICAgICAgICAgZSA9IGEodCk7CiAgICAgICAgICAgIHJldHVybiAhKG8ocikgPiBlLnNpemUpICYmICExICE9PSBpKHIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIWUuaW5jbHVkZXModCkpIHJldHVybiAhMQogICAgICAgICAgICB9KSwgITApCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDMzNSksCiAgICAgICAgICAgIGEgPSBlKDM0OCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGlzU3Vic2V0T2Y6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKGEsIHRoaXMsIGkodCkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzUxKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhZSgzMzMpKCJpc1N1cGVyc2V0T2YiKQogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNTdXBlcnNldE9mOiBvCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMzI0KSwKICAgICAgICAgICAgbyA9IGUoMzI1KS5oYXMsCiAgICAgICAgICAgIGkgPSBlKDMzMSksCiAgICAgICAgICAgIGEgPSBlKDMzMiksCiAgICAgICAgICAgIHUgPSBlKDE0NCksCiAgICAgICAgICAgIGMgPSBlKDE2NSk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgciA9IG4odGhpcyk7CiAgICAgICAgICAgIHQgPSBhKHQpOwogICAgICAgICAgICBpZiAoaShyKSA8IHQuc2l6ZSkgcmV0dXJuICExOwogICAgICAgICAgICB2YXIgZSA9IHQuZ2V0SXRlcmF0b3IoKTsKICAgICAgICAgICAgcmV0dXJuICExICE9PSB1KGUsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIW8ociwgdCkpIHJldHVybiBjKGUsICJub3JtYWwiLCAhMSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDMzNSksCiAgICAgICAgICAgIGEgPSBlKDM1MSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGlzU3VwZXJzZXRPZjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8oYSwgdGhpcywgaSh0KSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxMyksCiAgICAgICAgICAgIGEgPSBuKDMyNCksCiAgICAgICAgICAgIHUgPSBuKDMzMCksCiAgICAgICAgICAgIGMgPSBuKDg4KSwKICAgICAgICAgICAgZiA9IGkoW10uam9pbiksCiAgICAgICAgICAgIHMgPSBpKFtdLnB1c2gpOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJTZXQiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBqb2luOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IChyID0gciA9PT0gdCA/ICIsIiA6IGMociksIFtdKTsKICAgICAgICAgICAgICAgIHJldHVybiB1KGUsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcyhuLCB0KQogICAgICAgICAgICAgICAgfSkpLCBmKG4sIHIpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTExKSwKICAgICAgICAgICAgYSA9IG4oMzI0KSwKICAgICAgICAgICAgdSA9IG4oMzI1KSwKICAgICAgICAgICAgYyA9IG4oMzMwKSwKICAgICAgICAgICAgZiA9IHUuU2V0LAogICAgICAgICAgICBzID0gdS5hZGQ7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIG1hcDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIG4gPSBpKHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCksCiAgICAgICAgICAgICAgICAgICAgbyA9IG5ldyBmOwogICAgICAgICAgICAgICAgcmV0dXJuIGMoZSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBzKG8sIG4odCwgdCwgZSkpCiAgICAgICAgICAgICAgICB9KSksIG8KICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgeyBvZjogZSgyNjkpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDMwKSwKICAgICAgICAgICAgYSA9IG4oMzI0KSwKICAgICAgICAgICAgdSA9IG4oMzMwKSwKICAgICAgICAgICAgYyA9IFR5cGVFcnJvcjsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgcmVkdWNlOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGFyZ3VtZW50cy5sZW5ndGggPCAyLAogICAgICAgICAgICAgICAgICAgIG8gPSBuID8gdCA6IGFyZ3VtZW50c1sxXTsKICAgICAgICAgICAgICAgIGlmIChpKHIpLCB1KGUsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gKG4gPSAhMSwgdCkgOiByKG8sIHQsIHQsIGUpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuKSB0aHJvdyBjKCJSZWR1Y2Ugb2YgZW1wdHkgc2V0IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxMTEpLAogICAgICAgICAgICBhID0gbigzMjQpLAogICAgICAgICAgICB1ID0gbigzMzApOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJTZXQiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBzb21lOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KTsKICAgICAgICAgICAgICAgIHJldHVybiAhMCA9PT0gdShlLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGlmIChuKHQsIHQsIGUpKSByZXR1cm4gITAKICAgICAgICAgICAgICAgIH0pLCAhMCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzNTkpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJTZXQiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICFlKDMzMykoInN5bW1ldHJpY0RpZmZlcmVuY2UiKQogICAgICAgIH0sIHsKICAgICAgICAgICAgc3ltbWV0cmljRGlmZmVyZW5jZTogbwogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMyNCksCiAgICAgICAgICAgIG8gPSBlKDMyNSksCiAgICAgICAgICAgIGkgPSBlKDMyOSksCiAgICAgICAgICAgIGEgPSBlKDMzMiksCiAgICAgICAgICAgIHUgPSBlKDE0NCksCiAgICAgICAgICAgIGMgPSBvLmFkZCwKICAgICAgICAgICAgZiA9IG8uaGFzLAogICAgICAgICAgICBzID0gby5yZW1vdmU7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgciA9IG4odGhpcyksCiAgICAgICAgICAgICAgICBlID0gKHQgPSBhKHQpLmdldEl0ZXJhdG9yKCksIGkocikpOwogICAgICAgICAgICByZXR1cm4gdSh0LCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgKGYociwgdCkgPyBzIDogYykoZSwgdCkKICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDMzNSksCiAgICAgICAgICAgIGEgPSBlKDM1OSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHN5bW1ldHJpY0RpZmZlcmVuY2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKGEsIHRoaXMsIGkodCkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzYyKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhZSgzMzMpKCJ1bmlvbiIpCiAgICAgICAgfSwgewogICAgICAgICAgICB1bmlvbjogbwogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMyNCksCiAgICAgICAgICAgIG8gPSBlKDMyNSkuYWRkLAogICAgICAgICAgICBpID0gZSgzMjkpLAogICAgICAgICAgICBhID0gZSgzMzIpLAogICAgICAgICAgICB1ID0gZSgxNDQpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuKHRoaXMpLAogICAgICAgICAgICAgICAgZSA9ICh0ID0gYSh0KS5nZXRJdGVyYXRvcigpLCBpKHIpKTsKICAgICAgICAgICAgcmV0dXJuIHUodCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIG8oZSwgdCkKICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDMzNSksCiAgICAgICAgICAgIGEgPSBlKDM2Mik7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHVuaW9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyhhLCB0aGlzLCBpKHQpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDM2NSkuY2hhckF0LAogICAgICAgICAgICBhID0gbigxNSksCiAgICAgICAgICAgIHUgPSBuKDYxKSwKICAgICAgICAgICAgYyA9IG4oODgpOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJTdHJpbmciLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGF0OiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGMoYSh0aGlzKSksCiAgICAgICAgICAgICAgICAgICAgbiA9IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgcmV0dXJuIChyID0gMCA8PSAociA9IHUocikpID8gciA6IG4gKyByKSA8IDAgfHwgbiA8PSByID8gdCA6IGkoZSwgcikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDEzKSwKICAgICAgICAgICAgaSA9IG4oNjEpLAogICAgICAgICAgICBhID0gbig4OCksCiAgICAgICAgICAgIHUgPSBuKDE1KSwKICAgICAgICAgICAgYyA9IG8oIiIuY2hhckF0KSwKICAgICAgICAgICAgZiA9IG8oIiIuY2hhckNvZGVBdCksCiAgICAgICAgICAgIHMgPSBvKCIiLnNsaWNlKTsKICAgICAgICBvID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgdmFyIG8sIHAgPSBhKHUoZSkpLAogICAgICAgICAgICAgICAgICAgIGwgPSBpKG4pOwogICAgICAgICAgICAgICAgZSA9IHAubGVuZ3RoOwogICAgICAgICAgICAgICAgcmV0dXJuIGwgPCAwIHx8IGUgPD0gbCA/IHIgPyAiIiA6IHQgOiAobiA9IGYocCwgbCkpIDwgNTUyOTYgfHwgNTYzMTkgPCBuIHx8IGwgKyAxID09PSBlIHx8IChvID0gZihwLCBsICsgMSkpIDwgNTYzMjAgfHwgNTczNDMgPCBvID8gciA/IGMocCwgbCkgOiBuIDogciA/IHMocCwgbCwgbCArIDIpIDogbyAtIDU2MzIwICsgKG4gLSA1NTI5NiA8PCAxMCkgKyA2NTUzNgogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICByLmV4cG9ydHMgPSB7CiAgICAgICAgICAgIGNvZGVBdDogbyghMSksCiAgICAgICAgICAgIGNoYXJBdDogbyghMCkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIlN0cmluZyIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBjb29rZWQ6IGUoMzY3KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDEzKSwKICAgICAgICAgICAgaSA9IG4oMTEpLAogICAgICAgICAgICBhID0gbig4OCksCiAgICAgICAgICAgIHUgPSBuKDYzKSwKICAgICAgICAgICAgYyA9IFR5cGVFcnJvciwKICAgICAgICAgICAgZiA9IG8oW10ucHVzaCksCiAgICAgICAgICAgIHMgPSBvKFtdLmpvaW4pOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGUgPSBpKHIpLAogICAgICAgICAgICAgICAgbiA9IHUoZSk7CiAgICAgICAgICAgIGlmICghbikgcmV0dXJuICIiOwogICAgICAgICAgICBmb3IgKHZhciBvID0gYXJndW1lbnRzLmxlbmd0aCwgcCA9IFtdLCBsID0gMDs7KSB7CiAgICAgICAgICAgICAgICB2YXIgaCA9IGVbbCsrXTsKICAgICAgICAgICAgICAgIGlmIChoID09PSB0KSB0aHJvdyBjKCJJbmNvcnJlY3QgdGVtcGxhdGUiKTsKICAgICAgICAgICAgICAgIGlmIChmKHAsIGEoaCkpLCBsID09PSBuKSByZXR1cm4gcyhwLCAiIik7CiAgICAgICAgICAgICAgICBsIDwgbyAmJiBmKHAsIGEoYXJndW1lbnRzW2xdKSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDE4NiksCiAgICAgICAgICAgIGEgPSBuKDExOCksCiAgICAgICAgICAgIHUgPSBuKDE1KSwKICAgICAgICAgICAgYyA9IG4oODgpLAogICAgICAgICAgICBmID0gbig1MSksCiAgICAgICAgICAgIHMgPSAobiA9IG4oMzY1KSkuY29kZUF0LAogICAgICAgICAgICBwID0gbi5jaGFyQXQsCiAgICAgICAgICAgIGwgPSAiU3RyaW5nIEl0ZXJhdG9yIiwKICAgICAgICAgICAgaCA9IGYuc2V0LAogICAgICAgICAgICB2ID0gZi5nZXR0ZXJGb3IobCksCiAgICAgICAgICAgIHkgPSBpKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBoKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiBsLAogICAgICAgICAgICAgICAgICAgIHN0cmluZzogdCwKICAgICAgICAgICAgICAgICAgICBpbmRleDogMAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSksICJTdHJpbmciLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHYodGhpcyksCiAgICAgICAgICAgICAgICAgICAgZSA9IHIuc3RyaW5nLAogICAgICAgICAgICAgICAgICAgIG4gPSByLmluZGV4OwogICAgICAgICAgICAgICAgcmV0dXJuIG4gPj0gZS5sZW5ndGggPyBhKHQsICEwKSA6IChlID0gcChlLCBuKSwgci5pbmRleCArPSBlLmxlbmd0aCwgYSh7CiAgICAgICAgICAgICAgICAgICAgY29kZVBvaW50OiBzKGUsIDApLAogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuCiAgICAgICAgICAgICAgICB9LCAhMSkpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU3RyaW5nIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBjb2RlUG9pbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgeShjKHUodGhpcykpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMjAxKSwKICAgICAgICAgICAgaSA9IG4oMiksCiAgICAgICAgICAgIGEgPSBuKDM0KSwKICAgICAgICAgICAgdSA9IG4oMjMpLAogICAgICAgICAgICBjID0gbig0OCksCiAgICAgICAgICAgIGYgPSBuKDEzKSwKICAgICAgICAgICAgcyA9IG4oMTkwKSwKICAgICAgICAgICAgcCA9IG4oNDYpLAogICAgICAgICAgICBsID0gbigzOSksCiAgICAgICAgICAgIGggPSBuKDIwKSwKICAgICAgICAgICAgdiA9IG4oNjMpLAogICAgICAgICAgICB5ID0gbig0NCkuZiwKICAgICAgICAgICAgZCA9IG4oMTk3KSwKICAgICAgICAgICAgZyA9IG4oMzY3KSwKICAgICAgICAgICAgYiA9IG4oMzcwKSwKICAgICAgICAgICAgbSA9IChuID0gbigyOTcpLCBhKCJHbG9iYWxEZWRlbnRSZWdpc3RyeSIsIG5ldyh1KCJXZWFrTWFwIikpKSk7CgogICAgICAgIGZ1bmN0aW9uIHgodCkgewogICAgICAgICAgICByZXR1cm4gYygoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBkKGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZVswXSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQucmF3OwogICAgICAgICAgICAgICAgICAgIGlmIChvICYmICFFKHIpKSB0aHJvdyBTKCJSYXcgdGVtcGxhdGUgc2hvdWxkIGJlIGZyb3plbiIpOwogICAgICAgICAgICAgICAgICAgIGlmIChtLmhhcyhyKSkgcmV0dXJuIG0uZ2V0KHIpOwogICAgICAgICAgICAgICAgICAgIHZhciBlID0gQyhyKTsKICAgICAgICAgICAgICAgICAgICB0ID0gTihlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geSh0LCAicmF3IiwgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQShlKQogICAgICAgICAgICAgICAgICAgIH0pLCBBKHQpLCBtLnNldChyLCB0KSwgdAogICAgICAgICAgICAgICAgfShwKHIpKSwgcyh0LCB0aGlzLCBlKQogICAgICAgICAgICB9KSwgIiIpCiAgICAgICAgfQogICAgICAgIG0uaGFzID0gbS5oYXMsIG0uZ2V0ID0gbS5nZXQsIG0uc2V0ID0gbS5zZXQ7CiAgICAgICAgdmFyIHcgPSBBcnJheSwKICAgICAgICAgICAgUyA9IFR5cGVFcnJvciwKICAgICAgICAgICAgQSA9IE9iamVjdC5mcmVlemUgfHwgT2JqZWN0LAogICAgICAgICAgICBFID0gT2JqZWN0LmlzRnJvemVuLAogICAgICAgICAgICBPID0gTWF0aC5taW4sCiAgICAgICAgICAgIFIgPSBmKCIiLmNoYXJBdCksCiAgICAgICAgICAgIEkgPSBmKCIiLnNsaWNlKSwKICAgICAgICAgICAgayA9IGYoIiIuc3BsaXQpLAogICAgICAgICAgICBUID0gZigvLi8uZXhlYyksCiAgICAgICAgICAgIE0gPSAvKFtcblx1MjAyOFx1MjAyOV18XHJcbj8pL2csCiAgICAgICAgICAgIGogPSBSZWdFeHAoIl5bIiArIG4gKyAiXSoiKSwKICAgICAgICAgICAgUCA9IFJlZ0V4cCgiW14iICsgbiArICJdIiksCiAgICAgICAgICAgIEQgPSAiSW52YWxpZCB0YWciLAogICAgICAgICAgICBDID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIHIsIGUgPSBsKHQpLAogICAgICAgICAgICAgICAgICAgIG4gPSB2KGUpLAogICAgICAgICAgICAgICAgICAgIG8gPSB3KG4pLAogICAgICAgICAgICAgICAgICAgIGkgPSB3KG4pLAogICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgaWYgKCFuKSB0aHJvdyBTKEQpOwogICAgICAgICAgICAgICAgZm9yICg7IGEgPCBuOyBhKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGVbYV07CiAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiB1KSB0aHJvdyBTKEQpOwogICAgICAgICAgICAgICAgICAgIG9bYV0gPSBrKHUsIE0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKGEgPSAwOyBhIDwgbjsgYSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBhICsgMSA9PT0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG9bYV07CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGYubGVuZ3RoIHx8IDAgPCBmWzBdLmxlbmd0aCkgdGhyb3cgUygiSW52YWxpZCBvcGVuaW5nIGxpbmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZlsxXSA9ICIiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSBmLmxlbmd0aCB8fCBUKFAsIGZbZi5sZW5ndGggLSAxXSkpIHRocm93IFMoIkludmFsaWQgY2xvc2luZyBsaW5lIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGZbZi5sZW5ndGggLSAyXSA9ICIiLCBmW2YubGVuZ3RoIC0gMV0gPSAiIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMjsgcyA8IGYubGVuZ3RoOyBzICs9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBmW3NdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHMgKyAxID09PSBmLmxlbmd0aCAmJiAhYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBUKGosIHApWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBoIHx8IHkubGVuZ3RoICE9PSBwLmxlbmd0aCA/IHIgPSBfKHksIHIpIDogZltzXSA9ICIiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGQgPSByID8gci5sZW5ndGggOiAwOwogICAgICAgICAgICAgICAgZm9yIChhID0gMDsgYSA8IG47IGErKykgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGcgPSAoZiA9IG9bYV0pWzBdLCBiID0gMTsgYiA8IGYubGVuZ3RoOyBiICs9IDIpIGcgKz0gZltiXSArIEkoZltiICsgMV0sIGQpOwogICAgICAgICAgICAgICAgICAgIGlbYV0gPSBnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICB9LAogICAgICAgICAgICBfID0gZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICAgICAgaWYgKGUgPT09IHQgfHwgciA9PT0gZSkgcmV0dXJuIHI7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMCwgbyA9IE8oci5sZW5ndGgsIGUubGVuZ3RoKTsgbiA8IG8gJiYgUihyLCBuKSA9PT0gUihlLCBuKTsgbisrKTsKICAgICAgICAgICAgICAgIHJldHVybiBJKHIsIDAsIG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gMCwgZSA9IHQubGVuZ3RoLCBuID0gdyhlKTsgciA8IGU7IHIrKykgbltyXSA9IGIodFtyXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICB9LAogICAgICAgICAgICBGID0geChnKTsKICAgICAgICBpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU3RyaW5nIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRlZGVudDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHAodCksIGgodCkgPyB4KHQpIDogcyhGLCB0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4odCwgcikgewogICAgICAgICAgICByZXR1cm4gNDggPD0gKHIgPSBmKHQsIHIpKSAmJiByIDw9IDU3CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvKHQsIHIsIGUpIHsKICAgICAgICAgICAgaWYgKGUgPj0gdC5sZW5ndGgpIHJldHVybiAtMTsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IHIgPCBlOyByKyspIHsKICAgICAgICAgICAgICAgIHZhciBvID0gbChmKHQsIHIpKTsKICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gbykgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgbiA9IDE2ICogbiArIG8KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbgogICAgICAgIH0KICAgICAgICB2YXIgaSA9IGUoMjMpLAogICAgICAgICAgICBhID0gKGUgPSBlKDEzKSwgU3RyaW5nLmZyb21DaGFyQ29kZSksCiAgICAgICAgICAgIHUgPSBpKCJTdHJpbmciLCAiZnJvbUNvZGVQb2ludCIpLAogICAgICAgICAgICBjID0gZSgiIi5jaGFyQXQpLAogICAgICAgICAgICBmID0gZSgiIi5jaGFyQ29kZUF0KSwKICAgICAgICAgICAgcyA9IGUoIiIuaW5kZXhPZiksCiAgICAgICAgICAgIHAgPSBlKCIiLnNsaWNlKSwKICAgICAgICAgICAgbCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiA0OCA8PSB0ICYmIHQgPD0gNTcgPyB0IC0gNDggOiA5NyA8PSB0ICYmIHQgPD0gMTAyID8gdCAtIDk3ICsgMTAgOiA2NSA8PSB0ICYmIHQgPD0gNzAgPyB0IC0gNjUgKyAxMCA6IC0xCiAgICAgICAgICAgIH07CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBmb3IgKHZhciByLCBlID0gIiIsIGkgPSAwLCBmID0gMDsgLSAxIDwgKGYgPSBzKHQsICJcXCIsIGYpKTspIHsKICAgICAgICAgICAgICAgIGlmIChlICs9IHAodCwgaSwgZiksICsrZiA9PT0gdC5sZW5ndGgpIHJldHVybjsKICAgICAgICAgICAgICAgIHZhciBsID0gYyh0LCBmKyspOwogICAgICAgICAgICAgICAgc3dpdGNoIChsKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlxiIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAidCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlx0IjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAibiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAidiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlx2IjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiZiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlxmIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiciI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlxyIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiXHIiOgogICAgICAgICAgICAgICAgICAgICAgICBmIDwgdC5sZW5ndGggJiYgIlxuIiA9PT0gYyh0LCBmKSAmJiArK2Y7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiXG4iOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIlx1MjAyOCI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiXHUyMDI5IjoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiMCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKHQsIGYpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlwwIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gKHIgPSBvKHQsIGYsIGYgKyAyKSkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgZiArPSAyLCBlICs9IGEocik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA8IHQubGVuZ3RoICYmICJ7IiA9PT0gYyh0LCBmKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBzKHQsICJ9IiwgKytmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gaCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG8odCwgZiwgaCksIGYgPSBoICsgMQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgciA9IG8odCwgZiwgZiArIDQpLCBmICs9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gciB8fCAxMTE0MTExIDwgcikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBlICs9IHUocik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKGwsIDApKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaSA9IGYKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZSArIHAodCwgaSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgzNzIpKCJhc3luY0Rpc3Bvc2UiKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzNzMpLAogICAgICAgICAgICBvID0gZSgzOCksCiAgICAgICAgICAgIGkgPSBlKDM3NCksCiAgICAgICAgICAgIGEgPSBlKDQ0KS5mOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuLlN5bWJvbCB8fCAobi5TeW1ib2wgPSB7fSk7CiAgICAgICAgICAgIG8ociwgdCkgfHwgYShyLCB0LCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogaS5mKHQpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUgPSBlKDMpLCB0LmV4cG9ydHMgPSBlCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoMzMpLCByLmYgPSBlCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgzNzIpKCJkaXNwb3NlIikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDIpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU3ltYm9sIiwKICAgICAgICAgICAgc3RhdDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGlzUmVnaXN0ZXJlZFN5bWJvbDogZSgzNzcpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMjMpLAogICAgICAgICAgICBpID0gKG4gPSBuKDEzKSwgKG8gPSBvKCJTeW1ib2wiKSkua2V5Rm9yKSwKICAgICAgICAgICAgYSA9IG4oby5wcm90b3R5cGUudmFsdWVPZik7CiAgICAgICAgci5leHBvcnRzID0gby5pc1JlZ2lzdGVyZWRTeW1ib2wgfHwgZnVuY3Rpb24ocikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkoYShyKSkgIT09IHQKICAgICAgICAgICAgfSBjYXRjaCAocikgewogICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIlN5bWJvbCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBuYW1lOiAiaXNSZWdpc3RlcmVkU3ltYm9sIgogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNSZWdpc3RlcmVkOiBlKDM3NykKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJTeW1ib2wiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNXZWxsS25vd25TeW1ib2w6IGUoMzgwKQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZm9yICh2YXIgbiA9IGUoMzQpLCBvID0gZSgyMyksIGkgPSBlKDEzKSwgYSA9IGUoMjIpLCB1ID0gZSgzMyksIGMgPSBvKCJTeW1ib2wiKSwgZiA9IGMuaXNXZWxsS25vd25TeW1ib2wsIHMgPSBvKCJPYmplY3QiLCAiZ2V0T3duUHJvcGVydHlOYW1lcyIpLCBwID0gaShjLnByb3RvdHlwZS52YWx1ZU9mKSwgbCA9IG4oIndrcyIpLCBoID0gMCwgdiA9IHMoYyksIHkgPSB2Lmxlbmd0aDsgaCA8IHk7IGgrKykgdHJ5IHsKICAgICAgICAgICAgdmFyIGQgPSB2W2hdOwogICAgICAgICAgICBhKGNbZF0pICYmIHUoZCkKICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKGYgJiYgZih0KSkgcmV0dXJuICEwOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IHAodCksIGUgPSAwLCBuID0gcyhsKSwgbyA9IG4ubGVuZ3RoOyBlIDwgbzsgZSsrKQogICAgICAgICAgICAgICAgICAgIGlmIChsW25bZV1dID09IHIpIHJldHVybiAhMAogICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICByZXR1cm4gITEKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIlN5bWJvbCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBuYW1lOiAiaXNXZWxsS25vd25TeW1ib2wiLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpc1dlbGxLbm93bjogZSgzODApCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDM3MikoIm1hdGNoZXIiKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMzcyKSgibWV0YWRhdGEiKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMzcyKSgibWV0YWRhdGFLZXkiKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMzcyKSgib2JzZXJ2YWJsZSIpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgzNzIpKCJwYXR0ZXJuTWF0Y2giKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMzcyKSgicmVwbGFjZUFsbCIpCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIzKSwKICAgICAgICAgICAgaSA9IG4oMjU5KSwKICAgICAgICAgICAgYSA9IG4oMTEwKSwKICAgICAgICAgICAgdSA9IG4oOTMpLAogICAgICAgICAgICBjID0gbig3OSksCiAgICAgICAgICAgIGYgPSB1LmFUeXBlZEFycmF5Q29uc3RydWN0b3I7CiAgICAgICAgKDAsIHUuZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZCkoImZyb21Bc3luYyIsIChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoLAogICAgICAgICAgICAgICAgdSA9IDEgPCBuID8gYXJndW1lbnRzWzFdIDogdCwKICAgICAgICAgICAgICAgIHMgPSAyIDwgbiA/IGFyZ3VtZW50c1syXSA6IHQ7CiAgICAgICAgICAgIHJldHVybiBuZXcobygiUHJvbWlzZSIpKSgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaShlKSwgdChhKHIsIHUsIHMpKQogICAgICAgICAgICB9KSkudGhlbigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGMoZihlKSwgdCkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSksICEwKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig5MyksCiAgICAgICAgICAgIGkgPSBuKDEyNikuZmlsdGVyUmVqZWN0LAogICAgICAgICAgICBhID0gbigzOTApLAogICAgICAgICAgICB1ID0gby5hVHlwZWRBcnJheTsKICAgICAgICAoMCwgby5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZmlsdGVyT3V0IiwgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgcmV0dXJuIHIgPSBpKHUodGhpcyksIHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCksIGEodGhpcywgcikKICAgICAgICB9KSwgITApCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDc5KSwKICAgICAgICAgICAgbyA9IGUoMzkxKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiBuKG8odCksIHIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg5MyksCiAgICAgICAgICAgIG8gPSBlKDM5MiksCiAgICAgICAgICAgIGkgPSBuLmFUeXBlZEFycmF5Q29uc3RydWN0b3IsCiAgICAgICAgICAgIGEgPSBuLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBpKG8odCwgYSh0KSkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig0NiksCiAgICAgICAgICAgIGkgPSBuKDI1OSksCiAgICAgICAgICAgIGEgPSBuKDE2KSwKICAgICAgICAgICAgdSA9IG4oMzMpKCJzcGVjaWVzIik7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgcmV0dXJuIChyID0gbyhyKS5jb25zdHJ1Y3RvcikgPT09IHQgfHwgYShuID0gbyhyKVt1XSkgPyBlIDogaShuKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oOTMpLAogICAgICAgICAgICBpID0gbigxMjYpLmZpbHRlclJlamVjdCwKICAgICAgICAgICAgYSA9IG4oMzkwKSwKICAgICAgICAgICAgdSA9IG8uYVR5cGVkQXJyYXk7CiAgICAgICAgKDAsIG8uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbHRlclJlamVjdCIsIChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHJldHVybiByID0gaSh1KHRoaXMpLCByLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpLCBhKHRoaXMsIHIpCiAgICAgICAgfSksICEwKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig5MyksCiAgICAgICAgICAgIGkgPSBuKDEzMSksCiAgICAgICAgICAgIGEgPSBuKDM5MSksCiAgICAgICAgICAgIHUgPSBvLmFUeXBlZEFycmF5OwogICAgICAgICgwLCBvLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJncm91cEJ5IiwgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGUgPSAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQ7CiAgICAgICAgICAgIHJldHVybiBpKHUodGhpcyksIHIsIGUsIGEpCiAgICAgICAgfSksICEwKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg5MyksCiAgICAgICAgICAgIG8gPSBlKDYzKSwKICAgICAgICAgICAgaSA9IGUoMTAyKSwKICAgICAgICAgICAgYSA9IGUoNjApLAogICAgICAgICAgICB1ID0gZSgxMDMpLAogICAgICAgICAgICBjID0gZSg2MSksCiAgICAgICAgICAgIGYgPSAoZSA9IGUoNiksIG4uYVR5cGVkQXJyYXkpLAogICAgICAgICAgICBzID0gbi5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsCiAgICAgICAgICAgIHAgPSAobiA9IG4uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCwgTWF0aC5tYXgpLAogICAgICAgICAgICBsID0gTWF0aC5taW47CiAgICAgICAgbigidG9TcGxpY2VkIiwgKGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgdmFyIGUsIG4sIGgsIHYsIHksIGQgPSBmKHRoaXMpLAogICAgICAgICAgICAgICAgZyA9IHMoZCksCiAgICAgICAgICAgICAgICBiID0gbyhkKSwKICAgICAgICAgICAgICAgIG0gPSBhKHQsIGIpLAogICAgICAgICAgICAgICAgeCA9IGFyZ3VtZW50cy5sZW5ndGgsCiAgICAgICAgICAgICAgICB3ID0gMDsKICAgICAgICAgICAgaWYgKDAgPT09IHgpIGUgPSBuID0gMDsKICAgICAgICAgICAgZWxzZSBpZiAoMSA9PT0geCkgZSA9IDAsIG4gPSBiIC0gbTsKICAgICAgICAgICAgZWxzZSBpZiAobiA9IGwocChjKHIpLCAwKSwgYiAtIG0pLCBlID0geCAtIDIpCiAgICAgICAgICAgICAgICBmb3IgKHZhciBTID0gbmV3IGcoZSksIEEgPSBpKFMpLCBFID0gMjsgRSA8IHg7IEUrKykgaCA9IGFyZ3VtZW50c1tFXSwgU1tFIC0gMl0gPSBBID8gdShoKSA6ICtoOwogICAgICAgICAgICBmb3IgKHkgPSBuZXcgZyh2ID0gYiArIGUgLSBuKTsgdyA8IG07IHcrKykgeVt3XSA9IGRbd107CiAgICAgICAgICAgIGZvciAoOyB3IDwgbSArIGU7IHcrKykgeVt3XSA9IFNbdyAtIG1dOwogICAgICAgICAgICBmb3IgKDsgdyA8IHY7IHcrKykgeVt3XSA9IGRbdyArIG4gLSBlXTsKICAgICAgICAgICAgcmV0dXJuIHkKICAgICAgICB9KSwgISFlKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSBuZXcgSW50OEFycmF5KFsxXSksCiAgICAgICAgICAgICAgICByID0gdC50b1NwbGljZWQoMSwgMCwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFswXSA9IDIsIDMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIDIgIT09IHJbMF0gfHwgMyAhPT0gclsxXQogICAgICAgIH0pKSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpLAogICAgICAgICAgICBvID0gZSg5MyksCiAgICAgICAgICAgIGkgPSBlKDc5KSwKICAgICAgICAgICAgYSA9IChlID0gZSgxNDIpLCBvLmFUeXBlZEFycmF5KSwKICAgICAgICAgICAgdSA9IG8uZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLAogICAgICAgICAgICBjID0gKG8gPSBvLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsIG4oZSkpOwogICAgICAgIG8oInVuaXF1ZUJ5IiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGEodGhpcyksIGkodSh0aGlzKSwgYyh0aGlzLCB0KSkKICAgICAgICB9KSwgITApCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzOTgpLAogICAgICAgICAgICBpID0gZSgzOTkpLnJlbW92ZTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiV2Vha01hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRlbGV0ZUFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByID0gbyh0aGlzKSwgZSA9ICEwLCBuID0gMCwgYSA9IGFyZ3VtZW50cy5sZW5ndGg7IG4gPCBhOyBuKyspIHQgPSBpKHIsIGFyZ3VtZW50c1tuXSksIGUgPSBlICYmIHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzOTkpLmhhczsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBuKHQpLCB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMyk7CiAgICAgICAgZSA9IFdlYWtNYXAucHJvdG90eXBlOwogICAgICAgIHQuZXhwb3J0cyA9IHsKICAgICAgICAgICAgV2Vha01hcDogV2Vha01hcCwKICAgICAgICAgICAgc2V0OiBuKGUuc2V0KSwKICAgICAgICAgICAgZ2V0OiBuKGUuZ2V0KSwKICAgICAgICAgICAgaGFzOiBuKGUuaGFzKSwKICAgICAgICAgICAgcmVtb3ZlOiBuKGUuZGVsZXRlKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDIpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiV2Vha01hcCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmcm9tOiBlKDI1OCkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJXZWFrTWFwIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7IG9mOiBlKDI2OSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzk4KSwKICAgICAgICAgICAgaSA9IChlID0gZSgzOTkpKS5nZXQsCiAgICAgICAgICAgIGEgPSBlLmhhcywKICAgICAgICAgICAgdSA9IGUuc2V0OwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJXZWFrTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZW1wbGFjZTogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgdmFyIGUsIG4gPSBvKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGEobiwgdCkgPyAoZSA9IGkobiwgdCksICJ1cGRhdGUiIGluIHIgJiYgKGUgPSByLnVwZGF0ZShlLCB0LCBuKSwgdShuLCB0LCBlKSksIGUpIDogKHIgPSByLmluc2VydCh0LCBuKSwgdShuLCB0LCByKSwgcikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIldlYWtNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB1cHNlcnQ6IGUoMjc1KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg0MDUpLAogICAgICAgICAgICBpID0gZSg0MDYpLmFkZDsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiV2Vha1NldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGFkZEFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gbyh0aGlzKSwgciA9IDAsIGUgPSBhcmd1bWVudHMubGVuZ3RoOyByIDwgZTsgcisrKSBpKHQsIGFyZ3VtZW50c1tyXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNDA2KS5oYXM7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gbih0KSwgdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpOwogICAgICAgIGUgPSBXZWFrU2V0LnByb3RvdHlwZTsKICAgICAgICB0LmV4cG9ydHMgPSB7CiAgICAgICAgICAgIFdlYWtTZXQ6IFdlYWtTZXQsCiAgICAgICAgICAgIGFkZDogbihlLmFkZCksCiAgICAgICAgICAgIGhhczogbihlLmhhcyksCiAgICAgICAgICAgIHJlbW92ZTogbihlLmRlbGV0ZSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg0MDUpLAogICAgICAgICAgICBpID0gZSg0MDYpLnJlbW92ZTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiV2Vha1NldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRlbGV0ZUFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByID0gbyh0aGlzKSwgZSA9ICEwLCBuID0gMCwgYSA9IGFyZ3VtZW50cy5sZW5ndGg7IG4gPCBhOyBuKyspIHQgPSBpKHIsIGFyZ3VtZW50c1tuXSksIGUgPSBlICYmIHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJXZWFrU2V0IiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZyb206IGUoMjU4KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIldlYWtTZXQiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsgb2Y6IGUoMjY5KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzKSwKICAgICAgICAgICAgYSA9IG4oMjMpLAogICAgICAgICAgICB1ID0gbigxMCksCiAgICAgICAgICAgIGMgPSBuKDQ0KS5mLAogICAgICAgICAgICBmID0gbigzOCksCiAgICAgICAgICAgIHMgPSBuKDE1NyksCiAgICAgICAgICAgIHAgPSBuKDIwNSksCiAgICAgICAgICAgIGwgPSBuKDEwOCksCiAgICAgICAgICAgIGggPSBuKDQxMSksCiAgICAgICAgICAgIHYgPSBuKDEwNiksCiAgICAgICAgICAgIHkgPSBuKDUpLAogICAgICAgICAgICBkID0gbigzNSksCiAgICAgICAgICAgIGcgPSAiRE9NRXhjZXB0aW9uIiwKICAgICAgICAgICAgYiA9IGEoIkVycm9yIiksCiAgICAgICAgICAgIG0gPSBhKGcpLAogICAgICAgICAgICB4ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBzKHRoaXMsIHcpOwogICAgICAgICAgICAgICAgdmFyIHIgPSBsKChlID0gYXJndW1lbnRzLmxlbmd0aCkgPCAxID8gdCA6IGFyZ3VtZW50c1swXSksCiAgICAgICAgICAgICAgICAgICAgZSA9IGwoZSA8IDIgPyB0IDogYXJndW1lbnRzWzFdLCAiRXJyb3IiKTsKICAgICAgICAgICAgICAgIGUgPSBuZXcgbShyLCBlKTsKICAgICAgICAgICAgICAgIHJldHVybiAociA9IGIocikpLm5hbWUgPSBnLCBjKGUsICJzdGFjayIsIHUoMSwgdihyLnN0YWNrLCAxKSkpLCBwKGUsIHRoaXMsIHgpLCBlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHcgPSB4LnByb3RvdHlwZSA9IG0ucHJvdG90eXBlLAogICAgICAgICAgICBTID0gInN0YWNrIiBpbiBiKGcpOwogICAgICAgIG4gPSAic3RhY2siIGluIG5ldyBtKDEsIDIpLCBpID0gISghKGkgPSBtICYmIHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLCBnKSkgfHwgaS53cml0YWJsZSAmJiBpLmNvbmZpZ3VyYWJsZSksIG4gPSBTICYmICFpICYmICFuOwogICAgICAgIG8oewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsCiAgICAgICAgICAgIGZvcmNlZDogZCB8fCBuCiAgICAgICAgfSwgewogICAgICAgICAgICBET01FeGNlcHRpb246IG4gPyB4IDogbQogICAgICAgIH0pOwogICAgICAgIHZhciBBLCBFID0gYShnKTsKICAgICAgICBpZiAoKGEgPSBFLnByb3RvdHlwZSkuY29uc3RydWN0b3IgIT09IEUpCiAgICAgICAgICAgIGZvciAodmFyIE8gaW4gZCB8fCBjKGEsICJjb25zdHJ1Y3RvciIsIHUoMSwgRSkpLCBoKSBmKGgsIE8pICYmIChmKEUsIE8gPSAoQSA9IGhbT10pLnMpIHx8IGMoRSwgTywgdSg2LCBBLmMpKSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSB7CiAgICAgICAgICAgIEluZGV4U2l6ZUVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiSU5ERVhfU0laRV9FUlIiLAogICAgICAgICAgICAgICAgYzogMSwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRE9NU3RyaW5nU2l6ZUVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiRE9NU1RSSU5HX1NJWkVfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDIsCiAgICAgICAgICAgICAgICBtOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogewogICAgICAgICAgICAgICAgczogIkhJRVJBUkNIWV9SRVFVRVNUX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAzLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBXcm9uZ0RvY3VtZW50RXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJXUk9OR19ET0NVTUVOVF9FUlIiLAogICAgICAgICAgICAgICAgYzogNCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW52YWxpZENoYXJhY3RlckVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiSU5WQUxJRF9DSEFSQUNURVJfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDUsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5vRGF0YUFsbG93ZWRFcnJvcjogewogICAgICAgICAgICAgICAgczogIk5PX0RBVEFfQUxMT1dFRF9FUlIiLAogICAgICAgICAgICAgICAgYzogNiwKICAgICAgICAgICAgICAgIG06IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIiLAogICAgICAgICAgICAgICAgYzogNywKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTm90Rm91bmRFcnJvcjogewogICAgICAgICAgICAgICAgczogIk5PVF9GT1VORF9FUlIiLAogICAgICAgICAgICAgICAgYzogOCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTm90U3VwcG9ydGVkRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJOT1RfU1VQUE9SVEVEX0VSUiIsCiAgICAgICAgICAgICAgICBjOiA5LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBJblVzZUF0dHJpYnV0ZUVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiSU5VU0VfQVRUUklCVVRFX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxMCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW52YWxpZFN0YXRlRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJJTlZBTElEX1NUQVRFX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxMSwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3ludGF4RXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJTWU5UQVhfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDEyLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJJTlZBTElEX01PRElGSUNBVElPTl9FUlIiLAogICAgICAgICAgICAgICAgYzogMTMsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWVzcGFjZUVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiTkFNRVNQQUNFX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxNCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW52YWxpZEFjY2Vzc0Vycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiSU5WQUxJRF9BQ0NFU1NfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDE1LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBWYWxpZGF0aW9uRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJWQUxJREFUSU9OX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxNiwKICAgICAgICAgICAgICAgIG06IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVHlwZU1pc21hdGNoRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJUWVBFX01JU01BVENIX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxNywKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VjdXJpdHlFcnJvcjogewogICAgICAgICAgICAgICAgczogIlNFQ1VSSVRZX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxOCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmV0d29ya0Vycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiTkVUV09SS19FUlIiLAogICAgICAgICAgICAgICAgYzogMTksCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEFib3J0RXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJBQk9SVF9FUlIiLAogICAgICAgICAgICAgICAgYzogMjAsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFVSTE1pc21hdGNoRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJVUkxfTUlTTUFUQ0hfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDIxLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBRdW90YUV4Y2VlZGVkRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJRVU9UQV9FWENFRURFRF9FUlIiLAogICAgICAgICAgICAgICAgYzogMjIsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpbWVvdXRFcnJvcjogewogICAgICAgICAgICAgICAgczogIlRJTUVPVVRfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDIzLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBJbnZhbGlkTm9kZVR5cGVFcnJvcjogewogICAgICAgICAgICAgICAgczogIklOVkFMSURfTk9ERV9UWVBFX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAyNCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRGF0YUNsb25lRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJEQVRBX0NMT05FX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAyNSwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEooIlVuY2xvbmVhYmxlIHR5cGU6ICIgKyB0LCB1dCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGkodCwgcikgewogICAgICAgICAgICB0aHJvdyBuZXcgSigociB8fCAiQ2xvbmluZyIpICsgIiBvZiAiICsgdCArICIgY2Fubm90IGJlIHByb3Blcmx5IHBvbHlmaWxsZWQgaW4gdGhpcyBlbmdpbmUiLCB1dCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGEodCwgcikgewogICAgICAgICAgICByZXR1cm4gc3QgfHwgaShyKSwgc3QodCkKICAgICAgICB9CiAgICAgICAgdmFyIHUsIGMgPSBuKDM1KSwKICAgICAgICAgICAgZiA9IG4oMiksCiAgICAgICAgICAgIHMgPSBuKDMpLAogICAgICAgICAgICBwID0gbigyMyksCiAgICAgICAgICAgIGwgPSBuKDEzKSwKICAgICAgICAgICAgaCA9IG4oNiksCiAgICAgICAgICAgIHYgPSBuKDQwKSwKICAgICAgICAgICAgeSA9IG4oMjApLAogICAgICAgICAgICBkID0gbigxMTMpLAogICAgICAgICAgICBnID0gbigxNiksCiAgICAgICAgICAgIGIgPSBuKDE5KSwKICAgICAgICAgICAgbSA9IG4oMjIpLAogICAgICAgICAgICB4ID0gbigyMDIpLAogICAgICAgICAgICB3ID0gbig0NiksCiAgICAgICAgICAgIFMgPSBuKDg5KSwKICAgICAgICAgICAgQSA9IG4oMzgpLAogICAgICAgICAgICBFID0gbigxOTgpLAogICAgICAgICAgICBPID0gbig0MyksCiAgICAgICAgICAgIFIgPSBuKDYzKSwKICAgICAgICAgICAgSSA9IG4oNDEzKSwKICAgICAgICAgICAgayA9IG4oNDE0KSwKICAgICAgICAgICAgVCA9IG4oMTM2KSwKICAgICAgICAgICAgTSA9IG4oMzI1KSwKICAgICAgICAgICAgaiA9IG4oMTA3KSwKICAgICAgICAgICAgUCA9IG4oMTUxKSwKICAgICAgICAgICAgRCA9IHMuT2JqZWN0LAogICAgICAgICAgICBDID0gcy5BcnJheSwKICAgICAgICAgICAgXyA9IHMuRGF0ZSwKICAgICAgICAgICAgTiA9IHMuRXJyb3IsCiAgICAgICAgICAgIEYgPSBzLkV2YWxFcnJvciwKICAgICAgICAgICAgQiA9IHMuUmFuZ2VFcnJvciwKICAgICAgICAgICAgeiA9IHMuUmVmZXJlbmNlRXJyb3IsCiAgICAgICAgICAgIFUgPSBzLlN5bnRheEVycm9yLAogICAgICAgICAgICBMID0gcy5UeXBlRXJyb3IsCiAgICAgICAgICAgIFcgPSBzLlVSSUVycm9yLAogICAgICAgICAgICBLID0gcy5QZXJmb3JtYW5jZU1hcmssCiAgICAgICAgICAgIFYgPSAobiA9IHMuV2ViQXNzZW1ibHkpICYmIG4uQ29tcGlsZUVycm9yIHx8IE4sCiAgICAgICAgICAgIEcgPSBuICYmIG4uTGlua0Vycm9yIHx8IE4sCiAgICAgICAgICAgIEggPSBuICYmIG4uUnVudGltZUVycm9yIHx8IE4sCiAgICAgICAgICAgIEogPSBwKCJET01FeGNlcHRpb24iKSwKICAgICAgICAgICAgWSA9IFQuTWFwLAogICAgICAgICAgICAkID0gVC5oYXMsCiAgICAgICAgICAgIHEgPSBULmdldCwKICAgICAgICAgICAgWCA9IFQuc2V0LAogICAgICAgICAgICBRID0gTS5TZXQsCiAgICAgICAgICAgIFogPSBNLmFkZCwKICAgICAgICAgICAgdHQgPSBwKCJPYmplY3QiLCAia2V5cyIpLAogICAgICAgICAgICBydCA9IGwoW10ucHVzaCksCiAgICAgICAgICAgIGV0ID0gbCgoITApLnZhbHVlT2YpLAogICAgICAgICAgICBudCA9IGwoMS4udmFsdWVPZiksCiAgICAgICAgICAgIG90ID0gbCgiIi52YWx1ZU9mKSwKICAgICAgICAgICAgaXQgPSBsKF8ucHJvdG90eXBlLmdldFRpbWUpLAogICAgICAgICAgICBhdCA9IHYoInN0cnVjdHVyZWRDbG9uZSIpLAogICAgICAgICAgICB1dCA9ICJEYXRhQ2xvbmVFcnJvciIsCiAgICAgICAgICAgIGN0ID0gIlRyYW5zZmVycmluZyIsCiAgICAgICAgICAgIGZ0ID0gKGwgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIWgoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gbmV3IHMuU2V0KFs3XSksCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0KHIpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdChEKDcpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PSByIHx8ICFlLmhhcyg3KSB8fCAib2JqZWN0IiAhPSB0eXBlb2YgbiB8fCA3ICE9IG4KICAgICAgICAgICAgICAgIH0pKSAmJiB0CiAgICAgICAgICAgIH0sIHYgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIWgoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gbmV3IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKG4gJiYgbi5hID09PSBuLmIgJiYgbi5hIGluc3RhbmNlb2YgciAmJiBuLmEuc3RhY2sgPT09IGUuc3RhY2spCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwgcy5zdHJ1Y3R1cmVkQ2xvbmUpLAogICAgICAgICAgICBzdCA9IChjID0gYyB8fCAhdihmdCwgTikgfHwgIXYoZnQsIEopIHx8ICh1ID0gZnQsICEhaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHUobmV3IHMuQWdncmVnYXRlRXJyb3IoWzFdLCBhdCwgewogICAgICAgICAgICAgICAgICAgIGNhdXNlOiAzCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICByZXR1cm4gIkFnZ3JlZ2F0ZUVycm9yIiAhPSB0Lm5hbWUgfHwgMSAhPSB0LmVycm9yc1swXSB8fCB0Lm1lc3NhZ2UgIT0gYXQgfHwgMyAhPSB0LmNhdXNlCiAgICAgICAgICAgIH0pKSksIHYgPSAhZnQgJiYgbCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBLKGF0LCB7CiAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB0CiAgICAgICAgICAgICAgICB9KS5kZXRhaWwKICAgICAgICAgICAgfSkpLCBsKGZ0KSB8fCB2KSwKICAgICAgICAgICAgcHQgPSBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgICAgICBpZiAobShyKSAmJiBvKCJTeW1ib2wiKSwgIWIocikpIHJldHVybiByOwogICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJChlLCByKSkgcmV0dXJuIHEoZSwgcikKICAgICAgICAgICAgICAgIH0gZWxzZSBlID0gbmV3IFk7CiAgICAgICAgICAgICAgICB2YXIgbiwgdSwgYywgZiwgbCwgaCwgdiwgZCwgZywgeCwgdywgSSA9IFMociksCiAgICAgICAgICAgICAgICAgICAgVCA9ICExOwogICAgICAgICAgICAgICAgc3dpdGNoIChJKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQXJyYXkiOgogICAgICAgICAgICAgICAgICAgICAgICBjID0gQyhSKHIpKSwgVCA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJPYmplY3QiOgogICAgICAgICAgICAgICAgICAgICAgICBjID0ge30sIFQgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiTWFwIjoKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyBZLCBUID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIlNldCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuZXcgUSwgVCA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJSZWdFeHAiOgogICAgICAgICAgICAgICAgICAgICAgICBjID0gbmV3IFJlZ0V4cChyLnNvdXJjZSwgayhyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIkVycm9yIjoKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh1ID0gci5uYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJBZ2dyZWdhdGVFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHAoIkFnZ3JlZ2F0ZUVycm9yIikoW10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiRXZhbEVycm9yIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gRigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiUmFuZ2VFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJlZmVyZW5jZUVycm9yIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0geigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiU3ludGF4RXJyb3IiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBVKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJUeXBlRXJyb3IiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBMKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJVUklFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkNvbXBpbGVFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkxpbmtFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJ1bnRpbWVFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IE4oKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIFQgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiRE9NRXhjZXB0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyBKKHIubWVzc2FnZSwgci5uYW1lKSwgVCA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJEYXRhVmlldyI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiSW50OEFycmF5IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJVaW50OEFycmF5IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJVaW50OENsYW1wZWRBcnJheSI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiSW50MTZBcnJheSI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiVWludDE2QXJyYXkiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkludDMyQXJyYXkiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIlVpbnQzMkFycmF5IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJGbG9hdDMyQXJyYXkiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkZsb2F0NjRBcnJheSI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQmlnSW50NjRBcnJheSI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQmlnVWludDY0QXJyYXkiOgogICAgICAgICAgICAgICAgICAgICAgICBuID0gc1tJXSwgYihuKSB8fCBpKEkpLCBjID0gbmV3IG4ocHQoci5idWZmZXIsIGUpLCByLmJ5dGVPZmZzZXQsICJEYXRhVmlldyIgPT09IEkgPyByLmJ5dGVMZW5ndGggOiByLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIkRPTVF1YWQiOgogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyBET01RdWFkKHB0KHIucDEsIGUpLCBwdChyLnAyLCBlKSwgcHQoci5wMywgZSksIHB0KHIucDQsIGUpKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gYShyLCBJKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIkZpbGUiOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3QpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gc3QociksIFMoYykgIT09IEkgJiYgKGMgPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7fQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbmV3IEZpbGUoW3JdLCByLm5hbWUsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHt9CiAgICAgICAgICAgICAgICAgICAgICAgIGMgfHwgaShJKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiRmlsZUxpc3QiOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBuZXcgcy5EYXRhVHJhbnNmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbmV3IHMuQ2xpcGJvYXJkRXZlbnQoIiIpLmNsaXBib2FyZERhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgdC5pdGVtcyAmJiB0LmZpbGVzID8gdCA6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gMCwgaCA9IFIocik7IGwgPCBoOyBsKyspIGYuaXRlbXMuYWRkKHB0KHJbbF0sIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBmLmZpbGVzCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBjID0gYShyLCBJKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiSW1hZ2VEYXRhIjoKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuZXcgSW1hZ2VEYXRhKHB0KHIuZGF0YSwgZSksIHIud2lkdGgsIHIuaGVpZ2h0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTcGFjZTogci5jb2xvclNwYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gYShyLCBJKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdCkgYyA9IHN0KHIpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHN3aXRjaCAoSSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiQmlnSW50IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gRChyLnZhbHVlT2YoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJCb29sZWFuIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gRChldChyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJOdW1iZXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBEKG50KHIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlN0cmluZyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEQob3QocikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiRGF0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyBfKGl0KHIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkFycmF5QnVmZmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobiA9IHMuRGF0YVZpZXcpIHx8ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHIuc2xpY2UgfHwgaShJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2Ygci5zbGljZSB8fCByLnJlc2l6YWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHIuYnl0ZUxlbmd0aCwgdyA9ICJtYXhCeXRlTGVuZ3RoIiBpbiByID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJ5dGVMZW5ndGg6IHIubWF4Qnl0ZUxlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IHQsIGMgPSBuZXcgQXJyYXlCdWZmZXIoaCwgdyksIGcgPSBuZXcgbihyKSwgeCA9IG5ldyBuKGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gMDsgbCA8IGg7IGwrKykgeC5zZXRVaW50OChsLCBnLmdldFVpbnQ4KGwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYyA9IHIuc2xpY2UoMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBKKCJBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZCIsIHV0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlNoYXJlZEFycmF5QnVmZmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkJsb2IiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSByLnNsaWNlKDAsIHIuc2l6ZSwgci50eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShJKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkRPTVBvaW50IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkRPTVBvaW50UmVhZE9ubHkiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBzW0ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuLmZyb21Qb2ludCA/IG4uZnJvbVBvaW50KHIpIDogbmV3IG4oci54LCByLnksIHIueiwgci53KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShJKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkRPTVJlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiRE9NUmVjdFJlYWRPbmx5IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gc1tJXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbi5mcm9tUmVjdCA/IG4uZnJvbVJlY3QocikgOiBuZXcgbihyLngsIHIueSwgci53aWR0aCwgci5oZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKEkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiRE9NTWF0cml4IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkRPTU1hdHJpeFJlYWRPbmx5IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gc1tJXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbi5mcm9tTWF0cml4ID8gbi5mcm9tTWF0cml4KHIpIDogbmV3IG4ocikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkoSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJBdWRpb0RhdGEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiVmlkZW9GcmFtZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeShyLmNsb25lKSB8fCBpKEkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSByLmNsb25lKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8oSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJDcm9wVGFyZ2V0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkNyeXB0b0tleSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkZpbGVTeXN0ZW1GaWxlSGFuZGxlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkZpbGVTeXN0ZW1IYW5kbGUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiR1BVQ29tcGlsYXRpb25JbmZvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkdQVUNvbXBpbGF0aW9uTWVzc2FnZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJJbWFnZUJpdG1hcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJSVENDZXJ0aWZpY2F0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJXZWJBc3NlbWJseS5Nb2R1bGUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkoSSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8oSSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKFgoZSwgciwgYyksIFQpIHN3aXRjaCAoSSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgIkFycmF5IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJPYmplY3QiOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHYgPSB0dChyKSwgbCA9IDAsIGggPSBSKHYpOyBsIDwgaDsgbCsrKSBkID0gdltsXSwgRShjLCBkLCBwdChyW2RdLCBlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIk1hcCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHIuZm9yRWFjaCgoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgWChjLCBwdChyLCBlKSwgcHQodCwgZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiU2V0IjoKICAgICAgICAgICAgICAgICAgICAgICAgci5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaKGMsIHB0KHQsIGUpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIkVycm9yIjoKICAgICAgICAgICAgICAgICAgICAgICAgTyhjLCAibWVzc2FnZSIsIHB0KHIubWVzc2FnZSwgZSkpLCBBKHIsICJjYXVzZSIpICYmIE8oYywgImNhdXNlIiwgcHQoci5jYXVzZSwgZSkpLCAiQWdncmVnYXRlRXJyb3IiID09IHUgJiYgKGMuZXJyb3JzID0gcHQoci5lcnJvcnMsIGUpKTsKICAgICAgICAgICAgICAgICAgICBjYXNlICJET01FeGNlcHRpb24iOgogICAgICAgICAgICAgICAgICAgICAgICBqICYmIE8oYywgInN0YWNrIiwgcHQoci5zdGFjaywgZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gYwogICAgICAgICAgICB9OwogICAgICAgIGYoewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgc2hhbTogIVAsCiAgICAgICAgICAgIGZvcmNlZDogYwogICAgICAgIH0sIHsKICAgICAgICAgICAgc3RydWN0dXJlZENsb25lOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbjsKICAgICAgICAgICAgICAgIHJldHVybiAobiA9IChuID0gMSA8IEkoYXJndW1lbnRzLmxlbmd0aCwgMSkgJiYgIWcoYXJndW1lbnRzWzFdKSA/IHcoYXJndW1lbnRzWzFdKSA6IHQpID8gbi50cmFuc2ZlciA6IHQpICE9PSB0ICYmIGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWIocikpIHRocm93IEwoIlRyYW5zZmVyIG9wdGlvbiBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgc2VxdWVuY2UiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdOwogICAgICAgICAgICAgICAgICAgIHgociwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcnQobiwgdyh0KSkKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGEsIHUsIGMsIGYsIHAsIGwgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gUihuKTsKICAgICAgICAgICAgICAgICAgICBpZiAoUCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gZnQobiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgbCA8IGg7KSBYKGUsIG5bbF0sIGNbbCsrXSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbCA8IGg7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IG5bbCsrXSwgJChlLCBvKSkgdGhyb3cgbmV3IEooIkR1cGxpY2F0ZSB0cmFuc2ZlcmFibGUiLCB1dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGEgPSBTKG8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiSW1hZ2VCaXRtYXAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gcy5PZmZzY3JlZW5DYW52YXMsIGQodSkgfHwgaShhLCBjdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocCA9IG5ldyB1KG8ud2lkdGgsIG8uaGVpZ2h0KSkuZ2V0Q29udGV4dCgiYml0bWFwcmVuZGVyZXIiKS50cmFuc2ZlckZyb21JbWFnZUJpdG1hcChvKSwgZiA9IHAudHJhbnNmZXJUb0ltYWdlQml0bWFwKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAocikge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiQXVkaW9EYXRhIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJWaWRlb0ZyYW1lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeShvLmNsb25lKSAmJiB5KG8uY2xvc2UpIHx8IGkoYSwgY3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG8uY2xvbmUoKSwgby5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkFycmF5QnVmZmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeShvLnRyYW5zZmVyKSB8fCBpKGEsIGN0KSwgZiA9IG8udHJhbnNmZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiTWVkaWFTb3VyY2VIYW5kbGUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIk1lc3NhZ2VQb3J0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJPZmZzY3JlZW5DYW52YXMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJlYWRhYmxlU3RyZWFtIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJUcmFuc2Zvcm1TdHJlYW0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIldyaXRhYmxlU3RyZWFtIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShhLCBjdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID09PSB0KSB0aHJvdyBuZXcgSigiVGhpcyBvYmplY3QgY2Fubm90IGJlIHRyYW5zZmVycmVkOiAiICsgYSwgdXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWChlLCBvLCBmKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KG4sIGUgPSBuZXcgWSksIHB0KHIsIGUpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHZhciBlID0gVHlwZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgaWYgKHQgPCByKSB0aHJvdyBlKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOwogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDM4KSwKICAgICAgICAgICAgYSA9IG4oMjQpLAogICAgICAgICAgICB1ID0gbig4NiksCiAgICAgICAgICAgIGMgPSBSZWdFeHAucHJvdG90eXBlOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGUgPSByLmZsYWdzOwogICAgICAgICAgICByZXR1cm4gZSAhPT0gdCB8fCAiZmxhZ3MiIGluIGMgfHwgaShyLCAiZmxhZ3MiKSB8fCAhYShjLCByKSA/IGUgOiBvKHUsIHIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMjMpLAogICAgICAgICAgICBhID0gbig2KSwKICAgICAgICAgICAgdSA9IG4oNDEzKSwKICAgICAgICAgICAgYyA9IG4oODgpLAogICAgICAgICAgICBmID0gKG4gPSBuKDQxNiksIGkoIlVSTCIpKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiVVJMIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogIShuICYmIGEoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZi5jYW5QYXJzZSgpCiAgICAgICAgICAgIH0pKSkKICAgICAgICB9LCB7CiAgICAgICAgICAgIGNhblBhcnNlOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHUoYXJndW1lbnRzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICByID0gYyhyKSwgZSA9IGUgPCAyIHx8IGFyZ3VtZW50c1sxXSA9PT0gdCA/IHQgOiBjKGFyZ3VtZW50c1sxXSk7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIW5ldyBmKHIsIGUpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig2KSwKICAgICAgICAgICAgaSA9IG4oMzMpLAogICAgICAgICAgICBhID0gbig1KSwKICAgICAgICAgICAgdSA9IG4oMzUpLAogICAgICAgICAgICBjID0gaSgiaXRlcmF0b3IiKTsKICAgICAgICByLmV4cG9ydHMgPSAhbygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciByID0gbmV3IFVSTCgiYj9hPTEmYj0yJmM9MyIsICJodHRwOi8vYSIpLAogICAgICAgICAgICAgICAgZSA9IHIuc2VhcmNoUGFyYW1zLAogICAgICAgICAgICAgICAgbiA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoImE9MSZhPTIiKSwKICAgICAgICAgICAgICAgIG8gPSAiIjsKICAgICAgICAgICAgcmV0dXJuIHIucGF0aG5hbWUgPSAiYyUyMGQiLCBlLmZvckVhY2goKGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIGUuZGVsZXRlKCJiIiksIG8gKz0gciArIHQKICAgICAgICAgICAgfSkpLCBuLmRlbGV0ZSgiYSIsIDIpLCB1ICYmICghci50b0pTT04gfHwgIW4uaGFzKCJhIiwgMSkgfHwgbi5oYXMoImEiLCAyKSkgfHwgIWUuc2l6ZSAmJiAodSB8fCAhYSkgfHwgIWUuc29ydCB8fCAiaHR0cDovL2EvYyUyMGQ/YT0xJmM9MyIgIT09IHIuaHJlZiB8fCAiMyIgIT09IGUuZ2V0KCJjIikgfHwgImE9MSIgIT09IFN0cmluZyhuZXcgVVJMU2VhcmNoUGFyYW1zKCI/YT0xIikpIHx8ICFlW2NdIHx8ICJhIiAhPT0gbmV3IFVSTCgiaHR0cHM6Ly9hQGIiKS51c2VybmFtZSB8fCAiYiIgIT09IG5ldyBVUkxTZWFyY2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcygiYT1iIikpLmdldCgiYSIpIHx8ICJ4bi0tZTFheWJjIiAhPT0gbmV3IFVSTCgiaHR0cDovL9GC0LXRgdGCIikuaG9zdCB8fCAiIyVEMCVCMSIgIT09IG5ldyBVUkwoImh0dHA6Ly9hI9CxIikuaGFzaCB8fCAiYTFjMyIgIT09IG8gfHwgIngiICE9PSBuZXcgVVJMKCJodHRwOi8veCIsIHQpLmhvc3QKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbywgaSA9IG4oNDcpLAogICAgICAgICAgICBhID0gbigxMyksCiAgICAgICAgICAgIHUgPSBuKDg4KSwKICAgICAgICAgICAgYyA9IG4oNDEzKSwKICAgICAgICAgICAgZiA9IGEoKG4gPSAobyA9IFVSTFNlYXJjaFBhcmFtcykucHJvdG90eXBlKS5hcHBlbmQpLAogICAgICAgICAgICBzID0gYShuLmRlbGV0ZSksCiAgICAgICAgICAgIHAgPSBhKG4uZm9yRWFjaCksCiAgICAgICAgICAgIGwgPSBhKFtdLnB1c2gpOwogICAgICAgIChvID0gbmV3IG8oImE9MSZhPTIiKSkuZGVsZXRlKCJhIiwgMSksIG8gKyAiIiAhPSAiYT0yIiAmJiBpKG4sICJkZWxldGUiLCAoZnVuY3Rpb24ocikgewogICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgsCiAgICAgICAgICAgICAgICBuID0gZSA8IDIgPyB0IDogYXJndW1lbnRzWzFdOwogICAgICAgICAgICBpZiAoZSAmJiBuID09PSB0KSByZXR1cm4gcyh0aGlzLCByKTsKICAgICAgICAgICAgdmFyIG8gPSBbXTsKICAgICAgICAgICAgcCh0aGlzLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgbChvLCB7CiAgICAgICAgICAgICAgICAgICAga2V5OiByLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSksIGMoZSwgMSk7CiAgICAgICAgICAgIGZvciAodmFyIGksIGEgPSB1KHIpLCBoID0gdShuKSwgdiA9IDAsIHkgPSAwLCBkID0gITEsIGcgPSBvLmxlbmd0aDsgdiA8IGc7KSBpID0gb1t2KytdLCBkIHx8IGkua2V5ID09PSBhID8gKGQgPSAhMCwgcyh0aGlzLCBpLmtleSkpIDogeSsrOwogICAgICAgICAgICBmb3IgKDsgeSA8IGc7KShpID0gb1t5KytdKS5rZXkgPT09IGEgJiYgaS52YWx1ZSA9PT0gaCB8fCBmKHRoaXMsIGkua2V5LCBpLnZhbHVlKQogICAgICAgIH0pLCB7CiAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICB1bnNhZmU6ICEwCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNDcpLAogICAgICAgICAgICBpID0gbigxMyksCiAgICAgICAgICAgIGEgPSBuKDg4KSwKICAgICAgICAgICAgdSA9IG4oNDEzKSwKICAgICAgICAgICAgYyA9IFVSTFNlYXJjaFBhcmFtcywKICAgICAgICAgICAgZiA9IGkoKG4gPSBjLnByb3RvdHlwZSkuZ2V0QWxsKSwKICAgICAgICAgICAgcyA9IGkobi5oYXMpOwogICAgICAgIG5ldyBjKCJhPTEiKS5oYXMoImEiLCAyKSAmJiBvKG4sICJoYXMiLCAoZnVuY3Rpb24ocikgewogICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgsCiAgICAgICAgICAgICAgICBuID0gZSA8IDIgPyB0IDogYXJndW1lbnRzWzFdOwogICAgICAgICAgICBpZiAoZSAmJiBuID09PSB0KSByZXR1cm4gcyh0aGlzLCByKTsKICAgICAgICAgICAgdmFyIG8gPSBmKHRoaXMsIHIpOwogICAgICAgICAgICB1KGUsIDEpOwogICAgICAgICAgICBmb3IgKHZhciBpID0gYShuKSwgYyA9IDA7IGMgPCBvLmxlbmd0aDspCiAgICAgICAgICAgICAgICBpZiAob1tjKytdID09PSBpKSByZXR1cm4gITA7CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0pLCB7CiAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICB1bnNhZmU6ICEwCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNSksCiAgICAgICAgICAgIG8gPSBlKDEzKSwKICAgICAgICAgICAgaSA9IGUoODUpLAogICAgICAgICAgICBhID0gbygoZSA9IFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUpLmZvckVhY2gpOwogICAgICAgICFuIHx8ICJzaXplIiBpbiBlIHx8IGkoZSwgInNpemUiLCB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdCsrCiAgICAgICAgICAgICAgICB9KSksIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgZW51bWVyYWJsZTogITAKICAgICAgICB9KQogICAgfV0sIG4uYyA9IGUsIG4uZCA9IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBuLm8odCwgcikgfHwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIHIsIHsKICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgIGdldDogZQogICAgICAgIH0pCiAgICB9LCBuLnIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBTeW1ib2wudG9TdHJpbmdUYWcgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFN5bWJvbC50b1N0cmluZ1RhZywgewogICAgICAgICAgICB2YWx1ZTogIk1vZHVsZSIKICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KQogICAgfSwgbi50ID0gZnVuY3Rpb24odCwgcikgewogICAgICAgIGlmICgxICYgciAmJiAodCA9IG4odCkpLCA4ICYgcikgcmV0dXJuIHQ7CiAgICAgICAgaWYgKDQgJiByICYmICJvYmplY3QiID09IHR5cGVvZiB0ICYmIHQgJiYgdC5fX2VzTW9kdWxlKSByZXR1cm4gdDsKICAgICAgICB2YXIgZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICAgICAgaWYgKG4ucihlKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJkZWZhdWx0IiwgewogICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICB2YWx1ZTogdAogICAgICAgICAgICB9KSwgMiAmIHIgJiYgInN0cmluZyIgIT0gdHlwZW9mIHQpCiAgICAgICAgICAgIGZvciAodmFyIG8gaW4gdCkgbi5kKGUsIG8sIGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0W3JdCiAgICAgICAgICAgIH0uYmluZChudWxsLCBvKSk7CiAgICAgICAgcmV0dXJuIGUKICAgIH0sIG4ubiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICB2YXIgciA9IHQgJiYgdC5fX2VzTW9kdWxlID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0LmRlZmF1bHQKICAgICAgICB9IDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gbi5kKHIsICJhIiwgciksIHIKICAgIH0sIG4ubyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpCiAgICB9LCBuLnAgPSAiIiwgbihuLnMgPSAwKQp9KCk7"}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/lib/font-awesome/css/all.min.css?ver=3.19.1","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.989Z","timestamp":1785130089989,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/elementor/assets/lib/font-awesome/css/all.min.css?ver=3.19.1 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=72mBYPb%2F%2FbW9cBImZIJ8AFHe9klmA4AuEdbolpmb%2FkBuME71zL8qLs8eGTNc6q91EvVO2qyrHnzVoA8G%2FUmHE87mBCeVfpVUViD8eoc1AFErZadjSDh9DbCca2ZIv1s1NBBxhhd3nQ%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d366e2e120a-OSL\r\ncontent-length: 12790\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":74916,"size_decoded":13605,"mime_type":"text/css","magic":"ASCII text","md5":"b424221885c8a6fcfaf9729cf59fcafa","sha1":"c25d96f15f6c218682297cdd926f8dbbb3a5bfac","sha256":"79099e186092d9e87c0417b55c56aaea55777d7ae73864b14ad7fb0206c1538c","sha512":"4898015bb84be2d630a199ac50292e3f73d850dca424443d8e7891ee2d47567c98ea62483416f058059eef22a8bd4e8fa635c376f76e1d886e168e2359c052de","ssdeep":"768:0slcWL1WmZlMBOulII2tt0QNTbgMCo5PVCLD1LDfgjGGnc+:0slcWL1W1BpaI2nzNPgMCo5PwVXeXd","tlshash":"8b73ffbcd1fe18954308e485274bb380b325b6af9c484c5df282be8ddbd06799186bdd","first_seen":"2026-07-27T03:56:42.588314Z","last_seen":"2026-07-27T05:30:59.819837Z","times_seen":6,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KCi5mYSwKLmZhYiwKLmZhZCwKLmZhbCwKLmZhciwKLmZhcyB7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDsKICAgIHRleHQtcmVuZGVyaW5nOiBhdXRvOwogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmZhLWxnIHsKICAgIGZvbnQtc2l6ZTogMS4zMzMzM2VtOwogICAgbGluZS1oZWlnaHQ6IC43NWVtOwogICAgdmVydGljYWwtYWxpZ246IC0uMDY2N2VtCn0KCi5mYS14cyB7CiAgICBmb250LXNpemU6IC43NWVtCn0KCi5mYS1zbSB7CiAgICBmb250LXNpemU6IC44NzVlbQp9CgouZmEtMXggewogICAgZm9udC1zaXplOiAxZW0KfQoKLmZhLTJ4IHsKICAgIGZvbnQtc2l6ZTogMmVtCn0KCi5mYS0zeCB7CiAgICBmb250LXNpemU6IDNlbQp9CgouZmEtNHggewogICAgZm9udC1zaXplOiA0ZW0KfQoKLmZhLTV4IHsKICAgIGZvbnQtc2l6ZTogNWVtCn0KCi5mYS02eCB7CiAgICBmb250LXNpemU6IDZlbQp9CgouZmEtN3ggewogICAgZm9udC1zaXplOiA3ZW0KfQoKLmZhLTh4IHsKICAgIGZvbnQtc2l6ZTogOGVtCn0KCi5mYS05eCB7CiAgICBmb250LXNpemU6IDllbQp9CgouZmEtMTB4IHsKICAgIGZvbnQtc2l6ZTogMTBlbQp9CgouZmEtZncgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2lkdGg6IDEuMjVlbQp9CgouZmEtdWwgewogICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgbWFyZ2luLWxlZnQ6IDIuNWVtOwogICAgcGFkZGluZy1sZWZ0OiAwCn0KCi5mYS11bD5saSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmZhLWxpIHsKICAgIGxlZnQ6IC0yZW07CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogMmVtOwogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQKfQoKLmZhLWJvcmRlciB7CiAgICBib3JkZXI6IC4wOGVtIHNvbGlkICNlZWU7CiAgICBib3JkZXItcmFkaXVzOiAuMWVtOwogICAgcGFkZGluZzogLjJlbSAuMjVlbSAuMTVlbQp9CgouZmEtcHVsbC1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0Cn0KCi5mYS1wdWxsLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodAp9CgouZmEuZmEtcHVsbC1sZWZ0LAouZmFiLmZhLXB1bGwtbGVmdCwKLmZhbC5mYS1wdWxsLWxlZnQsCi5mYXIuZmEtcHVsbC1sZWZ0LAouZmFzLmZhLXB1bGwtbGVmdCB7CiAgICBtYXJnaW4tcmlnaHQ6IC4zZW0KfQoKLmZhLmZhLXB1bGwtcmlnaHQsCi5mYWIuZmEtcHVsbC1yaWdodCwKLmZhbC5mYS1wdWxsLXJpZ2h0LAouZmFyLmZhLXB1bGwtcmlnaHQsCi5mYXMuZmEtcHVsbC1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogLjNlbQp9CgouZmEtc3BpbiB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlCn0KCi5mYS1wdWxzZSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAxcyBzdGVwcyg4KSBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAxcyBzdGVwcyg4KSBpbmZpbml0ZQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmEtc3BpbiB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKQogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMXR1cm4pOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKQogICAgfQp9CgpAa2V5ZnJhbWVzIGZhLXNwaW4gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybikKICAgIH0KfQoKLmZhLXJvdGF0ZS05MCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MSkiOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykKfQoKLmZhLXJvdGF0ZS0xODAgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykKfQoKLmZhLXJvdGF0ZS0yNzAgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTMpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZykKfQoKLmZhLWZsaXAtaG9yaXpvbnRhbCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MCwgbWlycm9yPTEpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpCn0KCi5mYS1mbGlwLXZlcnRpY2FsIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoLTEpOwogICAgdHJhbnNmb3JtOiBzY2FsZVkoLTEpCn0KCi5mYS1mbGlwLWJvdGgsCi5mYS1mbGlwLWhvcml6b250YWwuZmEtZmxpcC12ZXJ0aWNhbCwKLmZhLWZsaXAtdmVydGljYWwgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsIG1pcnJvcj0xKSIKfQoKLmZhLWZsaXAtYm90aCwKLmZhLWZsaXAtaG9yaXpvbnRhbC5mYS1mbGlwLXZlcnRpY2FsIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgtMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC0xKQp9Cgo6cm9vdCAuZmEtZmxpcC1ib3RoLAo6cm9vdCAuZmEtZmxpcC1ob3Jpem9udGFsLAo6cm9vdCAuZmEtZmxpcC12ZXJ0aWNhbCwKOnJvb3QgLmZhLXJvdGF0ZS05MCwKOnJvb3QgLmZhLXJvdGF0ZS0xODAsCjpyb290IC5mYS1yb3RhdGUtMjcwIHsKICAgIC13ZWJraXQtZmlsdGVyOiBub25lOwogICAgZmlsdGVyOiBub25lCn0KCi5mYS1zdGFjayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBoZWlnaHQ6IDJlbTsKICAgIGxpbmUtaGVpZ2h0OiAyZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgd2lkdGg6IDIuNWVtCn0KCi5mYS1zdGFjay0xeCwKLmZhLXN0YWNrLTJ4IHsKICAgIGxlZnQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJQp9CgouZmEtc3RhY2stMXggewogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQKfQoKLmZhLXN0YWNrLTJ4IHsKICAgIGZvbnQtc2l6ZTogMmVtCn0KCi5mYS1pbnZlcnNlIHsKICAgIGNvbG9yOiAjZmZmCn0KCi5mYS01MDBweDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZlIgp9CgouZmEtYWNjZXNzaWJsZS1pY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjgiCn0KCi5mYS1hY2N1c29mdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzY5Igp9CgouZmEtYWNxdWlzaXRpb25zLWluY29ycG9yYXRlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmFmIgp9CgouZmEtYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0MSIKfQoKLmZhLWFkZHJlc3MtYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI5Igp9CgouZmEtYWRkcmVzcy1jYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYmIiCn0KCi5mYS1hZGp1c3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0MiIKfQoKLmZhLWFkbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTcwIgp9CgouZmEtYWR2ZXJzYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2YSIKfQoKLmZhLWFmZmlsaWF0ZXRoZW1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNmIiCn0KCi5mYS1haXItZnJlc2hlbmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZDAiCn0KCi5mYS1haXJibmI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzNCIKfQoKLmZhLWFsZ29saWE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2YyIKfQoKLmZhLWFsaWduLWNlbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM3Igp9CgouZmEtYWxpZ24tanVzdGlmeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM5Igp9CgouZmEtYWxpZ24tbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM2Igp9CgouZmEtYWxpZ24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzOCIKfQoKLmZhLWFsaXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjQyIgp9CgouZmEtYWxsZXJnaWVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjEiCn0KCi5mYS1hbWF6b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MCIKfQoKLmZhLWFtYXpvbi1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyYyIKfQoKLmZhLWFtYnVsYW5jZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGY5Igp9CgouZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhMyIKfQoKLmZhLWFtaWxpYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzZkIgp9CgouZmEtYW5jaG9yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxM2QiCn0KCi5mYS1hbmRyb2lkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2IiCn0KCi5mYS1hbmdlbGxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwOSIKfQoKLmZhLWFuZ2xlLWRvdWJsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDMiCn0KCi5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTAwIgp9CgouZmEtYW5nbGUtZG91YmxlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDEiCn0KCi5mYS1hbmdsZS1kb3VibGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwMiIKfQoKLmZhLWFuZ2xlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwNyIKfQoKLmZhLWFuZ2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwNCIKfQoKLmZhLWFuZ2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDUiCn0KCi5mYS1hbmdsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTA2Igp9CgouZmEtYW5ncnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1NiIKfQoKLmZhLWFuZ3J5Y3JlYXRpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2ZSIKfQoKLmZhLWFuZ3VsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMCIKfQoKLmZhLWFua2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0NCIKfQoKLmZhLWFwcC1zdG9yZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzZmIgp9CgouZmEtYXBwLXN0b3JlLWlvczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzcwIgp9CgouZmEtYXBwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3MSIKfQoKLmZhLWFwcGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzkiCn0KCi5mYS1hcHBsZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkMSIKfQoKLmZhLWFwcGxlLXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDE1Igp9CgouZmEtYXJjaGl2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTg3Igp9CgouZmEtYXJjaHdheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU3Igp9CgouZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNTgiCn0KCi5mYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1OSIKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YSIKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YiIKfQoKLmZhLWFycm93LWNpcmNsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYWIiCn0KCi5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE4Igp9CgouZmEtYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTkiCn0KCi5mYS1hcnJvdy1jaXJjbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBhYSIKfQoKLmZhLWFycm93LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2MyIKfQoKLmZhLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2MCIKfQoKLmZhLWFycm93LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjEiCn0KCi5mYS1hcnJvdy11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDYyIgp9CgouZmEtYXJyb3dzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGIyIgp9CgouZmEtYXJyb3dzLWFsdC1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMzciCn0KCi5mYS1hcnJvd3MtYWx0LXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMzOCIKfQoKLmZhLWFydHN0YXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3YSIKfQoKLmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEyIgp9CgouZmEtYXN0ZXJpc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2OSIKfQoKLmZhLWFzeW1tZXRyaWs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3MiIKfQoKLmZhLWF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmEiCn0KCi5mYS1hdGxhczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU4Igp9CgouZmEtYXRsYXNzaWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3N2IiCn0KCi5mYS1hdG9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZDIiCn0KCi5mYS1hdWRpYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzMiCn0KCi5mYS1hdWRpby1kZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjllIgp9CgouZmEtYXV0b3ByZWZpeGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWMiCn0KCi5mYS1hdmlhbmV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzQiCn0KCi5mYS1hdmlhdG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMSIKfQoKLmZhLWF3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTkiCn0KCi5mYS1hd3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3NSIKfQoKLmZhLWJhYnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3YyIKfQoKLmZhLWJhYnktY2FycmlhZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3ZCIKfQoKLmZhLWJhY2tzcGFjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVhIgp9CgouZmEtYmFja3dhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0YSIKfQoKLmZhLWJhY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZTUiCn0KCi5mYS1iYWN0ZXJpYTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU5Igp9CgouZmEtYmFjdGVyaXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNWEiCn0KCi5mYS1iYWhhaTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY2Igp9CgouZmEtYmFsYW5jZS1zY2FsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjRlIgp9CgouZmEtYmFsYW5jZS1zY2FsZS1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTUiCn0KCi5mYS1iYWxhbmNlLXNjYWxlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTYiCn0KCi5mYS1iYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1ZSIKfQoKLmZhLWJhbmQtYWlkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjIiCn0KCi5mYS1iYW5kY2FtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ1Igp9CgouZmEtYmFyY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJhIgp9CgouZmEtYmFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM5Igp9CgouZmEtYmFzZWJhbGwtYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDMzIgp9CgouZmEtYmFza2V0YmFsbC1iYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MzQiCn0KCi5mYS1iYXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2QiCn0KCi5mYS1iYXR0ZXJ5LWVtcHR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDQiCn0KCi5mYS1iYXR0ZXJ5LWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0MCIKfQoKLmZhLWJhdHRlcnktaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQyIgp9CgouZmEtYmF0dGVyeS1xdWFydGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDMiCn0KCi5mYS1iYXR0ZXJ5LXRocmVlLXF1YXJ0ZXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDEiCn0KCi5mYS1iYXR0bGUtbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MzUiCn0KCi5mYS1iZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNiIKfQoKLmZhLWJlZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmYyIKfQoKLmZhLWJlaGFuY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiNCIKfQoKLmZhLWJlaGFuY2Utc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjUiCn0KCi5mYS1iZWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjMiCn0KCi5mYS1iZWxsLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjYiCn0KCi5mYS1iZXppZXItY3VydmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1YiIKfQoKLmZhLWJpYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NDciCn0KCi5mYS1iaWN5Y2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDYiCn0KCi5mYS1iaWtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0YSIKfQoKLmZhLWJpbW9iamVjdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzc4Igp9CgouZmEtYmlub2N1bGFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMWU1Igp9CgouZmEtYmlvaGF6YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ODAiCn0KCi5mYS1iaXJ0aGRheS1jYWtlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmQiCn0KCi5mYS1iaXRidWNrZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3MSIKfQoKLmZhLWJpdGNvaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3OSIKfQoKLmZhLWJpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3YSIKfQoKLmZhLWJsYWNrLXRpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdlIgp9CgouZmEtYmxhY2tiZXJyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzdiIgp9CgouZmEtYmxlbmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE3Igp9CgouZmEtYmxlbmRlci1waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmI2Igp9CgouZmEtYmxpbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5ZCIKfQoKLmZhLWJsb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4MSIKfQoKLmZhLWJsb2dnZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3YyIKfQoKLmZhLWJsb2dnZXItYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzdkIgp9CgouZmEtYmx1ZXRvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTMiCn0KCi5mYS1ibHVldG9vdGgtYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjk0Igp9CgouZmEtYm9sZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDMyIgp9CgouZmEtYm9sdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGU3Igp9CgouZmEtYm9tYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUyIgp9CgouZmEtYm9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWQ3Igp9CgouZmEtYm9uZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVjIgp9CgouZmEtYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJkIgp9CgouZmEtYm9vay1kZWFkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YjciCn0KCi5mYS1ib29rLW1lZGljYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlNiIKfQoKLmZhLWJvb2stb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE4Igp9CgouZmEtYm9vay1yZWFkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkYSIKfQoKLmZhLWJvb2ttYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmUiCn0KCi5mYS1ib290c3RyYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzNiIKfQoKLmZhLWJvcmRlci1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0YyIKfQoKLmZhLWJvcmRlci1ub25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NTAiCn0KCi5mYS1ib3JkZXItc3R5bGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg1MyIKfQoKLmZhLWJvd2xpbmctYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDM2Igp9CgouZmEtYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjYiCn0KCi5mYS1ib3gtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDllIgp9CgouZmEtYm94LXRpc3N1ZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDViIgp9CgouZmEtYm94ZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2OCIKfQoKLmZhLWJyYWlsbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhMSIKfQoKLmZhLWJyYWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGMiCn0KCi5mYS1icmVhZC1zbGljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2VjIgp9CgouZmEtYnJpZWZjYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjEiCn0KCi5mYS1icmllZmNhc2UtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDY5Igp9CgouZmEtYnJvYWRjYXN0LXRvd2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTkiCn0KCi5mYS1icm9vbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFhIgp9CgouZmEtYnJ1c2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1ZCIKfQoKLmZhLWJ0YzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVhIgp9CgouZmEtYnVmZmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MzciCn0KCi5mYS1idWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4OCIKfQoKLmZhLWJ1aWxkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYWQiCn0KCi5mYS1idWxsaG9ybjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGExIgp9CgouZmEtYnVsbHNleWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0MCIKfQoKLmZhLWJ1cm46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2YSIKfQoKLmZhLWJ1cm9tb2JlbGV4cGVydGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3ZiIKfQoKLmZhLWJ1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjA3Igp9CgouZmEtYnVzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVlIgp9CgouZmEtYnVzaW5lc3MtdGltZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjRhIgp9CgouZmEtYnV5LW4tbGFyZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhhNiIKfQoKLmZhLWJ1eXNlbGxhZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwZCIKfQoKLmZhLWNhbGN1bGF0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlYyIKfQoKLmZhLWNhbGVuZGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzMiCn0KCi5mYS1jYWxlbmRhci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MyIKfQoKLmZhLWNhbGVuZGFyLWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzQiCn0KCi5mYS1jYWxlbmRhci1kYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4MyIKfQoKLmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzIiCn0KCi5mYS1jYWxlbmRhci1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzEiCn0KCi5mYS1jYWxlbmRhci10aW1lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjczIgp9CgouZmEtY2FsZW5kYXItd2VlazpiZWZvcmUgewogICAgY29udGVudDogIlxmNzg0Igp9CgouZmEtY2FtZXJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMzAiCn0KCi5mYS1jYW1lcmEtcmV0cm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MyIKfQoKLmZhLWNhbXBncm91bmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZiYiIKfQoKLmZhLWNhbmFkaWFuLW1hcGxlLWxlYWY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NSIKfQoKLmZhLWNhbmR5LWNhbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NiIKfQoKLmZhLWNhbm5hYmlzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NWYiCn0KCi5mYS1jYXBzdWxlczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDZiIgp9CgouZmEtY2FyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjkiCn0KCi5mYS1jYXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGUiCn0KCi5mYS1jYXItYmF0dGVyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWRmIgp9CgouZmEtY2FyLWNyYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZTEiCn0KCi5mYS1jYXItc2lkZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWU0Igp9CgouZmEtY2FyYXZhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmOGZmIgp9CgouZmEtY2FyZXQtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ3Igp9CgouZmEtY2FyZXQtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ5Igp9CgouZmEtY2FyZXQtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkYSIKfQoKLmZhLWNhcmV0LXNxdWFyZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTAiCn0KCi5mYS1jYXJldC1zcXVhcmUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTkxIgp9CgouZmEtY2FyZXQtc3F1YXJlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTIiCn0KCi5mYS1jYXJldC1zcXVhcmUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MSIKfQoKLmZhLWNhcmV0LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDgiCn0KCi5mYS1jYXJyb3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NyIKfQoKLmZhLWNhcnQtYXJyb3ctZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjE4Igp9CgouZmEtY2FydC1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTciCn0KCi5mYS1jYXNoLXJlZ2lzdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ODgiCn0KCi5mYS1jYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZiZSIKfQoKLmZhLWNjLWFtYXpvbi1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyZCIKfQoKLmZhLWNjLWFtZXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmMyIKfQoKLmZhLWNjLWFwcGxlLXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDE2Igp9CgouZmEtY2MtZGluZXJzLWNsdWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0YyIKfQoKLmZhLWNjLWRpc2NvdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjIiCn0KCi5mYS1jYy1qY2I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0YiIKfQoKLmZhLWNjLW1hc3RlcmNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmMSIKfQoKLmZhLWNjLXBheXBhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWY0Igp9CgouZmEtY2Mtc3RyaXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjUiCn0KCi5mYS1jYy12aXNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjAiCn0KCi5mYS1jZW50ZXJjb2RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzODAiCn0KCi5mYS1jZW50b3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4OSIKfQoKLmZhLWNlcnRpZmljYXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTMiCn0KCi5mYS1jaGFpcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmMwIgp9CgouZmEtY2hhbGtib2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFiIgp9CgouZmEtY2hhbGtib2FyZC10ZWFjaGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWMiCn0KCi5mYS1jaGFyZ2luZy1zdGF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZTciCn0KCi5mYS1jaGFydC1hcmVhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmUiCn0KCi5mYS1jaGFydC1iYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MCIKfQoKLmZhLWNoYXJ0LWxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwMSIKfQoKLmZhLWNoYXJ0LXBpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAwIgp9CgouZmEtY2hlY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwYyIKfQoKLmZhLWNoZWNrLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU4Igp9CgouZmEtY2hlY2stZG91YmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjAiCn0KCi5mYS1jaGVjay1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YSIKfQoKLmZhLWNoZWVzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2VmIgp9CgouZmEtY2hlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzOSIKfQoKLmZhLWNoZXNzLWJpc2hvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDNhIgp9CgouZmEtY2hlc3MtYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzYyIKfQoKLmZhLWNoZXNzLWtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzZiIKfQoKLmZhLWNoZXNzLWtuaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDQxIgp9CgouZmEtY2hlc3MtcGF3bjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDQzIgp9CgouZmEtY2hlc3MtcXVlZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0NSIKfQoKLmZhLWNoZXNzLXJvb2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0NyIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzYSIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzNyIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzgiCn0KCi5mYS1jaGV2cm9uLWNpcmNsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM5Igp9CgouZmEtY2hldnJvbi1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzgiCn0KCi5mYS1jaGV2cm9uLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MyIKfQoKLmZhLWNoZXZyb24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1NCIKfQoKLmZhLWNoZXZyb24tdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3NyIKfQoKLmZhLWNoaWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYWUiCn0KCi5mYS1jaHJvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2OCIKfQoKLmZhLWNocm9tZWNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzOCIKfQoKLmZhLWNodXJjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFkIgp9CgouZmEtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTEiCn0KCi5mYS1jaXJjbGUtbm90Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZSIKfQoKLmZhLWNpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0ZiIKfQoKLmZhLWNsaW5pYy1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZjIiCn0KCi5mYS1jbGlwYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMyOCIKfQoKLmZhLWNsaXBib2FyZC1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmNDZjIgp9CgouZmEtY2xpcGJvYXJkLWxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2ZCIKfQoKLmZhLWNsb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMTciCn0KCi5mYS1jbG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjRkIgp9CgouZmEtY2xvc2VkLWNhcHRpb25pbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwYSIKfQoKLmZhLWNsb3VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzIiCn0KCi5mYS1jbG91ZC1kb3dubG9hZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MSIKfQoKLmZhLWNsb3VkLW1lYXRiYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3M2IiCn0KCi5mYS1jbG91ZC1tb29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YzMiCn0KCi5mYS1jbG91ZC1tb29uLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczYyIKfQoKLmZhLWNsb3VkLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczZCIKfQoKLmZhLWNsb3VkLXNob3dlcnMtaGVhdnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0MCIKfQoKLmZhLWNsb3VkLXN1bjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmM0Igp9CgouZmEtY2xvdWQtc3VuLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0MyIKfQoKLmZhLWNsb3VkLXVwbG9hZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MiIKfQoKLmZhLWNsb3VkZmxhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZCIKfQoKLmZhLWNsb3Vkc2NhbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MyIKfQoKLmZhLWNsb3Vkc21pdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4NCIKfQoKLmZhLWNsb3VkdmVyc2lmeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzg1Igp9CgouZmEtY29ja3RhaWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MSIKfQoKLmZhLWNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMSIKfQoKLmZhLWNvZGUtYnJhbmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjYiCn0KCi5mYS1jb2RlcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2IiCn0KCi5mYS1jb2RpZXBpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg0Igp9CgouZmEtY29mZmVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjQiCn0KCi5mYS1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMyIKfQoKLmZhLWNvZ3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4NSIKfQoKLmZhLWNvaW5zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWUiCn0KCi5mYS1jb2x1bW5zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGIiCn0KCi5mYS1jb21tZW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzUiCn0KCi5mYS1jb21tZW50LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdhIgp9CgouZmEtY29tbWVudC1kb2xsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1MSIKfQoKLmZhLWNvbW1lbnQtZG90czpiZWZvcmUgewogICAgY29udGVudDogIlxmNGFkIgp9CgouZmEtY29tbWVudC1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZjUiCn0KCi5mYS1jb21tZW50LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YjMiCn0KCi5mYS1jb21tZW50czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg2Igp9CgouZmEtY29tbWVudHMtZG9sbGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NTMiCn0KCi5mYS1jb21wYWN0LWRpc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxZiIKfQoKLmZhLWNvbXBhc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0ZSIKfQoKLmZhLWNvbXByZXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjYiCn0KCi5mYS1jb21wcmVzcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMiIKfQoKLmZhLWNvbXByZXNzLWFycm93cy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4YyIKfQoKLmZhLWNvbmNpZXJnZS1iZWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjIiCn0KCi5mYS1jb25mbHVlbmNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OGQiCn0KCi5mYS1jb25uZWN0ZGV2ZWxvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBlIgp9CgouZmEtY29udGFvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNmQiCn0KCi5mYS1jb29raWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MyIKfQoKLmZhLWNvb2tpZS1iaXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjQiCn0KCi5mYS1jb3B5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzUiCn0KCi5mYS1jb3B5cmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmOSIKfQoKLmZhLWNvdHRvbi1idXJlYXU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg5ZSIKfQoKLmZhLWNvdWNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YjgiCn0KCi5mYS1jcGFuZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4OCIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1ZSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtYnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlNyIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlOCIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtZXU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlOSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtanA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYiIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtcGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYyIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtcGQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWQiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXJlbWl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWUiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWYiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjAiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmMSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtc2hhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmMiIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtemVybzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGYzIgp9CgouZmEtY3JlZGl0LWNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5ZCIKfQoKLmZhLWNyaXRpY2FsLXJvbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZjOSIKfQoKLmZhLWNyb3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyNSIKfQoKLmZhLWNyb3AtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjUiCn0KCi5mYS1jcm9zczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjU0Igp9CgouZmEtY3Jvc3NoYWlyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDViIgp9CgouZmEtY3JvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIwIgp9CgouZmEtY3Jvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyMSIKfQoKLmZhLWNydXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2Y3Igp9CgouZmEtY3NzMzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTNjIgp9CgouZmEtY3NzMy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4YiIKfQoKLmZhLWN1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiMiIKfQoKLmZhLWN1YmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjMiCn0KCi5mYS1jdXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjNCIKfQoKLmZhLWN1dHRsZWZpc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4YyIKfQoKLmZhLWQtYW5kLWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4ZCIKfQoKLmZhLWQtYW5kLWQtYmV5b25kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2Y2EiCn0KCi5mYS1kYWlseW1vdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxlMDUyIgp9CgouZmEtZGFzaGN1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxMCIKfQoKLmZhLWRhdGFiYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzAiCn0KCi5mYS1kZWFmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTQiCn0KCi5mYS1kZWV6ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3NyIKfQoKLmZhLWRlbGljaW91czpiZWZvcmUgewogICAgY29udGVudDogIlxmMWE1Igp9CgouZmEtZGVtb2NyYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0NyIKfQoKLmZhLWRlcGxveWRvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzhlIgp9CgouZmEtZGVza3BybzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzhmIgp9CgouZmEtZGVza3RvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTA4Igp9CgouZmEtZGV2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2Y2MiCn0KCi5mYS1kZXZpYW50YXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmQiCn0KCi5mYS1kaGFybWFjaGFrcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1NSIKfQoKLmZhLWRobDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzkwIgp9CgouZmEtZGlhZ25vc2VzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzAiCn0KCi5mYS1kaWFzcG9yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzkxIgp9CgouZmEtZGljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIyIgp9CgouZmEtZGljZS1kMjA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZjZiIKfQoKLmZhLWRpY2UtZDY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkMSIKfQoKLmZhLWRpY2UtZml2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIzIgp9CgouZmEtZGljZS1mb3VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjQiCn0KCi5mYS1kaWNlLW9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTI1Igp9CgouZmEtZGljZS1zaXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyNiIKfQoKLmZhLWRpY2UtdGhyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyNyIKfQoKLmZhLWRpY2UtdHdvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjgiCn0KCi5mYS1kaWdnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTYiCn0KCi5mYS1kaWdpdGFsLW9jZWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTEiCn0KCi5mYS1kaWdpdGFsLXRhY2hvZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2NiIKfQoKLmZhLWRpcmVjdGlvbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVlYiIKfQoKLmZhLWRpc2NvcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5MiIKfQoKLmZhLWRpc2NvdXJzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzkzIgp9CgouZmEtZGlzZWFzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2ZhIgp9CgouZmEtZGl2aWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjkiCn0KCi5mYS1kaXp6eTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTY3Igp9CgouZmEtZG5hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzEiCn0KCi5mYS1kb2NodWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5NCIKfQoKLmZhLWRvY2tlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzk1Igp9CgouZmEtZG9nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZDMiCn0KCi5mYS1kb2xsYXItc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU1Igp9CgouZmEtZG9sbHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3MiIKfQoKLmZhLWRvbGx5LWZsYXRiZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3NCIKfQoKLmZhLWRvbmF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGI5Igp9CgouZmEtZG9vci1jbG9zZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyYSIKfQoKLmZhLWRvb3Itb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJiIgp9CgouZmEtZG90LWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTkyIgp9CgouZmEtZG92ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGJhIgp9CgouZmEtZG93bmxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxOSIKfQoKLmZhLWRyYWZ0MmRpZ2l0YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5NiIKfQoKLmZhLWRyYWZ0aW5nLWNvbXBhc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2OCIKfQoKLmZhLWRyYWdvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmQ1Igp9CgouZmEtZHJhdy1wb2x5Z29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZWUiCn0KCi5mYS1kcmliYmJsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTdkIgp9CgouZmEtZHJpYmJibGUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTciCn0KCi5mYS1kcm9wYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNmIiCn0KCi5mYS1kcnVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjkiCn0KCi5mYS1kcnVtLXN0ZWVscGFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NmEiCn0KCi5mYS1kcnVtc3RpY2stYml0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmQ3Igp9CgouZmEtZHJ1cGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTkiCn0KCi5mYS1kdW1iYmVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDRiIgp9CgouZmEtZHVtcHN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5MyIKfQoKLmZhLWR1bXBzdGVyLWZpcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5NCIKfQoKLmZhLWR1bmdlb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkOSIKfQoKLmZhLWR5YWxvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzk5Igp9CgouZmEtZWFybHliaXJkczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzlhIgp9CgouZmEtZWJheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGY0Igp9CgouZmEtZWRnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjgyIgp9CgouZmEtZWRnZS1sZWdhY3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3OCIKfQoKLmZhLWVkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0NCIKfQoKLmZhLWVnZzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2ZiIgp9CgouZmEtZWplY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MiIKfQoKLmZhLWVsZW1lbnRvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDMwIgp9CgouZmEtZWxsaXBzaXMtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQxIgp9CgouZmEtZWxsaXBzaXMtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQyIgp9CgouZmEtZWxsbzpiZWZvcmUgewogICAgY29udGVudDogIlxmNWYxIgp9CgouZmEtZW1iZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMyIKfQoKLmZhLWVtcGlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQxIgp9CgouZmEtZW52ZWxvcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMCIKfQoKLmZhLWVudmVsb3BlLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiNiIKfQoKLmZhLWVudmVsb3BlLW9wZW4tdGV4dDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjU4Igp9CgouZmEtZW52ZWxvcGUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTkiCn0KCi5mYS1lbnZpcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5OSIKfQoKLmZhLWVxdWFsczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJjIgp9CgouZmEtZXJhc2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmQiCn0KCi5mYS1lcmxhbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZCIKfQoKLmZhLWV0aGVyZXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MmUiCn0KCi5mYS1ldGhlcm5ldDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzk2Igp9CgouZmEtZXRzeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ3Igp9CgouZmEtZXVyby1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTMiCn0KCi5mYS1ldmVybm90ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODM5Igp9CgouZmEtZXhjaGFuZ2UtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjIiCn0KCi5mYS1leGNsYW1hdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTJhIgp9CgouZmEtZXhjbGFtYXRpb24tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmEiCn0KCi5mYS1leGNsYW1hdGlvbi10cmlhbmdsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDcxIgp9CgouZmEtZXhwYW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjUiCn0KCi5mYS1leHBhbmQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjQiCn0KCi5mYS1leHBhbmQtYXJyb3dzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzFlIgp9CgouZmEtZXhwZWRpdGVkc3NsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2UiCn0KCi5mYS1leHRlcm5hbC1saW5rLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzVkIgp9CgouZmEtZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjAiCn0KCi5mYS1leWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2ZSIKfQoKLmZhLWV5ZS1kcm9wcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmIiCn0KCi5mYS1leWUtc2xhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MCIKfQoKLmZhLWZhY2Vib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWEiCn0KCi5mYS1mYWNlYm9vay1mOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOWUiCn0KCi5mYS1mYWNlYm9vay1tZXNzZW5nZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZiIKfQoKLmZhLWZhY2Vib29rLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDgyIgp9CgouZmEtZmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NjMiCn0KCi5mYS1mYW50YXN5LWZsaWdodC1nYW1lczpiZWZvcmUgewogICAgY29udGVudDogIlxmNmRjIgp9CgouZmEtZmFzdC1iYWNrd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDQ5Igp9CgouZmEtZmFzdC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTAiCn0KCi5mYS1mYXVjZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwNSIKfQoKLmZhLWZheDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWFjIgp9CgouZmEtZmVhdGhlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJkIgp9CgouZmEtZmVhdGhlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2YiIKfQoKLmZhLWZlZGV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OTciCn0KCi5mYS1mZWRvcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5OCIKfQoKLmZhLWZlbWFsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgyIgp9CgouZmEtZmlnaHRlci1qZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmYiIKfQoKLmZhLWZpZ21hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OTkiCn0KCi5mYS1maWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWIiCn0KCi5mYS1maWxlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVjIgp9CgouZmEtZmlsZS1hcmNoaXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzYiCn0KCi5mYS1maWxlLWF1ZGlvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzciCn0KCi5mYS1maWxlLWNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjOSIKfQoKLmZhLWZpbGUtY29udHJhY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2YyIKfQoKLmZhLWZpbGUtY3N2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZGQiCn0KCi5mYS1maWxlLWRvd25sb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NmQiCn0KCi5mYS1maWxlLWV4Y2VsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzMiCn0KCi5mYS1maWxlLWV4cG9ydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTZlIgp9CgouZmEtZmlsZS1pbWFnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM1Igp9CgouZmEtZmlsZS1pbXBvcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2ZiIKfQoKLmZhLWZpbGUtaW52b2ljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcwIgp9CgouZmEtZmlsZS1pbnZvaWNlLWRvbGxhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcxIgp9CgouZmEtZmlsZS1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzciCn0KCi5mYS1maWxlLW1lZGljYWwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzgiCn0KCi5mYS1maWxlLXBkZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWMxIgp9CgouZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzQiCn0KCi5mYS1maWxlLXByZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcyIgp9CgouZmEtZmlsZS1zaWduYXR1cmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3MyIKfQoKLmZhLWZpbGUtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzQiCn0KCi5mYS1maWxlLXZpZGVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzgiCn0KCi5mYS1maWxlLXdvcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjMiIKfQoKLmZhLWZpbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3NSIKfQoKLmZhLWZpbGwtZHJpcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc2Igp9CgouZmEtZmlsbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA4Igp9CgouZmEtZmlsdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjAiCn0KCi5mYS1maW5nZXJwcmludDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc3Igp9CgouZmEtZmlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDZkIgp9CgouZmEtZmlyZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlNCIKfQoKLmZhLWZpcmUtZXh0aW5ndWlzaGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzQiCn0KCi5mYS1maXJlZm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjkiCn0KCi5mYS1maXJlZm94LWJyb3dzZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwNyIKfQoKLmZhLWZpcnN0LWFpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDc5Igp9CgouZmEtZmlyc3Qtb3JkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMCIKfQoKLmZhLWZpcnN0LW9yZGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBhIgp9CgouZmEtZmlyc3RkcmFmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ExIgp9CgouZmEtZmlzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc4Igp9CgouZmEtZmlzdC1yYWlzZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkZSIKfQoKLmZhLWZsYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyNCIKfQoKLmZhLWZsYWctY2hlY2tlcmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWUiCn0KCi5mYS1mbGFnLXVzYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzRkIgp9CgouZmEtZmxhc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjMyIKfQoKLmZhLWZsaWNrcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZlIgp9CgouZmEtZmxpcGJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NGQiCn0KCi5mYS1mbHVzaGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzkiCn0KCi5mYS1mbHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxNyIKfQoKLmZhLWZvbGRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdiIgp9CgouZmEtZm9sZGVyLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NWQiCn0KCi5mYS1mb2xkZXItb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdjIgp9CgouZmEtZm9sZGVyLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1ZSIKfQoKLmZhLWZvbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzMSIKfQoKLmZhLWZvbnQtYXdlc29tZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI0Igp9CgouZmEtZm9udC1hd2Vzb21lLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzVjIgp9CgouZmEtZm9udC1hd2Vzb21lLWZsYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNSIKfQoKLmZhLWZvbnQtYXdlc29tZS1sb2dvLWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlNiIKfQoKLmZhLWZvbnRpY29uczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjgwIgp9CgouZmEtZm9udGljb25zLWZpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTIiCn0KCi5mYS1mb290YmFsbC1iYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NGUiCn0KCi5mYS1mb3J0LWF3ZXNvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4NiIKfQoKLmZhLWZvcnQtYXdlc29tZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhMyIKfQoKLmZhLWZvcnVtYmVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTEiCn0KCi5mYS1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGUiCn0KCi5mYS1mb3Vyc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODAiCn0KCi5mYS1mcmVlLWNvZGUtY2FtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM1Igp9CgouZmEtZnJlZWJzZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E0Igp9CgouZmEtZnJvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJlIgp9CgouZmEtZnJvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExOSIKfQoKLmZhLWZyb3duLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3YSIKfQoKLmZhLWZ1bGNydW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwYiIKfQoKLmZhLWZ1bm5lbC1kb2xsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2MiIKfQoKLmZhLWZ1dGJvbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIgp9CgouZmEtZ2FsYWN0aWMtcmVwdWJsaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwYyIKfQoKLmZhLWdhbGFjdGljLXNlbmF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBkIgp9CgouZmEtZ2FtZXBhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTFiIgp9CgouZmEtZ2FzLXB1bXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyZiIKfQoKLmZhLWdhdmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTMiCn0KCi5mYS1nZW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhNSIKfQoKLmZhLWdlbmRlcmxlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyZCIKfQoKLmZhLWdldC1wb2NrZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NSIKfQoKLmZhLWdnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjAiCn0KCi5mYS1nZy1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2MSIKfQoKLmZhLWdob3N0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZTIiCn0KCi5mYS1naWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmIiCn0KCi5mYS1naWZ0czpiZWZvcmUgewogICAgY29udGVudDogIlxmNzljIgp9CgouZmEtZ2l0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDMiCn0KCi5mYS1naXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NDEiCn0KCi5mYS1naXQtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDIiCn0KCi5mYS1naXRodWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5YiIKfQoKLmZhLWdpdGh1Yi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExMyIKfQoKLmZhLWdpdGh1Yi1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5MiIKfQoKLmZhLWdpdGtyYWtlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E2Igp9CgouZmEtZ2l0bGFiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTYiCn0KCi5mYS1naXR0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNiIKfQoKLmZhLWdsYXNzLWNoZWVyczpiZWZvcmUgewogICAgY29udGVudDogIlxmNzlmIgp9CgouZmEtZ2xhc3MtbWFydGluaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDAwIgp9CgouZmEtZ2xhc3MtbWFydGluaS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3YiIKfQoKLmZhLWdsYXNzLXdoaXNrZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhMCIKfQoKLmZhLWdsYXNzZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzMCIKfQoKLmZhLWdsaWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTUiCn0KCi5mYS1nbGlkZS1nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTYiCn0KCi5mYS1nbG9iZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFjIgp9CgouZmEtZ2xvYmUtYWZyaWNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1N2MiCn0KCi5mYS1nbG9iZS1hbWVyaWNhczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdkIgp9CgouZmEtZ2xvYmUtYXNpYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdlIgp9CgouZmEtZ2xvYmUtZXVyb3BlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTIiCn0KCi5mYS1nb2ZvcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhNyIKfQoKLmZhLWdvbGYtYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDUwIgp9CgouZmEtZ29vZHJlYWRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTgiCn0KCi5mYS1nb29kcmVhZHMtZzpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E5Igp9CgouZmEtZ29vZ2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTAiCn0KCi5mYS1nb29nbGUtZHJpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhYSIKfQoKLmZhLWdvb2dsZS1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3OSIKfQoKLmZhLWdvb2dsZS1wbGF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYWIiCn0KCi5mYS1nb29nbGUtcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMmIzIgp9CgouZmEtZ29vZ2xlLXBsdXMtZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ1Igp9CgouZmEtZ29vZ2xlLXBsdXMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDQiCn0KCi5mYS1nb29nbGUtd2FsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWUiCn0KCi5mYS1nb3B1cmFtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NjQiCn0KCi5mYS1ncmFkdWF0aW9uLWNhcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTlkIgp9CgouZmEtZ3JhdGlwYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4NCIKfQoKLmZhLWdyYXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkNiIKfQoKLmZhLWdyZWF0ZXItdGhhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTMxIgp9CgouZmEtZ3JlYXRlci10aGFuLWVxdWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzIiCn0KCi5mYS1ncmltYWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1N2YiCn0KCi5mYS1ncmluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODAiCn0KCi5mYS1ncmluLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTgxIgp9CgouZmEtZ3Jpbi1iZWFtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODIiCn0KCi5mYS1ncmluLWJlYW0tc3dlYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4MyIKfQoKLmZhLWdyaW4taGVhcnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODQiCn0KCi5mYS1ncmluLXNxdWludDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTg1Igp9CgouZmEtZ3Jpbi1zcXVpbnQtdGVhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4NiIKfQoKLmZhLWdyaW4tc3RhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4NyIKfQoKLmZhLWdyaW4tdGVhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4OCIKfQoKLmZhLWdyaW4tdG9uZ3VlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODkiCn0KCi5mYS1ncmluLXRvbmd1ZS1zcXVpbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4YSIKfQoKLmZhLWdyaW4tdG9uZ3VlLXdpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4YiIKfQoKLmZhLWdyaW4td2luazpiZWZvcmUgewogICAgY29udGVudDogIlxmNThjIgp9CgouZmEtZ3JpcC1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGQiCn0KCi5mYS1ncmlwLWxpbmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTQiCn0KCi5mYS1ncmlwLWxpbmVzLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTUiCn0KCi5mYS1ncmlwLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGUiCn0KCi5mYS1ncmlwZmlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2FjIgp9CgouZmEtZ3J1bnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhZCIKfQoKLmZhLWd1aWxkZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZSIKfQoKLmZhLWd1aXRhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2E2Igp9CgouZmEtZ3VscDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2FlIgp9CgouZmEtaC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmZCIKfQoKLmZhLWhhY2tlci1uZXdzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiCn0KCi5mYS1oYWNrZXItbmV3cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhZiIKfQoKLmZhLWhhY2tlcnJhbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVmNyIKfQoKLmZhLWhhbWJ1cmdlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmODA1Igp9CgouZmEtaGFtbWVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZTMiCn0KCi5mYS1oYW1zYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY1Igp9CgouZmEtaGFuZC1ob2xkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YmQiCn0KCi5mYS1oYW5kLWhvbGRpbmctaGVhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRiZSIKfQoKLmZhLWhhbmQtaG9sZGluZy1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNWMiCn0KCi5mYS1oYW5kLWhvbGRpbmctdXNkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YzAiCn0KCi5mYS1oYW5kLWhvbGRpbmctd2F0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjMSIKfQoKLmZhLWhhbmQtbGl6YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTgiCn0KCi5mYS1oYW5kLW1pZGRsZS1maW5nZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwNiIKfQoKLmZhLWhhbmQtcGFwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1NiIKfQoKLmZhLWhhbmQtcGVhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YiIKfQoKLmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE3Igp9CgouZmEtaGFuZC1wb2ludC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTUiCn0KCi5mYS1oYW5kLXBvaW50LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTQiCn0KCi5mYS1oYW5kLXBvaW50LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTYiCn0KCi5mYS1oYW5kLXBvaW50ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YSIKfQoKLmZhLWhhbmQtcm9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU1Igp9CgouZmEtaGFuZC1zY2lzc29yczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU3Igp9CgouZmEtaGFuZC1zcGFya2xlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDVkIgp9CgouZmEtaGFuZC1zcG9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU5Igp9CgouZmEtaGFuZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjMiIKfQoKLmZhLWhhbmRzLWhlbHBpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjNCIKfQoKLmZhLWhhbmRzLXdhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1ZSIKfQoKLmZhLWhhbmRzaGFrZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI1Igp9CgouZmEtaGFuZHNoYWtlLWFsdC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDVmIgp9CgouZmEtaGFuZHNoYWtlLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjAiCn0KCi5mYS1oYW51a2lhaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmU2Igp9CgouZmEtaGFyZC1oYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwNyIKfQoKLmZhLWhhc2h0YWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5MiIKfQoKLmZhLWhhdC1jb3dib3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhjMCIKfQoKLmZhLWhhdC1jb3dib3ktc2lkZTpiZWZvcmUgewogICAgY29udGVudDogIlxmOGMxIgp9CgouZmEtaGF0LXdpemFyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmU4Igp9CgouZmEtaGRkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTAiCn0KCi5mYS1oZWFkLXNpZGUtY291Z2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2MSIKfQoKLmZhLWhlYWQtc2lkZS1jb3VnaC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDYyIgp9CgouZmEtaGVhZC1zaWRlLW1hc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2MyIKfQoKLmZhLWhlYWQtc2lkZS12aXJ1czpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY0Igp9CgouZmEtaGVhZGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWRjIgp9CgouZmEtaGVhZHBob25lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI1Igp9CgouZmEtaGVhZHBob25lcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4ZiIKfQoKLmZhLWhlYWRzZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5MCIKfQoKLmZhLWhlYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDQiCn0KCi5mYS1oZWFydC1icm9rZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhOSIKfQoKLmZhLWhlYXJ0YmVhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjFlIgp9CgouZmEtaGVsaWNvcHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTMzIgp9CgouZmEtaGlnaGxpZ2h0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5MSIKfQoKLmZhLWhpa2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNmVjIgp9CgouZmEtaGlwcG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZlZCIKfQoKLmZhLWhpcHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1MiIKfQoKLmZhLWhpcmUtYS1oZWxwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMCIKfQoKLmZhLWhpc3Rvcnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkYSIKfQoKLmZhLWhpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZiIKfQoKLmZhLWhvY2tleS1wdWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NTMiCn0KCi5mYS1ob2xseS1iZXJyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FhIgp9CgouZmEtaG9tZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDE1Igp9CgouZmEtaG9vbGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNyIKfQoKLmZhLWhvcm5iaWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTIiCn0KCi5mYS1ob3JzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmYwIgp9CgouZmEtaG9yc2UtaGVhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FiIgp9CgouZmEtaG9zcGl0YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmOCIKfQoKLmZhLWhvc3BpdGFsLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDdkIgp9CgouZmEtaG9zcGl0YWwtc3ltYm9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0N2UiCn0KCi5mYS1ob3NwaXRhbC11c2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MGQiCn0KCi5mYS1ob3QtdHViOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTMiCn0KCi5mYS1ob3Rkb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwZiIKfQoKLmZhLWhvdGVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTQiCn0KCi5mYS1ob3RqYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMSIKfQoKLmZhLWhvdXJnbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU0Igp9CgouZmEtaG91cmdsYXNzLWVuZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUzIgp9CgouZmEtaG91cmdsYXNzLWhhbGY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1MiIKfQoKLmZhLWhvdXJnbGFzcy1zdGFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUxIgp9CgouZmEtaG91c2UtZGFtYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZjEiCn0KCi5mYS1ob3VzZS11c2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjUiCn0KCi5mYS1ob3V6ejpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdjIgp9CgouZmEtaHJ5dm5pYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmYyIgp9CgouZmEtaHRtbDU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzYiIKfQoKLmZhLWh1YnNwb3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMiIKfQoKLmZhLWktY3Vyc29yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDYiCn0KCi5mYS1pY2UtY3JlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxMCIKfQoKLmZhLWljaWNsZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhZCIKfQoKLmZhLWljb25zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NmQiCn0KCi5mYS1pZC1iYWRnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmMxIgp9CgouZmEtaWQtY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmMyIgp9CgouZmEtaWQtY2FyZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3ZiIKfQoKLmZhLWlkZWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMTMiCn0KCi5mYS1pZ2xvbzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FlIgp9CgouZmEtaW1hZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZSIKfQoKLmZhLWltYWdlczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzAyIgp9CgouZmEtaW1kYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ4Igp9CgouZmEtaW5ib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxYyIKfQoKLmZhLWluZGVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNjIgp9CgouZmEtaW5kdXN0cnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NSIKfQoKLmZhLWluZmluaXR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzQiCn0KCi5mYS1pbmZvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjkiCn0KCi5mYS1pbmZvLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDVhIgp9CgouZmEtaW5ub3NvZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MCIKfQoKLmZhLWluc3RhZ3JhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZkIgp9CgouZmEtaW5zdGFncmFtLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU1Igp9CgouZmEtaW5zdGFsb2Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MSIKfQoKLmZhLWludGVyY29tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YWYiCn0KCi5mYS1pbnRlcm5ldC1leHBsb3JlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZiIgp9CgouZmEtaW52aXNpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiMCIKfQoKLmZhLWlveGhvc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwOCIKfQoKLmZhLWl0YWxpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDMzIgp9CgouZmEtaXRjaC1pbzpiZWZvcmUgewogICAgY29udGVudDogIlxmODNhIgp9CgouZmEtaXR1bmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjQiCn0KCi5mYS1pdHVuZXMtbm90ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I1Igp9CgouZmEtamF2YTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGU0Igp9CgouZmEtamVkaTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY5Igp9CgouZmEtamVkaS1vcmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBlIgp9CgouZmEtamVua2luczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I2Igp9CgouZmEtamlyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2IxIgp9CgouZmEtam9nZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiNyIKfQoKLmZhLWpvaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTUiCn0KCi5mYS1qb29tbGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhYSIKfQoKLmZhLWpvdXJuYWwtd2hpbGxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmEiCn0KCi5mYS1qczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I4Igp9CgouZmEtanMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjkiCn0KCi5mYS1qc2ZpZGRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWNjIgp9CgouZmEta2FhYmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2YiIKfQoKLmZhLWthZ2dsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZhIgp9CgouZmEta2V5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODQiCn0KCi5mYS1rZXliYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjUiCn0KCi5mYS1rZXlib2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTFjIgp9CgouZmEta2V5Y2RuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmEiCn0KCi5mYS1raGFuZGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2ZCIKfQoKLmZhLWtpY2tzdGFydGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmIiCn0KCi5mYS1raWNrc3RhcnRlci1rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmMiCn0KCi5mYS1raXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTYiCn0KCi5mYS1raXNzLWJlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5NyIKfQoKLmZhLWtpc3Mtd2luay1oZWFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk4Igp9CgouZmEta2l3aS1iaXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzUiCn0KCi5mYS1rb3J2dWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyZiIKfQoKLmZhLWxhbmRtYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmYiCn0KCi5mYS1sYW5ndWFnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWFiIgp9CgouZmEtbGFwdG9wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDkiCn0KCi5mYS1sYXB0b3AtY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZjIgp9CgouZmEtbGFwdG9wLWhvdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjYiCn0KCi5mYS1sYXB0b3AtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmODEyIgp9CgouZmEtbGFyYXZlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JkIgp9CgouZmEtbGFzdGZtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDIiCn0KCi5mYS1sYXN0Zm0tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDMiCn0KCi5mYS1sYXVnaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk5Igp9CgouZmEtbGF1Z2gtYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlhIgp9CgouZmEtbGF1Z2gtc3F1aW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OWIiCn0KCi5mYS1sYXVnaC13aW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OWMiCn0KCi5mYS1sYXllci1ncm91cDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZkIgp9CgouZmEtbGVhZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDZjIgp9CgouZmEtbGVhbnB1YjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjEyIgp9CgouZmEtbGVtb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5NCIKfQoKLmZhLWxlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxZCIKfQoKLmZhLWxlc3MtdGhhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM2Igp9CgouZmEtbGVzcy10aGFuLWVxdWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzciCn0KCi5mYS1sZXZlbC1kb3duLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JlIgp9CgouZmEtbGV2ZWwtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmYiCn0KCi5mYS1saWZlLXJpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZCIKfQoKLmZhLWxpZ2h0YnVsYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGViIgp9CgouZmEtbGluZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2MwIgp9CgouZmEtbGluazpiZWZvcmUgewogICAgY29udGVudDogIlxmMGMxIgp9CgouZmEtbGlua2VkaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4YyIKfQoKLmZhLWxpbmtlZGluLWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTEiCn0KCi5mYS1saW5vZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiOCIKfQoKLmZhLWxpbnV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2MiCn0KCi5mYS1saXJhLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5NSIKfQoKLmZhLWxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzYSIKfQoKLmZhLWxpc3QtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjIiCn0KCi5mYS1saXN0LW9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2IiCn0KCi5mYS1saXN0LXVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2EiCn0KCi5mYS1sb2NhdGlvbi1hcnJvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI0Igp9CgouZmEtbG9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMDIzIgp9CgouZmEtbG9jay1vcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzEiCn0KCi5mYS1sb25nLWFycm93LWFsdC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDkiCn0KCi5mYS1sb25nLWFycm93LWFsdC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMGEiCn0KCi5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzBiIgp9CgouZmEtbG9uZy1hcnJvdy1hbHQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYyIKfQoKLmZhLWxvdy12aXNpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhOCIKfQoKLmZhLWx1Z2dhZ2UtY2FydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlkIgp9CgouZmEtbHVuZ3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYwNCIKfQoKLmZhLWx1bmdzLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjciCn0KCi5mYS1seWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzMiCn0KCi5mYS1tYWdlbnRvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzQiCn0KCi5mYS1tYWdpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQwIgp9CgouZmEtbWFnbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzYiCn0KCi5mYS1tYWlsLWJ1bGs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3NCIKfQoKLmZhLW1haWxjaGltcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTllIgp9CgouZmEtbWFsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgzIgp9CgouZmEtbWFuZGFsb3JpYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwZiIKfQoKLmZhLW1hcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjc5Igp9CgouZmEtbWFwLW1hcmtlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlmIgp9CgouZmEtbWFwLW1hcmtlZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhMCIKfQoKLmZhLW1hcC1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0MSIKfQoKLmZhLW1hcC1tYXJrZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzUiCn0KCi5mYS1tYXAtcGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzYiCn0KCi5mYS1tYXAtc2lnbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NyIKfQoKLmZhLW1hcmtkb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MGYiCn0KCi5mYS1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhMSIKfQoKLmZhLW1hcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMiIKfQoKLmZhLW1hcnMtZG91YmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMjciCn0KCi5mYS1tYXJzLXN0cm9rZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI5Igp9CgouZmEtbWFycy1zdHJva2UtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJiIgp9CgouZmEtbWFycy1zdHJva2UtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJhIgp9CgouZmEtbWFzazpiZWZvcmUgewogICAgY29udGVudDogIlxmNmZhIgp9CgouZmEtbWFzdG9kb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmNiIKfQoKLmZhLW1heGNkbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM2Igp9CgouZmEtbWRiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4Y2EiCn0KCi5mYS1tZWRhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWEyIgp9CgouZmEtbWVkYXBwczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M2Igp9CgouZmEtbWVkaXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2EiCn0KCi5mYS1tZWRpdW0tbTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M3Igp9CgouZmEtbWVka2l0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZmEiCn0KCi5mYS1tZWRydDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M4Igp9CgouZmEtbWVldHVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZTAiCn0KCi5mYS1tZWdhcG9ydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWEzIgp9CgouZmEtbWVoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWEiCn0KCi5mYS1tZWgtYmxhbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhNCIKfQoKLmZhLW1laC1yb2xsaW5nLWV5ZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhNSIKfQoKLmZhLW1lbW9yeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM4Igp9CgouZmEtbWVuZGVsZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiMyIKfQoKLmZhLW1lbm9yYWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3NiIKfQoKLmZhLW1lcmN1cnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMyIKfQoKLmZhLW1ldGVvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzUzIgp9CgouZmEtbWljcm9ibG9nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMWEiCn0KCi5mYS1taWNyb2NoaXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkYiIKfQoKLmZhLW1pY3JvcGhvbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzMCIKfQoKLmZhLW1pY3JvcGhvbmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzkiCn0KCi5mYS1taWNyb3Bob25lLWFsdC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM5Igp9CgouZmEtbWljcm9waG9uZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTMxIgp9CgouZmEtbWljcm9zY29wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjEwIgp9CgouZmEtbWljcm9zb2Z0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2EiCn0KCi5mYS1taW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDY4Igp9CgouZmEtbWludXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTYiCn0KCi5mYS1taW51cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NiIKfQoKLmZhLW1pdHRlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I1Igp9CgouZmEtbWl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2IiCn0KCi5mYS1taXhjbG91ZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg5Igp9CgouZmEtbWl4ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1NiIKfQoKLmZhLW1penVuaTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2NjIgp9CgouZmEtbW9iaWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMGIiCn0KCi5mYS1tb2JpbGUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2QiCn0KCi5mYS1tb2R4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyODUiCn0KCi5mYS1tb25lcm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMCIKfQoKLmZhLW1vbmV5LWJpbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkNiIKfQoKLmZhLW1vbmV5LWJpbGwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDEiCn0KCi5mYS1tb25leS1iaWxsLXdhdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzYSIKfQoKLmZhLW1vbmV5LWJpbGwtd2F2ZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzYiIKfQoKLmZhLW1vbmV5LWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1M2MiCn0KCi5mYS1tb25leS1jaGVjay1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzZCIKfQoKLmZhLW1vbnVtZW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTYiCn0KCi5mYS1tb29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODYiCn0KCi5mYS1tb3J0YXItcGVzdGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTciCn0KCi5mYS1tb3NxdWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3OCIKfQoKLmZhLW1vdG9yY3ljbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxYyIKfQoKLmZhLW1vdW50YWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZmMiCn0KCi5mYS1tb3VzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmOGNjIgp9CgouZmEtbW91c2UtcG9pbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQ1Igp9CgouZmEtbXVnLWhvdDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I2Igp9CgouZmEtbXVzaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwMSIKfQoKLmZhLW5hcHN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMiIKfQoKLmZhLW5lb3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxMiIKfQoKLmZhLW5ldHdvcmstd2lyZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZmZiIKfQoKLmZhLW5ldXRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJjIgp9CgouZmEtbmV3c3BhcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWEiCn0KCi5mYS1uaW1ibHI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhOCIKfQoKLmZhLW5vZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxOSIKfQoKLmZhLW5vZGUtanM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMyIKfQoKLmZhLW5vdC1lcXVhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTNlIgp9CgouZmEtbm90ZXMtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDgxIgp9CgouZmEtbnBtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDQiCn0KCi5mYS1uczg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkNSIKfQoKLmZhLW51dHJpdGlvbml4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDYiCn0KCi5mYS1vYmplY3QtZ3JvdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0NyIKfQoKLmZhLW9iamVjdC11bmdyb3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDgiCn0KCi5mYS1vY3RvcHVzLWRlcGxveTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDgyIgp9CgouZmEtb2Rub2tsYXNzbmlraTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjYzIgp9CgouZmEtb2Rub2tsYXNzbmlraS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NCIKfQoKLmZhLW9pbC1jYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxMyIKfQoKLmZhLW9sZC1yZXB1YmxpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTEwIgp9CgouZmEtb206YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3OSIKfQoKLmZhLW9wZW5jYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2QiCn0KCi5mYS1vcGVuaWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YiIKfQoKLmZhLW9wZXJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNmEiCn0KCi5mYS1vcHRpbi1tb25zdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2MiCn0KCi5mYS1vcmNpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmOGQyIgp9CgouZmEtb3NpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWEiCn0KCi5mYS1vdHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzAwIgp9CgouZmEtb3V0ZGVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNiIgp9CgouZmEtcGFnZTQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkNyIKfQoKLmZhLXBhZ2VsaW5lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMThjIgp9CgouZmEtcGFnZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxNSIKfQoKLmZhLXBhaW50LWJydXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmMiCn0KCi5mYS1wYWludC1yb2xsZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhYSIKfQoKLmZhLXBhbGV0dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzZiIKfQoKLmZhLXBhbGZlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Q4Igp9CgouZmEtcGFsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ODIiCn0KCi5mYS1wYXBlci1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQ4Igp9CgouZmEtcGFwZXJjbGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzYiCn0KCi5mYS1wYXJhY2h1dGUtYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0Y2QiCn0KCi5mYS1wYXJhZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkZCIKfQoKLmZhLXBhcmtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0MCIKfQoKLmZhLXBhc3Nwb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YWIiCn0KCi5mYS1wYXN0YWZhcmlhbmlzbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjdiIgp9CgouZmEtcGFzdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlYSIKfQoKLmZhLXBhdHJlb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkOSIKfQoKLmZhLXBhdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGMiCn0KCi5mYS1wYXVzZS1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YiIKfQoKLmZhLXBhdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWIwIgp9CgouZmEtcGF5cGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWQiCn0KCi5mYS1wZWFjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjdjIgp9CgouZmEtcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDQiCn0KCi5mYS1wZW4tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDUiCn0KCi5mYS1wZW4tZmFuY3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhYyIKfQoKLmZhLXBlbi1uaWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhZCIKfQoKLmZhLXBlbi1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YiIKfQoKLmZhLXBlbmNpbC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwMyIKfQoKLmZhLXBlbmNpbC1ydWxlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWFlIgp9CgouZmEtcGVubnktYXJjYWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MDQiCn0KCi5mYS1wZW9wbGUtYXJyb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjgiCn0KCi5mYS1wZW9wbGUtY2Fycnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjZSIKfQoKLmZhLXBlcHBlci1ob3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxNiIKfQoKLmZhLXBlcmJ5dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MyIKfQoKLmZhLXBlcmNlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5NSIKfQoKLmZhLXBlcmNlbnRhZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0MSIKfQoKLmZhLXBlcmlzY29wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2RhIgp9CgouZmEtcGVyc29uLWJvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NTYiCn0KCi5mYS1waGFicmljYXRvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2RiIgp9CgouZmEtcGhvZW5peC1mcmFtZXdvcms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkYyIKfQoKLmZhLXBob2VuaXgtc3F1YWRyb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxMSIKfQoKLmZhLXBob25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTUiCn0KCi5mYS1waG9uZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3OSIKfQoKLmZhLXBob25lLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZGQiCn0KCi5mYS1waG9uZS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5OCIKfQoKLmZhLXBob25lLXNxdWFyZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3YiIKfQoKLmZhLXBob25lLXZvbHVtZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEwIgp9CgouZmEtcGhvdG8tdmlkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3YyIKfQoKLmZhLXBocDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDU3Igp9CgouZmEtcGllZC1waXBlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmFlIgp9CgouZmEtcGllZC1waXBlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhOCIKfQoKLmZhLXBpZWQtcGlwZXItaGF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZTUiCn0KCi5mYS1waWVkLXBpcGVyLXBwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTciCn0KCi5mYS1waWVkLXBpcGVyLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDFlIgp9CgouZmEtcGlnZ3ktYmFuazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQzIgp9CgouZmEtcGlsbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4NCIKfQoKLmZhLXBpbnRlcmVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQyIgp9CgouZmEtcGludGVyZXN0LXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzMSIKfQoKLmZhLXBpbnRlcmVzdC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkMyIKfQoKLmZhLXBpenphLXNsaWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MTgiCn0KCi5mYS1wbGFjZS1vZi13b3JzaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2N2YiCn0KCi5mYS1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDcyIgp9CgouZmEtcGxhbmUtYXJyaXZhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWFmIgp9CgouZmEtcGxhbmUtZGVwYXJ0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjAiCn0KCi5mYS1wbGFuZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY5Igp9CgouZmEtcGxheTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDRiIgp9CgouZmEtcGxheS1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NCIKfQoKLmZhLXBsYXlzdGF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZGYiCn0KCi5mYS1wbHVnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTYiCn0KCi5mYS1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjciCn0KCi5mYS1wbHVzLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU1Igp9CgouZmEtcGx1cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmZSIKfQoKLmZhLXBvZGNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjZSIKfQoKLmZhLXBvbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4MSIKfQoKLmZhLXBvbGwtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjgyIgp9CgouZmEtcG9vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZmUiCn0KCi5mYS1wb28tc3Rvcm06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc1YSIKfQoKLmZhLXBvb3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxOSIKfQoKLmZhLXBvcnRyYWl0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTAiCn0KCi5mYS1wb3VuZC1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTQiCn0KCi5mYS1wb3dlci1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMSIKfQoKLmZhLXByYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4MyIKfQoKLmZhLXByYXlpbmctaGFuZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4NCIKfQoKLmZhLXByZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWIxIgp9CgouZmEtcHJlc2NyaXB0aW9uLWJvdHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDg1Igp9CgouZmEtcHJlc2NyaXB0aW9uLWJvdHRsZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4NiIKfQoKLmZhLXByaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmYiCn0KCi5mYS1wcm9jZWR1cmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ODciCn0KCi5mYS1wcm9kdWN0LWh1bnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4OCIKfQoKLmZhLXByb2plY3QtZGlhZ3JhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQyIgp9CgouZmEtcHVtcC1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNmEiCn0KCi5mYS1wdW1wLXNvYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2YiIKfQoKLmZhLXB1c2hlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2UxIgp9CgouZmEtcHV6emxlLXBpZWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmUiCn0KCi5mYS1weXRob246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlMiIKfQoKLmZhLXFxOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDYiCn0KCi5mYS1xcmNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyOSIKfQoKLmZhLXF1ZXN0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjgiCn0KCi5mYS1xdWVzdGlvbi1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1OSIKfQoKLmZhLXF1aWRkaXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDU4Igp9CgouZmEtcXVpbnNjYXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NTkiCn0KCi5mYS1xdW9yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM0Igp9CgouZmEtcXVvdGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTBkIgp9CgouZmEtcXVvdGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwZSIKfQoKLmZhLXF1cmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODciCn0KCi5mYS1yLXByb2plY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmNyIKfQoKLmZhLXJhZGlhdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I5Igp9CgouZmEtcmFkaWF0aW9uLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2JhIgp9CgouZmEtcmFpbmJvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzViIgp9CgouZmEtcmFuZG9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzQiCn0KCi5mYS1yYXNwYmVycnktcGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiYiIKfQoKLmZhLXJhdmVscnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkOSIKfQoKLmZhLXJlYWN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWIiCn0KCi5mYS1yZWFjdGV1cm9wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVkIgp9CgouZmEtcmVhZG1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZDUiCn0KCi5mYS1yZWJlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQwIgp9CgouZmEtcmVjZWlwdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQzIgp9CgouZmEtcmVjb3JkLXZpbnlsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ZDkiCn0KCi5mYS1yZWN5Y2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjgiCn0KCi5mYS1yZWQtcml2ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlMyIKfQoKLmZhLXJlZGRpdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWExIgp9CgouZmEtcmVkZGl0LWFsaWVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyODEiCn0KCi5mYS1yZWRkaXQtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTIiCn0KCi5mYS1yZWRoYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiYyIKfQoKLmZhLXJlZG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxZSIKfQoKLmZhLXJlZG8tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjkiCn0KCi5mYS1yZWdpc3RlcmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNWQiCn0KCi5mYS1yZW1vdmUtZm9ybWF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4N2QiCn0KCi5mYS1yZW5yZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4YiIKfQoKLmZhLXJlcGx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTUiCn0KCi5mYS1yZXBseS1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMiIKfQoKLmZhLXJlcGx5ZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U2Igp9CgouZmEtcmVwdWJsaWNhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVlIgp9CgouZmEtcmVzZWFyY2hnYXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjgiCn0KCi5mYS1yZXNvbHZpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlNyIKfQoKLmZhLXJlc3Ryb29tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YmQiCn0KCi5mYS1yZXR3ZWV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzkiCn0KCi5mYS1yZXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViMiIKfQoKLmZhLXJpYmJvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQ2Igp9CgouZmEtcmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBiIgp9CgouZmEtcm9hZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDE4Igp9CgouZmEtcm9ib3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0NCIKfQoKLmZhLXJvY2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM1Igp9CgouZmEtcm9ja2V0Y2hhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U4Igp9CgouZmEtcm9ja3JtczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U5Igp9CgouZmEtcm91dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkNyIKfQoKLmZhLXJzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDllIgp9CgouZmEtcnNzLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQzIgp9CgouZmEtcnVibGUtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU4Igp9CgouZmEtcnVsZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0NSIKfQoKLmZhLXJ1bGVyLWNvbWJpbmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDYiCn0KCi5mYS1ydWxlci1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDciCn0KCi5mYS1ydWxlci12ZXJ0aWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQ4Igp9CgouZmEtcnVubmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBjIgp9CgouZmEtcnVwZWUtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU2Igp9CgouZmEtcnVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdhIgp9CgouZmEtc2FkLWNyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWIzIgp9CgouZmEtc2FkLXRlYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNCIKfQoKLmZhLXNhZmFyaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjY3Igp9CgouZmEtc2FsZXNmb3JjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNiIgp9CgouZmEtc2FzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFlIgp9CgouZmEtc2F0ZWxsaXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YmYiCn0KCi5mYS1zYXRlbGxpdGUtZGlzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2MwIgp9CgouZmEtc2F2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM3Igp9CgouZmEtc2NobGl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZWEiCn0KCi5mYS1zY2hvb2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0OSIKfQoKLmZhLXNjcmV3ZHJpdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NGEiCn0KCi5mYS1zY3JpYmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YSIKfQoKLmZhLXNjcm9sbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBlIgp9CgouZmEtc2QtY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2MyIgp9CgouZmEtc2VhcmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDIiCn0KCi5mYS1zZWFyY2gtZG9sbGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODgiCn0KCi5mYS1zZWFyY2gtbG9jYXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4OSIKfQoKLmZhLXNlYXJjaC1taW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDEwIgp9CgouZmEtc2VhcmNoLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZSIKfQoKLmZhLXNlYXJjaGVuZ2luOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZWIiCn0KCi5mYS1zZWVkbGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQ4Igp9CgouZmEtc2VsbGNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkYSIKfQoKLmZhLXNlbGxzeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjEzIgp9CgouZmEtc2VydmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzMiCn0KCi5mYS1zZXJ2aWNlc3RhY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlYyIKfQoKLmZhLXNoYXBlczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjFmIgp9CgouZmEtc2hhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2NCIKfQoKLmZhLXNoYXJlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUwIgp9CgouZmEtc2hhcmUtYWx0LXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUxIgp9CgouZmEtc2hhcmUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNGQiCn0KCi5mYS1zaGVrZWwtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBiIgp9CgouZmEtc2hpZWxkLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VkIgp9CgouZmEtc2hpZWxkLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNmMiCn0KCi5mYS1zaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWEiCn0KCi5mYS1zaGlwcGluZy1mYXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OGIiCn0KCi5mYS1zaGlydHNpbmJ1bGs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNCIKfQoKLmZhLXNob2UtcHJpbnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NGIiCn0KCi5mYS1zaG9waWZ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNTciCn0KCi5mYS1zaG9wcGluZy1iYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5MCIKfQoKLmZhLXNob3BwaW5nLWJhc2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjkxIgp9CgouZmEtc2hvcHBpbmctY2FydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdhIgp9CgouZmEtc2hvcHdhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNSIKfQoKLmZhLXNob3dlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNjIgp9CgouZmEtc2h1dHRsZS12YW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNiIKfQoKLmZhLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkOSIKfQoKLmZhLXNpZ24taW4tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjYiCn0KCi5mYS1zaWduLWxhbmd1YWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTciCn0KCi5mYS1zaWduLW91dC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJmNSIKfQoKLmZhLXNpZ25hbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDEyIgp9CgouZmEtc2lnbmF0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjciCn0KCi5mYS1zaW0tY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2M0Igp9CgouZmEtc2ltcGx5YnVpbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNSIKfQoKLmZhLXNpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2ZCIKfQoKLmZhLXNpc3RyaXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlZSIKfQoKLmZhLXNpdGVtYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlOCIKfQoKLmZhLXNpdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxMiIKfQoKLmZhLXNrYXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdjNSIKfQoKLmZhLXNrZXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2M2Igp9CgouZmEtc2tpaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YzkiCn0KCi5mYS1za2lpbmctbm9yZGljOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3Y2EiCn0KCi5mYS1za3VsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTRjIgp9CgouZmEtc2t1bGwtY3Jvc3Nib25lczpiZWZvcmUgewogICAgY29udGVudDogIlxmNzE0Igp9CgouZmEtc2t5YXRsYXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNiIKfQoKLmZhLXNreXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2UiCn0KCi5mYS1zbGFjazpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk4Igp9CgouZmEtc2xhY2staGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VmIgp9CgouZmEtc2xhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcxNSIKfQoKLmZhLXNsZWlnaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NjIgp9CgouZmEtc2xpZGVycy1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZGUiCn0KCi5mYS1zbGlkZXNoYXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTciCn0KCi5mYS1zbWlsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE4Igp9CgouZmEtc21pbGUtYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWI4Igp9CgouZmEtc21pbGUtd2luazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGRhIgp9CgouZmEtc21vZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVmIgp9CgouZmEtc21va2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhkIgp9CgouZmEtc21va2luZy1iYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0ZCIKfQoKLmZhLXNtczpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NkIgp9CgouZmEtc25hcGNoYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhYiIKfQoKLmZhLXNuYXBjaGF0LWdob3N0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYWMiCn0KCi5mYS1zbmFwY2hhdC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhZCIKfQoKLmZhLXNub3dib2FyZGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NlIgp9CgouZmEtc25vd2ZsYWtlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZGMiCn0KCi5mYS1zbm93bWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDAiCn0KCi5mYS1zbm93cGxvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2QyIgp9CgouZmEtc29hcDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDZlIgp9CgouZmEtc29ja3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY5NiIKfQoKLmZhLXNvbGFyLXBhbmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YmEiCn0KCi5mYS1zb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGMiCn0KCi5mYS1zb3J0LWFscGhhLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1ZCIKfQoKLmZhLXNvcnQtYWxwaGEtZG93bi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4MSIKfQoKLmZhLXNvcnQtYWxwaGEtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1ZSIKfQoKLmZhLXNvcnQtYWxwaGEtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODIiCn0KCi5mYS1zb3J0LWFtb3VudC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjAiCn0KCi5mYS1zb3J0LWFtb3VudC1kb3duLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODg0Igp9CgouZmEtc29ydC1hbW91bnQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MSIKfQoKLmZhLXNvcnQtYW1vdW50LXVwLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODg1Igp9CgouZmEtc29ydC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGQiCn0KCi5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTYyIgp9CgouZmEtc29ydC1udW1lcmljLWRvd24tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODYiCn0KCi5mYS1zb3J0LW51bWVyaWMtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MyIKfQoKLmZhLXNvcnQtbnVtZXJpYy11cC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4NyIKfQoKLmZhLXNvcnQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkZSIKfQoKLmZhLXNvdW5kY2xvdWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiZSIKfQoKLmZhLXNvdXJjZXRyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkMyIKfQoKLmZhLXNwYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWJiIgp9CgouZmEtc3BhY2Utc2h1dHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk3Igp9CgouZmEtc3BlYWthcDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2YzIgp9CgouZmEtc3BlYWtlci1kZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4M2MiCn0KCi5mYS1zcGVsbC1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmODkxIgp9CgouZmEtc3BpZGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MTciCn0KCi5mYS1zcGlubmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTAiCn0KCi5mYS1zcGxvdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YmMiCn0KCi5mYS1zcG90aWZ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmMiCn0KCi5mYS1zcHJheS1jYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViZCIKfQoKLmZhLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM4Igp9CgouZmEtc3F1YXJlLWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1YyIKfQoKLmZhLXNxdWFyZS1yb290LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjk4Igp9CgouZmEtc3F1YXJlc3BhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViZSIKfQoKLmZhLXN0YWNrLWV4Y2hhbmdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOGQiCn0KCi5mYS1zdGFjay1vdmVyZmxvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZjIgp9CgouZmEtc3RhY2twYXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NDIiCn0KCi5mYS1zdGFtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWJmIgp9CgouZmEtc3RhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA1Igp9CgouZmEtc3Rhci1hbmQtY3Jlc2NlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY5OSIKfQoKLmZhLXN0YXItaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg5Igp9CgouZmEtc3Rhci1oYWxmLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWMwIgp9CgouZmEtc3Rhci1vZi1kYXZpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjlhIgp9CgouZmEtc3Rhci1vZi1saWZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MjEiCn0KCi5mYS1zdGF5bGlua2VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZjUiCn0KCi5mYS1zdGVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWI2Igp9CgouZmEtc3RlYW0tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjciCn0KCi5mYS1zdGVhbS1zeW1ib2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmNiIKfQoKLmZhLXN0ZXAtYmFja3dhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0OCIKfQoKLmZhLXN0ZXAtZm9yd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDUxIgp9CgouZmEtc3RldGhvc2NvcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMSIKfQoKLmZhLXN0aWNrZXItbXVsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Y3Igp9CgouZmEtc3RpY2t5LW5vdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0OSIKfQoKLmZhLXN0b3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0ZCIKfQoKLmZhLXN0b3AtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOGQiCn0KCi5mYS1zdG9wd2F0Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJmMiIKfQoKLmZhLXN0b3B3YXRjaC0yMDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDZmIgp9CgouZmEtc3RvcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0ZSIKfQoKLmZhLXN0b3JlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTRmIgp9CgouZmEtc3RvcmUtYWx0LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzAiCn0KCi5mYS1zdG9yZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDcxIgp9CgouZmEtc3RyYXZhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjgiCn0KCi5mYS1zdHJlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1MCIKfQoKLmZhLXN0cmVldC12aWV3OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWQiCn0KCi5mYS1zdHJpa2V0aHJvdWdoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2MiCn0KCi5mYS1zdHJpcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyOSIKfQoKLmZhLXN0cmlwZS1zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MmEiCn0KCi5mYS1zdHJvb3B3YWZlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTUxIgp9CgouZmEtc3R1ZGlvdmluYXJpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZjgiCn0KCi5mYS1zdHVtYmxldXBvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWE0Igp9CgouZmEtc3R1bWJsZXVwb24tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTMiCn0KCi5mYS1zdWJzY3JpcHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyYyIKfQoKLmZhLXN1YndheTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM5Igp9CgouZmEtc3VpdGNhc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMiIKfQoKLmZhLXN1aXRjYXNlLXJvbGxpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjMSIKfQoKLmZhLXN1bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTg1Igp9CgouZmEtc3VwZXJwb3dlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkZCIKfQoKLmZhLXN1cGVyc2NyaXB0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmIiCn0KCi5mYS1zdXBwbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmOSIKfQoKLmZhLXN1cnByaXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzIiCn0KCi5mYS1zdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDYiCn0KCi5mYS1zd2F0Y2hib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzMiCn0KCi5mYS1zd2lmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmOGUxIgp9CgouZmEtc3dpbW1lcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM0Igp9CgouZmEtc3dpbW1pbmctcG9vbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM1Igp9CgouZmEtc3ltZm9ueTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNkIgp9CgouZmEtc3luYWdvZ3VlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OWIiCn0KCi5mYS1zeW5jOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjEiCn0KCi5mYS1zeW5jLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmYxIgp9CgouZmEtc3lyaW5nZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhlIgp9CgouZmEtdGFibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjZSIKfQoKLmZhLXRhYmxlLXRlbm5pczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDVkIgp9CgouZmEtdGFibGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMGEiCn0KCi5mYS10YWJsZXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZmEiCn0KCi5mYS10YWJsZXRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTAiCn0KCi5mYS10YWNob21ldGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZkIgp9CgouZmEtdGFnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmIiCn0KCi5mYS10YWdzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmMiCn0KCi5mYS10YXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZGIiCn0KCi5mYS10YXNrczpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFlIgp9CgouZmEtdGF4aTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWJhIgp9CgouZmEtdGVhbXNwZWFrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjkiCn0KCi5mYS10ZWV0aDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjJlIgp9CgouZmEtdGVldGgtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNjJmIgp9CgouZmEtdGVsZWdyYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjNiIKfQoKLmZhLXRlbGVncmFtLXBsYW5lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZmUiCn0KCi5mYS10ZW1wZXJhdHVyZS1oaWdoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NjkiCn0KCi5mYS10ZW1wZXJhdHVyZS1sb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc2YiIKfQoKLmZhLXRlbmNlbnQtd2VpYm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkNSIKfQoKLmZhLXRlbmdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDciCn0KCi5mYS10ZXJtaW5hbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTIwIgp9CgouZmEtdGV4dC1oZWlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzNCIKfQoKLmZhLXRleHQtd2lkdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzNSIKfQoKLmZhLXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMGEiCn0KCi5mYS10aC1sYXJnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA5Igp9CgouZmEtdGgtbGlzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDBiIgp9CgouZmEtdGhlLXJlZC15ZXRpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OWQiCn0KCi5mYS10aGVhdGVyLW1hc2tzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MzAiCn0KCi5mYS10aGVtZWNvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzYiCn0KCi5mYS10aGVtZWlzbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMiIKfQoKLmZhLXRoZXJtb21ldGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTEiCn0KCi5mYS10aGVybW9tZXRlci1lbXB0eTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNiIgp9CgouZmEtdGhlcm1vbWV0ZXItZnVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM3Igp9CgouZmEtdGhlcm1vbWV0ZXItaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM5Igp9CgouZmEtdGhlcm1vbWV0ZXItcXVhcnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNhIgp9CgouZmEtdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjOCIKfQoKLmZhLXRoaW5rLXBlYWtzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MzEiCn0KCi5mYS10aHVtYnMtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTY1Igp9CgouZmEtdGh1bWJzLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjQiCn0KCi5mYS10aHVtYnRhY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4ZCIKfQoKLmZhLXRpY2tldC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmZiIKfQoKLmZhLXRpa3RvazpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdiIgp9CgouZmEtdGltZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZCIKfQoKLmZhLXRpbWVzLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU3Igp9CgouZmEtdGludDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDQzIgp9CgouZmEtdGludC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM3Igp9CgouZmEtdGlyZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjOCIKfQoKLmZhLXRvZ2dsZS1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwNCIKfQoKLmZhLXRvZ2dsZS1vbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjA1Igp9CgouZmEtdG9pbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDgiCn0KCi5mYS10b2lsZXQtcGFwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcxZSIKfQoKLmZhLXRvaWxldC1wYXBlci1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDcyIgp9CgouZmEtdG9vbGJveDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTUyIgp9CgouZmEtdG9vbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkOSIKfQoKLmZhLXRvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzkiCn0KCi5mYS10b3JhaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmEwIgp9CgouZmEtdG9yaWktZ2F0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmExIgp9CgouZmEtdHJhY3RvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzIyIgp9CgouZmEtdHJhZGUtZmVkZXJhdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTEzIgp9CgouZmEtdHJhZGVtYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNWMiCn0KCi5mYS10cmFmZmljLWxpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MzciCn0KCi5mYS10cmFpbGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNDEiCn0KCi5mYS10cmFpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM4Igp9CgouZmEtdHJhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2RhIgp9CgouZmEtdHJhbnNnZW5kZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyNCIKfQoKLmZhLXRyYW5zZ2VuZGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI1Igp9CgouZmEtdHJhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmOCIKfQoKLmZhLXRyYXNoLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmVkIgp9CgouZmEtdHJhc2gtcmVzdG9yZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODI5Igp9CgouZmEtdHJhc2gtcmVzdG9yZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgyYSIKfQoKLmZhLXRyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiYiIKfQoKLmZhLXRyZWxsbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgxIgp9CgouZmEtdHJpcGFkdmlzb3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2MiIKfQoKLmZhLXRyb3BoeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDkxIgp9CgouZmEtdHJ1Y2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkMSIKfQoKLmZhLXRydWNrLWxvYWRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkZSIKfQoKLmZhLXRydWNrLW1vbnN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYzYiIKfQoKLmZhLXRydWNrLW1vdmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGRmIgp9CgouZmEtdHJ1Y2stcGlja3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2M2MiCn0KCi5mYS10c2hpcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1MyIKfQoKLmZhLXR0eTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWU0Igp9CgouZmEtdHVtYmxyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzMiCn0KCi5mYS10dW1ibHItc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzQiCn0KCi5mYS10djpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZjIgp9CgouZmEtdHdpdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTgiCn0KCi5mYS10d2l0dGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTkiCn0KCi5mYS10d2l0dGVyLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDgxIgp9CgouZmEtdHlwbzM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyYiIKfQoKLmZhLXViZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwMiIKfQoKLmZhLXVidW50dTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2RmIgp9CgouZmEtdWlraXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwMyIKfQoKLmZhLXVtYnJhY286YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhlOCIKfQoKLmZhLXVtYnJlbGxhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTkiCn0KCi5mYS11bWJyZWxsYS1iZWFjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNhIgp9CgouZmEtdW5jaGFydGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODQiCn0KCi5mYS11bmRlcmxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjZCIKfQoKLmZhLXVuZG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMiIKfQoKLmZhLXVuZG8tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZWEiCn0KCi5mYS11bmlyZWdpc3RyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA0Igp9CgouZmEtdW5pdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA0OSIKfQoKLmZhLXVuaXZlcnNhbC1hY2Nlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5YSIKfQoKLmZhLXVuaXZlcnNpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YyIKfQoKLmZhLXVubGluazpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI3Igp9CgouZmEtdW5sb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWMiCn0KCi5mYS11bmxvY2stYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxM2UiCn0KCi5mYS11bnNwbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdjIgp9CgouZmEtdW50YXBwZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA1Igp9CgouZmEtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTMiCn0KCi5mYS11cHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlMCIKfQoKLmZhLXVzYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg3Igp9CgouZmEtdXNlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA3Igp9CgouZmEtdXNlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwNiIKfQoKLmZhLXVzZXItYWx0LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmEiCn0KCi5mYS11c2VyLWFzdHJvbmF1dDpiZWZvcmUgewogICAgY29udGVudDogIlxmNGZiIgp9CgouZmEtdXNlci1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGZjIgp9CgouZmEtdXNlci1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiZCIKfQoKLmZhLXVzZXItY2xvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmZCIKfQoKLmZhLXVzZXItY29nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmUiCn0KCi5mYS11c2VyLWVkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmZiIKfQoKLmZhLXVzZXItZnJpZW5kczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTAwIgp9CgouZmEtdXNlci1ncmFkdWF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTAxIgp9CgouZmEtdXNlci1pbmp1cmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MjgiCn0KCi5mYS11c2VyLWxvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwMiIKfQoKLmZhLXVzZXItbWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMCIKfQoKLmZhLXVzZXItbWludXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwMyIKfQoKLmZhLXVzZXItbmluamE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwNCIKfQoKLmZhLXVzZXItbnVyc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgyZiIKfQoKLmZhLXVzZXItcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM0Igp9CgouZmEtdXNlci1zZWNyZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxYiIKfQoKLmZhLXVzZXItc2hpZWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDUiCn0KCi5mYS11c2VyLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDYiCn0KCi5mYS11c2VyLXRhZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTA3Igp9CgouZmEtdXNlci10aWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwOCIKfQoKLmZhLXVzZXItdGltZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNSIKfQoKLmZhLXVzZXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzAiCn0KCi5mYS11c2Vycy1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwOSIKfQoKLmZhLXVzZXJzLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzMiCn0KCi5mYS11c3BzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZTEiCn0KCi5mYS11c3N1bm5haDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA3Igp9CgouZmEtdXRlbnNpbC1zcG9vbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmU1Igp9CgouZmEtdXRlbnNpbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlNyIKfQoKLmZhLXZhYWRpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA4Igp9CgouZmEtdmVjdG9yLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNiIgp9CgouZmEtdmVudXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMSIKfQoKLmZhLXZlbnVzLWRvdWJsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI2Igp9CgouZmEtdmVudXMtbWFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI4Igp9CgouZmEtdmVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDg1Igp9CgouZmEtdmVzdC1wYXRjaGVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODYiCn0KCi5mYS12aWFjb2luOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzciCn0KCi5mYS12aWFkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhOSIKfQoKLmZhLXZpYWRlby1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhYSIKfQoKLmZhLXZpYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5MiIKfQoKLmZhLXZpYWxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTMiCn0KCi5mYS12aWJlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA5Igp9CgouZmEtdmlkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZCIKfQoKLmZhLXZpZGVvLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZTIiCn0KCi5mYS12aWhhcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZhNyIKfQoKLmZhLXZpbWVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MGEiCn0KCi5mYS12aW1lby1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5NCIKfQoKLmZhLXZpbWVvLXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3ZCIKfQoKLmZhLXZpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjYSIKfQoKLmZhLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzQiCn0KCi5mYS12aXJ1cy1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDc1Igp9CgouZmEtdmlydXNlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDc2Igp9CgouZmEtdms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4OSIKfQoKLmZhLXZudjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBiIgp9CgouZmEtdm9pY2VtYWlsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4OTciCn0KCi5mYS12b2xsZXliYWxsLWJhbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1ZiIKfQoKLmZhLXZvbHVtZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjciCn0KCi5mYS12b2x1bWUtbXV0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmE5Igp9CgouZmEtdm9sdW1lLW9mZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI2Igp9CgouZmEtdm9sdW1lLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjgiCn0KCi5mYS12b3RlLXllYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzcyIgp9CgouZmEtdnItY2FyZGJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MjkiCn0KCi5mYS12dWVqczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFmIgp9CgouZmEtd2Fsa2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU0Igp9CgouZmEtd2FsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTUiCn0KCi5mYS13YXJlaG91c2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5NCIKfQoKLmZhLXdhdGNobWFuLW1vbml0b3Jpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4NyIKfQoKLmZhLXdhdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NzMiCn0KCi5mYS13YXZlLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNlIgp9CgouZmEtd2F6ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNmIgp9CgouZmEtd2VlYmx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1Y2MiCn0KCi5mYS13ZWlibzpiZWZvcmUgewogICAgY29udGVudDogIlxmMThhIgp9CgouZmEtd2VpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTYiCn0KCi5mYS13ZWlnaHQtaGFuZ2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNkIgp9CgouZmEtd2VpeGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDciCn0KCi5mYS13aGF0c2FwcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjMyIgp9CgouZmEtd2hhdHNhcHAtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MGMiCn0KCi5mYS13aGVlbGNoYWlyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTMiCn0KCi5mYS13aG1jczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBkIgp9CgouZmEtd2lmaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWViIgp9CgouZmEtd2lraXBlZGlhLXc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NiIKfQoKLmZhLXdpbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcyZSIKfQoKLmZhLXdpbmRvdy1jbG9zZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEwIgp9CgouZmEtd2luZG93LW1heGltaXplOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDAiCn0KCi5mYS13aW5kb3ctbWluaW1pemU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkMSIKfQoKLmZhLXdpbmRvdy1yZXN0b3JlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDIiCn0KCi5mYS13aW5kb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2EiCn0KCi5mYS13aW5lLWJvdHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzJmIgp9CgouZmEtd2luZS1nbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNGUzIgp9CgouZmEtd2luZS1nbGFzcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjZSIKfQoKLmZhLXdpeDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNmIgp9CgouZmEtd2l6YXJkcy1vZi10aGUtY29hc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczMCIKfQoKLmZhLXdvZHU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4OCIKfQoKLmZhLXdvbGYtcGFjay1iYXR0YWxpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxNCIKfQoKLmZhLXdvbi1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTkiCn0KCi5mYS13b3JkcHJlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YSIKfQoKLmZhLXdvcmRwcmVzcy1zaW1wbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMSIKfQoKLmZhLXdwYmVnaW5uZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5NyIKfQoKLmZhLXdwZXhwbG9yZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkZSIKfQoKLmZhLXdwZm9ybXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5OCIKfQoKLmZhLXdwcmVzc3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlNCIKfQoKLmZhLXdyZW5jaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFkIgp9CgouZmEteC1yYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5NyIKfQoKLmZhLXhib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMiIKfQoKLmZhLXhpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2OCIKfQoKLmZhLXhpbmctc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjkiCn0KCi5mYS15LWNvbWJpbmF0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzYiIKfQoKLmZhLXlhaG9vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOWUiCn0KCi5mYS15YW1tZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0MCIKfQoKLmZhLXlhbmRleDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEzIgp9CgouZmEteWFuZGV4LWludGVybmF0aW9uYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxNCIKfQoKLmZhLXlhcm46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlMyIKfQoKLmZhLXllbHA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlOSIKfQoKLmZhLXllbi1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTciCn0KCi5mYS15aW4teWFuZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNmFkIgp9CgouZmEteW9hc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMSIKfQoKLmZhLXlvdXR1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2NyIKfQoKLmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MzEiCn0KCi5mYS16aGlodTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjNmIgp9Cgouc3Itb25seSB7CiAgICBib3JkZXI6IDA7CiAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogICAgaGVpZ2h0OiAxcHg7CiAgICBtYXJnaW46IC0xcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZzogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxcHgKfQoKLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwKLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICAgIGNsaXA6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXJnaW46IDA7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICB3aWR0aDogYXV0bwp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LWRpc3BsYXk6IGJsb2NrOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC5lb3QpOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC0xLmVvdCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLCB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmKSBmb3JtYXQoIndvZmYiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksIHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLnN2ZykgZm9ybWF0KCJzdmciKQp9CgouZmFiIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIgp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1kaXNwbGF5OiBibG9jazsKICAgIHNyYzogdXJsKC4uL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLmVvdCk7CiAgICBzcmM6IHVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC0xLmVvdCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLCB1cmwoLi4vd2ViZm9udHMvZmEtcmVndWxhci00MDAud29mZjIpIGZvcm1hdCgid29mZjIiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLndvZmYpIGZvcm1hdCgid29mZiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtcmVndWxhci00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksIHVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC5zdmcpIGZvcm1hdCgic3ZnIikKfQoKLmZhYiwKLmZhciB7CiAgICBmb250LXdlaWdodDogNDAwCn0KCkBmb250LWZhY2UgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBmb250LWRpc3BsYXk6IGJsb2NrOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLmVvdCk7CiAgICBzcmM6IHVybCguLi93ZWJmb250cy9mYS1zb2xpZC05MDAtMS5lb3QpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYpIGZvcm1hdCgid29mZiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLCB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLnN2ZykgZm9ybWF0KCJzdmciKQp9CgouZmEsCi5mYXIsCi5mYXMgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIgp9CgouZmEsCi5mYXMgewogICAgZm9udC13ZWlnaHQ6IDkwMAp9"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/bg-hero-section.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.305Z","timestamp":1785130090305,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/bg-hero-section.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-9.css?ver=1706574923\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:19 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=BjeJ%2BbeM9UNRN5kirP5xu2fMEhqnfyFZc1UtddUbB0ZOOVFGTHkEjRPi%2FhRqRh4bWIUAyKyJchBRnTdEPTmSwV1Grn4Ou9fTj0%2FhCd9Entgbnmu0ilKPRMrsz1IEwyQ6HzoHOdq%2FmA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=4,i\r\ncf-ray: a2193d386e82120a-OSL\r\ncontent-length: 39037\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":39037,"size_decoded":39805,"mime_type":"image/png","magic":"PNG image data, 3840 x 1574, 8-bit/color RGBA, non-interlaced","md5":"1b4fa9c5f08fd1c82518b14728dd3c93","sha1":"5e8dfc618b59d254e663180529df7f5962d53d2b","sha256":"1d3c9334d35df557b7df0b7d8e3097dd2b2bc42db224153bad2fabb26bed3d55","sha512":"2e7f6950c1b61456de93f084466a40ab1eefb0ad6f1548767220b48814331758ac54b48f3cf0159f931cb1a1c293470e0ac3a3457784c1fbb50da2d082c3210e","ssdeep":"768:lLFOvGRFulC42zRknfW6TnaLkb5fFccSl:lAvGRMU43nfMa0l","tlshash":"3203a3f0842ba4aeea66847617ef1bf437742a4645031319c776e828bf7f9f1d860e50","first_seen":"2026-07-27T04:11:05.737248Z","last_seen":"2026-07-27T05:30:59.783444Z","times_seen":3,"resource_available":false,"data":"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wAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAA/mbfjgUAAAAABvlbT2NHeQQAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAMTe3aw3kSVrGBUYcN//zR70Y3NKVCVYtjOVkjJ3xo5Ya9LdgqcHVQzsb8eLAQAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAAAAIEIgAEAAAAAAAAAAAAAAAAAIBABMAAAAAAAAAAAAAAAAAAABCIABgAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAAACEQADAAAAAAAAAAAAAAAAAEAgAmAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAA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"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":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://dreamspinfluence.com/","date":"2026-07-27T05:28:13.684Z","timestamp":1785130093684,"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://dreamspinfluence.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://dreamspinfluence.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 05:28:16 GMT\r\ncontent-type: application/json\r\naccess-control-allow-origin: *\r\ncache-control: max-age=300, public, s-maxage=60\r\netag: W/\"6a4cb803-891\"\r\nexpires: Tue, 07 Jul 2026 08:35:15 GMT\r\nlast-modified: Tue, 07 Jul 2026 08:25:39 GMT\r\nx-77-nzt: k+anCWIXKfPvAGvh8652D8tUoYN6pG4yll1t/QkI6PEr4MWheL63KL9t8QAkE+TsJHiX0QE\r\nx-77-nzt-ray: fdb5412324199c1070ec666a91889639\r\nx-77-cache: HIT\r\nx-77-age: 47\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":1034,"mime_type":"application/json","magic":"JSON text data","md5":"88bd6816d4679ef7a63e1e6b61490804","sha1":"a592c82f8688d81c4ff12ddda0f42d842dbcf079","sha256":"1147d96bffe9abe8aa663c63cca281edbff049e2211f810da089a1dd90051df8","sha512":"e583bebb86335657d7cca5065967a4e281280f0b4ab1fe0457de1dee47f12f84922daf5fe938c39bfb8f03e086d706f2b0fd1d86a6e79c4cce053f0943dcb762","ssdeep":"","tlshash":"d9414593c0b80e5317cc262bb89545515d5083c7e88a3d0d366d9a7f2f4cea920e6b7e","first_seen":"2026-07-07T11:50:17.724469Z","last_seen":"2026-07-27T07:27:47.909394Z","times_seen":1802,"resource_available":false,"data":"ewogICJfV2lkZ2V0TWVzc2VuZ2VySW5wdXQtQzBYSFB4ZXYuanMiOiB7CiAgICAiZmlsZSI6ICJhc3NldHMvV2lkZ2V0TWVzc2VuZ2VySW5wdXQtQzBYSFB4ZXYuanMiLAogICAgIm5hbWUiOiAiV2lkZ2V0TWVzc2VuZ2VySW5wdXQiLAogICAgImltcG9ydHMiOiBbCiAgICAgICJfc2hhcmVkLUNnTUNBZm9yLmpzIgogICAgXSwKICAgICJkeW5hbWljSW1wb3J0cyI6IFsKICAgICAgIm5vZGVfbW9kdWxlcy8ucG5wbS9lbW9qaS1tYXJ0QDUuNi4wL25vZGVfbW9kdWxlcy9lbW9qaS1tYXJ0L2Rpc3QvbW9kdWxlLmpzIgogICAgXQogIH0sCiAgIl9zaGFyZWQtQ2dNQ0Fmb3IuanMiOiB7CiAgICAiZmlsZSI6ICJhc3NldHMvc2hhcmVkLUNnTUNBZm9yLmpzIiwKICAgICJuYW1lIjogIkljb25CdXR0b24iLAogICAgImR5bmFtaWNJbXBvcnRzIjogWwogICAgICAibm9kZV9tb2R1bGVzLy5wbnBtL0B0aHVtYm1hcmtqcyt0aHVtYm1hcmtqc0AxLjkuMC9ub2RlX21vZHVsZXMvQHRodW1ibWFya2pzL3RodW1ibWFya2pzL2Rpc3QvdGh1bWJtYXJrLmVzbS5qcyIKICAgIF0KICB9LAogICJub2RlX21vZHVsZXMvLnBucG0vQHRodW1ibWFya2pzK3RodW1ibWFya2pzQDEuOS4wL25vZGVfbW9kdWxlcy9AdGh1bWJtYXJranMvdGh1bWJtYXJranMvZGlzdC90aHVtYm1hcmsuZXNtLmpzIjogewogICAgImZpbGUiOiAiYXNzZXRzL3RodW1ibWFyay5lc20tQ1A0Q1UweUwuanMiLAogICAgIm5hbWUiOiAidGh1bWJtYXJrLmVzbSIsCiAgICAic3JjIjogIm5vZGVfbW9kdWxlcy8ucG5wbS9AdGh1bWJtYXJranMrdGh1bWJtYXJranNAMS45LjAvbm9kZV9tb2R1bGVzL0B0aHVtYm1hcmtqcy90aHVtYm1hcmtqcy9kaXN0L3RodW1ibWFyay5lc20uanMiLAogICAgImlzRHluYW1pY0VudHJ5IjogdHJ1ZQogIH0sCiAgIm5vZGVfbW9kdWxlcy8ucG5wbS9lbW9qaS1tYXJ0QDUuNi4wL25vZGVfbW9kdWxlcy9lbW9qaS1tYXJ0L2Rpc3QvbW9kdWxlLmpzIjogewogICAgImZpbGUiOiAiYXNzZXRzL21vZHVsZS1ERDVudlZEMy5qcyIsCiAgICAibmFtZSI6ICJtb2R1bGUiLAogICAgInNyYyI6ICJub2RlX21vZHVsZXMvLnBucG0vZW1vamktbWFydEA1LjYuMC9ub2RlX21vZHVsZXMvZW1vamktbWFydC9kaXN0L21vZHVsZS5qcyIsCiAgICAiaXNEeW5hbWljRW50cnkiOiB0cnVlCiAgfSwKICAic3JjL2ZyYW1lcy9tZXNzZW5nZXIvV2lkZ2V0TWVzc2VuZ2VyLnN2ZWx0ZSI6IHsKICAgICJmaWxlIjogImFzc2V0cy9XaWRnZXRNZXNzZW5nZXItREQ3T3l5VDUuanMiLAogICAgIm5hbWUiOiAiV2lkZ2V0TWVzc2VuZ2VyIiwKICAgICJzcmMiOiAic3JjL2ZyYW1lcy9tZXNzZW5nZXIvV2lkZ2V0TWVzc2VuZ2VyLnN2ZWx0ZSIsCiAgICAiaXNEeW5hbWljRW50cnkiOiB0cnVlLAogICAgImltcG9ydHMiOiBbCiAgICAgICJfc2hhcmVkLUNnTUNBZm9yLmpzIiwKICAgICAgIl9XaWRnZXRNZXNzZW5nZXJJbnB1dC1DMFhIUHhldi5qcyIsCiAgICAgICJzcmMvbWFpbi50cyIKICAgIF0KICB9LAogICJzcmMvZnJhbWVzL3BvcHVwL1dpZGdldFBvcHVwLnN2ZWx0ZSI6IHsKICAgICJmaWxlIjogImFzc2V0cy9XaWRnZXRQb3B1cC1xZXV3a2NCbi5qcyIsCiAgICAibmFtZSI6ICJXaWRnZXRQb3B1cCIsCiAgICAic3JjIjogInNyYy9mcmFtZXMvcG9wdXAvV2lkZ2V0UG9wdXAuc3ZlbHRlIiwKICAgICJpc0R5bmFtaWNFbnRyeSI6IHRydWUsCiAgICAiaW1wb3J0cyI6IFsKICAgICAgIl9zaGFyZWQtQ2dNQ0Fmb3IuanMiLAogICAgICAiX1dpZGdldE1lc3NlbmdlcklucHV0LUMwWEhQeGV2LmpzIgogICAgXQogIH0sCiAgInNyYy9tYWluLnRzIjogewogICAgImZpbGUiOiAiYXNzZXRzL21haW4tdDZXeExBQkEuanMiLAogICAgIm5hbWUiOiAibWFpbiIsCiAgICAic3JjIjogInNyYy9tYWluLnRzIiwKICAgICJpc0VudHJ5IjogdHJ1ZSwKICAgICJpbXBvcnRzIjogWwogICAgICAiX3NoYXJlZC1DZ01DQWZvci5qcyIKICAgIF0sCiAgICAiZHluYW1pY0ltcG9ydHMiOiBbCiAgICAgICJzcmMvZnJhbWVzL21lc3Nlbmdlci9XaWRnZXRNZXNzZW5nZXIuc3ZlbHRlIiwKICAgICAgInNyYy9mcmFtZXMvcG9wdXAvV2lkZ2V0UG9wdXAuc3ZlbHRlIgogICAgXQogIH0sCiAgInN0eWxlLmNzcyI6IHsKICAgICJmaWxlIjogImFzc2V0cy9zdHlsZS1DbGlKd1VUUi5jc3MiLAogICAgInNyYyI6ICJzdHlsZS5jc3MiCiAgfQp9"}},"time_used":3289,"timings":{"blocked":-1,"dns":3,"connect":8,"send":0,"wait":8,"receive":0,"ssl":3270},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-9.css?ver=1706574923","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.986Z","timestamp":1785130089986,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/elementor/css/post-9.css?ver=1706574923 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=bLfzSqaY%2Fzu0YgU4Nojc25PxH9JSnfpWf9UU6p9Hs81RteQgHuanrEE0CPwu2cmWuwhjMJ1BA5c7qXUcmd7InT3ZlVduAH6WkB72PYNh0xtDr68zh5bjlhmQxxLRePIhFFl79U%2BNwA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d366e2c120a-OSL\r\ncontent-length: 4294\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":89466,"size_decoded":5104,"mime_type":"text/css","magic":"ASCII text","md5":"1cdb40fbff4a4bc40160cd331827591f","sha1":"2d9489492d0985c5d6b197652c504075dc91caef","sha256":"062103c59bfd3619c29e3a40938a245b75e0f2baae713519a5286daafa76037e","sha512":"d934446e2ba2f4dfc2e1db87a22b701beed0684a5d23bfb54fbc97ae43525d73113df5726a9d7e7a22e6ac0435c57d35b779fcf66b35efe09e2d11445c9cd620","ssdeep":"1536:almxZROURM8zKtROKbD6KxuVMmtfx2ngCKWCZ35SuY0mu6e41l4A:a0DIWKt8Kb+KxaM6JEv2Y0l6e4V","tlshash":"1a9359813e231259782fa01fa6eb928e213848cb9a6cfdd5f4dc5217ef79c94b3d1944","first_seen":"2026-07-27T04:11:05.75388Z","last_seen":"2026-07-27T05:30:59.823893Z","times_seen":3,"resource_available":false,"data":"LmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hNTBiYTM1IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWdhcDogMjBweCAyMHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDIwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAyMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE1MGJhMzU6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE1MGJhMzU+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXI+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllciB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4uLy4uLzIwMjMvMTIvYmctaGVyby1zZWN0aW9uLnBuZyIpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE1MGJhMzUsCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTUwYmEzNTo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjc5MjMwMiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tZ2FwOiAyNHB4IDI0cHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01MTIzZmRmIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWYyZDY5MmEgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mODU4NjI5IHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDFkY2QwMiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUzODZlY2QgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tZ2FwOiAxMnB4IDEycHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMTAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAxMDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01Mzg2ZWNkOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01Mzg2ZWNkPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXIgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi8uLi8yMDIzLzEyL2JnLXVubG9jay10aGUtd29ybGQucG5nIik7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTM4NmVjZCwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01Mzg2ZWNkOjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xNzA0ZDA0IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xNzA0ZDA0IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWYwMjM5ZGYgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMDIzOWRmPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBwYWRkaW5nOiAwcHggMjUwcHggMHB4IDI1MHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTE2ZjQ4YTMgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC0tZ2FwOiAyOHB4IDI4cHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMzhweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWQ3Y2YyOCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzguZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1yaWdodDogMTJweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lOGRjZTc4LmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICB3aWR0aDogNDMlOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzggLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIGltZyB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzggLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzggLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01ODYxMDQ3IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMTFiMWZjLmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWxlZnQ6IDEycHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYy5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLXJpZ2h0OiAxMnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxMWIxZmMuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMTFiMWZjIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIHdpZHRoOiA0MyU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYyAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgaW1nIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYyAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYyAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBlMzkyNjMgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUuZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tbGVmdDogMTJweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iZTQ2MjBlLmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tcmlnaHQ6IDEycHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZS5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgd2lkdGg6IDQzJTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iZTQ2MjBlIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyBpbWcgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iZTQ2MjBlIC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iZTQ2MjBlIC5lbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzM1ODExOCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3Ni5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYuZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1yaWdodDogMTJweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jYTNiYTc2LmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3NiAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICB3aWR0aDogNDMlOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIGltZyB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYgLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYgLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ODRiZDcyIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMTJweCAxMnB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMTAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzg0YmQ3Mjpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzg0YmQ3Mj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lcj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4vMjAyMy8xMi9iZy1zdGFydGVkLWluLXN0ZXBzLnBuZyIpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc4NGJkNzIsCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzg0YmQ3Mjo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzEyMjk3MyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzEyMjk3MyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MWI2NmZiIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTFiNjZmYj4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgcGFkZGluZzogMHB4IDIwMHB4IDBweCAyMDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04ZDQ0NTQ1IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWdhcDogMjVweCAyNXB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDM4cHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxYTBlY2UgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01ZmM4Y2MwIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogNDBweCA0MHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2U5NmZjOCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDIwcHggMjBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFjMmU1OTAgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWIwNDM0YWUgaW1nIHsKICAgIHdpZHRoOiAzMiU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODg5MDU1NSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDEwcHggMTBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE5YjFiNzQgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTkwN2RmMGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zOTMxODA5IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWdhcDogMjBweCAyMHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2QxODIyMyB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmVjMTJhYiBpbWcgewogICAgd2lkdGg6IDMyJTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kYjFlODE3IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMTBweCAxMHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDI2ZjJlYyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTdkNTk3MSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5M2Q0ZjggewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lMmZkNGVlIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNjFiNGUyIGltZyB7CiAgICB3aWR0aDogMzIlOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWMxZjFhNjYgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00MWM1ODU0IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wNTI1NjMxIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTkyNzFjYSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDEycHggMTJweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE5MjcxY2E6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE5MjcxY2E+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXI+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllciB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4uLy4uLzIwMjMvMTIvYmctY3JlYXRlLXlvdXItcHJvdG9uLXdhbGxldC5wbmciKTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hOTI3MWNhLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE5MjcxY2E6OmJlZm9yZSB7CiAgICAtLWJvcmRlci10cmFuc2l0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ5MjNhNWIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ5MjNhNWIgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTBlMDg3YyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTkwZTA4N2M+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIHBhZGRpbmc6IDBweCAyMDBweCAwcHggMjAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTMzNDhmZiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAtLWdhcDogMjJweCAyMnB4OwogICAgLS1mbGV4LXdyYXA6IHdyYXA7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMzhweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTIwOTYzMyB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgLS1ib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLXdpZHRoOiA1cHggMHB4IDVweCAwcHg7CiAgICAtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogNXB4OwogICAgLS1ib3JkZXItaW5saW5lLWVuZC13aWR0aDogMHB4OwogICAgLS1ib3JkZXItYmxvY2stZW5kLXdpZHRoOiA1cHg7CiAgICAtLWJvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6IDBweDsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgLS1ib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIC0tYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDIwcHggMjBweDsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMjRweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDI0cHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAyNHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDI0cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTIwOTYzMywKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MjA5NjMzOjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmLmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWxlZnQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDNiNjc4Zi5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQzYjY3OGYuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIHdpZHRoOiAzNSU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDNiNjc4ZiAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgaW1nIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDNiNjc4ZiAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDNiNjc4ZiAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTYyYmQxYWUgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIC0tYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci13aWR0aDogNXB4IDBweCA1cHggMHB4OwogICAgLS1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IDVweDsKICAgIC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGg6IDBweDsKICAgIC0tYm9yZGVyLWJsb2NrLWVuZC13aWR0aDogNXB4OwogICAgLS1ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiAwcHg7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIC0tYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICAtLWJvcmRlci1yYWRpdXM6IDIwcHggMjBweCAyMHB4IDIwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDI0cHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAyNHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMjRweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAyNHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTYyYmQxYWUsCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjJiZDFhZTo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZi5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc3NDhhMWYuZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1yaWdodDogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NzQ4YTFmLmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZiAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICB3aWR0aDogMzUlOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc3NDhhMWYgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIGltZyB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc3NDhhMWYgLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc3NDhhMWYgLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05ODFkMWM5IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICAtLWJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItd2lkdGg6IDVweCAwcHggNXB4IDBweDsKICAgIC0tYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoOiA1cHg7CiAgICAtLWJvcmRlci1pbmxpbmUtZW5kLXdpZHRoOiAwcHg7CiAgICAtLWJvcmRlci1ibG9jay1lbmQtd2lkdGg6IDVweDsKICAgIC0tYm9yZGVyLWlubGluZS1zdGFydC13aWR0aDogMHB4OwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICAtLWJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgLS1ib3JkZXItcmFkaXVzOiAyMHB4IDIwcHggMjBweCAyMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAyNHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMjRweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDI0cHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMjRweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05ODFkMWM5LAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTk4MWQxYzk6OmJlZm9yZSB7CiAgICAtLWJvcmRlci10cmFuc2l0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTI3ODE5YTMuZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tbGVmdDogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNzgxOWEzLmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjc4MTlhMy5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTI3ODE5YTMgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgd2lkdGg6IDM1JTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNzgxOWEzIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyBpbWcgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNzgxOWEzIC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNzgxOWEzIC5lbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTVmZTBjZSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDEycHggMTJweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1ZmUwY2U6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1ZmUwY2U+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXI+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllciB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4uLy4uLzIwMjMvMTIvYmctYnV5LWNyeXB0b2N1cnJlbmN5LnBuZyIpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1ZmUwY2UsCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTVmZTBjZTo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTYzMjJhMiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTYzMjJhMiAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03MWViNDI2IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzFlYjQyNj4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgcGFkZGluZzogMHB4IDIwMHB4IDBweCAyMDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yZTI4MzJhIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWdhcDogNTBweCA1MHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDM4cHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU2YzU1NzUgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLWdhcDogMzBweCAzMHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtczpub3QoLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICBwYWRkaW5nLWJvdHRvbTogY2FsYygzMHB4LzIpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXM6bm90KC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zKSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgIG1hcmdpbi10b3A6IGNhbGMoMzBweC8yKTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSB7CiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoMzBweC8yKTsKICAgIG1hcmdpbi1sZWZ0OiBjYWxjKDMwcHgvMik7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgIG1hcmdpbi1yaWdodDogY2FsYygtMzBweC8yKTsKICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC0zMHB4LzIpOwp9Cgpib2R5LnJ0bCAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMuZWxlbWVudG9yLWlubGluZS1pdGVtcyAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgIGxlZnQ6IGNhbGMoLTMwcHgvMik7Cn0KCmJvZHk6bm90KC5ydGwpIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgcmlnaHQ6IGNhbGMoLTMwcHgvMik7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pY29uIGkgewogICAgdHJhbnNpdGlvbjogY29sb3IgMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWljb24gc3ZnIHsKICAgIHRyYW5zaXRpb246IGZpbGwgMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IHsKICAgIC0tZS1pY29uLWxpc3QtaWNvbi1zaXplOiAzMHB4OwogICAgLS1pY29uLXZlcnRpY2FsLWFsaWduOiBmbGV4LXN0YXJ0OwogICAgLS1pY29uLXZlcnRpY2FsLW9mZnNldDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiB7CiAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtPi5lbGVtZW50b3ItaWNvbi1saXN0LXRleHQsCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtPmEgewogICAgZm9udC1zaXplOiAyNnB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGxpbmUtaGVpZ2h0OiAzNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgdHJhbnNpdGlvbjogY29sb3IgMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03MGI2ZmE2IC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03MGI2ZmE2IC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kYzI4M2MyIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjZjMDNiZiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDEycHggMTJweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWI2YzAzYmY6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWI2YzAzYmY+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXI+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllciB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4uLy4uLzIwMjMvMTIvYmctdGVhbS1ib2FyZC5wbmciKTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iNmMwM2JmLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWI2YzAzYmY6OmJlZm9yZSB7CiAgICAtLWJvcmRlci10cmFuc2l0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTNiODBkYjQgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTNiODBkYjQgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWJmZGY3MiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFiZmRmNzI+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIHBhZGRpbmc6IDBweCAxMDBweCAwcHggMTAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYWUwNmNiYiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tZ2FwOiA1MHB4IDUwcHg7CiAgICAtLWZsZXgtd3JhcDogd3JhcDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAzOHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02MjliNTA3IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWxlZnQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjEyYzIwOS5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIxMmMyMDkuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIHdpZHRoOiA2NSU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjEyYzIwOSAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgaW1nIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjEyYzIwOSAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5IC5lbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDVhZjdiOSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGFiYzI4ZC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBhYmMyOGQuZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1yaWdodDogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wYWJjMjhkLmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGFiYzI4ZCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICB3aWR0aDogNjUlOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBhYmMyOGQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIGltZyB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBhYmMyOGQgLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGFiYzI4ZCAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTEyNDZkZjEgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIwOGQ3ZDQuZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tbGVmdDogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMDhkN2Q0LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjA4ZDdkNC5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIwOGQ3ZDQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgd2lkdGg6IDY1JTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMDhkN2Q0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyBpbWcgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMDhkN2Q0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIwOGQ3ZDQgLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NWM5NTNiIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOWI4ZWE0LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWxlZnQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDliOGVhNC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ5YjhlYTQuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOWI4ZWE0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIHdpZHRoOiA2NSU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDliOGVhNCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgaW1nIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDliOGVhNCAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOWI4ZWE0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWM4N2JiOCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMy5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTAyZDEwZTMuZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1yaWdodDogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMmQxMGUzLmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMyAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICB3aWR0aDogNjUlOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTAyZDEwZTMgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIGltZyB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTAyZDEwZTMgLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMyAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZhNzg2MDAgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC0tZ2FwOiA1MHB4IDUwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMTAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAxMDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02YTc4NjAwOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02YTc4NjAwPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXIgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi8uLi8yMDIzLzEyL2JnLXRlc3RpbW9uaWFsLnBuZyIpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZhNzg2MDAsCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmE3ODYwMDo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWQwOTU4MiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTViYjNlMTUgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLWdhcDogMTJweCAxMnB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjNmMTlmMiB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTYzZjE5ZjIgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTVhNDU0ZiB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEzMTJlY2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hMzEyZWNlPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBwYWRkaW5nOiAzNnB4IDBweCAzNnB4IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yZjc1OGQzIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mYTZkZjc2IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMTJweCAxMnB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMTAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZmE2ZGY3Njpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZmE2ZGY3Nj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lcj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4vMjAyMy8xMi9iZy10ZWFtLWJvYXJkLnBuZyIpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWZhNmRmNzYsCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZmE2ZGY3Njo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDg5NTg4NSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDg5NTg4NSAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZjkyYWQxIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2Y5MmFkMT4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgcGFkZGluZzogMHB4IDEwMHB4IDBweCAxMDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTVlZjdlIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWdhcDogMjVweCAyNXB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDM4cHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVlNzAxZGQgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAyMDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDUwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiA1MHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDUwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWU3MDFkZDpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWU3MDFkZD4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lcj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4vMjAyMy8xMi9ibG9nMS5wbmciKTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lZTcwMWRkLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVlNzAxZGQ6OmJlZm9yZSB7CiAgICAtLWJvcmRlci10cmFuc2l0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWIyNTc3NTkgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jNTBkNzc5IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00NTc5OTNhIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMjZweCAyNnB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTM2YzJkMSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAtLWdhcDogMTVweCAxNXB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTJkZjgxMSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEwMzk1YzIgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04YjljZDcwIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODY0MDQ2YSAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzg5MDUxOCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAtLWdhcDogMTVweCAxNXB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYWI4ZTQxZCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQ2ZTdiNGEgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MzNmODhkIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZjNjN2I2NCAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2NlM2Y4YyB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAtLWdhcDogMTVweCAxNXB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzA2ZWEzNCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRhMjViZjYgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xYjEwY2IzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmUzMzYyNyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWZjYTg2OSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDMwcHggMzBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVmY2E4Njk6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVmY2E4Njk+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXI+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMUEyMTJGOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVmY2E4NjksCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWZjYTg2OTo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZmVmMzI5YSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDEycHggMTJweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1tYXJnaW4tYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tbWFyZ2luLWJsb2NrLWVuZDogMHB4OwogICAgLS1tYXJnaW4taW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLW1hcmdpbi1pbmxpbmUtZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjliYzczZiB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWI5YmM3M2YgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2M1NGFlOSB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEyOWUzZDYgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiBjYWxjKCAoIDEgLSB2YXIoIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3cpKSAqIDEwMCUpOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgLS1hbGlnbi1pdGVtczogY2VudGVyOwogICAgLS1nYXA6IDBweCAwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tbWFyZ2luLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLW1hcmdpbi1ibG9jay1lbmQ6IDBweDsKICAgIC0tbWFyZ2luLWlubGluZS1zdGFydDogMHB4OwogICAgLS1tYXJnaW4taW5saW5lLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEyOWUzZDYuZS1jb24gewogICAgLS1hbGlnbi1zZWxmOiBjZW50ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTFhMDMxYT4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgbWFyZ2luOiAwcHggMHB4IDBweCAwcHg7CiAgICBwYWRkaW5nOiAwcHggMHB4IDBweCAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGNmODYzOT4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgbWFyZ2luOiAwcHggMHB4IDBweCAwcHg7CiAgICBwYWRkaW5nOiAwcHggMHB4IDBweCAwcHg7Cn0KCkBtZWRpYShtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE1MGJhMzUgewogICAgICAgIC0tbWluLWhlaWdodDogNjAwcHg7CiAgICAgICAgLS1tYXJnaW4tYmxvY2stc3RhcnQ6IDBweDsKICAgICAgICAtLW1hcmdpbi1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLW1hcmdpbi1pbmxpbmUtc3RhcnQ6IDBweDsKICAgICAgICAtLW1hcmdpbi1pbmxpbmUtZW5kOiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMDBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAxMDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01Mzg2ZWNkIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogODBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMDIzOWRmPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMHB4IDgwcHggMHB4IDgwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTE2ZjQ4YTMgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAyOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzg0YmQ3MiB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTFiNjZmYj4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDBweCA4MHB4IDBweCA4MHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04ZDQ0NTQ1IHsKICAgICAgICAtLWdhcDogMjBweCAyMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMjhweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTNlOTZmYzggewogICAgICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTM5MzE4MDkgewogICAgICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5M2Q0ZjggewogICAgICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE5MjcxY2EgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogODBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTkwZTA4N2M+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggODBweCAwcHggODBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTMzNDhmZiB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAyOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTIwOTYzMyB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDNiNjc4Zi5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDNiNjc4Zi5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDNiNjc4Zi5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDNiNjc4ZiAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjJiZDFhZSB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZi5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZi5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZi5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZiAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTgxZDFjOSB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjc4MTlhMy5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjc4MTlhMy5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjc4MTlhMy5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjc4MTlhMyAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTVmZTBjZSB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzFlYjQyNj4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDBweCA4MHB4IDBweCA4MHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yZTI4MzJhIHsKICAgICAgICAtLWdhcDogMjBweCAyMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMjhweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU2YzU1NzUgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXM6bm90KC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zKSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIHBhZGRpbmctYm90dG9tOiBjYWxjKDE1cHgvMik7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXM6bm90KC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zKSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tdG9wOiBjYWxjKDE1cHgvMik7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMuZWxlbWVudG9yLWlubGluZS1pdGVtcyAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoMTVweC8yKTsKICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygxNXB4LzIpOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtMTVweC8yKTsKICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtMTVweC8yKTsKICAgIH0KICAgIGJvZHkucnRsIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIGxlZnQ6IGNhbGMoLTE1cHgvMik7CiAgICB9CiAgICBib2R5Om5vdCgucnRsKSAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMuZWxlbWVudG9yLWlubGluZS1pdGVtcyAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICByaWdodDogY2FsYygtMTVweC8yKTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCB7CiAgICAgICAgLS1lLWljb24tbGlzdC1pY29uLXNpemU6IDIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbT4uZWxlbWVudG9yLWljb24tbGlzdC10ZXh0LAogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0+YSB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iNmMwM2JmIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogODBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xYmZkZjcyPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMHB4IDgwcHggMHB4IDgwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFlMDZjYmIgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAyOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjEyYzIwOS5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjEyYzIwOS5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjEyYzIwOS5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGFiYzI4ZC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGFiYzI4ZC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGFiYzI4ZC5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjA4ZDdkNC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjA4ZDdkNC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjA4ZDdkNC5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDliOGVhNC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDliOGVhNC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDliOGVhNC5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMy5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMy5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMy5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmE3ODYwMCB7CiAgICAgICAgLS1nYXA6IDMwcHggMzBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogODBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hMzEyZWNlPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMjBweCAwcHggMjBweCAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWZhNmRmNzYgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogODBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdmOTJhZDE+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggODBweCAwcHggODBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2U1ZWY3ZSB7CiAgICAgICAgLS1nYXA6IDBweCAyMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMjhweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVlNzAxZGQgewogICAgICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgLS1nYXA6IDBweCAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDU3OTkzYSB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWZjYTg2OSB7CiAgICAgICAgLS1nYXA6IDEwcHggMTBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogODBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hMjllM2Q2IHsKICAgICAgICAtLWdhcDogMHB4IDBweDsKICAgIH0KfQoKQG1lZGlhKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hNTBiYTM1IHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogNTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02NzkyMzAyIHsKICAgICAgICAtLWdhcDogMjBweCAyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMWRjZDAyLmUtY29uIHsKICAgICAgICAtLW9yZGVyOiAtOTk5OTkvKiBvcmRlciBzdGFydCBoYWNrICovCiAgICAgICAgOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01Mzg2ZWNkIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogNTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMDIzOWRmPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMHB4IDBweCAwcHggMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTZkOTBkIGltZyB7CiAgICAgICAgd2lkdGg6IDI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTZmNDhhMyB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzguZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzguZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzguZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzggLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIHdpZHRoOiAzMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzggLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzggewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYyAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxMWIxZmMuZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxMWIxZmMuZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxMWIxZmMuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxMWIxZmMgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIHdpZHRoOiAzMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxMWIxZmMgLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxMWIxZmMgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZSAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUuZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUuZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIHdpZHRoOiAzMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUgLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3NiAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYuZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYuZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIHdpZHRoOiAzMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYgLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzg0YmQ3MiB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTFiNjZmYj4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjdkMmE4MiBpbWcgewogICAgICAgIHdpZHRoOiAyNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThkNDQ1NDUgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMThweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTVmYzhjYzAgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTNlOTZmYzggewogICAgICAgIC0tanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xYzJlNTkwIHsKICAgICAgICAtLXdpZHRoOiAxNiU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg2ZGY4NDcgaW1nIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODZkZjg0NyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iMDQzNGFlIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg4OTA1NTUgewogICAgICAgIC0td2lkdGg6IDgwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzkzMTgwOSB7CiAgICAgICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTNkMTgyMjMgewogICAgICAgIC0td2lkdGg6IDE2JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGY1NmRkYiBpbWcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kZjU2ZGRiIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlYzEyYWIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGIxZTgxNyB7CiAgICAgICAgLS13aWR0aDogODAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OTNkNGY4IHsKICAgICAgICAtLWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTJmZDRlZSB7CiAgICAgICAgLS13aWR0aDogMTYlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kNjMyODc3IGltZyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ2MzI4NzcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjYxYjRlMiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jMWYxYTY2IHsKICAgICAgICAtLXdpZHRoOiA4MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE5MjcxY2EgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogNTBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTkwZTA4N2M+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMHB4IDBweCAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg4ZDhiNDIgaW1nIHsKICAgICAgICB3aWR0aDogMjUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xMzM0OGZmIHsKICAgICAgICAtLWdhcDogMzBweCAzMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMThweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQzYjY3OGYgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NzQ4YTFmIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjc4MTlhMyAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1ZmUwY2UgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogNTBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTcxZWI0MjY+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMHB4IDBweCAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWZmZmYzYjMgaW1nIHsKICAgICAgICB3aWR0aDogMjUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yZTI4MzJhIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDE4cHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0+LmVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCwKICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtPmEgewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBsaW5lLWhlaWdodDogMjhweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGMyODNjMi5lLWNvbiB7CiAgICAgICAgLS1vcmRlcjogLTk5OTk5Lyogb3JkZXIgc3RhcnQgaGFjayAqLwogICAgICAgIDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjZjMDNiZiB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWJmZGY3Mj4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNWIxZTJhZiBpbWcgewogICAgICAgIHdpZHRoOiAyNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFlMDZjYmIgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMThweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIxMmMyMDkgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICB3aWR0aDogNTAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBhYmMyOGQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wYWJjMjhkIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICB3aWR0aDogNTAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wYWJjMjhkIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIwOGQ3ZDQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMDhkN2Q0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICB3aWR0aDogNTAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMDhkN2Q0IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Yzk1M2IgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDliOGVhNCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ5YjhlYTQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIHdpZHRoOiA1MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ5YjhlYTQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMyAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTAyZDEwZTMgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIHdpZHRoOiA1MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTAyZDEwZTMgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmE3ODYwMCB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogNTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hNWE0NTRmIGltZyB7CiAgICAgICAgd2lkdGg6IDI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZmE2ZGY3NiB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2Y5MmFkMT4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmJjY2Y1OSBpbWcgewogICAgICAgIHdpZHRoOiAyNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlNWVmN2UgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWU3MDFkZCB7CiAgICAgICAgLS1nYXA6IDIwcHggMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogNzBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA3MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDI1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDI1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQ1Nzk5M2EgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTEzNmMyZDEgewogICAgICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEyZGY4MTEgewogICAgICAgIC0td2lkdGg6IDM5JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTAzOTVjMiB7CiAgICAgICAgLS13aWR0aDogNTYlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zODkwNTE4IHsKICAgICAgICAtLWdhcDogMTBweCAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hYjhlNDFkIHsKICAgICAgICAtLXdpZHRoOiAzOSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQ2ZTdiNGEgewogICAgICAgIC0td2lkdGg6IDU2JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2NlM2Y4YyB7CiAgICAgICAgLS1nYXA6IDEwcHggMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzA2ZWEzNCB7CiAgICAgICAgLS13aWR0aDogMzklOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00YTI1YmY2IHsKICAgICAgICAtLXdpZHRoOiA1NiU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVmY2E4NjkgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2M1NGFlOSBpbWcgewogICAgICAgIHdpZHRoOiAyNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEyOWUzZDYgewogICAgICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAgICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgICAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICAgIC0tanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC0tZmxleC13cmFwOiBub3dyYXA7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWUxYTAzMWEgaW1nIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBjZjg2MzkgaW1nIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9Cn0KCkBtZWRpYShtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTUwYmEzNSB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTY3OTIzMDIgewogICAgICAgIC0td2lkdGg6IDU1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDFkY2QwMiB7CiAgICAgICAgLS13aWR0aDogNDUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01Mzg2ZWNkIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTZmNDhhMyB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFkN2NmMjggewogICAgICAgIC0td2lkdGg6IDI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTg2MTA0NyB7CiAgICAgICAgLS13aWR0aDogMjUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wZTM5MjYzIHsKICAgICAgICAtLXdpZHRoOiAyNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTMzNTgxMTggewogICAgICAgIC0td2lkdGg6IDI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzg0YmQ3MiB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThkNDQ1NDUgewogICAgICAgIC0tY29udGVudC13aWR0aDogMTMyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMWEwZWNlIHsKICAgICAgICAtLXdpZHRoOiA1MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTVmYzhjYzAgewogICAgICAgIC0td2lkdGg6IDUwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWMyZTU5MCB7CiAgICAgICAgLS13aWR0aDogMTUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04ODkwNTU1IHsKICAgICAgICAtLXdpZHRoOiA4NSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTNkMTgyMjMgewogICAgICAgIC0td2lkdGg6IDE1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGIxZTgxNyB7CiAgICAgICAgLS13aWR0aDogODUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lMmZkNGVlIHsKICAgICAgICAtLXdpZHRoOiAxNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWMxZjFhNjYgewogICAgICAgIC0td2lkdGg6IDg1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTkyNzFjYSB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTEzMzQ4ZmYgewogICAgICAgIC0tY29udGVudC13aWR0aDogMTMyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MjA5NjMzIHsKICAgICAgICAtLXdpZHRoOiAzMSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTYyYmQxYWUgewogICAgICAgIC0td2lkdGg6IDMxJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTgxZDFjOSB7CiAgICAgICAgLS13aWR0aDogMzElOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NWZlMGNlIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMmUyODMyYSB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU2YzU1NzUgewogICAgICAgIC0td2lkdGg6IDU2JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGMyODNjMiB7CiAgICAgICAgLS13aWR0aDogNDIlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iNmMwM2JmIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYWUwNmNiYiB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTYyOWI1MDcgewogICAgICAgIC0td2lkdGg6IDMwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDVhZjdiOSB7CiAgICAgICAgLS13aWR0aDogMzAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xMjQ2ZGYxIHsKICAgICAgICAtLXdpZHRoOiAzMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Yzk1M2IgewogICAgICAgIC0td2lkdGg6IDMwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWM4N2JiOCB7CiAgICAgICAgLS13aWR0aDogMzAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02YTc4NjAwIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWQwOTU4MiB7CiAgICAgICAgLS13aWR0aDogNDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01YmIzZTE1IHsKICAgICAgICAtLXdpZHRoOiA1NiU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWZhNmRmNzYgewogICAgICAgIC0tY29udGVudC13aWR0aDogMTMyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTVlZjdlIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWU3MDFkZCB7CiAgICAgICAgLS13aWR0aDogNDclOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00NTc5OTNhIHsKICAgICAgICAtLXdpZHRoOiA1MiU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEyZGY4MTEgewogICAgICAgIC0td2lkdGg6IDMzJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTAzOTVjMiB7CiAgICAgICAgLS13aWR0aDogNjQlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hYjhlNDFkIHsKICAgICAgICAtLXdpZHRoOiAzMyU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQ2ZTdiNGEgewogICAgICAgIC0td2lkdGg6IDY0JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzA2ZWEzNCB7CiAgICAgICAgLS13aWR0aDogMzMlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00YTI1YmY2IHsKICAgICAgICAtLXdpZHRoOiA2NCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVmY2E4NjkgewogICAgICAgIC0tY29udGVudC13aWR0aDogMTMyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mZWYzMjlhIHsKICAgICAgICAtLXdpZHRoOiA3MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEyOWUzZDYgewogICAgICAgIC0td2lkdGg6IDMwJTsKICAgIH0KfQoKQG1lZGlhKG1heC13aWR0aDoxMDI0cHgpIGFuZCAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU2YzU1NzUgewogICAgICAgIC0td2lkdGg6IDUzJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGMyODNjMiB7CiAgICAgICAgLS13aWR0aDogNDQlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02MjliNTA3IHsKICAgICAgICAtLXdpZHRoOiAzMSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQ1YWY3YjkgewogICAgICAgIC0td2lkdGg6IDMxJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTI0NmRmMSB7CiAgICAgICAgLS13aWR0aDogMzElOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NWM5NTNiIHsKICAgICAgICAtLXdpZHRoOiAzMSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljODdiYjggewogICAgICAgIC0td2lkdGg6IDMxJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTI5ZTNkNiB7CiAgICAgICAgLS13aWR0aDogNDAlOwogICAgfQp9"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.006Z","timestamp":1785130090006,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=2EjXFZBOpg4jWV%2FLP6hjGV%2FR7uX2TEVIqGjdPHUEEM%2BVHw9Z5F4kzbwv2YqcjbAdWE8aYVKutp4W8%2Bdpp4fHUMUJl9pfa0fnznycqscmS%2FKnPf0e%2F5qAHz%2FQb%2FPS2dWG6mhkLYe25A%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d368e3b120a-OSL\r\ncontent-length: 5142\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":18713,"size_decoded":5978,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (519)","md5":"1d6dae7fe5617d9a7cef583039033804","sha1":"6267c462e74865b877d159d83f40642acb58cd03","sha256":"261bd4fe31b6ef4e89e5c02a202840220841b4e6b68b05e8438f62a20c63051f","sha512":"4b45dd01acc33cf3abdd28a47419ab6bcd962aa2b522ed2fbf63d3f31589677ca7ce936aca4b02d63c508859bb42a41d384e4ccd92a60f2daf6eefc7f7825501","ssdeep":"384:5vjxzRDFKvtShyQlmCHFSPoj/0rK977tq23MUGhJ11X:JNKvQhyIUPowy7pqcMUGV1X","tlshash":"2e82962eb5f626319567f1b8e52fcd5a7276048f168d9e00784c81b51f0d838a3b9fe8","first_seen":"2023-11-09T22:36:28Z","last_seen":"2026-07-27T05:30:59.832639Z","times_seen":57,"resource_available":true,"data":"LyohIGpRdWVyeSBNaWdyYXRlIHYzLjQuMSB8IChjKSBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiJ1bmRlZmluZWQiID09IHR5cGVvZiBqUXVlcnkubWlncmF0ZU11dGUgJiYgKGpRdWVyeS5taWdyYXRlTXV0ZSA9ICEwKSwKICAgIGZ1bmN0aW9uKHQpIHsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWyJqcXVlcnkiXSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdChlLCB3aW5kb3cpCiAgICAgICAgfSkgOiAib2JqZWN0IiA9PSB0eXBlb2YgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSB0KHJlcXVpcmUoImpxdWVyeSIpLCB3aW5kb3cpIDogdChqUXVlcnksIHdpbmRvdykKICAgIH0oZnVuY3Rpb24ocywgbikgewogICAgICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAgICAgZnVuY3Rpb24gZShlKSB7CiAgICAgICAgICAgIHJldHVybiAwIDw9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAvXihcZCspXC4oXGQrKVwuKFxkKykvLCBuID0gci5leGVjKGUpIHx8IFtdLCBvID0gci5leGVjKHQpIHx8IFtdLCBhID0gMTsgYSA8PSAzOyBhKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoK29bYV0gPCArblthXSkgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCtuW2FdIDwgK29bYV0pIHJldHVybiAtMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgfShzLmZuLmpxdWVyeSwgZSkKICAgICAgICB9CiAgICAgICAgcy5taWdyYXRlVmVyc2lvbiA9ICIzLjQuMSI7CiAgICAgICAgdmFyIHQgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogICAgICAgIHMubWlncmF0ZURpc2FibGVQYXRjaGVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB0W2FyZ3VtZW50c1tlXV0gPSAhMAogICAgICAgIH0sIHMubWlncmF0ZUVuYWJsZVBhdGNoZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IDA7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIGRlbGV0ZSB0W2FyZ3VtZW50c1tlXV0KICAgICAgICB9LCBzLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICF0W2VdCiAgICAgICAgfSwgbi5jb25zb2xlICYmIG4uY29uc29sZS5sb2cgJiYgKHMgJiYgZSgiMy4wLjAiKSAmJiAhZSgiNS4wLjAiKSB8fCBuLmNvbnNvbGUubG9nKCJKUU1JR1JBVEU6IGpRdWVyeSAzLngtNC54IFJFUVVJUkVEIiksIHMubWlncmF0ZVdhcm5pbmdzICYmIG4uY29uc29sZS5sb2coIkpRTUlHUkFURTogTWlncmF0ZSBwbHVnaW4gbG9hZGVkIG11bHRpcGxlIHRpbWVzIiksIG4uY29uc29sZS5sb2coIkpRTUlHUkFURTogTWlncmF0ZSBpcyBpbnN0YWxsZWQiICsgKHMubWlncmF0ZU11dGUgPyAiIiA6ICIgd2l0aCBsb2dnaW5nIGFjdGl2ZSIpICsgIiwgdmVyc2lvbiAiICsgcy5taWdyYXRlVmVyc2lvbikpOwogICAgICAgIHZhciBvID0ge307CgogICAgICAgIGZ1bmN0aW9uIHUoZSwgdCkgewogICAgICAgICAgICB2YXIgciA9IG4uY29uc29sZTsKICAgICAgICAgICAgIXMubWlncmF0ZUlzUGF0Y2hFbmFibGVkKGUpIHx8IHMubWlncmF0ZURlZHVwbGljYXRlV2FybmluZ3MgJiYgb1t0XSB8fCAob1t0XSA9ICEwLCBzLm1pZ3JhdGVXYXJuaW5ncy5wdXNoKHQgKyAiIFsiICsgZSArICJdIiksIHIgJiYgci53YXJuICYmICFzLm1pZ3JhdGVNdXRlICYmIChyLndhcm4oIkpRTUlHUkFURTogIiArIHQpLCBzLm1pZ3JhdGVUcmFjZSAmJiByLnRyYWNlICYmIHIudHJhY2UoKSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByKGUsIHQsIHIsIG4sIG8pIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUobiwgbyksIHIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB1KG4sIG8pLCByID0gZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYShlLCB0LCByLCBuLCBvKSB7CiAgICAgICAgICAgIHZhciBhID0gZVt0XTsKICAgICAgICAgICAgZVt0XSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8gJiYgdShuLCBvKSwgKHMubWlncmF0ZUlzUGF0Y2hFbmFibGVkKG4pID8gciA6IGEgfHwgcy5ub29wKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGMoZSwgdCwgciwgbiwgbykgewogICAgICAgICAgICBpZiAoIW8pIHRocm93IG5ldyBFcnJvcigiTm8gd2FybmluZyBtZXNzYWdlIHByb3ZpZGVkIik7CiAgICAgICAgICAgIHJldHVybiBhKGUsIHQsIHIsIG4sIG8pLCAwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpKGUsIHQsIHIsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGEoZSwgdCwgciwgbiksIDAKICAgICAgICB9CiAgICAgICAgcy5taWdyYXRlRGVkdXBsaWNhdGVXYXJuaW5ncyA9ICEwLCBzLm1pZ3JhdGVXYXJuaW5ncyA9IFtdLCB2b2lkIDAgPT09IHMubWlncmF0ZVRyYWNlICYmIChzLm1pZ3JhdGVUcmFjZSA9ICEwKSwgcy5taWdyYXRlUmVzZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgbyA9IHt9LCBzLm1pZ3JhdGVXYXJuaW5ncy5sZW5ndGggPSAwCiAgICAgICAgfSwgIkJhY2tDb21wYXQiID09PSBuLmRvY3VtZW50LmNvbXBhdE1vZGUgJiYgdSgicXVpcmtzIiwgImpRdWVyeSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFF1aXJrcyBNb2RlIik7CiAgICAgICAgdmFyIGQsIGwsIHAsIGYgPSB7fSwKICAgICAgICAgICAgbSA9IHMuZm4uaW5pdCwKICAgICAgICAgICAgeSA9IHMuZmluZCwKICAgICAgICAgICAgaCA9IC9cWyhccypbLVx3XStccyopKFt+fF4kKl0/PSlccyooWy1cdyNdKj8jWy1cdyNdKilccypcXS8sCiAgICAgICAgICAgIGcgPSAvXFsoXHMqWy1cd10rXHMqKShbfnxeJCpdPz0pXHMqKFstXHcjXSo/I1stXHcjXSopXHMqXF0vZywKICAgICAgICAgICAgdiA9IC9eW1xzXHVGRUZGXHhBMF0rfChbXlxzXHVGRUZGXHhBMF0pW1xzXHVGRUZGXHhBMF0rJC9nOwogICAgICAgIGZvciAoZCBpbiBpKHMuZm4sICJpbml0IiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgcmV0dXJuIHMubWlncmF0ZUlzUGF0Y2hFbmFibGVkKCJzZWxlY3Rvci1lbXB0eS1pZCIpICYmICJzdHJpbmciID09IHR5cGVvZiBlICYmICIjIiA9PT0gZSAmJiAodSgic2VsZWN0b3ItZW1wdHktaWQiLCAialF1ZXJ5KCAnIycgKSBpcyBub3QgYSB2YWxpZCBzZWxlY3RvciIpLCB0WzBdID0gW10pLCBtLmFwcGx5KHRoaXMsIHQpCiAgICAgICAgICAgIH0sICJzZWxlY3Rvci1lbXB0eS1pZCIpLCBzLmZuLmluaXQucHJvdG90eXBlID0gcy5mbiwgaShzLCAiZmluZCIsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciByID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiBoLnRlc3QodCkpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdCA9IHQucmVwbGFjZShnLCBmdW5jdGlvbihlLCB0LCByLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiWyIgKyB0ICsgciArICciJyArIG4gKyAnIl0nCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpLCB1KCJzZWxlY3Rvci1oYXNoIiwgIkF0dHJpYnV0ZSBzZWxlY3RvciB3aXRoICcjJyBtdXN0IGJlIHF1b3RlZDogIiArIHJbMF0pLCByWzBdID0gdAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdSgic2VsZWN0b3ItaGFzaCIsICJBdHRyaWJ1dGUgc2VsZWN0b3Igd2l0aCAnIycgd2FzIG5vdCBmaXhlZDogIiArIHJbMF0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHkuYXBwbHkodGhpcywgcikKICAgICAgICAgICAgfSwgInNlbGVjdG9yLWhhc2giKSwgeSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHksIGQpICYmIChzLmZpbmRbZF0gPSB5W2RdKTsKICAgICAgICBjKHMuZm4sICJzaXplIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aAogICAgICAgIH0sICJzaXplIiwgImpRdWVyeS5mbi5zaXplKCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDsgdXNlIHRoZSAubGVuZ3RoIHByb3BlcnR5IiksIGMocywgInBhcnNlSlNPTiIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgfSwgInBhcnNlSlNPTiIsICJqUXVlcnkucGFyc2VKU09OIGlzIGRlcHJlY2F0ZWQ7IHVzZSBKU09OLnBhcnNlIiksIGMocywgImhvbGRSZWFkeSIsIHMuaG9sZFJlYWR5LCAiaG9sZFJlYWR5IiwgImpRdWVyeS5ob2xkUmVhZHkgaXMgZGVwcmVjYXRlZCIpLCBjKHMsICJ1bmlxdWUiLCBzLnVuaXF1ZVNvcnQsICJ1bmlxdWUiLCAialF1ZXJ5LnVuaXF1ZSBpcyBkZXByZWNhdGVkOyB1c2UgalF1ZXJ5LnVuaXF1ZVNvcnQiKSwgcihzLmV4cHIsICJmaWx0ZXJzIiwgcy5leHByLnBzZXVkb3MsICJleHByLXByZS1wc2V1ZG9zIiwgImpRdWVyeS5leHByLmZpbHRlcnMgaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS5leHByLnBzZXVkb3MiKSwgcihzLmV4cHIsICI6Iiwgcy5leHByLnBzZXVkb3MsICJleHByLXByZS1wc2V1ZG9zIiwgImpRdWVyeS5leHByWyc6J10gaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS5leHByLnBzZXVkb3MiKSwgZSgiMy4xLjEiKSAmJiBjKHMsICJ0cmltIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gIiIgOiAoZSArICIiKS5yZXBsYWNlKHYsICIkMSIpCiAgICAgICAgfSwgInRyaW0iLCAialF1ZXJ5LnRyaW0gaXMgZGVwcmVjYXRlZDsgdXNlIFN0cmluZy5wcm90b3R5cGUudHJpbSIpLCBlKCIzLjIuMCIpICYmIChjKHMsICJub2RlTmFtZSIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIGUubm9kZU5hbWUgJiYgZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0LnRvTG93ZXJDYXNlKCkKICAgICAgICB9LCAibm9kZU5hbWUiLCAialF1ZXJ5Lm5vZGVOYW1lIGlzIGRlcHJlY2F0ZWQiKSwgYyhzLCAiaXNBcnJheSIsIEFycmF5LmlzQXJyYXksICJpc0FycmF5IiwgImpRdWVyeS5pc0FycmF5IGlzIGRlcHJlY2F0ZWQ7IHVzZSBBcnJheS5pc0FycmF5IikpLCBlKCIzLjMuMCIpICYmIChjKHMsICJpc051bWVyaWMiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gdHlwZW9mIGU7CiAgICAgICAgICAgIHJldHVybiAoIm51bWJlciIgPT0gdCB8fCAic3RyaW5nIiA9PSB0KSAmJiAhaXNOYU4oZSAtIHBhcnNlRmxvYXQoZSkpCiAgICAgICAgfSwgImlzTnVtZXJpYyIsICJqUXVlcnkuaXNOdW1lcmljKCkgaXMgZGVwcmVjYXRlZCIpLCBzLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGZbIltvYmplY3QgIiArIHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpCiAgICAgICAgfSksIGMocywgInR5cGUiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyBlICsgIiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gZltPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGUKICAgICAgICB9LCAidHlwZSIsICJqUXVlcnkudHlwZSBpcyBkZXByZWNhdGVkIiksIGMocywgImlzRnVuY3Rpb24iLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlCiAgICAgICAgfSwgImlzRnVuY3Rpb24iLCAialF1ZXJ5LmlzRnVuY3Rpb24oKSBpcyBkZXByZWNhdGVkIiksIGMocywgImlzV2luZG93IiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYmIGUgPT09IGUud2luZG93CiAgICAgICAgfSwgImlzV2luZG93IiwgImpRdWVyeS5pc1dpbmRvdygpIGlzIGRlcHJlY2F0ZWQiKSksIHMuYWpheCAmJiAobCA9IHMuYWpheCwgcCA9IC8oPSlcPyg/PSZ8JCl8XD9cPy8sIGkocywgImFqYXgiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgIHJldHVybiBlLnByb21pc2UgJiYgKGMoZSwgInN1Y2Nlc3MiLCBlLmRvbmUsICJqcVhIUi1tZXRob2RzIiwgImpRWEhSLnN1Y2Nlc3MgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLCBjKGUsICJlcnJvciIsIGUuZmFpbCwgImpxWEhSLW1ldGhvZHMiLCAialFYSFIuZXJyb3IgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLCBjKGUsICJjb21wbGV0ZSIsIGUuYWx3YXlzLCAianFYSFItbWV0aG9kcyIsICJqUVhIUi5jb21wbGV0ZSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkIikpLCBlCiAgICAgICAgfSwgImpxWEhSLW1ldGhvZHMiKSwgZSgiNC4wLjAiKSB8fCBzLmFqYXhQcmVmaWx0ZXIoIitqc29uIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAhMSAhPT0gZS5qc29ucCAmJiAocC50ZXN0KGUudXJsKSB8fCAic3RyaW5nIiA9PSB0eXBlb2YgZS5kYXRhICYmIDAgPT09IChlLmNvbnRlbnRUeXBlIHx8ICIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSAmJiBwLnRlc3QoZS5kYXRhKSkgJiYgdSgianNvbnAtcHJvbW90aW9uIiwgIkpTT04tdG8tSlNPTlAgYXV0by1wcm9tb3Rpb24gaXMgZGVwcmVjYXRlZCIpCiAgICAgICAgfSkpOwogICAgICAgIHZhciBqID0gcy5mbi5yZW1vdmVBdHRyLAogICAgICAgICAgICBiID0gcy5mbi50b2dnbGVDbGFzcywKICAgICAgICAgICAgdyA9IC9cUysvZzsKCiAgICAgICAgZnVuY3Rpb24geChlKSB7CiAgICAgICAgICAgIHJldHVybiBlLnJlcGxhY2UoLy0oW2Etel0pL2csIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0LnRvVXBwZXJDYXNlKCkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgaShzLmZuLCAicmVtb3ZlQXR0ciIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHIgPSB0aGlzLAogICAgICAgICAgICAgICAgbiA9ICExOwogICAgICAgICAgICByZXR1cm4gcy5lYWNoKGUubWF0Y2godyksIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHMuZXhwci5tYXRjaC5ib29sLnRlc3QodCkgJiYgci5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICghMSAhPT0gcyh0aGlzKS5wcm9wKHQpKSByZXR1cm4gIShuID0gITApCiAgICAgICAgICAgICAgICB9KSwgbiAmJiAodSgicmVtb3ZlQXR0ci1ib29sIiwgImpRdWVyeS5mbi5yZW1vdmVBdHRyIG5vIGxvbmdlciBzZXRzIGJvb2xlYW4gcHJvcGVydGllczogIiArIHQpLCByLnByb3AodCwgITEpKQogICAgICAgICAgICB9KSwgai5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgfSwgInJlbW92ZUF0dHItYm9vbCIpLCBpKHMuZm4sICJ0b2dnbGVDbGFzcyIsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gdCAmJiAiYm9vbGVhbiIgIT0gdHlwZW9mIHQgPyBiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiAodSgidG9nZ2xlQ2xhc3MtYm9vbCIsICJqUXVlcnkuZm4udG9nZ2xlQ2xhc3MoIGJvb2xlYW4gKSBpcyBkZXByZWNhdGVkIiksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5nZXRBdHRyaWJ1dGUgJiYgdGhpcy5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiI7CiAgICAgICAgICAgICAgICBlICYmIHMuZGF0YSh0aGlzLCAiX19jbGFzc05hbWVfXyIsIGUpLCB0aGlzLnNldEF0dHJpYnV0ZSAmJiB0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAhZSAmJiAhMSAhPT0gdCAmJiBzLmRhdGEodGhpcywgIl9fY2xhc3NOYW1lX18iKSB8fCAiIikKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwgInRvZ2dsZUNsYXNzLWJvb2wiKTsKICAgICAgICB2YXIgUSwgQSwgUiA9ICExLAogICAgICAgICAgICBDID0gL15bYS16XS8sCiAgICAgICAgICAgIE4gPSAvXig/OkJvcmRlcig/OlRvcHxSaWdodHxCb3R0b218TGVmdCk/KD86V2lkdGh8KXwoPzpNYXJnaW58UGFkZGluZyk/KD86VG9wfFJpZ2h0fEJvdHRvbXxMZWZ0KT98KD86TWlufE1heCk/KD86V2lkdGh8SGVpZ2h0KSkkLzsKICAgICAgICBzLnN3YXAgJiYgcy5lYWNoKFsiaGVpZ2h0IiwgIndpZHRoIiwgInJlbGlhYmxlTWFyZ2luUmlnaHQiXSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgciA9IHMuY3NzSG9va3NbdF0gJiYgcy5jc3NIb29rc1t0XS5nZXQ7CiAgICAgICAgICAgIHIgJiYgKHMuY3NzSG9va3NbdF0uZ2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgIHJldHVybiBSID0gITAsIGUgPSByLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIFIgPSAhMSwgZQogICAgICAgICAgICB9KQogICAgICAgIH0pLCBpKHMsICJzd2FwIiwgZnVuY3Rpb24oZSwgdCwgciwgbikgewogICAgICAgICAgICB2YXIgbywgYSwgaSA9IHt9OwogICAgICAgICAgICBmb3IgKGEgaW4gUiB8fCB1KCJzd2FwIiwgImpRdWVyeS5zd2FwKCkgaXMgdW5kb2N1bWVudGVkIGFuZCBkZXByZWNhdGVkIiksIHQpIGlbYV0gPSBlLnN0eWxlW2FdLCBlLnN0eWxlW2FdID0gdFthXTsKICAgICAgICAgICAgZm9yIChhIGluIG8gPSByLmFwcGx5KGUsIG4gfHwgW10pLCB0KSBlLnN0eWxlW2FdID0gaVthXTsKICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICB9LCAic3dhcCIpLCBlKCIzLjQuMCIpICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBQcm94eSAmJiAocy5jc3NQcm9wcyA9IG5ldyBQcm94eShzLmNzc1Byb3BzIHx8IHt9LCB7CiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdSgiY3NzUHJvcHMiLCAialF1ZXJ5LmNzc1Byb3BzIGlzIGRlcHJlY2F0ZWQiKSwgUmVmbGVjdC5zZXQuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgfSkpLCBlKCI0LjAuMCIpID8gKEEgPSB7CiAgICAgICAgICAgIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiAhMCwKICAgICAgICAgICAgY29sdW1uQ291bnQ6ICEwLAogICAgICAgICAgICBmaWxsT3BhY2l0eTogITAsCiAgICAgICAgICAgIGZsZXhHcm93OiAhMCwKICAgICAgICAgICAgZmxleFNocmluazogITAsCiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICEwLAogICAgICAgICAgICBncmlkQXJlYTogITAsCiAgICAgICAgICAgIGdyaWRDb2x1bW46ICEwLAogICAgICAgICAgICBncmlkQ29sdW1uRW5kOiAhMCwKICAgICAgICAgICAgZ3JpZENvbHVtblN0YXJ0OiAhMCwKICAgICAgICAgICAgZ3JpZFJvdzogITAsCiAgICAgICAgICAgIGdyaWRSb3dFbmQ6ICEwLAogICAgICAgICAgICBncmlkUm93U3RhcnQ6ICEwLAogICAgICAgICAgICBsaW5lSGVpZ2h0OiAhMCwKICAgICAgICAgICAgb3BhY2l0eTogITAsCiAgICAgICAgICAgIG9yZGVyOiAhMCwKICAgICAgICAgICAgb3JwaGFuczogITAsCiAgICAgICAgICAgIHdpZG93czogITAsCiAgICAgICAgICAgIHpJbmRleDogITAsCiAgICAgICAgICAgIHpvb206ICEwCiAgICAgICAgfSwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIFByb3h5ID8gcy5jc3NOdW1iZXIgPSBuZXcgUHJveHkoQSwgewogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHUoImNzcy1udW1iZXIiLCAialF1ZXJ5LmNzc051bWJlciBpcyBkZXByZWNhdGVkIiksIFJlZmxlY3QuZ2V0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB1KCJjc3MtbnVtYmVyIiwgImpRdWVyeS5jc3NOdW1iZXIgaXMgZGVwcmVjYXRlZCIpLCBSZWZsZWN0LnNldC5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9KSA6IHMuY3NzTnVtYmVyID0gQSkgOiBBID0gcy5jc3NOdW1iZXIsIFEgPSBzLmZuLmNzcywgaShzLmZuLCAiY3NzIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgciwgbiwgbyA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiBlICYmICJvYmplY3QiID09IHR5cGVvZiBlICYmICFBcnJheS5pc0FycmF5KGUpID8gKHMuZWFjaChlLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBzLmZuLmNzcy5jYWxsKG8sIGUsIHQpCiAgICAgICAgICAgIH0pLCB0aGlzKSA6ICgibnVtYmVyIiA9PSB0eXBlb2YgdCAmJiAociA9IHgoZSksIG4gPSByLCBDLnRlc3QobikgJiYgTi50ZXN0KG5bMF0udG9VcHBlckNhc2UoKSArIG4uc2xpY2UoMSkpIHx8IEFbcl0gfHwgdSgiY3NzLW51bWJlciIsICdOdW1iZXItdHlwZWQgdmFsdWVzIGFyZSBkZXByZWNhdGVkIGZvciBqUXVlcnkuZm4uY3NzKCAiJyArIGUgKyAnIiwgdmFsdWUgKScpKSwgUS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgIH0sICJjc3MtbnVtYmVyIik7CiAgICAgICAgdmFyIFMsIFAsIGssIEgsIEUgPSBzLmRhdGE7CiAgICAgICAgaShzLCAiZGF0YSIsIGZ1bmN0aW9uKGUsIHQsIHIpIHsKICAgICAgICAgICAgdmFyIG4sIG8sIGE7CiAgICAgICAgICAgIGlmICh0ICYmICJvYmplY3QiID09IHR5cGVvZiB0ICYmIDIgPT09IGFyZ3VtZW50cy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGZvciAoYSBpbiBuID0gcy5oYXNEYXRhKGUpICYmIEUuY2FsbCh0aGlzLCBlKSwgbyA9IHt9LCB0KSBhICE9PSB4KGEpID8gKHUoImRhdGEtY2FtZWxDYXNlIiwgImpRdWVyeS5kYXRhKCkgYWx3YXlzIHNldHMvZ2V0cyBjYW1lbENhc2VkIG5hbWVzOiAiICsgYSksIG5bYV0gPSB0W2FdKSA6IG9bYV0gPSB0W2FdOwogICAgICAgICAgICAgICAgcmV0dXJuIEUuY2FsbCh0aGlzLCBlLCBvKSwgdAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0ICYmICJzdHJpbmciID09IHR5cGVvZiB0ICYmIHQgIT09IHgodCkgJiYgKG4gPSBzLmhhc0RhdGEoZSkgJiYgRS5jYWxsKHRoaXMsIGUpKSAmJiB0IGluIG4gPyAodSgiZGF0YS1jYW1lbENhc2UiLCAialF1ZXJ5LmRhdGEoKSBhbHdheXMgc2V0cy9nZXRzIGNhbWVsQ2FzZWQgbmFtZXM6ICIgKyB0KSwgMiA8IGFyZ3VtZW50cy5sZW5ndGggJiYgKG5bdF0gPSByKSwgblt0XSkgOiBFLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICB9LCAiZGF0YS1jYW1lbENhc2UiKSwgcy5meCAmJiAoayA9IHMuVHdlZW4ucHJvdG90eXBlLnJ1biwgSCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LCBpKHMuVHdlZW4ucHJvdG90eXBlLCAicnVuIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIDEgPCBzLmVhc2luZ1t0aGlzLmVhc2luZ10ubGVuZ3RoICYmICh1KCJlYXNpbmctb25lLWFyZyIsICInalF1ZXJ5LmVhc2luZy4iICsgdGhpcy5lYXNpbmcudG9TdHJpbmcoKSArICInIHNob3VsZCB1c2Ugb25seSBvbmUgYXJndW1lbnQiKSwgcy5lYXNpbmdbdGhpcy5lYXNpbmddID0gSCksIGsuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgIH0sICJlYXNpbmctb25lLWFyZyIpLCBTID0gcy5meC5pbnRlcnZhbCwgUCA9ICJqUXVlcnkuZnguaW50ZXJ2YWwgaXMgZGVwcmVjYXRlZCIsIG4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLmZ4LCAiaW50ZXJ2YWwiLCB7CiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG4uZG9jdW1lbnQuaGlkZGVuIHx8IHUoImZ4LWludGVydmFsIiwgUCksIHMubWlncmF0ZUlzUGF0Y2hFbmFibGVkKCJmeC1pbnRlcnZhbCIpICYmIHZvaWQgMCA9PT0gUyA/IDEzIDogUwogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHUoImZ4LWludGVydmFsIiwgUCksIFMgPSBlCiAgICAgICAgICAgIH0KICAgICAgICB9KSk7CiAgICAgICAgdmFyIE0gPSBzLmZuLmxvYWQsCiAgICAgICAgICAgIHEgPSBzLmV2ZW50LmFkZCwKICAgICAgICAgICAgTyA9IHMuZXZlbnQuZml4OwogICAgICAgIHMuZXZlbnQucHJvcHMgPSBbXSwgcy5ldmVudC5maXhIb29rcyA9IHt9LCByKHMuZXZlbnQucHJvcHMsICJjb25jYXQiLCBzLmV2ZW50LnByb3BzLmNvbmNhdCwgImV2ZW50LW9sZC1wYXRjaCIsICJqUXVlcnkuZXZlbnQucHJvcHMuY29uY2F0KCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLCBpKHMuZXZlbnQsICJmaXgiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCByID0gZS50eXBlLAogICAgICAgICAgICAgICAgbiA9IHRoaXMuZml4SG9va3Nbcl0sCiAgICAgICAgICAgICAgICBvID0gcy5ldmVudC5wcm9wczsKICAgICAgICAgICAgaWYgKG8ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICB1KCJldmVudC1vbGQtcGF0Y2giLCAialF1ZXJ5LmV2ZW50LnByb3BzIGFyZSBkZXByZWNhdGVkIGFuZCByZW1vdmVkOiAiICsgby5qb2luKCkpOwogICAgICAgICAgICAgICAgd2hpbGUgKG8ubGVuZ3RoKSBzLmV2ZW50LmFkZFByb3Aoby5wb3AoKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobiAmJiAhbi5fbWlncmF0ZWRfICYmIChuLl9taWdyYXRlZF8gPSAhMCwgdSgiZXZlbnQtb2xkLXBhdGNoIiwgImpRdWVyeS5ldmVudC5maXhIb29rcyBhcmUgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDogIiArIHIpLCAobyA9IG4ucHJvcHMpICYmIG8ubGVuZ3RoKSkKICAgICAgICAgICAgICAgIHdoaWxlIChvLmxlbmd0aCkgcy5ldmVudC5hZGRQcm9wKG8ucG9wKCkpOwogICAgICAgICAgICByZXR1cm4gdCA9IE8uY2FsbCh0aGlzLCBlKSwgbiAmJiBuLmZpbHRlciA/IG4uZmlsdGVyKHQsIGUpIDogdAogICAgICAgIH0sICJldmVudC1vbGQtcGF0Y2giKSwgaShzLmV2ZW50LCAiYWRkIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gZSA9PT0gbiAmJiAibG9hZCIgPT09IHQgJiYgImNvbXBsZXRlIiA9PT0gbi5kb2N1bWVudC5yZWFkeVN0YXRlICYmIHUoImxvYWQtYWZ0ZXItZXZlbnQiLCAialF1ZXJ5KHdpbmRvdykub24oJ2xvYWQnLi4uKSBjYWxsZWQgYWZ0ZXIgbG9hZCBldmVudCBvY2N1cnJlZCIpLCBxLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICB9LCAibG9hZC1hZnRlci1ldmVudCIpLCBzLmVhY2goWyJsb2FkIiwgInVubG9hZCIsICJlcnJvciJdLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGkocy5mbiwgdCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gImxvYWQiID09PSB0ICYmICJzdHJpbmciID09IHR5cGVvZiBlWzBdID8gTS5hcHBseSh0aGlzLCBlKSA6ICh1KCJzaG9ydGhhbmQtcmVtb3ZlZC12MyIsICJqUXVlcnkuZm4uIiArIHQgKyAiKCkgaXMgZGVwcmVjYXRlZCIpLCBlLnNwbGljZSgwLCAwLCB0KSwgYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub24uYXBwbHkodGhpcywgZSkgOiAodGhpcy50cmlnZ2VySGFuZGxlci5hcHBseSh0aGlzLCBlKSwgdGhpcykpCiAgICAgICAgICAgIH0sICJzaG9ydGhhbmQtcmVtb3ZlZC12MyIpCiAgICAgICAgfSksIHMuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oZSwgcikgewogICAgICAgICAgICBjKHMuZm4sIHIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAwIDwgYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub24ociwgbnVsbCwgZSwgdCkgOiB0aGlzLnRyaWdnZXIocikKICAgICAgICAgICAgfSwgInNob3J0aGFuZC1kZXByZWNhdGVkLXYzIiwgImpRdWVyeS5mbi4iICsgciArICIoKSBldmVudCBzaG9ydGhhbmQgaXMgZGVwcmVjYXRlZCIpCiAgICAgICAgfSksIHMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHMobi5kb2N1bWVudCkudHJpZ2dlckhhbmRsZXIoInJlYWR5IikKICAgICAgICB9KSwgcy5ldmVudC5zcGVjaWFsLnJlYWR5ID0gewogICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzID09PSBuLmRvY3VtZW50ICYmIHUoInJlYWR5LWV2ZW50IiwgIidyZWFkeScgZXZlbnQgaXMgZGVwcmVjYXRlZCIpCiAgICAgICAgICAgIH0KICAgICAgICB9LCBjKHMuZm4sICJiaW5kIiwgZnVuY3Rpb24oZSwgdCwgcikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vbihlLCBudWxsLCB0LCByKQogICAgICAgIH0sICJwcmUtb24tbWV0aG9kcyIsICJqUXVlcnkuZm4uYmluZCgpIGlzIGRlcHJlY2F0ZWQiKSwgYyhzLmZuLCAidW5iaW5kIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vZmYoZSwgbnVsbCwgdCkKICAgICAgICB9LCAicHJlLW9uLW1ldGhvZHMiLCAialF1ZXJ5LmZuLnVuYmluZCgpIGlzIGRlcHJlY2F0ZWQiKSwgYyhzLmZuLCAiZGVsZWdhdGUiLCBmdW5jdGlvbihlLCB0LCByLCBuKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKHQsIGUsIHIsIG4pCiAgICAgICAgfSwgInByZS1vbi1tZXRob2RzIiwgImpRdWVyeS5mbi5kZWxlZ2F0ZSgpIGlzIGRlcHJlY2F0ZWQiKSwgYyhzLmZuLCAidW5kZWxlZ2F0ZSIsIGZ1bmN0aW9uKGUsIHQsIHIpIHsKICAgICAgICAgICAgcmV0dXJuIDEgPT09IGFyZ3VtZW50cy5sZW5ndGggPyB0aGlzLm9mZihlLCAiKioiKSA6IHRoaXMub2ZmKHQsIGUgfHwgIioqIiwgcikKICAgICAgICB9LCAicHJlLW9uLW1ldGhvZHMiLCAialF1ZXJ5LmZuLnVuZGVsZWdhdGUoKSBpcyBkZXByZWNhdGVkIiksIGMocy5mbiwgImhvdmVyIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vbigibW91c2VlbnRlciIsIGUpLm9uKCJtb3VzZWxlYXZlIiwgdCB8fCBlKQogICAgICAgIH0sICJwcmUtb24tbWV0aG9kcyIsICJqUXVlcnkuZm4uaG92ZXIoKSBpcyBkZXByZWNhdGVkIik7CgogICAgICAgIGZ1bmN0aW9uIFQoZSkgewogICAgICAgICAgICB2YXIgdCA9IG4uZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKTsKICAgICAgICAgICAgcmV0dXJuIHQuYm9keS5pbm5lckhUTUwgPSBlLCB0LmJvZHkgJiYgdC5ib2R5LmlubmVySFRNTAogICAgICAgIH0KICAgICAgICB2YXIgRiA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naTsKICAgICAgICBzLlVOU0FGRV9yZXN0b3JlTGVnYWN5SHRtbFByZWZpbHRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzLm1pZ3JhdGVFbmFibGVQYXRjaGVzKCJzZWxmLWNsb3NlZC10YWdzIikKICAgICAgICB9LCBpKHMsICJodG1sUHJlZmlsdGVyIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgcjsKICAgICAgICAgICAgcmV0dXJuIChyID0gKHQgPSBlKS5yZXBsYWNlKEYsICI8JDE+PC8kMj4iKSkgIT09IHQgJiYgVCh0KSAhPT0gVChyKSAmJiB1KCJzZWxmLWNsb3NlZC10YWdzIiwgIkhUTUwgdGFncyBtdXN0IGJlIHByb3Blcmx5IG5lc3RlZCBhbmQgY2xvc2VkOiAiICsgdCksIGUucmVwbGFjZShGLCAiPCQxPjwvJDI+IikKICAgICAgICB9LCAic2VsZi1jbG9zZWQtdGFncyIpLCBzLm1pZ3JhdGVEaXNhYmxlUGF0Y2hlcygic2VsZi1jbG9zZWQtdGFncyIpOwogICAgICAgIHZhciBELCBXLCBfLCBJID0gcy5mbi5vZmZzZXQ7CiAgICAgICAgcmV0dXJuIGkocy5mbiwgIm9mZnNldCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXNbMF07CiAgICAgICAgICAgIHJldHVybiAhZSB8fCBlLm5vZGVUeXBlICYmIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID8gSS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogKHUoIm9mZnNldC12YWxpZC1lbGVtIiwgImpRdWVyeS5mbi5vZmZzZXQoKSByZXF1aXJlcyBhIHZhbGlkIERPTSBlbGVtZW50IiksIGFyZ3VtZW50cy5sZW5ndGggPyB0aGlzIDogdm9pZCAwKQogICAgICAgIH0sICJvZmZzZXQtdmFsaWQtZWxlbSIpLCBzLmFqYXggJiYgKEQgPSBzLnBhcmFtLCBpKHMsICJwYXJhbSIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBzLmFqYXhTZXR0aW5ncyAmJiBzLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCAmJiByICYmICh1KCJwYXJhbS1hamF4LXRyYWRpdGlvbmFsIiwgImpRdWVyeS5wYXJhbSgpIG5vIGxvbmdlciB1c2VzIGpRdWVyeS5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwiKSwgdCA9IHIpLCBELmNhbGwodGhpcywgZSwgdCkKICAgICAgICB9LCAicGFyYW0tYWpheC10cmFkaXRpb25hbCIpKSwgYyhzLmZuLCAiYW5kU2VsZiIsIHMuZm4uYWRkQmFjaywgImFuZFNlbGYiLCAialF1ZXJ5LmZuLmFuZFNlbGYoKSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkLCB1c2UgalF1ZXJ5LmZuLmFkZEJhY2soKSIpLCBzLkRlZmVycmVkICYmIChXID0gcy5EZWZlcnJlZCwgXyA9IFsKICAgICAgICAgICAgWyJyZXNvbHZlIiwgImRvbmUiLCBzLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgcy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksICJyZXNvbHZlZCJdLAogICAgICAgICAgICBbInJlamVjdCIsICJmYWlsIiwgcy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIHMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAicmVqZWN0ZWQiXSwKICAgICAgICAgICAgWyJub3RpZnkiLCAicHJvZ3Jlc3MiLCBzLkNhbGxiYWNrcygibWVtb3J5IiksIHMuQ2FsbGJhY2tzKCJtZW1vcnkiKV0KICAgICAgICBdLCBpKHMsICJEZWZlcnJlZCIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIGEgPSBXKCksCiAgICAgICAgICAgICAgICBpID0gYS5wcm9taXNlKCk7CgogICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgdmFyIG8gPSBhcmd1bWVudHM7CiAgICAgICAgICAgICAgICByZXR1cm4gcy5EZWZlcnJlZChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgcy5lYWNoKF8sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBvW2VdICYmIG9bZV07CiAgICAgICAgICAgICAgICAgICAgICAgIGFbdFsxXV0oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHIgJiYgci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLnByb21pc2UgPyBlLnByb21pc2UoKS5kb25lKG4ucmVzb2x2ZSkuZmFpbChuLnJlamVjdCkucHJvZ3Jlc3Mobi5ub3RpZnkpIDogblt0WzBdICsgIldpdGgiXSh0aGlzID09PSBpID8gbi5wcm9taXNlKCkgOiB0aGlzLCByID8gW2VdIDogYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pLCBvID0gbnVsbAogICAgICAgICAgICAgICAgfSkucHJvbWlzZSgpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGMoYSwgInBpcGUiLCB0LCAiZGVmZXJyZWQtcGlwZSIsICJkZWZlcnJlZC5waXBlKCkgaXMgZGVwcmVjYXRlZCIpLCBjKGksICJwaXBlIiwgdCwgImRlZmVycmVkLXBpcGUiLCAiZGVmZXJyZWQucGlwZSgpIGlzIGRlcHJlY2F0ZWQiKSwgZSAmJiBlLmNhbGwoYSwgYSksIGEKICAgICAgICB9LCAiZGVmZXJyZWQtcGlwZSIpLCBzLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBXLmV4Y2VwdGlvbkhvb2spLCBzCiAgICB9KTs="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_42x16dp.png","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:11.830Z","timestamp":1785130091830,"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 /images/branding/googlelogo/1x/googlelogo_color_42x16dp.png HTTP/1.1\r\nHost: www.gstatic.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://dreamspinfluence.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, 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\naccept-ranges: bytes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 910\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: Thu, 02 Nov 2023 22:48:00 GMT\r\ncontent-type: image/png\r\nvary: Origin\r\nage: 404278\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":910,"size_decoded":1583,"mime_type":"image/png","magic":"PNG image data, 42 x 16, 8-bit/color RGBA, non-interlaced","md5":"efa6bb2bfe459bc6f4bdafa3db0383f6","sha1":"52d15ce52fe50643e542c17812de43f4ed1b6ee0","sha256":"6318394f737c66f0e2ccfcd88e3935c6667633a1b95fa29fba2b75431d55eef2","sha512":"e23c04d8997f5c2f92070e09261b7ee50d9df8753f45cf66f604f0874ffa8d99e947c97c528ec02a2c3fbe8e43d840b343a7d0225532980d5da95031216415b7","ssdeep":"","tlshash":"491184a73cd1dc6854a47a87aa91b864ec250f1b91a220981237b42277313444fdc8f7","first_seen":"2023-04-05T07:39:29Z","last_seen":"2026-08-02T16:42:24.490693Z","times_seen":56199,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAQCAYAAABgIu2QAAADVUlEQVR4AcxUA9AdPRRNbdu2+7K//+4mW9vWqNbYU2z21bZt27Zt+6nK5lUftrkPO7V1Zu7iZnJycoUc2HYC4hZVKROjqCnmEdMaoDJRHv1g4HmNKuCFjVX0OajeO5CWML5eCrSlnaGMr5VCr4X+mdXrhwpd0GgKXtDgAPoUIJIgTDPFE42JalF37952QspE+6rG0zy/hVDdsDSInHy3Qp8Jr6pk99A/s7333ttRdrD3ramDRHbd/STTp4QG6F+5fNUq5kCvg5qWmxr8qWuincTxsWAu1bRKR42avCT4H1TFeXxU2ePTFRvMo7t2AmlI4ObkeWM2J9kTsyWJDSa/d8ZvSRFaU3vzzJohNkFA5Fnx8sz9mmGJt4XeVV2ZvTreFuWXZy29rqrJEYAwMUYKuYccgM+aAKRR0wweayOUwEdc++Tm034dK/e1in96CT7nocoO20YJpLh9MVsSnX65ObHyclviP+X3ORAbvri1kjJ+mxi8EmWiIjHFKeB9W6hXV+Z7iXITuMF8RBHyPDeKkHSDTeqAYO7XU6SavDgYYWKEjEYgoP6RG27pp7iOUwI6bgQ+MShn+XAkkzprMZuTNgLfxlmNC0AUNca7OIEwecP3CZXCglLsCMk7xEtcDyAwcAYC/GfyLHKTRQ2xEBoIvYbave2U0n8exhWkPZKS2o7Qyrgh+F70z1khnO5EzlrMpqQNwbdhVuvC4cwEO0bXNBas9yGhYF6qTPRWUd4ZjRDVJprJ42TktgEJzE/ZXM3k/0kp9CExHheC1Huo67CPuo7fr4JLy2YqC2Ughe6NpP6wTPfxFxuTlH6xJUlZKAOoWeCH0QfjTmVBHM4SP/Zeoboy20OUu16C//GSioW8FM/1UNwavQ4pVKUmP/x6bRJTbAdiFAFslkTHosXuJcqhe6RCPlh7tjlZwZhNiY46zbQpycH4rcnzRUuJGmKPw834ifcJffzffxl8FG8A7ohd9tGKFdEHR0g/q4wzRt5CKLI6LggG36+vQWRB8LONyQrAt8PZ25ta7/+sIBhMFBnd7pAp9AFAP/gJLmb3RgnRz4QUNhm6HsqKuIN1iclvUWZNQ78b/hnoT0MMMVsz+Qtq8JfQuGrvR+nR74omi+xEYOjVBgEYBQDoQD6ep9ySZwAAAABJRU5ErkJggg=="}},"time_used":17,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":17,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/lib/font-awesome/css/v4-shims.min.css?ver=3.19.1","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.990Z","timestamp":1785130089990,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/elementor/assets/lib/font-awesome/css/v4-shims.min.css?ver=3.19.1 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=sUjczo4yKjHPc0MHQewhdg4e%2Fdy26Dlp9g2cmv52SnNkeGFwH5E1NI%2Bwcm6nPvB4szGtiCmh5bvIKBO43zh4ghbmIz6NKaCNo82RK6KZHYZjRBoNGpV9PIxseqJXgTVYgDkK3REppA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d367e2f120a-OSL\r\ncontent-length: 4119\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":32468,"size_decoded":4929,"mime_type":"text/css","magic":"ASCII text","md5":"d6cf6af5d1f307a0c3cb9d9c054ce2d4","sha1":"7566aea9ab48f22a1a10da0d6f71a861c6574d18","sha256":"0b9e2918b6a5023cb744e4d146d5448da0e68e8544527e8aef0d2d26ec94e313","sha512":"1b56daa8485c8ba9d868e3dbb6daf9eb690567136b69fcf3ebfc326a4da778ee73ec0da3bc1580ae745afd1704f8e572b9412bbf51b09edd896bf8d7ca3265d3","ssdeep":"384:0S1BYdXiSmbulserd1QNcfxHI5HjusHENl:0ABY1iSjd1QNcfxHIduGE","tlshash":"59e2926c83ae58d2628c7c89360b76507b3837db59895848f3837e4dcec356662e1f8d","first_seen":"2024-10-11T08:24:47.434355Z","last_seen":"2026-07-27T10:21:19.507034Z","times_seen":31,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KCi5mYS5mYS1nbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDAwIgp9CgouZmEuZmEtbWVldHVwIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXN0YXItbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3Rhci1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDUiCn0KCi5mYS5mYS1jbG9zZTpiZWZvcmUsCi5mYS5mYS1yZW1vdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZCIKfQoKLmZhLmZhLWdlYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMyIKfQoKLmZhLmZhLXRyYXNoLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRyYXNoLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlZCIKfQoKLmZhLmZhLWZpbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWIiCn0KCi5mYS5mYS1jbG9jay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jbG9jay1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMTciCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1kb3duIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNTgiCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby11cCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYXJyb3ctY2lyY2xlLW8tdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YiIKfQoKLmZhLmZhLXBsYXktY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXBsYXktY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NCIKfQoKLmZhLmZhLXJlcGVhdDpiZWZvcmUsCi5mYS5mYS1yb3RhdGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxZSIKfQoKLmZhLmZhLXJlZnJlc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyMSIKfQoKLmZhLmZhLWxpc3QtYWx0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kZWRlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzYiIKfQoKLmZhLmZhLXZpZGVvLWNhbWVyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNkIgp9CgouZmEuZmEtcGljdHVyZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1waWN0dXJlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZSIKfQoKLmZhLmZhLXBob3RvIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1waG90bzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNlIgp9CgouZmEuZmEtaW1hZ2UgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWltYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwM2UiCn0KCi5mYS5mYS1wZW5jaWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwMyIKfQoKLmZhLmZhLW1hcC1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNjNSIKfQoKLmZhLmZhLXBlbmNpbC1zcXVhcmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGVuY2lsLXNxdWFyZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNDQiCn0KCi5mYS5mYS1zaGFyZS1zcXVhcmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc2hhcmUtc3F1YXJlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0ZCIKfQoKLmZhLmZhLWNoZWNrLXNxdWFyZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jaGVjay1zcXVhcmUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTRhIgp9CgouZmEuZmEtYXJyb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjIiCn0KCi5mYS5mYS10aW1lcy1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGltZXMtY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1NyIKfQoKLmZhLmZhLWNoZWNrLWNpcmNsZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jaGVjay1jaXJjbGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU4Igp9CgouZmEuZmEtbWFpbC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjQiCn0KCi5mYS5mYS1leHBhbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNCIKfQoKLmZhLmZhLWNvbXByZXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjIiCn0KCi5mYS5mYS1leWUsCi5mYS5mYS1leWUtc2xhc2ggewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXdhcm5pbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MSIKfQoKLmZhLmZhLWNhbGVuZGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzMiCn0KCi5mYS5mYS1hcnJvd3MtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzM4Igp9CgouZmEuZmEtYXJyb3dzLWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMzNyIKfQoKLmZhLmZhLWJhci1jaGFydCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmFyLWNoYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODAiCn0KCi5mYS5mYS1iYXItY2hhcnQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmFyLWNoYXJ0LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MCIKfQoKLmZhLmZhLWZhY2Vib29rLXNxdWFyZSwKLmZhLmZhLXR3aXR0ZXItc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWdlYXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODUiCn0KCi5mYS5mYS10aHVtYnMtby11cCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGh1bWJzLW8tdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2NCIKfQoKLmZhLmZhLXRodW1icy1vLWRvd24gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRodW1icy1vLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2NSIKfQoKLmZhLmZhLWhlYXJ0LW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhlYXJ0LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwNCIKfQoKLmZhLmZhLXNpZ24tb3V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjUiCn0KCi5mYS5mYS1saW5rZWRpbi1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbGlua2VkaW4tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOGMiCn0KCi5mYS5mYS10aHVtYi10YWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOGQiCn0KCi5mYS5mYS1leHRlcm5hbC1saW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNWQiCn0KCi5mYS5mYS1zaWduLWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjYiCn0KCi5mYS5mYS1naXRodWItc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWxlbW9uLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWxlbW9uLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5NCIKfQoKLmZhLmZhLXNxdWFyZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zcXVhcmUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM4Igp9CgouZmEuZmEtYm9va21hcmstbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYm9va21hcmstbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJlIgp9CgouZmEuZmEtZmFjZWJvb2ssCi5mYS5mYS10d2l0dGVyIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZhY2Vib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOWUiCn0KCi5mYS5mYS1mYWNlYm9vay1mIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZhY2Vib29rLWY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZSIKfQoKLmZhLmZhLWdpdGh1YiB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jcmVkaXQtY2FyZCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmVlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDllIgp9CgouZmEuZmEtaGRkLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhkZC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTAiCn0KCi5mYS5mYS1oYW5kLW8tcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE0Igp9CgouZmEuZmEtaGFuZC1vLWxlZnQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTUiCn0KCi5mYS5mYS1oYW5kLW8tdXAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE2Igp9CgouZmEuZmEtaGFuZC1vLWRvd24gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTciCn0KCi5mYS5mYS1hcnJvd3MtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMWUiCn0KCi5mYS5mYS1ncm91cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGMwIgp9CgouZmEuZmEtY2hhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjMSIKfQoKLmZhLmZhLXNjaXNzb3JzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzQiCn0KCi5mYS5mYS1maWxlcy1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlcy1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzUiCn0KCi5mYS5mYS1mbG9wcHktbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmxvcHB5LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjNyIKfQoKLmZhLmZhLW5hdmljb246YmVmb3JlLAouZmEuZmEtcmVvcmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM5Igp9CgouZmEuZmEtZ29vZ2xlLXBsdXMsCi5mYS5mYS1nb29nbGUtcGx1cy1zcXVhcmUsCi5mYS5mYS1waW50ZXJlc3QsCi5mYS5mYS1waW50ZXJlc3Qtc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWdvb2dsZS1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDUiCn0KCi5mYS5mYS1tb25leSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbW9uZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMSIKfQoKLmZhLmZhLXVuc29ydGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGMiCn0KCi5mYS5mYS1zb3J0LWRlc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkZCIKfQoKLmZhLmZhLXNvcnQtYXNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGUiCn0KCi5mYS5mYS1saW5rZWRpbiB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saW5rZWRpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGUxIgp9CgouZmEuZmEtcm90YXRlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMiIKfQoKLmZhLmZhLWxlZ2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTMiCn0KCi5mYS5mYS1kYXNoYm9hcmQ6YmVmb3JlLAouZmEuZmEtdGFjaG9tZXRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZkIgp9CgouZmEuZmEtY29tbWVudC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jb21tZW50LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3NSIKfQoKLmZhLmZhLWNvbW1lbnRzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNvbW1lbnRzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4NiIKfQoKLmZhLmZhLWZsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTciCn0KCi5mYS5mYS1jbGlwYm9hcmQsCi5mYS5mYS1wYXN0ZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGFzdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMyOCIKfQoKLmZhLmZhLWxpZ2h0YnVsYi1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saWdodGJ1bGItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGViIgp9CgouZmEuZmEtZXhjaGFuZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2MiIKfQoKLmZhLmZhLWNsb3VkLWRvd25sb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzODEiCn0KCi5mYS5mYS1jbG91ZC11cGxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MiIKfQoKLmZhLmZhLWJlbGwtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmVsbC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjMiCn0KCi5mYS5mYS1jdXRsZXJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZTciCn0KCi5mYS5mYS1maWxlLXRleHQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS10ZXh0LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1YyIKfQoKLmZhLmZhLWJ1aWxkaW5nLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWJ1aWxkaW5nLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhZCIKfQoKLmZhLmZhLWhvc3BpdGFsLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhvc3BpdGFsLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmOCIKfQoKLmZhLmZhLXRhYmxldDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZhIgp9CgouZmEuZmEtbW9iaWxlLXBob25lOmJlZm9yZSwKLmZhLmZhLW1vYmlsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2NkIgp9CgouZmEuZmEtY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTEiCn0KCi5mYS5mYS1tYWlsLXJlcGx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTUiCn0KCi5mYS5mYS1naXRodWItYWx0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZvbGRlci1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1mb2xkZXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdiIgp9CgouZmEuZmEtZm9sZGVyLW9wZW4tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZm9sZGVyLW9wZW4tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdjIgp9CgouZmEuZmEtc21pbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc21pbGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE4Igp9CgouZmEuZmEtZnJvd24tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZnJvd24tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE5Igp9CgouZmEuZmEtbWVoLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLW1laC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWEiCn0KCi5mYS5mYS1rZXlib2FyZC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1rZXlib2FyZC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWMiCn0KCi5mYS5mYS1mbGFnLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZsYWctbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI0Igp9CgouZmEuZmEtbWFpbC1yZXBseS1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMiIKfQoKLmZhLmZhLXN0YXItaGFsZi1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdGFyLWhhbGYtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg5Igp9CgouZmEuZmEtc3Rhci1oYWxmLWVtcHR5IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdGFyLWhhbGYtZW1wdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4OSIKfQoKLmZhLmZhLXN0YXItaGFsZi1mdWxsIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdGFyLWhhbGYtZnVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg5Igp9CgouZmEuZmEtY29kZS1mb3JrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjYiCn0KCi5mYS5mYS1jaGFpbi1icm9rZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyNyIKfQoKLmZhLmZhLXNoaWVsZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VkIgp9CgouZmEuZmEtY2FsZW5kYXItbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2FsZW5kYXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTMzIgp9CgouZmEuZmEtY3NzMywKLmZhLmZhLWh0bWw1LAouZmEuZmEtbWF4Y2RuIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRpY2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZmIgp9CgouZmEuZmEtbWludXMtc3F1YXJlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLW1pbnVzLXNxdWFyZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNDYiCn0KCi5mYS5mYS1sZXZlbC11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JmIgp9CgouZmEuZmEtbGV2ZWwtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JlIgp9CgouZmEuZmEtcGVuY2lsLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTRiIgp9CgouZmEuZmEtZXh0ZXJuYWwtbGluay1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2MCIKfQoKLmZhLmZhLWNvbXBhc3MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLWRvd24gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MCIKfQoKLmZhLmZhLXRvZ2dsZS1kb3duIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS10b2dnbGUtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUwIgp9CgouZmEuZmEtY2FyZXQtc3F1YXJlLW8tdXAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTEiCn0KCi5mYS5mYS10b2dnbGUtdXAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRvZ2dsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUxIgp9CgouZmEuZmEtY2FyZXQtc3F1YXJlLW8tcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTIiCn0KCi5mYS5mYS10b2dnbGUtcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRvZ2dsZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUyIgp9CgouZmEuZmEtZXVyOmJlZm9yZSwKLmZhLmZhLWV1cm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MyIKfQoKLmZhLmZhLWdicDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU0Igp9CgouZmEuZmEtZG9sbGFyOmJlZm9yZSwKLmZhLmZhLXVzZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU1Igp9CgouZmEuZmEtaW5yOmJlZm9yZSwKLmZhLmZhLXJ1cGVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTYiCn0KCi5mYS5mYS1jbnk6YmVmb3JlLAouZmEuZmEtanB5OmJlZm9yZSwKLmZhLmZhLXJtYjpiZWZvcmUsCi5mYS5mYS15ZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1NyIKfQoKLmZhLmZhLXJvdWJsZTpiZWZvcmUsCi5mYS5mYS1ydWI6YmVmb3JlLAouZmEuZmEtcnVibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1OCIKfQoKLmZhLmZhLWtydzpiZWZvcmUsCi5mYS5mYS13b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1OSIKfQoKLmZhLmZhLWJpdGNvaW4sCi5mYS5mYS1idGMgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYml0Y29pbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVhIgp9CgouZmEuZmEtZmlsZS10ZXh0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWMiCn0KCi5mYS5mYS1zb3J0LWFscGhhLWFzYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVkIgp9CgouZmEuZmEtc29ydC1hbHBoYS1kZXNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODEiCn0KCi5mYS5mYS1zb3J0LWFtb3VudC1hc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MCIKfQoKLmZhLmZhLXNvcnQtYW1vdW50LWRlc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4NCIKfQoKLmZhLmZhLXNvcnQtbnVtZXJpYy1hc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MiIKfQoKLmZhLmZhLXNvcnQtbnVtZXJpYy1kZXNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODYiCn0KCi5mYS5mYS14aW5nLAouZmEuZmEteGluZy1zcXVhcmUsCi5mYS5mYS15b3V0dWJlLAouZmEuZmEteW91dHViZS1wbGF5LAouZmEuZmEteW91dHViZS1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEteW91dHViZS1wbGF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjciCn0KCi5mYS5mYS1hZG4sCi5mYS5mYS1iaXRidWNrZXQsCi5mYS5mYS1iaXRidWNrZXQtc3F1YXJlLAouZmEuZmEtZHJvcGJveCwKLmZhLmZhLWZsaWNrciwKLmZhLmZhLWluc3RhZ3JhbSwKLmZhLmZhLXN0YWNrLW92ZXJmbG93IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWJpdGJ1Y2tldC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3MSIKfQoKLmZhLmZhLXR1bWJsciwKLmZhLmZhLXR1bWJsci1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbG9uZy1hcnJvdy1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDkiCn0KCi5mYS5mYS1sb25nLWFycm93LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMGMiCn0KCi5mYS5mYS1sb25nLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYSIKfQoKLmZhLmZhLWxvbmctYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYiIKfQoKLmZhLmZhLWFuZHJvaWQsCi5mYS5mYS1hcHBsZSwKLmZhLmZhLWRyaWJiYmxlLAouZmEuZmEtZm91cnNxdWFyZSwKLmZhLmZhLWdpdHRpcCwKLmZhLmZhLWdyYXRpcGF5LAouZmEuZmEtbGludXgsCi5mYS5mYS1za3lwZSwKLmZhLmZhLXRyZWxsbywKLmZhLmZhLXdpbmRvd3MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZ2l0dGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODQiCn0KCi5mYS5mYS1zdW4tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3VuLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4NSIKfQoKLmZhLmZhLW1vb24tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbW9vbi1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODYiCn0KCi5mYS5mYS1wYWdlbGluZXMsCi5mYS5mYS1yZW5yZW4sCi5mYS5mYS1zdGFjay1leGNoYW5nZSwKLmZhLmZhLXZrLAouZmEuZmEtd2VpYm8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYXJyb3ctY2lyY2xlLW8tcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWFycm93LWNpcmNsZS1vLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNWEiCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1sZWZ0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNTkiCn0KCi5mYS5mYS1jYXJldC1zcXVhcmUtby1sZWZ0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jYXJldC1zcXVhcmUtby1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTEiCn0KCi5mYS5mYS10b2dnbGUtbGVmdCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdG9nZ2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5MSIKfQoKLmZhLmZhLWRvdC1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZG90LWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTIiCn0KCi5mYS5mYS12aW1lby1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdHJ5OmJlZm9yZSwKLmZhLmZhLXR1cmtpc2gtbGlyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk1Igp9CgouZmEuZmEtcGx1cy1zcXVhcmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGx1cy1zcXVhcmUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGZlIgp9CgouZmEuZmEtb3BlbmlkLAouZmEuZmEtc2xhY2ssCi5mYS5mYS13b3JkcHJlc3MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmFuazpiZWZvcmUsCi5mYS5mYS1pbnN0aXR1dGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTljIgp9CgouZmEuZmEtbW9ydGFyLWJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOWQiCn0KCi5mYS5mYS1kZWxpY2lvdXMsCi5mYS5mYS1kaWdnLAouZmEuZmEtZHJ1cGFsLAouZmEuZmEtZ29vZ2xlLAouZmEuZmEtam9vbWxhLAouZmEuZmEtcGllZC1waXBlci1hbHQsCi5mYS5mYS1waWVkLXBpcGVyLXBwLAouZmEuZmEtcmVkZGl0LAouZmEuZmEtcmVkZGl0LXNxdWFyZSwKLmZhLmZhLXN0dW1ibGV1cG9uLAouZmEuZmEtc3R1bWJsZXVwb24tY2lyY2xlLAouZmEuZmEteWFob28gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3Bvb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlNSIKfQoKLmZhLmZhLWJlaGFuY2UsCi5mYS5mYS1iZWhhbmNlLXNxdWFyZSwKLmZhLmZhLXN0ZWFtLAouZmEuZmEtc3RlYW0tc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWF1dG9tb2JpbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiOSIKfQoKLmZhLmZhLWVudmVsb3BlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWVudmVsb3BlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMCIKfQoKLmZhLmZhLWRldmlhbnRhcnQsCi5mYS5mYS1zb3VuZGNsb3VkLAouZmEuZmEtc3BvdGlmeSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlLXBkZi1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlLXBkZi1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzEiCn0KCi5mYS5mYS1maWxlLXdvcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS13b3JkLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjMiIKfQoKLmZhLmZhLWZpbGUtZXhjZWwtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1leGNlbC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzMiCn0KCi5mYS5mYS1maWxlLXBvd2VycG9pbnQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1wb3dlcnBvaW50LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjNCIKfQoKLmZhLmZhLWZpbGUtaW1hZ2UtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1pbWFnZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzUiCn0KCi5mYS5mYS1maWxlLXBob3RvLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtcGhvdG8tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM1Igp9CgouZmEuZmEtZmlsZS1waWN0dXJlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtcGljdHVyZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzUiCn0KCi5mYS5mYS1maWxlLWFyY2hpdmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1hcmNoaXZlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjNiIKfQoKLmZhLmZhLWZpbGUtemlwLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtemlwLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjNiIKfQoKLmZhLmZhLWZpbGUtYXVkaW8tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1hdWRpby1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzciCn0KCi5mYS5mYS1maWxlLXNvdW5kLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtc291bmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM3Igp9CgouZmEuZmEtZmlsZS12aWRlby1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlLXZpZGVvLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjOCIKfQoKLmZhLmZhLWZpbGUtbW92aWUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1tb3ZpZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzgiCn0KCi5mYS5mYS1maWxlLWNvZGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1jb2RlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjOSIKfQoKLmZhLmZhLWNvZGVwZW4sCi5mYS5mYS1qc2ZpZGRsZSwKLmZhLmZhLXZpbmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbGlmZS1ib3V5LAouZmEuZmEtbGlmZS1yaW5nIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saWZlLWJvdXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZCIKfQoKLmZhLmZhLWxpZmUtYnVveSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbGlmZS1idW95OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2QiCn0KCi5mYS5mYS1saWZlLXNhdmVyIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saWZlLXNhdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2QiCn0KCi5mYS5mYS1zdXBwb3J0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdXBwb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2QiCn0KCi5mYS5mYS1jaXJjbGUtby1ub3RjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWNlIgp9CgouZmEuZmEtcmEsCi5mYS5mYS1yZWJlbCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQwIgp9CgouZmEuZmEtcmVzaXN0YW5jZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1yZXNpc3RhbmNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDAiCn0KCi5mYS5mYS1lbXBpcmUsCi5mYS5mYS1nZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1nZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQxIgp9CgouZmEuZmEtZ2l0LAouZmEuZmEtZ2l0LXNxdWFyZSwKLmZhLmZhLWhhY2tlci1uZXdzLAouZmEuZmEteS1jb21iaW5hdG9yLXNxdWFyZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS15LWNvbWJpbmF0b3Itc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiCn0KCi5mYS5mYS15Yy1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEteWMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiCn0KCi5mYS5mYS1xcSwKLmZhLmZhLXRlbmNlbnQtd2VpYm8sCi5mYS5mYS13ZWNoYXQsCi5mYS5mYS13ZWl4aW4gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtd2VjaGF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDciCn0KCi5mYS5mYS1zZW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDgiCn0KCi5mYS5mYS1wYXBlci1wbGFuZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1wYXBlci1wbGFuZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDgiCn0KCi5mYS5mYS1zZW5kLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXNlbmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQ4Igp9CgouZmEuZmEtY2lyY2xlLXRoaW4gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNpcmNsZS10aGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTEiCn0KCi5mYS5mYS1oZWFkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkYyIKfQoKLmZhLmZhLXNsaWRlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkZSIKfQoKLmZhLmZhLWZ1dGJvbC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1mdXRib2wtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIgp9CgouZmEuZmEtc29jY2VyLWJhbGwtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc29jY2VyLWJhbGwtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIgp9CgouZmEuZmEtc2xpZGVzaGFyZSwKLmZhLmZhLXR3aXRjaCwKLmZhLmZhLXllbHAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbmV3c3BhcGVyLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLW5ld3NwYXBlci1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWEiCn0KCi5mYS5mYS1jYy1hbWV4LAouZmEuZmEtY2MtZGlzY292ZXIsCi5mYS5mYS1jYy1tYXN0ZXJjYXJkLAouZmEuZmEtY2MtcGF5cGFsLAouZmEuZmEtY2Mtc3RyaXBlLAouZmEuZmEtY2MtdmlzYSwKLmZhLmZhLWdvb2dsZS13YWxsZXQsCi5mYS5mYS1wYXlwYWwgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmVsbC1zbGFzaC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1iZWxsLXNsYXNoLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmNiIKfQoKLmZhLmZhLXRyYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZWQiCn0KCi5mYS5mYS1jb3B5cmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWV5ZWRyb3BwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmYiIKfQoKLmZhLmZhLWFyZWEtY2hhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmZSIKfQoKLmZhLmZhLXBpZS1jaGFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAwIgp9CgouZmEuZmEtbGluZS1jaGFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAxIgp9CgouZmEuZmEtYW5nZWxsaXN0LAouZmEuZmEtaW94aG9zdCwKLmZhLmZhLWxhc3RmbSwKLmZhLmZhLWxhc3RmbS1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMGEiCn0KCi5mYS5mYS1pbHM6YmVmb3JlLAouZmEuZmEtc2hla2VsOmJlZm9yZSwKLmZhLmZhLXNoZXFlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBiIgp9CgouZmEuZmEtbWVhbnBhdGggewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbWVhbnBhdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiNCIKfQoKLmZhLmZhLWJ1eXNlbGxhZHMsCi5mYS5mYS1jb25uZWN0ZGV2ZWxvcCwKLmZhLmZhLWRhc2hjdWJlLAouZmEuZmEtZm9ydW1iZWUsCi5mYS5mYS1sZWFucHViLAouZmEuZmEtc2VsbHN5LAouZmEuZmEtc2hpcnRzaW5idWxrLAouZmEuZmEtc2ltcGx5YnVpbHQsCi5mYS5mYS1za3lhdGxhcyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kaWFtb25kIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kaWFtb25kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTUiCn0KCi5mYS5mYS1pbnRlcnNleDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI0Igp9CgouZmEuZmEtZmFjZWJvb2stb2ZmaWNpYWwgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmFjZWJvb2stb2ZmaWNpYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5YSIKfQoKLmZhLmZhLXBpbnRlcmVzdC1wLAouZmEuZmEtd2hhdHNhcHAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaG90ZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNiIKfQoKLmZhLmZhLW1lZGl1bSwKLmZhLmZhLXZpYWNvaW4sCi5mYS5mYS15LWNvbWJpbmF0b3IsCi5mYS5mYS15YyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS15YzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjNiIgp9CgouZmEuZmEtZXhwZWRpdGVkc3NsLAouZmEuZmEtb3BlbmNhcnQsCi5mYS5mYS1vcHRpbi1tb25zdGVyIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWJhdHRlcnktNDpiZWZvcmUsCi5mYS5mYS1iYXR0ZXJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDAiCn0KCi5mYS5mYS1iYXR0ZXJ5LTM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0MSIKfQoKLmZhLmZhLWJhdHRlcnktMjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQyIgp9CgouZmEuZmEtYmF0dGVyeS0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDMiCn0KCi5mYS5mYS1iYXR0ZXJ5LTA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0NCIKfQoKLmZhLmZhLW9iamVjdC1ncm91cCwKLmZhLmZhLW9iamVjdC11bmdyb3VwLAouZmEuZmEtc3RpY2t5LW5vdGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3RpY2t5LW5vdGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQ5Igp9CgouZmEuZmEtY2MtZGluZXJzLWNsdWIsCi5mYS5mYS1jYy1qY2IgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2xvbmUsCi5mYS5mYS1ob3VyZ2xhc3MtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaG91cmdsYXNzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1NCIKfQoKLmZhLmZhLWhvdXJnbGFzcy0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTEiCn0KCi5mYS5mYS1ob3VyZ2xhc3MtMjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUyIgp9CgouZmEuZmEtaG91cmdsYXNzLTM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1MyIKfQoKLmZhLmZhLWhhbmQtcm9jay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXJvY2stbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU1Igp9CgouZmEuZmEtaGFuZC1ncmFiLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtZ3JhYi1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTUiCn0KCi5mYS5mYS1oYW5kLXBhcGVyLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtcGFwZXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU2Igp9CgouZmEuZmEtaGFuZC1zdG9wLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtc3RvcC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTYiCn0KCi5mYS5mYS1oYW5kLXNjaXNzb3JzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtc2Npc3NvcnMtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU3Igp9CgouZmEuZmEtaGFuZC1saXphcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaGFuZC1saXphcmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU4Igp9CgouZmEuZmEtaGFuZC1zcG9jay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXNwb2NrLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1OSIKfQoKLmZhLmZhLWhhbmQtcG9pbnRlci1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXBvaW50ZXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjVhIgp9CgouZmEuZmEtaGFuZC1wZWFjZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXBlYWNlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YiIKfQoKLmZhLmZhLXJlZ2lzdGVyZWQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNocm9tZSwKLmZhLmZhLWNyZWF0aXZlLWNvbW1vbnMsCi5mYS5mYS1maXJlZm94LAouZmEuZmEtZ2V0LXBvY2tldCwKLmZhLmZhLWdnLAouZmEuZmEtZ2ctY2lyY2xlLAouZmEuZmEtaW50ZXJuZXQtZXhwbG9yZXIsCi5mYS5mYS1vZG5va2xhc3NuaWtpLAouZmEuZmEtb2Rub2tsYXNzbmlraS1zcXVhcmUsCi5mYS5mYS1vcGVyYSwKLmZhLmZhLXNhZmFyaSwKLmZhLmZhLXRyaXBhZHZpc29yLAouZmEuZmEtd2lraXBlZGlhLXcgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGVsZXZpc2lvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZjIgp9CgouZmEuZmEtNTAwcHgsCi5mYS5mYS1hbWF6b24sCi5mYS5mYS1jb250YW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2FsZW5kYXItcGx1cy1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jYWxlbmRhci1wbHVzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MSIKfQoKLmZhLmZhLWNhbGVuZGFyLW1pbnVzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhbGVuZGFyLW1pbnVzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MiIKfQoKLmZhLmZhLWNhbGVuZGFyLXRpbWVzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhbGVuZGFyLXRpbWVzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MyIKfQoKLmZhLmZhLWNhbGVuZGFyLWNoZWNrLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhbGVuZGFyLWNoZWNrLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NCIKfQoKLmZhLmZhLW1hcC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1tYXAtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjc5Igp9CgouZmEuZmEtY29tbWVudGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGFkIgp9CgouZmEuZmEtY29tbWVudGluZy1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jb21tZW50aW5nLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRhZCIKfQoKLmZhLmZhLWhvdXp6LAouZmEuZmEtdmltZW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdmltZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3ZCIKfQoKLmZhLmZhLWJsYWNrLXRpZSwKLmZhLmZhLWVkZ2UsCi5mYS5mYS1mb250aWNvbnMsCi5mYS5mYS1yZWRkaXQtYWxpZW4gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY3JlZGl0LWNhcmQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWQiCn0KCi5mYS5mYS1jb2RpZXBpZSwKLmZhLmZhLWZvcnQtYXdlc29tZSwKLmZhLmZhLW1peGNsb3VkLAouZmEuZmEtbW9keCwKLmZhLmZhLXByb2R1Y3QtaHVudCwKLmZhLmZhLXNjcmliZCwKLmZhLmZhLXVzYiB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1wYXVzZS1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGF1c2UtY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YiIKfQoKLmZhLmZhLXN0b3AtY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXN0b3AtY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4ZCIKfQoKLmZhLmZhLWJsdWV0b290aCwKLmZhLmZhLWJsdWV0b290aC1iLAouZmEuZmEtZW52aXJhLAouZmEuZmEtZ2l0bGFiLAouZmEuZmEtd2hlZWxjaGFpci1hbHQsCi5mYS5mYS13cGJlZ2lubmVyLAouZmEuZmEtd3Bmb3JtcyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS13aGVlbGNoYWlyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzY4Igp9CgouZmEuZmEtcXVlc3Rpb24tY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXF1ZXN0aW9uLWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTkiCn0KCi5mYS5mYS12b2x1bWUtY29udHJvbC1waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEwIgp9CgouZmEuZmEtYXNsLWludGVycHJldGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEzIgp9CgouZmEuZmEtZGVhZm5lc3M6YmVmb3JlLAouZmEuZmEtaGFyZC1vZi1oZWFyaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTQiCn0KCi5mYS5mYS1nbGlkZSwKLmZhLmZhLWdsaWRlLWcgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc2lnbmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmE3Igp9CgouZmEuZmEtZmlyc3Qtb3JkZXIsCi5mYS5mYS1nb29nbGUtcGx1cy1vZmZpY2lhbCwKLmZhLmZhLXBpZWQtcGlwZXIsCi5mYS5mYS1zbmFwY2hhdCwKLmZhLmZhLXNuYXBjaGF0LWdob3N0LAouZmEuZmEtc25hcGNoYXQtc3F1YXJlLAouZmEuZmEtdGhlbWVpc2xlLAouZmEuZmEtdmlhZGVvLAouZmEuZmEtdmlhZGVvLXNxdWFyZSwKLmZhLmZhLXlvYXN0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWdvb2dsZS1wbHVzLW9mZmljaWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjMiCn0KCi5mYS5mYS1nb29nbGUtcGx1cy1jaXJjbGUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZ29vZ2xlLXBsdXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjMiCn0KCi5mYS5mYS1mYSwKLmZhLmZhLWZvbnQtYXdlc29tZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1mYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI0Igp9CgouZmEuZmEtaGFuZHNoYWtlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmRzaGFrZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjUiCn0KCi5mYS5mYS1lbnZlbG9wZS1vcGVuLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWVudmVsb3BlLW9wZW4tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI2Igp9CgouZmEuZmEtbGlub2RlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWFkZHJlc3MtYm9vay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hZGRyZXNzLWJvb2stbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI5Igp9CgouZmEuZmEtdmNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiYiIKfQoKLmZhLmZhLWFkZHJlc3MtY2FyZC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hZGRyZXNzLWNhcmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmJiIgp9CgouZmEuZmEtdmNhcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdmNhcmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmJiIgp9CgouZmEuZmEtdXNlci1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdXNlci1jaXJjbGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmJkIgp9CgouZmEuZmEtdXNlci1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS11c2VyLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwNyIKfQoKLmZhLmZhLWlkLWJhZGdlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kcml2ZXJzLWxpY2Vuc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjMiIKfQoKLmZhLmZhLWlkLWNhcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaWQtY2FyZC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzIiCn0KCi5mYS5mYS1kcml2ZXJzLWxpY2Vuc2UtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZHJpdmVycy1saWNlbnNlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjMiIKfQoKLmZhLmZhLWZyZWUtY29kZS1jYW1wLAouZmEuZmEtcXVvcmEsCi5mYS5mYS10ZWxlZ3JhbSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS10aGVybW9tZXRlci00OmJlZm9yZSwKLmZhLmZhLXRoZXJtb21ldGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzciCn0KCi5mYS5mYS10aGVybW9tZXRlci0zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzgiCn0KCi5mYS5mYS10aGVybW9tZXRlci0yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzkiCn0KCi5mYS5mYS10aGVybW9tZXRlci0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2EiCn0KCi5mYS5mYS10aGVybW9tZXRlci0wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2IiCn0KCi5mYS5mYS1iYXRodHViOmJlZm9yZSwKLmZhLmZhLXMxNTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNkIgp9CgouZmEuZmEtd2luZG93LW1heGltaXplLAouZmEuZmEtd2luZG93LXJlc3RvcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRpbWVzLXJlY3RhbmdsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEwIgp9CgouZmEuZmEtd2luZG93LWNsb3NlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXdpbmRvdy1jbG9zZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MTAiCn0KCi5mYS5mYS10aW1lcy1yZWN0YW5nbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGltZXMtcmVjdGFuZ2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMCIKfQoKLmZhLmZhLWJhbmRjYW1wLAouZmEuZmEtZWVyY2FzdCwKLmZhLmZhLWV0c3ksCi5mYS5mYS1ncmF2LAouZmEuZmEtaW1kYiwKLmZhLmZhLXJhdmVscnkgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZWVyY2FzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmRhIgp9CgouZmEuZmEtc25vd2ZsYWtlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXNub3dmbGFrZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZGMiCn0KCi5mYS5mYS1zdXBlcnBvd2VycywKLmZhLmZhLXdwZXhwbG9yZXIgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2FiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmEiCn0="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.min.js?ver=3.19.1","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.003Z","timestamp":1785130090003,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.min.js?ver=3.19.1 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=xH%2BOu0D24ed1ohoofgXIfzwC4rG88OivhNb9o%2BOfDEAiRJ7O1Ocibe71FQG32gI5qTeZ4NqBDfJaiuB3D6GC6KBOJ6awBonvy%2BsZ%2FYwI7Fsgxii2XILytz9w9z%2FozLOK%2B3a0Fzrm6Q%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d368e39120a-OSL\r\ncontent-length: 4310\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":22429,"size_decoded":5142,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text","md5":"367bd7a1a69c01509da43a50349e8788","sha1":"18e7ac3fbf31ff1f4cee6f5811844090404f04a6","sha256":"cb734b189032cb314fc8d3d34c1314d64c7a7698acfcba00e52050fdae9adb93","sha512":"c5190f86721797f0adc75f0e7147b1f685b954ad79f1535487f75a54272d8bbc51f17ac22548cfd378e92a02c19ffcda2409d8bc80a3af1aa4ccd9231bb00fb0","ssdeep":"192:bP6z6AN8i4/5VTcJ7QlnV8fPj0Al/+vLxoUi1hoFWYWlZyVL9J79hFmDzULK+Qo5:OZexqpQlVEjjN+viUhu0LKymvv64e","tlshash":"8ea2963ef5104da300815b19646419c57f4ac103bfaeb42a79bc6f9a2f8e42d93bd63d","first_seen":"2023-07-01T15:13:09Z","last_seen":"2026-07-27T10:21:19.624341Z","times_seen":28,"resource_available":true,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMSBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KdmFyIGwsIGE7CmwgPSB0aGlzLCBhID0gZnVuY3Rpb24oKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgbCA9IHt9LAogICAgICAgIGEgPSB7fTsKICAgIHRyeSB7CiAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyAmJiAobCA9IHdpbmRvdyksICJ1bmRlZmluZWQiICE9IHR5cGVvZiBkb2N1bWVudCAmJiAoYSA9IGRvY3VtZW50KQogICAgfSBjYXRjaCAobCkge30KICAgIHZhciBlID0gKGwubmF2aWdhdG9yIHx8IHt9KS51c2VyQWdlbnQsCiAgICAgICAgciA9IHZvaWQgMCA9PT0gZSA/ICIiIDogZSwKICAgICAgICBuID0gbCwKICAgICAgICBvID0gYSwKICAgICAgICB1ID0gKG4uZG9jdW1lbnQsICEhby5kb2N1bWVudEVsZW1lbnQgJiYgISFvLmhlYWQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygby5hZGRFdmVudExpc3RlbmVyICYmIG8uY3JlYXRlRWxlbWVudCwgfnIuaW5kZXhPZigiTVNJRSIpIHx8IHIuaW5kZXhPZigiVHJpZGVudC8iKSwgIl9fX0ZPTlRfQVdFU09NRV9fXyIpLAogICAgICAgIHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiAicHJvZHVjdGlvbiIgPT09IHByb2Nlc3MuZW52Lk5PREVfRU5WCiAgICAgICAgICAgIH0gY2F0Y2ggKGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfSgpOwogICAgdmFyIGYgPSBuIHx8IHt9OwogICAgZlt1XSB8fCAoZlt1XSA9IHt9KSwgZlt1XS5zdHlsZXMgfHwgKGZbdV0uc3R5bGVzID0ge30pLCBmW3VdLmhvb2tzIHx8IChmW3VdLmhvb2tzID0ge30pLCBmW3VdLnNoaW1zIHx8IChmW3VdLnNoaW1zID0gW10pOwogICAgdmFyIGkgPSBmW3VdLAogICAgICAgIHMgPSBbCiAgICAgICAgICAgIFsiZ2xhc3MiLCBudWxsLCAiZ2xhc3MtbWFydGluaSJdLAogICAgICAgICAgICBbIm1lZXR1cCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJzdGFyLW8iLCAiZmFyIiwgInN0YXIiXSwKICAgICAgICAgICAgWyJyZW1vdmUiLCBudWxsLCAidGltZXMiXSwKICAgICAgICAgICAgWyJjbG9zZSIsIG51bGwsICJ0aW1lcyJdLAogICAgICAgICAgICBbImdlYXIiLCBudWxsLCAiY29nIl0sCiAgICAgICAgICAgIFsidHJhc2gtbyIsICJmYXIiLCAidHJhc2gtYWx0Il0sCiAgICAgICAgICAgIFsiZmlsZS1vIiwgImZhciIsICJmaWxlIl0sCiAgICAgICAgICAgIFsiY2xvY2stbyIsICJmYXIiLCAiY2xvY2siXSwKICAgICAgICAgICAgWyJhcnJvdy1jaXJjbGUtby1kb3duIiwgImZhciIsICJhcnJvdy1hbHQtY2lyY2xlLWRvd24iXSwKICAgICAgICAgICAgWyJhcnJvdy1jaXJjbGUtby11cCIsICJmYXIiLCAiYXJyb3ctYWx0LWNpcmNsZS11cCJdLAogICAgICAgICAgICBbInBsYXktY2lyY2xlLW8iLCAiZmFyIiwgInBsYXktY2lyY2xlIl0sCiAgICAgICAgICAgIFsicmVwZWF0IiwgbnVsbCwgInJlZG8iXSwKICAgICAgICAgICAgWyJyb3RhdGUtcmlnaHQiLCBudWxsLCAicmVkbyJdLAogICAgICAgICAgICBbInJlZnJlc2giLCBudWxsLCAic3luYyJdLAogICAgICAgICAgICBbImxpc3QtYWx0IiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImRlZGVudCIsIG51bGwsICJvdXRkZW50Il0sCiAgICAgICAgICAgIFsidmlkZW8tY2FtZXJhIiwgbnVsbCwgInZpZGVvIl0sCiAgICAgICAgICAgIFsicGljdHVyZS1vIiwgImZhciIsICJpbWFnZSJdLAogICAgICAgICAgICBbInBob3RvIiwgImZhciIsICJpbWFnZSJdLAogICAgICAgICAgICBbImltYWdlIiwgImZhciIsICJpbWFnZSJdLAogICAgICAgICAgICBbInBlbmNpbCIsIG51bGwsICJwZW5jaWwtYWx0Il0sCiAgICAgICAgICAgIFsibWFwLW1hcmtlciIsIG51bGwsICJtYXAtbWFya2VyLWFsdCJdLAogICAgICAgICAgICBbInBlbmNpbC1zcXVhcmUtbyIsICJmYXIiLCAiZWRpdCJdLAogICAgICAgICAgICBbInNoYXJlLXNxdWFyZS1vIiwgImZhciIsICJzaGFyZS1zcXVhcmUiXSwKICAgICAgICAgICAgWyJjaGVjay1zcXVhcmUtbyIsICJmYXIiLCAiY2hlY2stc3F1YXJlIl0sCiAgICAgICAgICAgIFsiYXJyb3dzIiwgbnVsbCwgImFycm93cy1hbHQiXSwKICAgICAgICAgICAgWyJ0aW1lcy1jaXJjbGUtbyIsICJmYXIiLCAidGltZXMtY2lyY2xlIl0sCiAgICAgICAgICAgIFsiY2hlY2stY2lyY2xlLW8iLCAiZmFyIiwgImNoZWNrLWNpcmNsZSJdLAogICAgICAgICAgICBbIm1haWwtZm9yd2FyZCIsIG51bGwsICJzaGFyZSJdLAogICAgICAgICAgICBbImV4cGFuZCIsIG51bGwsICJleHBhbmQtYWx0Il0sCiAgICAgICAgICAgIFsiY29tcHJlc3MiLCBudWxsLCAiY29tcHJlc3MtYWx0Il0sCiAgICAgICAgICAgIFsiZXllIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImV5ZS1zbGFzaCIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3YXJuaW5nIiwgbnVsbCwgImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIl0sCiAgICAgICAgICAgIFsiY2FsZW5kYXIiLCBudWxsLCAiY2FsZW5kYXItYWx0Il0sCiAgICAgICAgICAgIFsiYXJyb3dzLXYiLCBudWxsLCAiYXJyb3dzLWFsdC12Il0sCiAgICAgICAgICAgIFsiYXJyb3dzLWgiLCBudWxsLCAiYXJyb3dzLWFsdC1oIl0sCiAgICAgICAgICAgIFsiYmFyLWNoYXJ0IiwgImZhciIsICJjaGFydC1iYXIiXSwKICAgICAgICAgICAgWyJiYXItY2hhcnQtbyIsICJmYXIiLCAiY2hhcnQtYmFyIl0sCiAgICAgICAgICAgIFsidHdpdHRlci1zcXVhcmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZmFjZWJvb2stc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdlYXJzIiwgbnVsbCwgImNvZ3MiXSwKICAgICAgICAgICAgWyJ0aHVtYnMtby11cCIsICJmYXIiLCAidGh1bWJzLXVwIl0sCiAgICAgICAgICAgIFsidGh1bWJzLW8tZG93biIsICJmYXIiLCAidGh1bWJzLWRvd24iXSwKICAgICAgICAgICAgWyJoZWFydC1vIiwgImZhciIsICJoZWFydCJdLAogICAgICAgICAgICBbInNpZ24tb3V0IiwgbnVsbCwgInNpZ24tb3V0LWFsdCJdLAogICAgICAgICAgICBbImxpbmtlZGluLXNxdWFyZSIsICJmYWIiLCAibGlua2VkaW4iXSwKICAgICAgICAgICAgWyJ0aHVtYi10YWNrIiwgbnVsbCwgInRodW1idGFjayJdLAogICAgICAgICAgICBbImV4dGVybmFsLWxpbmsiLCBudWxsLCAiZXh0ZXJuYWwtbGluay1hbHQiXSwKICAgICAgICAgICAgWyJzaWduLWluIiwgbnVsbCwgInNpZ24taW4tYWx0Il0sCiAgICAgICAgICAgIFsiZ2l0aHViLXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsZW1vbi1vIiwgImZhciIsICJsZW1vbiJdLAogICAgICAgICAgICBbInNxdWFyZS1vIiwgImZhciIsICJzcXVhcmUiXSwKICAgICAgICAgICAgWyJib29rbWFyay1vIiwgImZhciIsICJib29rbWFyayJdLAogICAgICAgICAgICBbInR3aXR0ZXIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZmFjZWJvb2siLCAiZmFiIiwgImZhY2Vib29rLWYiXSwKICAgICAgICAgICAgWyJmYWNlYm9vay1mIiwgImZhYiIsICJmYWNlYm9vay1mIl0sCiAgICAgICAgICAgIFsiZ2l0aHViIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNyZWRpdC1jYXJkIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImZlZWQiLCBudWxsLCAicnNzIl0sCiAgICAgICAgICAgIFsiaGRkLW8iLCAiZmFyIiwgImhkZCJdLAogICAgICAgICAgICBbImhhbmQtby1yaWdodCIsICJmYXIiLCAiaGFuZC1wb2ludC1yaWdodCJdLAogICAgICAgICAgICBbImhhbmQtby1sZWZ0IiwgImZhciIsICJoYW5kLXBvaW50LWxlZnQiXSwKICAgICAgICAgICAgWyJoYW5kLW8tdXAiLCAiZmFyIiwgImhhbmQtcG9pbnQtdXAiXSwKICAgICAgICAgICAgWyJoYW5kLW8tZG93biIsICJmYXIiLCAiaGFuZC1wb2ludC1kb3duIl0sCiAgICAgICAgICAgIFsiYXJyb3dzLWFsdCIsIG51bGwsICJleHBhbmQtYXJyb3dzLWFsdCJdLAogICAgICAgICAgICBbImdyb3VwIiwgbnVsbCwgInVzZXJzIl0sCiAgICAgICAgICAgIFsiY2hhaW4iLCBudWxsLCAibGluayJdLAogICAgICAgICAgICBbInNjaXNzb3JzIiwgbnVsbCwgImN1dCJdLAogICAgICAgICAgICBbImZpbGVzLW8iLCAiZmFyIiwgImNvcHkiXSwKICAgICAgICAgICAgWyJmbG9wcHktbyIsICJmYXIiLCAic2F2ZSJdLAogICAgICAgICAgICBbIm5hdmljb24iLCBudWxsLCAiYmFycyJdLAogICAgICAgICAgICBbInJlb3JkZXIiLCBudWxsLCAiYmFycyJdLAogICAgICAgICAgICBbInBpbnRlcmVzdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwaW50ZXJlc3Qtc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdvb2dsZS1wbHVzLXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnb29nbGUtcGx1cyIsICJmYWIiLCAiZ29vZ2xlLXBsdXMtZyJdLAogICAgICAgICAgICBbIm1vbmV5IiwgImZhciIsICJtb25leS1iaWxsLWFsdCJdLAogICAgICAgICAgICBbInVuc29ydGVkIiwgbnVsbCwgInNvcnQiXSwKICAgICAgICAgICAgWyJzb3J0LWRlc2MiLCBudWxsLCAic29ydC1kb3duIl0sCiAgICAgICAgICAgIFsic29ydC1hc2MiLCBudWxsLCAic29ydC11cCJdLAogICAgICAgICAgICBbImxpbmtlZGluIiwgImZhYiIsICJsaW5rZWRpbi1pbiJdLAogICAgICAgICAgICBbInJvdGF0ZS1sZWZ0IiwgbnVsbCwgInVuZG8iXSwKICAgICAgICAgICAgWyJsZWdhbCIsIG51bGwsICJnYXZlbCJdLAogICAgICAgICAgICBbInRhY2hvbWV0ZXIiLCBudWxsLCAidGFjaG9tZXRlci1hbHQiXSwKICAgICAgICAgICAgWyJkYXNoYm9hcmQiLCBudWxsLCAidGFjaG9tZXRlci1hbHQiXSwKICAgICAgICAgICAgWyJjb21tZW50LW8iLCAiZmFyIiwgImNvbW1lbnQiXSwKICAgICAgICAgICAgWyJjb21tZW50cy1vIiwgImZhciIsICJjb21tZW50cyJdLAogICAgICAgICAgICBbImZsYXNoIiwgbnVsbCwgImJvbHQiXSwKICAgICAgICAgICAgWyJjbGlwYm9hcmQiLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsicGFzdGUiLCAiZmFyIiwgImNsaXBib2FyZCJdLAogICAgICAgICAgICBbImxpZ2h0YnVsYi1vIiwgImZhciIsICJsaWdodGJ1bGIiXSwKICAgICAgICAgICAgWyJleGNoYW5nZSIsIG51bGwsICJleGNoYW5nZS1hbHQiXSwKICAgICAgICAgICAgWyJjbG91ZC1kb3dubG9hZCIsIG51bGwsICJjbG91ZC1kb3dubG9hZC1hbHQiXSwKICAgICAgICAgICAgWyJjbG91ZC11cGxvYWQiLCBudWxsLCAiY2xvdWQtdXBsb2FkLWFsdCJdLAogICAgICAgICAgICBbImJlbGwtbyIsICJmYXIiLCAiYmVsbCJdLAogICAgICAgICAgICBbImN1dGxlcnkiLCBudWxsLCAidXRlbnNpbHMiXSwKICAgICAgICAgICAgWyJmaWxlLXRleHQtbyIsICJmYXIiLCAiZmlsZS1hbHQiXSwKICAgICAgICAgICAgWyJidWlsZGluZy1vIiwgImZhciIsICJidWlsZGluZyJdLAogICAgICAgICAgICBbImhvc3BpdGFsLW8iLCAiZmFyIiwgImhvc3BpdGFsIl0sCiAgICAgICAgICAgIFsidGFibGV0IiwgbnVsbCwgInRhYmxldC1hbHQiXSwKICAgICAgICAgICAgWyJtb2JpbGUiLCBudWxsLCAibW9iaWxlLWFsdCJdLAogICAgICAgICAgICBbIm1vYmlsZS1waG9uZSIsIG51bGwsICJtb2JpbGUtYWx0Il0sCiAgICAgICAgICAgIFsiY2lyY2xlLW8iLCAiZmFyIiwgImNpcmNsZSJdLAogICAgICAgICAgICBbIm1haWwtcmVwbHkiLCBudWxsLCAicmVwbHkiXSwKICAgICAgICAgICAgWyJnaXRodWItYWx0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZvbGRlci1vIiwgImZhciIsICJmb2xkZXIiXSwKICAgICAgICAgICAgWyJmb2xkZXItb3Blbi1vIiwgImZhciIsICJmb2xkZXItb3BlbiJdLAogICAgICAgICAgICBbInNtaWxlLW8iLCAiZmFyIiwgInNtaWxlIl0sCiAgICAgICAgICAgIFsiZnJvd24tbyIsICJmYXIiLCAiZnJvd24iXSwKICAgICAgICAgICAgWyJtZWgtbyIsICJmYXIiLCAibWVoIl0sCiAgICAgICAgICAgIFsia2V5Ym9hcmQtbyIsICJmYXIiLCAia2V5Ym9hcmQiXSwKICAgICAgICAgICAgWyJmbGFnLW8iLCAiZmFyIiwgImZsYWciXSwKICAgICAgICAgICAgWyJtYWlsLXJlcGx5LWFsbCIsIG51bGwsICJyZXBseS1hbGwiXSwKICAgICAgICAgICAgWyJzdGFyLWhhbGYtbyIsICJmYXIiLCAic3Rhci1oYWxmIl0sCiAgICAgICAgICAgIFsic3Rhci1oYWxmLWVtcHR5IiwgImZhciIsICJzdGFyLWhhbGYiXSwKICAgICAgICAgICAgWyJzdGFyLWhhbGYtZnVsbCIsICJmYXIiLCAic3Rhci1oYWxmIl0sCiAgICAgICAgICAgIFsiY29kZS1mb3JrIiwgbnVsbCwgImNvZGUtYnJhbmNoIl0sCiAgICAgICAgICAgIFsiY2hhaW4tYnJva2VuIiwgbnVsbCwgInVubGluayJdLAogICAgICAgICAgICBbInNoaWVsZCIsIG51bGwsICJzaGllbGQtYWx0Il0sCiAgICAgICAgICAgIFsiY2FsZW5kYXItbyIsICJmYXIiLCAiY2FsZW5kYXIiXSwKICAgICAgICAgICAgWyJtYXhjZG4iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiaHRtbDUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY3NzMyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0aWNrZXQiLCBudWxsLCAidGlja2V0LWFsdCJdLAogICAgICAgICAgICBbIm1pbnVzLXNxdWFyZS1vIiwgImZhciIsICJtaW51cy1zcXVhcmUiXSwKICAgICAgICAgICAgWyJsZXZlbC11cCIsIG51bGwsICJsZXZlbC11cC1hbHQiXSwKICAgICAgICAgICAgWyJsZXZlbC1kb3duIiwgbnVsbCwgImxldmVsLWRvd24tYWx0Il0sCiAgICAgICAgICAgIFsicGVuY2lsLXNxdWFyZSIsIG51bGwsICJwZW4tc3F1YXJlIl0sCiAgICAgICAgICAgIFsiZXh0ZXJuYWwtbGluay1zcXVhcmUiLCBudWxsLCAiZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0Il0sCiAgICAgICAgICAgIFsiY29tcGFzcyIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJjYXJldC1zcXVhcmUtby1kb3duIiwgImZhciIsICJjYXJldC1zcXVhcmUtZG93biJdLAogICAgICAgICAgICBbInRvZ2dsZS1kb3duIiwgImZhciIsICJjYXJldC1zcXVhcmUtZG93biJdLAogICAgICAgICAgICBbImNhcmV0LXNxdWFyZS1vLXVwIiwgImZhciIsICJjYXJldC1zcXVhcmUtdXAiXSwKICAgICAgICAgICAgWyJ0b2dnbGUtdXAiLCAiZmFyIiwgImNhcmV0LXNxdWFyZS11cCJdLAogICAgICAgICAgICBbImNhcmV0LXNxdWFyZS1vLXJpZ2h0IiwgImZhciIsICJjYXJldC1zcXVhcmUtcmlnaHQiXSwKICAgICAgICAgICAgWyJ0b2dnbGUtcmlnaHQiLCAiZmFyIiwgImNhcmV0LXNxdWFyZS1yaWdodCJdLAogICAgICAgICAgICBbImV1ciIsIG51bGwsICJldXJvLXNpZ24iXSwKICAgICAgICAgICAgWyJldXJvIiwgbnVsbCwgImV1cm8tc2lnbiJdLAogICAgICAgICAgICBbImdicCIsIG51bGwsICJwb3VuZC1zaWduIl0sCiAgICAgICAgICAgIFsidXNkIiwgbnVsbCwgImRvbGxhci1zaWduIl0sCiAgICAgICAgICAgIFsiZG9sbGFyIiwgbnVsbCwgImRvbGxhci1zaWduIl0sCiAgICAgICAgICAgIFsiaW5yIiwgbnVsbCwgInJ1cGVlLXNpZ24iXSwKICAgICAgICAgICAgWyJydXBlZSIsIG51bGwsICJydXBlZS1zaWduIl0sCiAgICAgICAgICAgIFsianB5IiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsiY255IiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsicm1iIiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsieWVuIiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsicnViIiwgbnVsbCwgInJ1YmxlLXNpZ24iXSwKICAgICAgICAgICAgWyJydWJsZSIsIG51bGwsICJydWJsZS1zaWduIl0sCiAgICAgICAgICAgIFsicm91YmxlIiwgbnVsbCwgInJ1YmxlLXNpZ24iXSwKICAgICAgICAgICAgWyJrcnciLCBudWxsLCAid29uLXNpZ24iXSwKICAgICAgICAgICAgWyJ3b24iLCBudWxsLCAid29uLXNpZ24iXSwKICAgICAgICAgICAgWyJidGMiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYml0Y29pbiIsICJmYWIiLCAiYnRjIl0sCiAgICAgICAgICAgIFsiZmlsZS10ZXh0IiwgbnVsbCwgImZpbGUtYWx0Il0sCiAgICAgICAgICAgIFsic29ydC1hbHBoYS1hc2MiLCBudWxsLCAic29ydC1hbHBoYS1kb3duIl0sCiAgICAgICAgICAgIFsic29ydC1hbHBoYS1kZXNjIiwgbnVsbCwgInNvcnQtYWxwaGEtZG93bi1hbHQiXSwKICAgICAgICAgICAgWyJzb3J0LWFtb3VudC1hc2MiLCBudWxsLCAic29ydC1hbW91bnQtZG93biJdLAogICAgICAgICAgICBbInNvcnQtYW1vdW50LWRlc2MiLCBudWxsLCAic29ydC1hbW91bnQtZG93bi1hbHQiXSwKICAgICAgICAgICAgWyJzb3J0LW51bWVyaWMtYXNjIiwgbnVsbCwgInNvcnQtbnVtZXJpYy1kb3duIl0sCiAgICAgICAgICAgIFsic29ydC1udW1lcmljLWRlc2MiLCBudWxsLCAic29ydC1udW1lcmljLWRvd24tYWx0Il0sCiAgICAgICAgICAgIFsieW91dHViZS1zcXVhcmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsieW91dHViZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ4aW5nIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInhpbmctc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInlvdXR1YmUtcGxheSIsICJmYWIiLCAieW91dHViZSJdLAogICAgICAgICAgICBbImRyb3Bib3giLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RhY2stb3ZlcmZsb3ciLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiaW5zdGFncmFtIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZsaWNrciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJhZG4iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYml0YnVja2V0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImJpdGJ1Y2tldC1zcXVhcmUiLCAiZmFiIiwgImJpdGJ1Y2tldCJdLAogICAgICAgICAgICBbInR1bWJsciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0dW1ibHItc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImxvbmctYXJyb3ctZG93biIsIG51bGwsICJsb25nLWFycm93LWFsdC1kb3duIl0sCiAgICAgICAgICAgIFsibG9uZy1hcnJvdy11cCIsIG51bGwsICJsb25nLWFycm93LWFsdC11cCJdLAogICAgICAgICAgICBbImxvbmctYXJyb3ctbGVmdCIsIG51bGwsICJsb25nLWFycm93LWFsdC1sZWZ0Il0sCiAgICAgICAgICAgIFsibG9uZy1hcnJvdy1yaWdodCIsIG51bGwsICJsb25nLWFycm93LWFsdC1yaWdodCJdLAogICAgICAgICAgICBbImFwcGxlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndpbmRvd3MiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYW5kcm9pZCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsaW51eCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJkcmliYmJsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJza3lwZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJmb3Vyc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInRyZWxsbyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJncmF0aXBheSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnaXR0aXAiLCAiZmFiIiwgImdyYXRpcGF5Il0sCiAgICAgICAgICAgIFsic3VuLW8iLCAiZmFyIiwgInN1biJdLAogICAgICAgICAgICBbIm1vb24tbyIsICJmYXIiLCAibW9vbiJdLAogICAgICAgICAgICBbInZrIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndlaWJvIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJlbnJlbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwYWdlbGluZXMiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RhY2stZXhjaGFuZ2UiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYXJyb3ctY2lyY2xlLW8tcmlnaHQiLCAiZmFyIiwgImFycm93LWFsdC1jaXJjbGUtcmlnaHQiXSwKICAgICAgICAgICAgWyJhcnJvdy1jaXJjbGUtby1sZWZ0IiwgImZhciIsICJhcnJvdy1hbHQtY2lyY2xlLWxlZnQiXSwKICAgICAgICAgICAgWyJjYXJldC1zcXVhcmUtby1sZWZ0IiwgImZhciIsICJjYXJldC1zcXVhcmUtbGVmdCJdLAogICAgICAgICAgICBbInRvZ2dsZS1sZWZ0IiwgImZhciIsICJjYXJldC1zcXVhcmUtbGVmdCJdLAogICAgICAgICAgICBbImRvdC1jaXJjbGUtbyIsICJmYXIiLCAiZG90LWNpcmNsZSJdLAogICAgICAgICAgICBbInZpbWVvLXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0cnkiLCBudWxsLCAibGlyYS1zaWduIl0sCiAgICAgICAgICAgIFsidHVya2lzaC1saXJhIiwgbnVsbCwgImxpcmEtc2lnbiJdLAogICAgICAgICAgICBbInBsdXMtc3F1YXJlLW8iLCAiZmFyIiwgInBsdXMtc3F1YXJlIl0sCiAgICAgICAgICAgIFsic2xhY2siLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsid29yZHByZXNzIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm9wZW5pZCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJpbnN0aXR1dGlvbiIsIG51bGwsICJ1bml2ZXJzaXR5Il0sCiAgICAgICAgICAgIFsiYmFuayIsIG51bGwsICJ1bml2ZXJzaXR5Il0sCiAgICAgICAgICAgIFsibW9ydGFyLWJvYXJkIiwgbnVsbCwgImdyYWR1YXRpb24tY2FwIl0sCiAgICAgICAgICAgIFsieWFob28iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZ29vZ2xlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJlZGRpdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJyZWRkaXQtc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInN0dW1ibGV1cG9uLWNpcmNsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJzdHVtYmxldXBvbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJkZWxpY2lvdXMiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZGlnZyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwaWVkLXBpcGVyLXBwIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInBpZWQtcGlwZXItYWx0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImRydXBhbCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJqb29tbGEiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3Bvb24iLCBudWxsLCAidXRlbnNpbC1zcG9vbiJdLAogICAgICAgICAgICBbImJlaGFuY2UiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYmVoYW5jZS1zcXVhcmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RlYW0iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RlYW0tc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImF1dG9tb2JpbGUiLCBudWxsLCAiY2FyIl0sCiAgICAgICAgICAgIFsiZW52ZWxvcGUtbyIsICJmYXIiLCAiZW52ZWxvcGUiXSwKICAgICAgICAgICAgWyJzcG90aWZ5IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImRldmlhbnRhcnQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic291bmRjbG91ZCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJmaWxlLXBkZi1vIiwgImZhciIsICJmaWxlLXBkZiJdLAogICAgICAgICAgICBbImZpbGUtd29yZC1vIiwgImZhciIsICJmaWxlLXdvcmQiXSwKICAgICAgICAgICAgWyJmaWxlLWV4Y2VsLW8iLCAiZmFyIiwgImZpbGUtZXhjZWwiXSwKICAgICAgICAgICAgWyJmaWxlLXBvd2VycG9pbnQtbyIsICJmYXIiLCAiZmlsZS1wb3dlcnBvaW50Il0sCiAgICAgICAgICAgIFsiZmlsZS1pbWFnZS1vIiwgImZhciIsICJmaWxlLWltYWdlIl0sCiAgICAgICAgICAgIFsiZmlsZS1waG90by1vIiwgImZhciIsICJmaWxlLWltYWdlIl0sCiAgICAgICAgICAgIFsiZmlsZS1waWN0dXJlLW8iLCAiZmFyIiwgImZpbGUtaW1hZ2UiXSwKICAgICAgICAgICAgWyJmaWxlLWFyY2hpdmUtbyIsICJmYXIiLCAiZmlsZS1hcmNoaXZlIl0sCiAgICAgICAgICAgIFsiZmlsZS16aXAtbyIsICJmYXIiLCAiZmlsZS1hcmNoaXZlIl0sCiAgICAgICAgICAgIFsiZmlsZS1hdWRpby1vIiwgImZhciIsICJmaWxlLWF1ZGlvIl0sCiAgICAgICAgICAgIFsiZmlsZS1zb3VuZC1vIiwgImZhciIsICJmaWxlLWF1ZGlvIl0sCiAgICAgICAgICAgIFsiZmlsZS12aWRlby1vIiwgImZhciIsICJmaWxlLXZpZGVvIl0sCiAgICAgICAgICAgIFsiZmlsZS1tb3ZpZS1vIiwgImZhciIsICJmaWxlLXZpZGVvIl0sCiAgICAgICAgICAgIFsiZmlsZS1jb2RlLW8iLCAiZmFyIiwgImZpbGUtY29kZSJdLAogICAgICAgICAgICBbInZpbmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY29kZXBlbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJqc2ZpZGRsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsaWZlLXJpbmciLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsibGlmZS1ib3V5IiwgImZhciIsICJsaWZlLXJpbmciXSwKICAgICAgICAgICAgWyJsaWZlLWJ1b3kiLCAiZmFyIiwgImxpZmUtcmluZyJdLAogICAgICAgICAgICBbImxpZmUtc2F2ZXIiLCAiZmFyIiwgImxpZmUtcmluZyJdLAogICAgICAgICAgICBbInN1cHBvcnQiLCAiZmFyIiwgImxpZmUtcmluZyJdLAogICAgICAgICAgICBbImNpcmNsZS1vLW5vdGNoIiwgbnVsbCwgImNpcmNsZS1ub3RjaCJdLAogICAgICAgICAgICBbInJlYmVsIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJhIiwgImZhYiIsICJyZWJlbCJdLAogICAgICAgICAgICBbInJlc2lzdGFuY2UiLCAiZmFiIiwgInJlYmVsIl0sCiAgICAgICAgICAgIFsiZW1waXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdlIiwgImZhYiIsICJlbXBpcmUiXSwKICAgICAgICAgICAgWyJnaXQtc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdpdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJoYWNrZXItbmV3cyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ5LWNvbWJpbmF0b3Itc3F1YXJlIiwgImZhYiIsICJoYWNrZXItbmV3cyJdLAogICAgICAgICAgICBbInljLXNxdWFyZSIsICJmYWIiLCAiaGFja2VyLW5ld3MiXSwKICAgICAgICAgICAgWyJ0ZW5jZW50LXdlaWJvIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInFxIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndlaXhpbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3ZWNoYXQiLCAiZmFiIiwgIndlaXhpbiJdLAogICAgICAgICAgICBbInNlbmQiLCBudWxsLCAicGFwZXItcGxhbmUiXSwKICAgICAgICAgICAgWyJwYXBlci1wbGFuZS1vIiwgImZhciIsICJwYXBlci1wbGFuZSJdLAogICAgICAgICAgICBbInNlbmQtbyIsICJmYXIiLCAicGFwZXItcGxhbmUiXSwKICAgICAgICAgICAgWyJjaXJjbGUtdGhpbiIsICJmYXIiLCAiY2lyY2xlIl0sCiAgICAgICAgICAgIFsiaGVhZGVyIiwgbnVsbCwgImhlYWRpbmciXSwKICAgICAgICAgICAgWyJzbGlkZXJzIiwgbnVsbCwgInNsaWRlcnMtaCJdLAogICAgICAgICAgICBbImZ1dGJvbC1vIiwgImZhciIsICJmdXRib2wiXSwKICAgICAgICAgICAgWyJzb2NjZXItYmFsbC1vIiwgImZhciIsICJmdXRib2wiXSwKICAgICAgICAgICAgWyJzbGlkZXNoYXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInR3aXRjaCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ5ZWxwIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm5ld3NwYXBlci1vIiwgImZhciIsICJuZXdzcGFwZXIiXSwKICAgICAgICAgICAgWyJwYXlwYWwiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZ29vZ2xlLXdhbGxldCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJjYy12aXNhIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNjLW1hc3RlcmNhcmQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY2MtZGlzY292ZXIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY2MtYW1leCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJjYy1wYXlwYWwiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY2Mtc3RyaXBlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImJlbGwtc2xhc2gtbyIsICJmYXIiLCAiYmVsbC1zbGFzaCJdLAogICAgICAgICAgICBbInRyYXNoIiwgbnVsbCwgInRyYXNoLWFsdCJdLAogICAgICAgICAgICBbImNvcHlyaWdodCIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJleWVkcm9wcGVyIiwgbnVsbCwgImV5ZS1kcm9wcGVyIl0sCiAgICAgICAgICAgIFsiYXJlYS1jaGFydCIsIG51bGwsICJjaGFydC1hcmVhIl0sCiAgICAgICAgICAgIFsicGllLWNoYXJ0IiwgbnVsbCwgImNoYXJ0LXBpZSJdLAogICAgICAgICAgICBbImxpbmUtY2hhcnQiLCBudWxsLCAiY2hhcnQtbGluZSJdLAogICAgICAgICAgICBbImxhc3RmbSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsYXN0Zm0tc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImlveGhvc3QiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYW5nZWxsaXN0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNjIiwgImZhciIsICJjbG9zZWQtY2FwdGlvbmluZyJdLAogICAgICAgICAgICBbImlscyIsIG51bGwsICJzaGVrZWwtc2lnbiJdLAogICAgICAgICAgICBbInNoZWtlbCIsIG51bGwsICJzaGVrZWwtc2lnbiJdLAogICAgICAgICAgICBbInNoZXFlbCIsIG51bGwsICJzaGVrZWwtc2lnbiJdLAogICAgICAgICAgICBbIm1lYW5wYXRoIiwgImZhYiIsICJmb250LWF3ZXNvbWUiXSwKICAgICAgICAgICAgWyJidXlzZWxsYWRzIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNvbm5lY3RkZXZlbG9wIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImRhc2hjdWJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZvcnVtYmVlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImxlYW5wdWIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic2VsbHN5IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNoaXJ0c2luYnVsayIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJzaW1wbHlidWlsdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJza3lhdGxhcyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJkaWFtb25kIiwgImZhciIsICJnZW0iXSwKICAgICAgICAgICAgWyJpbnRlcnNleCIsIG51bGwsICJ0cmFuc2dlbmRlciJdLAogICAgICAgICAgICBbImZhY2Vib29rLW9mZmljaWFsIiwgImZhYiIsICJmYWNlYm9vayJdLAogICAgICAgICAgICBbInBpbnRlcmVzdC1wIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndoYXRzYXBwIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImhvdGVsIiwgbnVsbCwgImJlZCJdLAogICAgICAgICAgICBbInZpYWNvaW4iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsibWVkaXVtIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInktY29tYmluYXRvciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ5YyIsICJmYWIiLCAieS1jb21iaW5hdG9yIl0sCiAgICAgICAgICAgIFsib3B0aW4tbW9uc3RlciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJvcGVuY2FydCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJleHBlZGl0ZWRzc2wiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYmF0dGVyeS00IiwgbnVsbCwgImJhdHRlcnktZnVsbCJdLAogICAgICAgICAgICBbImJhdHRlcnkiLCBudWxsLCAiYmF0dGVyeS1mdWxsIl0sCiAgICAgICAgICAgIFsiYmF0dGVyeS0zIiwgbnVsbCwgImJhdHRlcnktdGhyZWUtcXVhcnRlcnMiXSwKICAgICAgICAgICAgWyJiYXR0ZXJ5LTIiLCBudWxsLCAiYmF0dGVyeS1oYWxmIl0sCiAgICAgICAgICAgIFsiYmF0dGVyeS0xIiwgbnVsbCwgImJhdHRlcnktcXVhcnRlciJdLAogICAgICAgICAgICBbImJhdHRlcnktMCIsIG51bGwsICJiYXR0ZXJ5LWVtcHR5Il0sCiAgICAgICAgICAgIFsib2JqZWN0LWdyb3VwIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbIm9iamVjdC11bmdyb3VwIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbInN0aWNreS1ub3RlLW8iLCAiZmFyIiwgInN0aWNreS1ub3RlIl0sCiAgICAgICAgICAgIFsiY2MtamNiIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNjLWRpbmVycy1jbHViIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNsb25lIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImhvdXJnbGFzcy1vIiwgImZhciIsICJob3VyZ2xhc3MiXSwKICAgICAgICAgICAgWyJob3VyZ2xhc3MtMSIsIG51bGwsICJob3VyZ2xhc3Mtc3RhcnQiXSwKICAgICAgICAgICAgWyJob3VyZ2xhc3MtMiIsIG51bGwsICJob3VyZ2xhc3MtaGFsZiJdLAogICAgICAgICAgICBbImhvdXJnbGFzcy0zIiwgbnVsbCwgImhvdXJnbGFzcy1lbmQiXSwKICAgICAgICAgICAgWyJoYW5kLXJvY2stbyIsICJmYXIiLCAiaGFuZC1yb2NrIl0sCiAgICAgICAgICAgIFsiaGFuZC1ncmFiLW8iLCAiZmFyIiwgImhhbmQtcm9jayJdLAogICAgICAgICAgICBbImhhbmQtcGFwZXItbyIsICJmYXIiLCAiaGFuZC1wYXBlciJdLAogICAgICAgICAgICBbImhhbmQtc3RvcC1vIiwgImZhciIsICJoYW5kLXBhcGVyIl0sCiAgICAgICAgICAgIFsiaGFuZC1zY2lzc29ycy1vIiwgImZhciIsICJoYW5kLXNjaXNzb3JzIl0sCiAgICAgICAgICAgIFsiaGFuZC1saXphcmQtbyIsICJmYXIiLCAiaGFuZC1saXphcmQiXSwKICAgICAgICAgICAgWyJoYW5kLXNwb2NrLW8iLCAiZmFyIiwgImhhbmQtc3BvY2siXSwKICAgICAgICAgICAgWyJoYW5kLXBvaW50ZXItbyIsICJmYXIiLCAiaGFuZC1wb2ludGVyIl0sCiAgICAgICAgICAgIFsiaGFuZC1wZWFjZS1vIiwgImZhciIsICJoYW5kLXBlYWNlIl0sCiAgICAgICAgICAgIFsicmVnaXN0ZXJlZCIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJjcmVhdGl2ZS1jb21tb25zIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdnIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdnLWNpcmNsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0cmlwYWR2aXNvciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJvZG5va2xhc3NuaWtpIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm9kbm9rbGFzc25pa2ktc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdldC1wb2NrZXQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsid2lraXBlZGlhLXciLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic2FmYXJpIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNocm9tZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJmaXJlZm94IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm9wZXJhIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImludGVybmV0LWV4cGxvcmVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInRlbGV2aXNpb24iLCBudWxsLCAidHYiXSwKICAgICAgICAgICAgWyJjb250YW8iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiNTAwcHgiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYW1hem9uIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNhbGVuZGFyLXBsdXMtbyIsICJmYXIiLCAiY2FsZW5kYXItcGx1cyJdLAogICAgICAgICAgICBbImNhbGVuZGFyLW1pbnVzLW8iLCAiZmFyIiwgImNhbGVuZGFyLW1pbnVzIl0sCiAgICAgICAgICAgIFsiY2FsZW5kYXItdGltZXMtbyIsICJmYXIiLCAiY2FsZW5kYXItdGltZXMiXSwKICAgICAgICAgICAgWyJjYWxlbmRhci1jaGVjay1vIiwgImZhciIsICJjYWxlbmRhci1jaGVjayJdLAogICAgICAgICAgICBbIm1hcC1vIiwgImZhciIsICJtYXAiXSwKICAgICAgICAgICAgWyJjb21tZW50aW5nIiwgbnVsbCwgImNvbW1lbnQtZG90cyJdLAogICAgICAgICAgICBbImNvbW1lbnRpbmctbyIsICJmYXIiLCAiY29tbWVudC1kb3RzIl0sCiAgICAgICAgICAgIFsiaG91enoiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsidmltZW8iLCAiZmFiIiwgInZpbWVvLXYiXSwKICAgICAgICAgICAgWyJibGFjay10aWUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZm9udGljb25zIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJlZGRpdC1hbGllbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJlZGdlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNyZWRpdC1jYXJkLWFsdCIsIG51bGwsICJjcmVkaXQtY2FyZCJdLAogICAgICAgICAgICBbImNvZGllcGllIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm1vZHgiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZm9ydC1hd2Vzb21lIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInVzYiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwcm9kdWN0LWh1bnQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsibWl4Y2xvdWQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic2NyaWJkIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInBhdXNlLWNpcmNsZS1vIiwgImZhciIsICJwYXVzZS1jaXJjbGUiXSwKICAgICAgICAgICAgWyJzdG9wLWNpcmNsZS1vIiwgImZhciIsICJzdG9wLWNpcmNsZSJdLAogICAgICAgICAgICBbImJsdWV0b290aCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJibHVldG9vdGgtYiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnaXRsYWIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsid3BiZWdpbm5lciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3cGZvcm1zIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImVudmlyYSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3aGVlbGNoYWlyLWFsdCIsICJmYWIiLCAiYWNjZXNzaWJsZS1pY29uIl0sCiAgICAgICAgICAgIFsicXVlc3Rpb24tY2lyY2xlLW8iLCAiZmFyIiwgInF1ZXN0aW9uLWNpcmNsZSJdLAogICAgICAgICAgICBbInZvbHVtZS1jb250cm9sLXBob25lIiwgbnVsbCwgInBob25lLXZvbHVtZSJdLAogICAgICAgICAgICBbImFzbC1pbnRlcnByZXRpbmciLCBudWxsLCAiYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmciXSwKICAgICAgICAgICAgWyJkZWFmbmVzcyIsIG51bGwsICJkZWFmIl0sCiAgICAgICAgICAgIFsiaGFyZC1vZi1oZWFyaW5nIiwgbnVsbCwgImRlYWYiXSwKICAgICAgICAgICAgWyJnbGlkZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnbGlkZS1nIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNpZ25pbmciLCBudWxsLCAic2lnbi1sYW5ndWFnZSJdLAogICAgICAgICAgICBbInZpYWRlbyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ2aWFkZW8tc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNuYXBjaGF0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNuYXBjaGF0LWdob3N0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNuYXBjaGF0LXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwaWVkLXBpcGVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZpcnN0LW9yZGVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInlvYXN0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInRoZW1laXNsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnb29nbGUtcGx1cy1vZmZpY2lhbCIsICJmYWIiLCAiZ29vZ2xlLXBsdXMiXSwKICAgICAgICAgICAgWyJnb29nbGUtcGx1cy1jaXJjbGUiLCAiZmFiIiwgImdvb2dsZS1wbHVzIl0sCiAgICAgICAgICAgIFsiZm9udC1hd2Vzb21lIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZhIiwgImZhYiIsICJmb250LWF3ZXNvbWUiXSwKICAgICAgICAgICAgWyJoYW5kc2hha2UtbyIsICJmYXIiLCAiaGFuZHNoYWtlIl0sCiAgICAgICAgICAgIFsiZW52ZWxvcGUtb3Blbi1vIiwgImZhciIsICJlbnZlbG9wZS1vcGVuIl0sCiAgICAgICAgICAgIFsibGlub2RlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImFkZHJlc3MtYm9vay1vIiwgImZhciIsICJhZGRyZXNzLWJvb2siXSwKICAgICAgICAgICAgWyJ2Y2FyZCIsIG51bGwsICJhZGRyZXNzLWNhcmQiXSwKICAgICAgICAgICAgWyJhZGRyZXNzLWNhcmQtbyIsICJmYXIiLCAiYWRkcmVzcy1jYXJkIl0sCiAgICAgICAgICAgIFsidmNhcmQtbyIsICJmYXIiLCAiYWRkcmVzcy1jYXJkIl0sCiAgICAgICAgICAgIFsidXNlci1jaXJjbGUtbyIsICJmYXIiLCAidXNlci1jaXJjbGUiXSwKICAgICAgICAgICAgWyJ1c2VyLW8iLCAiZmFyIiwgInVzZXIiXSwKICAgICAgICAgICAgWyJpZC1iYWRnZSIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJkcml2ZXJzLWxpY2Vuc2UiLCBudWxsLCAiaWQtY2FyZCJdLAogICAgICAgICAgICBbImlkLWNhcmQtbyIsICJmYXIiLCAiaWQtY2FyZCJdLAogICAgICAgICAgICBbImRyaXZlcnMtbGljZW5zZS1vIiwgImZhciIsICJpZC1jYXJkIl0sCiAgICAgICAgICAgIFsicXVvcmEiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZnJlZS1jb2RlLWNhbXAiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsidGVsZWdyYW0iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsidGhlcm1vbWV0ZXItNCIsIG51bGwsICJ0aGVybW9tZXRlci1mdWxsIl0sCiAgICAgICAgICAgIFsidGhlcm1vbWV0ZXIiLCBudWxsLCAidGhlcm1vbWV0ZXItZnVsbCJdLAogICAgICAgICAgICBbInRoZXJtb21ldGVyLTMiLCBudWxsLCAidGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnMiXSwKICAgICAgICAgICAgWyJ0aGVybW9tZXRlci0yIiwgbnVsbCwgInRoZXJtb21ldGVyLWhhbGYiXSwKICAgICAgICAgICAgWyJ0aGVybW9tZXRlci0xIiwgbnVsbCwgInRoZXJtb21ldGVyLXF1YXJ0ZXIiXSwKICAgICAgICAgICAgWyJ0aGVybW9tZXRlci0wIiwgbnVsbCwgInRoZXJtb21ldGVyLWVtcHR5Il0sCiAgICAgICAgICAgIFsiYmF0aHR1YiIsIG51bGwsICJiYXRoIl0sCiAgICAgICAgICAgIFsiczE1IiwgbnVsbCwgImJhdGgiXSwKICAgICAgICAgICAgWyJ3aW5kb3ctbWF4aW1pemUiLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsid2luZG93LXJlc3RvcmUiLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsidGltZXMtcmVjdGFuZ2xlIiwgbnVsbCwgIndpbmRvdy1jbG9zZSJdLAogICAgICAgICAgICBbIndpbmRvdy1jbG9zZS1vIiwgImZhciIsICJ3aW5kb3ctY2xvc2UiXSwKICAgICAgICAgICAgWyJ0aW1lcy1yZWN0YW5nbGUtbyIsICJmYXIiLCAid2luZG93LWNsb3NlIl0sCiAgICAgICAgICAgIFsiYmFuZGNhbXAiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZ3JhdiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJldHN5IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImltZGIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsicmF2ZWxyeSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJlZXJjYXN0IiwgImZhYiIsICJzZWxsY2FzdCJdLAogICAgICAgICAgICBbInNub3dmbGFrZS1vIiwgImZhciIsICJzbm93Zmxha2UiXSwKICAgICAgICAgICAgWyJzdXBlcnBvd2VycyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3cGV4cGxvcmVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNhYiIsIG51bGwsICJ0YXhpIl0KICAgICAgICBdOwogICAgcmV0dXJuIGZ1bmN0aW9uKGwpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBsKCkKICAgICAgICB9IGNhdGNoIChsKSB7CiAgICAgICAgICAgIGlmICghdCkgdGhyb3cgbAogICAgICAgIH0KICAgIH0oZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGw7CiAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgaS5ob29rcy5hZGRTaGltcyA/IGkuaG9va3MuYWRkU2hpbXMocykgOiAobCA9IGkuc2hpbXMpLnB1c2guYXBwbHkobCwgcykKICAgIH0pLCBzCn0sICJvYmplY3QiID09IHR5cGVvZiBleHBvcnRzICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA9IGEoKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGEpIDogbFsiZm9udGF3ZXNvbWUtZnJlZS1zaGltcyJdID0gYSgpOw=="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/images/tab_img1.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.083Z","timestamp":1785130090083,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/images/tab_img1.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Nqgw6VPpXr2yc5KoENgYQbM9VfbNtpeMutgjKuJm2tzWGwsDNB4cKl%2Bq3g%2BAa0Ih5XLl8HLh1k96UxKJG4X%2BxKuVnLi%2BWZSPqIAhfvxWFJGAZsx7N75U2ILsmY3%2Bgd%2FNBjmfiTvJ9w%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d370e64120a-OSL\r\ncontent-length: 4235\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":4235,"size_decoded":5006,"mime_type":"image/png","magic":"PNG image data, 20 x 21, 8-bit/color RGBA, non-interlaced","md5":"044ee0f9ccdcdc5e3d6d99691090d21b","sha1":"bd4b3bd768f9691f875a8402502c96123280682f","sha256":"15e881612028628e9de77217988ec19656d975b1c44acd79002e243787c47fbb","sha512":"c26c6605ced345c906dc783f05274f6a31225a22318f29179c40956612c58d6a5902e8241f0f46a821c3a6ce538e45dec59ab1405476808843b38066715c50d2","ssdeep":"96:/llcHitlIxv9vk7C1+I4wWHLihk/xE/aluHTLLTi93:kIIHUCD4wa0L2N","tlshash":"8c913e4dd9401901210d86a624fbd9074e179ac4c2947d5cbdeec20e9a205f96c7ebdf","first_seen":"2026-07-27T04:11:05.749033Z","last_seen":"2026-07-27T05:30:59.813566Z","times_seen":3,"resource_available":false,"data":"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UmVhZHlxyWU8AAADfWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuZGFiYWNiYiwgMjAyMS8wNC8xNC0wMDozOTo0NCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5QzkwNDI1QTc5NkRFOTExQjkyNkY0QUYxMUQxRTNEQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQzQ1MTQxRThGNDYxMUVFOTlCNkFCNzZDQTE1NzBFNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozQzQ1MTQxRDhGNDYxMUVFOTlCNkFCNzZDQTE1NzBFNSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmIzMTE2NmIxLTg1ODctODM0Mi1hNzE5LTkyNDU4MTEyNWMwYyIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhkMjk5NDE5LTNjNmYtZmU0MS05ZWE1LTZmZmRmMDBlODU0NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnPobuEAAAJVSURBVHjajNVbiIxhGMDx+WaGHcddu06xbZvCBUqIcC8ikWORQ3G1N6vkxqGsQ7kQudQesi4USa6sIhRuUEhKknW6WXLY3daezPi//L9t2ma2mfo1u9++3/M+7/M+77tRLpdLlPCZjCXYjPDCdTzD1+EDoxECzsRozMIWpHEe/Thg4GtoxwA+Fws4Crux1Azm+1K9EyQMcAbz8ALleIKWdIHMqrESFw0Uft+HBmRCEujBVJzCe1SaRKJQwBS+oxsLMBYPDJaNS4U31nYiXsf1TI+wERmDhe9BJxj+GYMkyuIHxQLmrGWFQbNFxoVgvY7NFQvY77K78NIM8ydKueRBN6fPselCActskwFnXWHBswYKm3QprzerrXeXfx8KWGkmm7DRADdx2zGR437nTR5a6KyB17v0f4On4zCqXO5pnMRBe6yhQA3D5LssSZUrSsYBy936C/hk+uFkLMROM+nNC1aL47bNEUzwnbI44Cr8sD5huXNxH++ceStaDbYGe3EFNzAD41zB/1Vw9B6jBrPRgsVoRQXWog0p1KMRteG4IuO4JuxBXXiedNf2m80rf27DHKzGZZywJw9hubfONI/dVUzK78O7OGYtmq1nKMEiC34LXzx+oRzb8NG6deb1ZBQH/GkvHfV4NaHRoA+9BJbZWh245wTjrVufO5yNA34zwzDDdtuk2+W1uwk78NzNCRfGFDxCjZvSaZZDjd3pd7PtsA6/fHYHf/ABT714eyxBZOahHzeMdGPXecF2OHNco7TNH9mf/W5GOC1vcS4q8X9KyZ+/AgwAPQ7epxHU0lsAAAAASUVORK5CYII="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/header-footer-elementor/assets/css/header-footer-elementor.css?ver=1.6.22","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.976Z","timestamp":1785130089976,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/header-footer-elementor/assets/css/header-footer-elementor.css?ver=1.6.22 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=3d%2BEL%2Fj5JLcwgK7A5FI0Eqv5cGwnRqYl%2BqBKzKhfd%2FZgZW4SOz4jGZclsY%2BeM4EjRs4003WzhkBUDMg2aMD3VCDRZvKRRcubkX4PjJrMoVeIadjNDwyTkbgMyNxc2Aq5rPBVN5qkSg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d365e26120a-OSL\r\ncontent-length: 257\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":783,"size_decoded":1072,"mime_type":"text/css","magic":"ASCII text","md5":"b12e91d337f924e4d512a08eb38a2918","sha1":"6fa7f5325a6f3f4b3e9361e0e831ad0e1d939d3e","sha256":"3b91ba3e29603d277073967a26743566b0df1fe6f89d27f193400e3238b63f10","sha512":"26adddb9b10520f084d8e4787136f03b0d0b4476274cc1aaa3886869042acbd33cb02dfdd314b712e94463a9de1e9c752a200399f3ab4d3fe6fa828363c06157","ssdeep":"","tlshash":"6d019024b19eb56512318c24f565857cb1be81075b0599a275ecd19bfbce740c02d6c4","first_seen":"2025-07-04T20:26:13.145661Z","last_seen":"2026-07-27T05:30:59.827757Z","times_seen":11,"resource_available":false,"data":"LmZvb3Rlci13aWR0aC1maXhlciB7CiAgICB3aWR0aDogMTAwJTsKfQoKLyogQ29udGFpbmVyIGZpeCBmb3IgZ2VuZXNpcyB0aGVtZXMgKi8KCi5laGYtdGVtcGxhdGUtZ2VuZXNpcy5laGYtaGVhZGVyIC5zaXRlLWhlYWRlciAud3JhcCwKLmVoZi10ZW1wbGF0ZS1nZW5lc2lzLmVoZi1mb290ZXIgLnNpdGUtZm9vdGVyIC53cmFwLAouZWhmLXRlbXBsYXRlLWdlbmVyYXRlcHJlc3MuZWhmLWhlYWRlciAuc2l0ZS1oZWFkZXIgLmluc2lkZS1oZWFkZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAwOwogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgovKiBDb250YWluZXIgZml4IGZvciBnZW5lcmF0ZXByZXNzIHRoZW1lICovCgouZWhmLXRlbXBsYXRlLWdlbmVyYXRlcHJlc3MuZWhmLWhlYWRlciAuc2l0ZS1oZWFkZXIsCi5laGYtdGVtcGxhdGUtZ2VuZXJhdGVwcmVzcy5laGYtZm9vdGVyIC5zaXRlLWZvb3RlciB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgLyogb3ZlcnJpZGUgZ2VuZXJhdGVwcmVzcyBkZWZhdWx0IHdoaXRlIGNvbG9yIGZvciBoZWFkZXIgKi8KfQoKLmJoZi1oaWRkZW4gewogICAgZGlzcGxheTogbm9uZQp9CgovKiBGaXg6IEhlYWRlciBoaWRkZW4gYmVsb3cgdGhlIHBhZ2UgY29udGVudCAqLwoKLmVoZi1oZWFkZXIgI21hc3RoZWFkIHsKICAgIHotaW5kZXg6IDk5OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-3.css?ver=1706574921","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.982Z","timestamp":1785130089982,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/elementor/css/post-3.css?ver=1706574921 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=DoC613MgEALiRy0e9%2BCwErfmjyRFCLDMFAcme3bO1E%2BjKgMBzj%2BMsTJH34EXF6JM%2FAxFMtjWGxIEanK7FpH0jVlR9aMqpwN%2FrUmTJq6riWK2ImeSJKUYANbtZ%2FLMDNyfJtAfMH4maA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d366e2a120a-OSL\r\ncontent-length: 1108\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":11272,"size_decoded":1926,"mime_type":"text/css","magic":"ASCII text","md5":"3089aa5e34553df5e4ea75627038fb05","sha1":"a538318c5943e870903be2bdfdaf46952cd1a9be","sha256":"3bb1c23dbe24fbb4533616d5793c4fe8ee9aaa7975080978b4ed35de15a0f374","sha512":"450ce2626686b0194454f48a0aff616306b8c6337fd03ae0aa07ab31c56f3b80b7785713e5072e1812a0a80cd1a5147576423021875b9ae18704b3ec9a62fbc8","ssdeep":"192:AUrIHSE89sA5oQ6/7fUdSob6GvSIh63UB2uTIwIh63UB2uTd4:FRsAyTaj","tlshash":"2f32a3997b22c461a8b7095eb7cbe16d252cd06f0c0dd4bbf9cc9314af6a77f9648201","first_seen":"2026-07-27T03:56:42.513231Z","last_seen":"2026-07-27T05:30:59.795019Z","times_seen":6,"resource_available":false,"data":"LmVsZW1lbnRvci1raXQtMyB7CiAgICAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnk6ICMxMjYyRkY7CiAgICAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeTogIzgyRThGRjsKICAgIC0tZS1nbG9iYWwtY29sb3ItdGV4dDogI0E2QTZBNjsKICAgIC0tZS1nbG9iYWwtY29sb3ItYWNjZW50OiAjMTI2MkZGOwogICAgLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1OiAjRjlGOUY5OwogICAgLS1lLWdsb2JhbC1jb2xvci1lOWVhOWRkOiAjMDAwMDAwOwogICAgLS1lLWdsb2JhbC1jb2xvci0wOGVlNDY3OiAjRkZGRkZGOwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHk6ICJXb3JrIFNhbnMiOwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQ6IDcwMDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHk6ICJXb3JrIFNhbnMiOwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodDogNjAwOwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHk6ICJXb3JrIFNhbnMiOwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplOiAyMHB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQ6IDQwMDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0OiAzMHB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LWZhbWlseTogIldvcmsgU2FucyI7CiAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZTogMjBweDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC13ZWlnaHQ6IDYwMDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQ6IDIzcHg7CiAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1mb250LXNpemU6IDY0cHg7CiAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1saW5lLWhlaWdodDogNzRweDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWZvbnQtc2l6ZTogNTRweDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWxpbmUtaGVpZ2h0OiA2NHB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdlZTgzYzktZm9udC1zaXplOiA0NHB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdlZTgzYzktbGluZS1oZWlnaHQ6IDU0cHg7CiAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1mb250LXNpemU6IDM4cHg7CiAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1saW5lLWhlaWdodDogNDhweDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWZvbnQtc2l6ZTogMzJweDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWxpbmUtaGVpZ2h0OiA0MnB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTY0NjU5YzUtZm9udC1zaXplOiAyNnB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTY0NjU5YzUtbGluZS1oZWlnaHQ6IDM2cHg7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci1raXQtMyBoMSB7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtZm9udC1zaXplKTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1lNjE4OWFlLWxpbmUtaGVpZ2h0KTsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1lNjE4OWFlLWxldHRlci1zcGFjaW5nKTsKICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS13b3JkLXNwYWNpbmcpOwp9CgouZWxlbWVudG9yLWtpdC0zIGgyIHsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZDEzY2UxYS1mb250LXNpemUpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtbGluZS1oZWlnaHQpOwogICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtbGV0dGVyLXNwYWNpbmcpOwogICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLXdvcmQtc3BhY2luZyk7Cn0KCi5lbGVtZW50b3Ita2l0LTMgaDMgewogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LWZvbnQtc2l6ZSk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1saW5lLWhlaWdodCk7CiAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1sZXR0ZXItc3BhY2luZyk7CiAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdlZTgzYzktd29yZC1zcGFjaW5nKTsKfQoKLmVsZW1lbnRvci1raXQtMyBoNCB7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtZm9udC1zaXplKTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS0zN2I3MTUzLWxpbmUtaGVpZ2h0KTsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS0zN2I3MTUzLWxldHRlci1zcGFjaW5nKTsKICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My13b3JkLXNwYWNpbmcpOwp9CgouZWxlbWVudG9yLWtpdC0zIGg1IHsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2FlMDJjNi1mb250LXNpemUpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtbGluZS1oZWlnaHQpOwogICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtbGV0dGVyLXNwYWNpbmcpOwogICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LXdvcmQtc3BhY2luZyk7Cn0KCi5lbGVtZW50b3Ita2l0LTMgaDYgewogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LWZvbnQtc2l6ZSk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1saW5lLWhlaWdodCk7CiAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1sZXR0ZXItc3BhY2luZyk7CiAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTY0NjU5YzUtd29yZC1zcGFjaW5nKTsKfQoKLmVsZW1lbnRvci1raXQtMyBidXR0b24sCi5lbGVtZW50b3Ita2l0LTMgaW5wdXRbdHlwZT0iYnV0dG9uIl0sCi5lbGVtZW50b3Ita2l0LTMgaW5wdXRbdHlwZT0ic3VibWl0Il0sCi5lbGVtZW50b3Ita2l0LTMgLmVsZW1lbnRvci1idXR0b24gewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEyMGRlZywgIzgyRThGRiAtNC4zOCUsICMxMjYyRkYgNjUuNzklKTsKICAgIGJveC1zaGFkb3c6IDBweCAwcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjI1KTsKICAgIGJvcmRlci1yYWRpdXM6IDZweCA2cHggNnB4IDZweDsKICAgIHBhZGRpbmc6IDhweCAyNHB4IDhweCAyNHB4Owp9CgouZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQ+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMTQwcHg7Cn0KCi5lLWNvbiB7CiAgICAtLWNvbnRhaW5lci1tYXgtd2lkdGg6IDExNDBweDsKfQoKLmVsZW1lbnRvci13aWRnZXQ6bm90KDpsYXN0LWNoaWxkKSB7CiAgICBtYXJnaW4tYmxvY2stZW5kOiAyMHB4Owp9CgouZWxlbWVudG9yLWVsZW1lbnQgewogICAgLS13aWRnZXRzLXNwYWNpbmc6IDIwcHggMjBweDsKfQoKe30KCmgxLmVudHJ5LXRpdGxlIHsKICAgIGRpc3BsYXk6IHZhcigtLXBhZ2UtdGl0bGUtZGlzcGxheSk7Cn0KCi5zaXRlLWhlYWRlciB7CiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7Cn0KCkBtZWRpYShtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLWtpdC0zIHsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemU6IDE2cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQ6IDI2cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemU6IDE2cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodDogMjZweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1mb250LXNpemU6IDUwcHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtbGluZS1oZWlnaHQ6IDYwcHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtZm9udC1zaXplOiA0MnB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWxpbmUtaGVpZ2h0OiA1MnB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LWZvbnQtc2l6ZTogMzRweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1saW5lLWhlaWdodDogNDRweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1mb250LXNpemU6IDI4cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtbGluZS1oZWlnaHQ6IDM4cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtZm9udC1zaXplOiAyNHB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWxpbmUtaGVpZ2h0OiAzNHB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LWZvbnQtc2l6ZTogMjBweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1saW5lLWhlaWdodDogMzBweDsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGgxIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1saW5lLWhlaWdodCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtbGV0dGVyLXNwYWNpbmcpOwogICAgICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS13b3JkLXNwYWNpbmcpOwogICAgfQogICAgLmVsZW1lbnRvci1raXQtMyBoMiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtbGluZS1oZWlnaHQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWxldHRlci1zcGFjaW5nKTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtd29yZC1zcGFjaW5nKTsKICAgIH0KICAgIC5lbGVtZW50b3Ita2l0LTMgaDMgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LWxpbmUtaGVpZ2h0KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1sZXR0ZXItc3BhY2luZyk7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LXdvcmQtc3BhY2luZyk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGg0IHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1saW5lLWhlaWdodCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtbGV0dGVyLXNwYWNpbmcpOwogICAgICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My13b3JkLXNwYWNpbmcpOwogICAgfQogICAgLmVsZW1lbnRvci1raXQtMyBoNSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtbGluZS1oZWlnaHQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWxldHRlci1zcGFjaW5nKTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtd29yZC1zcGFjaW5nKTsKICAgIH0KICAgIC5lbGVtZW50b3Ita2l0LTMgaDYgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LWxpbmUtaGVpZ2h0KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1sZXR0ZXItc3BhY2luZyk7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LXdvcmQtc3BhY2luZyk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGJ1dHRvbiwKICAgIC5lbGVtZW50b3Ita2l0LTMgaW5wdXRbdHlwZT0iYnV0dG9uIl0sCiAgICAuZWxlbWVudG9yLWtpdC0zIGlucHV0W3R5cGU9InN1Ym1pdCJdLAogICAgLmVsZW1lbnRvci1raXQtMyAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itc2VjdGlvbi5lbGVtZW50b3Itc2VjdGlvbi1ib3hlZD4uZWxlbWVudG9yLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDI0cHg7CiAgICB9CiAgICAuZS1jb24gewogICAgICAgIC0tY29udGFpbmVyLW1heC13aWR0aDogMTAyNHB4OwogICAgfQp9CgpAbWVkaWEobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLWtpdC0zIHsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1mb250LXNpemU6IDQwcHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtbGluZS1oZWlnaHQ6IDUwcHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtZm9udC1zaXplOiAzNHB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWxpbmUtaGVpZ2h0OiA0NHB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LWZvbnQtc2l6ZTogMzBweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1saW5lLWhlaWdodDogNDBweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1mb250LXNpemU6IDI2cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtbGluZS1oZWlnaHQ6IDM2cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtZm9udC1zaXplOiAyMnB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LWZvbnQtc2l6ZTogMThweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1saW5lLWhlaWdodDogMjhweDsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGgxIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1saW5lLWhlaWdodCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtbGV0dGVyLXNwYWNpbmcpOwogICAgICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS13b3JkLXNwYWNpbmcpOwogICAgfQogICAgLmVsZW1lbnRvci1raXQtMyBoMiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtbGluZS1oZWlnaHQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWxldHRlci1zcGFjaW5nKTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtd29yZC1zcGFjaW5nKTsKICAgIH0KICAgIC5lbGVtZW50b3Ita2l0LTMgaDMgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LWxpbmUtaGVpZ2h0KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1sZXR0ZXItc3BhY2luZyk7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LXdvcmQtc3BhY2luZyk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGg0IHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1saW5lLWhlaWdodCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtbGV0dGVyLXNwYWNpbmcpOwogICAgICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My13b3JkLXNwYWNpbmcpOwogICAgfQogICAgLmVsZW1lbnRvci1raXQtMyBoNSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtbGluZS1oZWlnaHQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWxldHRlci1zcGFjaW5nKTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtd29yZC1zcGFjaW5nKTsKICAgIH0KICAgIC5lbGVtZW50b3Ita2l0LTMgaDYgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LWxpbmUtaGVpZ2h0KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1sZXR0ZXItc3BhY2luZyk7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LXdvcmQtc3BhY2luZyk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGJ1dHRvbiwKICAgIC5lbGVtZW50b3Ita2l0LTMgaW5wdXRbdHlwZT0iYnV0dG9uIl0sCiAgICAuZWxlbWVudG9yLWtpdC0zIGlucHV0W3R5cGU9InN1Ym1pdCJdLAogICAgLmVsZW1lbnRvci1raXQtMyAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itc2VjdGlvbi5lbGVtZW50b3Itc2VjdGlvbi1ib3hlZD4uZWxlbWVudG9yLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LXdpZHRoOiA3NjdweDsKICAgIH0KICAgIC5lLWNvbiB7CiAgICAgICAgLS1jb250YWluZXItbWF4LXdpZHRoOiA3NjdweDsKICAgIH0KfQ=="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/bg-unlock-the-world.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.306Z","timestamp":1785130090306,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/bg-unlock-the-world.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-9.css?ver=1706574923\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:19 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=sXJZYzxxe0mAutXShF2l2Dc9Y1lkNT0o07IAKLvIp8jQVMLNxc05kKRaSpNvza%2B6HCxqgfv7sCHYiUXN2Mio32Ra5zSs5TjXt6MGUmNdXj7ABdjvXXhuRAB%2FnSVeK9EY9ApS8xLPVA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=4,i\r\ncf-ray: a2193d386e83120a-OSL\r\ncontent-length: 38896\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":38896,"size_decoded":39660,"mime_type":"image/png","magic":"PNG image data, 3840 x 1558, 8-bit/color RGBA, non-interlaced","md5":"a0fa45d43fa4d78f64e21d87d17741c4","sha1":"566383159ba1884ca67e3cd95999f5c5f2970ae4","sha256":"99efb1804c89e0fb46301047de43ba0c1b1280768d771ebe8d7d47b1e2b39c0d","sha512":"0580faf19ff40fb713d6b3e843fba6d8767b06caaf9037f9fc847f180e065b979e14320fcd8c54c9ddce00cf3b0e1f4175affa0d6370637515ae1387addd0f3f","ssdeep":"768:67Aad0EuGsln2Bp9P66Ga4wJE91YXJ/ET+CUH:k7irGsln8dGaDJEGJhB","tlshash":"440351e1825b94deed8e94b546df1bf83bb81b020402171ac771b918bf7f6fac890915","first_seen":"2026-07-27T04:11:05.714751Z","last_seen":"2026-07-27T05:30:59.808593Z","times_seen":3,"resource_available":false,"data":"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AAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAAAQgTAAAAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAAAAAAIAQATAAAAAAAAAAAAAAAAAAAIQIgAEAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAAAIQJgAAAAAAAAAAAAAAAAAAAIEQADAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAAAAEIEwAAAAAAAAAAAAAAAAAAAECIABgAAAAAAAAAAAAAAAACAEAEwAAAAAAAAAAAAAAAAAACECIABAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAAAACECYAAAAAAAAAAAAAAAAAAACBEAAwAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAABCBMAAAAAAAAAAAAAAAAAAABAiAAYAAAAAAAAAAAAAAAAAgBABMAAAAAAAAAAAAAAAAAAAhAiAAQAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAAAhAmAAAAAAAAAAAAAAAAAAAAgRAAMAAAAAAAAAAAAAAAAAQIgAGAAAAAAAAAAAAP5h344FAAAAAAb5W09jR3kEAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAAAIwIwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAADAiAAMAAAAAAAAAAAAAAAAAwIgADADE3t0opZEsYBhGFPDc/80es3H3OJ5tE1TCDMzP193PU7XlRgdMSEyl/PoFAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAY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"}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/bg-started-in-steps.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.308Z","timestamp":1785130090308,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/bg-started-in-steps.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-9.css?ver=1706574923\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:19 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=ieZPKmsVXxocvjHO1%2FhnC7GNlfEWESu5tbjeksMSq%2BRUQ3Q%2B3pSUxshbIqHaSVxhG%2BI8QdJ1k%2FZGaIlpnVkRd9yHyDgcpWhz6Haj3RtEEjPoP%2FqdZQMIrSfkJLczX9I3HXfIVHa28Q%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=4,i\r\ncf-ray: a2193d387e84120a-OSL\r\ncontent-length: 48107\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":48107,"size_decoded":48879,"mime_type":"image/png","magic":"PNG image data, 3840 x 2166, 8-bit/color RGBA, non-interlaced","md5":"b81530fb7f1ed7b4f6afddbef1a249f0","sha1":"9c36fc70344a389344bc8ab0537828d7fb932d28","sha256":"0c6f1370323bc428b7afa0eb84022d7cc5fa7f0d3cfc0838d4e220e8ef62a530","sha512":"531d5b3e8c7ac47924ff5d6a35580aa7d8b942ff13d4c989cd96db8a1bab3bb50cee642f20378448a1c54af45ea9a2ee7546aa7b863dda4deaa2e619ef21d05e","ssdeep":"384:x68Q2HbZD1UmA5cuPWP57b0mRjJ8izwX3Vf5EhYqWMK:x6YHb9XA5cpF0mZwXUqqWMK","tlshash":"8723bd608427f25ed91d403947ef2fbd37744b898402072ecb71ee267eab6a0dd6da50","first_seen":"2026-07-27T04:11:05.745782Z","last_seen":"2026-07-27T05:30:59.803891Z","times_seen":3,"resource_available":false,"data":"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AAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAMAAAOgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgOPt2LAAAAAAwyN96GjvKIwAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAIh9OyYAAABAGGT/1NbYAT0AAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAGAAAAAAAAAAAAAAAA0CEAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAB89u1YAAAAAGCQv/U0dpRHAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMC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"}},"time_used":9,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":7,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.325Z","timestamp":1785130090325,"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/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.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://dreamspinfluence.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: 50316\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 04:26:34 GMT\r\nexpires: Fri, 23 Jul 2027 04:26:34 GMT\r\ncache-control: public, max-age=31536000\r\nage: 349296\r\nlast-modified: Wed, 10 Sep 2025 16:23:20 GMT\r\ncontent-type: font/woff2\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":50316,"size_decoded":51129,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 50316, version 1.0","md5":"97b33529e13b04b2205144e28a17a1d6","sha1":"9eaf3fe571af16f72a84dbadc1fce0128dff4486","sha256":"1dd49afc07fb2231b2ff686cbf007725fb2742271bb1f28ebd98f22a0d817343","sha512":"ce731a26fac8fd5583137450138d71fc36a9a0c4b79257a5af74be21cc2773b6e3a1ead61055411ec1c2cc857b8b0e6cbc94971f5f0b51820b458d9146af89bf","ssdeep":"768:etWz8e4bJ7xYqUBOYPc1NmWL7TDGrAZrIzcbWomWEjoyW6Md/AE1wBje34U:eZdhUQN5ToAZrIz7uEjR7udw5e34U","tlshash":"a33301e2882ca65cfe1ba7f8c422cc65e3336044f63d461d5766ff6ee470605e83a016","first_seen":"2025-09-12T00:12:40.161531Z","last_seen":"2026-08-02T16:46:21.571857Z","times_seen":23285,"resource_available":false,"data":"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"}},"time_used":96,"timings":{"blocked":32,"dns":0,"connect":0,"send":0,"wait":34,"receive":30,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/header-footer-elementor/inc/widgets-css/frontend.css?ver=1.6.22","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.987Z","timestamp":1785130089987,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/header-footer-elementor/inc/widgets-css/frontend.css?ver=1.6.22 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=sZfUsv%2BMneqngbs%2BsUKKMokfnqNQSMN%2FgCiF%2Fu8VopvXBXo%2Bd6GvBS5J0Q4CCxHAa%2FMvrWITsiKdHRXFKGbbwznE71%2B8PToAuVWRkDagDJAA3dz5toKKqsMiC4dYJOM6JBUoQ44Hlw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d366e2d120a-OSL\r\ncontent-length: 7185\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":75505,"size_decoded":8005,"mime_type":"text/css","magic":"Unicode text, UTF-8 text","md5":"eeca095d5d2dd3c658b6e8baa49864b2","sha1":"7eea352359a9d8c05ae8963ace95e0af31a1f528","sha256":"1c826eed94b0c634ef3e304f6f6e8ac76b8f9967262a38f7925b580ff2999ff7","sha512":"7d1ebee45a18a3ef4d44d8c54c994ea86ba736a246b794fb13e58660ebec5b40e4fcd653af30cce622dc054ee637880b38fd3c33655dbd946aa46a489d3d15c9","ssdeep":"768:42+F8R0KAkedPTQs+eXBjBn5IDG8TDb5D8zIGTePV/fHK10mh9zPSULvZVUcbj/1:42+F8R09oqDrVeLQaY","tlshash":"8f73b9c51dc228b49a1a691da3ae976457b60047cf34adac37ed810ccf82342b7f6b57","first_seen":"2026-07-27T03:56:42.587394Z","last_seen":"2026-07-27T05:30:59.830116Z","times_seen":6,"resource_available":false,"data":"LyogTmF2aWdhdGlvbiBNZW51IENTUyAqLwoKdWwuaGZlLW5hdi1tZW51LAouaGZlLW5hdi1tZW51IGxpLAouaGZlLW5hdi1tZW51IHVsIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmUgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5oZmUtbmF2LW1lbnUgbGkubWVudS1pdGVtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmhmZS1mbHlvdXQtY29udGFpbmVyIC5oZmUtbmF2LW1lbnUgbGkubWVudS1pdGVtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJhY2tncm91bmQ6IHVuc2V0Owp9CgouaGZlLW5hdi1tZW51IC5zdWItbWVudSBsaS5tZW51LWl0ZW0gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZDogaW5oZXJpdDsKfQoKLmhmZS1uYXYtbWVudV9fdGhlbWUtaWNvbi15ZXMgYnV0dG9uLnN1Yi1tZW51LXRvZ2dsZSB7CiAgICBkaXNwbGF5OiBub25lOwp9CgpkaXYuaGZlLW5hdi1tZW51LAouZWxlbWVudG9yLXdpZGdldC1oZmUtbmF2LW1lbnUgLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIC1qcy1kaXNwbGF5OiBmbGV4OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC1tb3otYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtbW96LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwsCi5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgewogICAgLWpzLWRpc3BsYXk6IGZsZXg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Owp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IHsKICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKfQoKLmhmZS1uYXYtbWVudSAucGFyZW50LWhhcy1uby1jaGlsZCAuaGZlLW1lbnUtdG9nZ2xlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLnN1Yi1tZW51LAouaGZlLXN1Ym1lbnUtYWN0aW9uLWhvdmVyIC5oZmUtbGF5b3V0LXZlcnRpY2FsIC5oZmUtbmF2LW1lbnUgLnN1Yi1tZW51IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxNjsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIG9wYWNpdHk6IDA7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMzAwbXMgZWFzZS1pbjsKICAgIHRyYW5zaXRpb246IGFsbCAzMDBtcyBlYXNlLWluOwp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyPi5zdWItbWVudSwKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpmb2N1cz4uc3ViLW1lbnUgewogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIG9wYWNpdHk6IDE7Cn0KCi5oZmUtc3VibWVudS1hY3Rpb24tY2xpY2sgLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpob3Zlcj4uc3ViLW1lbnUsCi5oZmUtc3VibWVudS1hY3Rpb24tY2xpY2sgLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpmb2N1cz4uc3ViLW1lbnUgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3BhY2l0eTogMDsKfQoKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMDAlOwogICAgbGVmdDogMDsKICAgIHotaW5kZXg6IDk5OTk7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICBvcGFjaXR5OiAwOwp9CgouaGZlLWZseW91dC1jb250YWluZXIgLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUgewogICAgdG9wOiAwOwogICAgbGVmdDogMDsKfQoKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUgewogICAgdG9wOiAwOwogICAgbGVmdDogMTAwJTsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpob3Zlcj4uc3ViLW1lbnUsCi5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4uZm9jdXM+LnN1Yi1tZW51IHsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMzAwbXMgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiBhbGwgMzAwbXMgZWFzZS1vdXQ7Cn0KCi5oZmUtbmF2LW1lbnU6YmVmb3JlLAouaGZlLW5hdi1tZW51OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZGlzcGxheTogdGFibGU7CiAgICBjbGVhcjogYm90aDsKfQoKLyogQWxpZ25lbW50IENTUyAqLwoKLmhmZS1uYXYtbWVudV9fYWxpZ24tcmlnaHQgLmhmZS1uYXYtbWVudSB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgIC1tb3otYm94LXBhY2s6IGVuZDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7Cn0KCi5oZmUtbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaSBhLmhmZS1tZW51LWl0ZW0sCi5oZmUtbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgIC1tb3otYm94LXBhY2s6IGVuZDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7Cn0KCi5oZmUtbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5oZmUtaGFzLXN1Ym1lbnUgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLnJ0bCAuaGZlLW5hdi1tZW51X19hbGlnbi1sZWZ0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5oZmUtaGFzLXN1Ym1lbnUgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLmhmZS1uYXYtbWVudV9fYWxpZ24tcmlnaHQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIGxpLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLnJ0bCAuaGZlLW5hdi1tZW51X19hbGlnbi1sZWZ0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5lbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5oZmUtbmF2LW1lbnVfX2FsaWduLWxlZnQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIGxpLmhmZS1oYXMtc3VibWVudSAuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyLAoucnRsIC5oZmUtbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5oZmUtaGFzLXN1Ym1lbnUgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLmhmZS1uYXYtbWVudV9fYWxpZ24tbGVmdCAuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgbGkuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyLAoucnRsIC5oZmUtbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5lbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIgewogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLmhmZS1uYXYtbWVudV9fYWxpZ24tY2VudGVyIC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5oZmUtaGFzLXN1Ym1lbnUgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLmhmZS1uYXYtbWVudV9fYWxpZ24tY2VudGVyIC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5lbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouaGZlLW5hdi1tZW51X19hbGlnbi1sZWZ0IC5oZmUtbmF2LW1lbnUgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgLW1vei1ib3gtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cn0KCi5oZmUtbmF2LW1lbnVfX2FsaWduLWxlZnQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmhmZS1uYXYtbWVudV9fYWxpZ24tbGVmdCAuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAtbW96LWJveC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKfQoKLmhmZS1uYXYtbWVudV9fYWxpZ24tY2VudGVyIC5oZmUtbmF2LW1lbnUgewogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLW1vei1ib3gtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi5oZmUtbmF2LW1lbnVfX2FsaWduLWNlbnRlciAuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgbGkgYS5oZmUtbWVudS1pdGVtLAouaGZlLW5hdi1tZW51X19hbGlnbi1jZW50ZXIgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC1tb3otYm94LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IHsKICAgIC1qcy1kaXNwbGF5OiBmbGV4OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKfQoKLmhmZS1uYXYtbWVudV9fYWxpZ24tanVzdGlmeSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IHsKICAgIHdpZHRoOiAxMDAlOwp9CgouaGZlLW5hdi1tZW51X19hbGlnbi1qdXN0aWZ5IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgbGkubWVudS1pdGVtIHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIC13ZWJraXQtZmxleC1ncm93OiAxOwogICAgLW1vei1ib3gtZmxleDogMTsKICAgIGZsZXgtZ3JvdzogMTsKfQoKLmhmZS1uYXYtbWVudV9fYWxpZ24tanVzdGlmeSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IGxpIGEuaGZlLW1lbnUtaXRlbSB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLW1vei1ib3gtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi8qIEFsaWdubWVudCBDU1MgZW5kcyAqLwoKLmhmZS1hY3RpdmUtbWVudStuYXYgbGk6bm90KDpsYXN0LWNoaWxkKSBhLmhmZS1tZW51LWl0ZW0sCi5oZmUtYWN0aXZlLW1lbnUrbmF2IGxpOm5vdCg6bGFzdC1jaGlsZCkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwp9CgovKiAgSG9yaXpvbnRhbCBNZW51ICovCgouaGZlLW5hdi1tZW51IGEuaGZlLW1lbnUtaXRlbSwKLmhmZS1uYXYtbWVudSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgLWpzLWRpc3BsYXk6IGZsZXg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKICAgIC1tb3otYm94LXBhY2s6IGp1c3RpZnk7CiAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtbW96LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKfQoKLmhmZS1uYXYtbWVudSBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5oZmUtbmF2LW1lbnUgYS5oZmUtc3ViLW1lbnUtaXRlbTpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5oZmUtbmF2LW1lbnUgLnN1Yi1tZW51IHsKICAgIG1pbi13aWR0aDogMjIwcHg7CiAgICBtYXJnaW46IDA7CiAgICB6LWluZGV4OiA5OTk5Owp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCB7CiAgICBmb250LXNpemU6IDA7Cn0KCi5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIGxpLm1lbnUtaXRlbSwKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWw+bGkubWVudS1pdGVtIHsKICAgIGZvbnQtc2l6ZTogbWVkaXVtOwp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IC5zdWItbWVudSB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNHB4IDEwcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICBib3gtc2hhZG93OiAwIDRweCAxMHB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjEpOwp9CgovKiBJY29ucyBDU1MgKi8KCi5oZmUtc3VibWVudS1pY29uLWFycm93IC5oZmUtbmF2LW1lbnUgLnBhcmVudC1oYXMtY2hpbGQgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnw6/igJ7igKEnOwp9CgouaGZlLXN1Ym1lbnUtaWNvbi1jbGFzc2ljIC5oZmUtbmF2LW1lbnUgLnBhcmVudC1oYXMtY2hpbGQgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnw6/GkuKAlCc7Cn0KCi5oZmUtc3VibWVudS1pY29uLXBsdXMgLmhmZS1uYXYtbWVudSAucGFyZW50LWhhcy1jaGlsZCAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcrJzsKfQoKLmhmZS1zdWJtZW51LWljb24tbm9uZSAuaGZlLW5hdi1tZW51IC5wYXJlbnQtaGFzLWNoaWxkIC5zdWItYXJyb3cgewogICAgZGlzcGxheTogbm9uZTsKfQoKLmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudSAucGFyZW50LWhhcy1jaGlsZCAuc3ViLW1lbnUtYWN0aXZlIC5zdWItYXJyb3cgaTpiZWZvcmUsCi5oZmUtbGluay1yZWRpcmVjdC1zZWxmX2xpbmsuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51IC5wYXJlbnQtaGFzLWNoaWxkIC5tZW51LWFjdGl2ZSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICfDr+KAnuKAoCc7Cn0KCi5oZmUtc3VibWVudS1pY29uLXBsdXMgLmhmZS1uYXYtbWVudSAucGFyZW50LWhhcy1jaGlsZCAuc3ViLW1lbnUtYWN0aXZlIC5zdWItYXJyb3cgaTpiZWZvcmUsCi5oZmUtbGluay1yZWRpcmVjdC1zZWxmX2xpbmsuaGZlLXN1Ym1lbnUtaWNvbi1wbHVzIC5oZmUtbmF2LW1lbnUgLnBhcmVudC1oYXMtY2hpbGQgLm1lbnUtYWN0aXZlIC5zdWItYXJyb3cgaTpiZWZvcmUgewogICAgY29udGVudDogJy0nOwp9CgouaGZlLXN1Ym1lbnUtaWNvbi1jbGFzc2ljIC5oZmUtbmF2LW1lbnUgLnBhcmVudC1oYXMtY2hpbGQgLnN1Yi1tZW51LWFjdGl2ZSAuc3ViLWFycm93IGk6YmVmb3JlLAouaGZlLWxpbmstcmVkaXJlY3Qtc2VsZl9saW5rLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51IC5wYXJlbnQtaGFzLWNoaWxkIC5tZW51LWFjdGl2ZSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICfDr8aSy5wnOwp9CgoucnRsIC5oZmUtc3VibWVudS1pY29uLWFycm93IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIHVsIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnw6/igJ7igJ4nOwp9CgoucnRsIC5oZmUtc3VibWVudS1pY29uLWNsYXNzaWMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICfDr8aS4oSiJzsKfQoKLmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICfDr+KAnuKApic7Cn0KCi5oZmUtc3VibWVudS1pY29uLWNsYXNzaWMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICfDr8aSxaEnOwp9CgovKiBJY29uIENTUyBlbmRzICovCgouaGZlLW5hdi1tZW51LWljb24gewogICAgcGFkZGluZzogMC4zNWVtOwogICAgYm9yZGVyOiAwIHNvbGlkOwp9CgouaGZlLW5hdi1tZW51LWljb24gc3ZnIHsKICAgIHdpZHRoOiAyNXB4OwogICAgaGVpZ2h0OiAyNXB4OwogICAgbGluZS1oZWlnaHQ6IDI1cHg7CiAgICBmb250LXNpemU6IDI1cHg7Cn0KCi5oZmUtbmF2LW1lbnUtaWNvbiBpOmZvY3VzIHsKICAgIG91dGxpbmU6IDA7Cn0KCi5oZmUtaGFzLXN1Ym1lbnUtY29udGFpbmVyIGEuaGZlLW1lbnUtaXRlbTpmb2N1cywKLmhmZS1oYXMtc3VibWVudS1jb250YWluZXIgYS5oZmUtc3ViLW1lbnUtaXRlbTpmb2N1cyB7CiAgICBvdXRsaW5lOiAwOwp9CgovKiBTdWJtZW51cyAqLwoKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpmb2N1cywKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnU6Zm9jdXMsCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4tY29udGFpbmVyOmZvY3VzIHsKICAgIG91dGxpbmU6IDA7Cn0KCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4tY29udGFpbmVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLnN1Yi1tZW51LAouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLnN1Yi1tZW51LAouaGZlLWZseW91dC13cmFwcGVyIC5zdWItbWVudSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBoZWlnaHQ6IDA7Cn0KCi5oZmUtbmF2LW1lbnVfX3N1Ym1lbnUtYXJyb3cgLmhmZS1tZW51LXRvZ2dsZTpiZWZvcmUsCi5oZmUtbmF2LW1lbnVfX3N1Ym1lbnUtcGx1cyAuaGZlLW1lbnUtdG9nZ2xlOmJlZm9yZSwKLmhmZS1uYXYtbWVudV9fc3VibWVudS1jbGFzc2ljIC5oZmUtbWVudS10b2dnbGU6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7CiAgICB6LWluZGV4OiAxOwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgICBsaW5lLWhlaWdodDogMDsKfQoKLmhmZS1tZW51LWl0ZW0tY2VudGVyIC5oZmUtbmF2LW1lbnUgbGkgYS5oZmUtbWVudS1pdGVtLAouaGZlLW1lbnUtaXRlbS1jZW50ZXIgLmhmZS1uYXYtbWVudSBsaSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIG1hcmdpbi1yaWdodDogMHB4Owp9CgouaGZlLW5hdi1tZW51X19zdWJtZW51LW5vbmUgLmhmZS1uYXYtbWVudSBsaSBhLmhmZS1tZW51LWl0ZW0sCi5oZmUtbmF2LW1lbnVfX3N1Ym1lbnUtbm9uZSAuaGZlLW5hdi1tZW51IGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgbWFyZ2luLXJpZ2h0OiAwcHg7Cn0KCi5oZmUtbmF2LW1lbnVfX3RvZ2dsZS1pY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGYwYzknOwogICAgZm9udC1mYW1pbHk6ICdmb250QXdlc29tZSc7CiAgICB6LWluZGV4OiAxOwogICAgZm9udC1zaXplOiAyNHB4OwogICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBsaW5lLWhlaWdodDogMDsKfQoKLmhmZS1hY3RpdmUtbWVudSAuaGZlLW5hdi1tZW51X190b2dnbGUtaWNvbjpiZWZvcmUgewogICAgY29udGVudDogJ1xmMDBkJzsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBkaXNwbGF5OwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogZGlzcGxheTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogLjVzOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjVzOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKCAwLCAxLCAwLjUsIDEpOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciggMCwgMSwgMC41LCAxKTsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3BhY2l0eTogMDsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLnN1Yi1tZW51IHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIG9wYWNpdHk6IDA7Cn0KCi5oZmUtYWN0aXZlLW1lbnUrLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgewogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIG9wYWNpdHk6IDE7CiAgICBoZWlnaHQ6IGF1dG87Cn0KCi5oZmUtYWN0aXZlLW1lbnUuaGZlLWFjdGl2ZS1tZW51LWZ1bGwtd2lkdGgrLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUsCi5oZmUtYWN0aXZlLW1lbnUuaGZlLWFjdGl2ZS1tZW51LWZ1bGwtd2lkdGgrLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwsCi5oZmUtYWN0aXZlLW1lbnUuaGZlLWFjdGl2ZS1tZW51LWZ1bGwtd2lkdGgrLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTAwJTsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LAouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51IHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7Cn0KCi5oZmUtbGF5b3V0LWV4cGFuZGlibGUgbmF2IHsKICAgIGhlaWdodDogMDsKfQoKLmhmZS1uYXYtc3ViLW1lbnUtaWNvbiwKLmhmZS1uYXYtbWVudV9faWNvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMTsKfQoKLmhmZS1uYXYtbWVudV9fdG9nZ2xlIHsKICAgIC1qcy1kaXNwbGF5OiBmbGV4OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJvcmRlcjogMCBzb2xpZDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgY29sb3I6ICM0OTRjNGY7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBsaW5lLWhlaWdodDogMTsKfQoKLmhmZS1uYXYtbWVudV9fdG9nZ2xlLWljb24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtdmFyaWFudDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0ZXh0LXJlbmRlcmluZzogYXV0bzsKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKfQoKLmhmZS1uYXYtbWVudSAuc3ViLWFycm93IHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgLWpzLWRpc3BsYXk6IGZsZXg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgbWFyZ2luLXRvcDogLTEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAtMTBweDsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSAuc3ViLWFycm93IHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4Owp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLmhmZS1uYXYtbWVudSAuc3ViLWFycm93LAouaGZlLWxheW91dC1leHBhbmRpYmxlIC5zdWItYXJyb3csCi5oZmUtZmx5b3V0LXdyYXBwZXIgLnN1Yi1hcnJvdyB7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgouaGZlLW5hdi1tZW51IC5jaGlsZC1pdGVtLAouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLmhmZS1uYXYtbWVudSAuY2hpbGQtaXRlbSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHBhZGRpbmc6IDEwcHggMCAxMHB4IDEwcHg7CiAgICBtYXJnaW4tdG9wOiAtMTBweDsKICAgIG1hcmdpbi1ib3R0b206IC0xMHB4OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7Cn0KCi5oZmUtbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudV9fdG9nZ2xlLAouaGZlLWxheW91dC12ZXJ0aWNhbCAuaGZlLW5hdi1tZW51X190b2dnbGUgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3BhY2l0eTogMDsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5oZmUtbmF2LW1lbnUtaWNvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLnNhdmVkLWNvbnRlbnQsCi5oZmUtbmF2LW1lbnVfX2xheW91dC1leHBhbmRpYmxlIC5zdWItbWVudSwKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLmNoaWxkLAouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLnNhdmVkLWNvbnRlbnQsCi5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAuc3ViLW1lbnUsCi5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAuY2hpbGQsCi5oZmUtZmx5b3V0LWNvbnRhaW5lciAuc2F2ZWQtY29udGVudCwKLmhmZS1mbHlvdXQtY29udGFpbmVyIC5zdWItbWVudSwKLmhmZS1mbHlvdXQtY29udGFpbmVyIC5jaGlsZCB7CiAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgouaGZlLWZseW91dC1jb250YWluZXIgLmhmZS1uYXYtbWVudSAuc3ViLW1lbnUgewogICAgYmFja2dyb3VuZDogdW5zZXQ7Cn0KCi5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAuaGZlLW1lbnUtdG9nZ2xlOmhvdmVyLAouaGZlLW5hdi1tZW51X19sYXlvdXQtZXhwYW5kaWJsZSAuaGZlLW1lbnUtdG9nZ2xlOmhvdmVyLAouaGZlLWZseW91dC13cmFwcGVyIC5oZmUtbWVudS10b2dnbGU6aG92ZXIgewogICAgYm9yZGVyOiAxcHggZG90dGVkOwp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLmhmZS1tZW51LXRvZ2dsZSwKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLmhmZS1tZW51LXRvZ2dsZSwKLmhmZS1mbHlvdXQtd3JhcHBlciAuaGZlLW1lbnUtdG9nZ2xlIHsKICAgIGJvcmRlcjogMXB4IGRvdHRlZCB0cmFuc3BhcmVudDsKfQoKLyogQ29tbW9uIEFuaW1hdGlvbiBDU1MgKi8KCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbSBhOmJlZm9yZSwKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtIGE6YWZ0ZXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IDAuM3M7CiAgICB0cmFuc2l0aW9uOiAwLjNzOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTgsIDAuMywgMC4wMDUsIDEpOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU4LCAwLjMsIDAuMDA1LCAxKTsKfQoKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgb3BhY2l0eTogMDsKfQoKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpob3ZlcjpiZWZvcmUsCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YWZ0ZXIsCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06Zm9jdXM6YmVmb3JlLAouaGZlLW5hdi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOmZvY3VzOmFmdGVyLAouaGZlLW5hdi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbS5oaWdobGlnaHRlZDphZnRlciwKLmhmZS1uYXYtbWVudSAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlLAouaGZlLW5hdi1tZW51IC5jdXJyZW50LW1lbnUtaXRlbTphZnRlciB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7Cn0KCi8qIERvdWJsZSBMaW5lIC8gVW5kZXJsaW5lIC8gT3ZlcmxpbmUgU3R5bGUgKi8KCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICBoZWlnaHQ6IDNweDsKICAgIHdpZHRoOiAxMDAlOwogICAgbGVmdDogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU5NWM7CiAgICB6LWluZGV4OiAyOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2dyb3cgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX3VuZGVybGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgaGVpZ2h0OiAwOwogICAgd2lkdGg6IDA7CiAgICBsZWZ0OiA1MCU7Cn0KCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1vdXQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1vdXQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLW91dCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIHRvcDogMTBweDsKfQoKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLW91dCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX2Ryb3Atb3V0IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLW91dCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgYm90dG9tOiAxMHB4Owp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2Ryb3AtaW4gLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1pbiAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX2Ryb3AtaW4gLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICB0b3A6IC0xMHB4Owp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2Ryb3AtaW4gLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmFmdGVyLAouaGZlLXBvaW50ZXJfX3VuZGVybGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLWluIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLWluIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciB7CiAgICBib3R0b206IC0xMHB4Owp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX25vbmUsCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0sCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0gewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX25vbmU6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX25vbmU6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZTpob3ZlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ub25lOmZvY3VzLAouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1cywKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmU6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmU6aG92ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmU6Zm9jdXMsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouaGZlLXBvaW50ZXJfX3VuZGVybGluZS5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1cywKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19ub25lOmJlZm9yZSwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19ub25lOmFmdGVyLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmU6aG92ZXIsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZTpmb2N1cywKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHRvcDogMDsKfQoKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19zbGlkZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX3NsaWRlIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgd2lkdGg6IDEwcHg7CiAgICBsZWZ0OiAtMjBweDsKfQoKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIGJvdHRvbTogMDsKfQoKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19zbGlkZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX3NsaWRlIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciB7CiAgICB3aWR0aDogMTBweDsKICAgIGxlZnQ6IC13ZWJraXQtY2FsYyggMTAwJSArIDIwcHgpOwogICAgbGVmdDogY2FsYyggMTAwJSArIDIwcHgpOwp9CgovKiBGcmFtZWQgU3R5bGUgKi8KCi5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICByaWdodDogMDsKICAgIGJvcmRlcjogM3B4IHNvbGlkICM1NTU5NWM7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUgewogICAgY29udGVudDogJyc7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2dyb3cgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC43NSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX3NocmluayAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjI1KTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMjUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjI1KTsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19zaHJpbmsgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgLXdlYmtpdC10cmFuc2Zvcm0gMC40czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgLXdlYmtpdC10cmFuc2Zvcm0gMC40czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgdHJhbnNmb3JtIDAuNHM7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMsIHRyYW5zZm9ybSAwLjRzLCAtd2Via2l0LXRyYW5zZm9ybSAwLjRzOwp9CgouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2RyYXcgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmFmdGVyIHsKICAgIHdpZHRoOiAzcHg7CiAgICBoZWlnaHQ6IDNweDsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlIHsKICAgIGJvcmRlci13aWR0aDogMCAwIDNweCAzcHg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IHdpZHRoIDAuMXMgMC4ycywgaGVpZ2h0IDAuMXMgMC4zcywgb3BhY2l0eSAwLjEycyAwLjIyczsKICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMXMgMC4ycywgaGVpZ2h0IDAuMXMgMC4zcywgb3BhY2l0eSAwLjEycyAwLjIyczsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICB0b3A6IGluaXRpYWw7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiBpbml0aWFsOwogICAgcmlnaHQ6IDA7CiAgICBib3JkZXItd2lkdGg6IDNweCAzcHggMCAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAwLjFzLCBoZWlnaHQgMC4xcyAwLjFzLCBvcGFjaXR5IDAuMDJzIDAuMThzOwogICAgdHJhbnNpdGlvbjogd2lkdGggMC4xcywgaGVpZ2h0IDAuMXMgMC4xcywgb3BhY2l0eSAwLjAycyAwLjE4czsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlcjphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXM6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1czphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5oaWdobGlnaHRlZDphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5jdXJyZW50LW1lbnUtaXRlbTphZnRlciB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1czpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2RyYXcgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjAycywgaGVpZ2h0IDAuMXMsIHdpZHRoIDAuMXMgMC4xczsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4wMnMsIGhlaWdodCAwLjFzLCB3aWR0aCAwLjFzIDAuMXM7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2RyYXcgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyOmFmdGVyLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1czphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2RyYXcgLmN1cnJlbnQtbWVudS1pdGVtOmFmdGVyIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjAycyAwLjJzLCBoZWlnaHQgMC4xcyAwLjJzLCB3aWR0aCAwLjFzIDAuM3M7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMDJzIDAuMnMsIGhlaWdodCAwLjFzIDAuMnMsIHdpZHRoIDAuMXMgMC4zczsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19jb3JuZXJzIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICB3aWR0aDogM3B4OwogICAgaGVpZ2h0OiAzcHg7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2Nvcm5lcnMgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICBib3JkZXItd2lkdGg6IDNweCAwIDAgM3B4Owp9CgouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19jb3JuZXJzIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHRvcDogaW5pdGlhbDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IGluaXRpYWw7CiAgICByaWdodDogMDsKICAgIGJvcmRlci13aWR0aDogMCAzcHggM3B4IDA7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2Nvcm5lcnMgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2Nvcm5lcnMgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXM6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2Nvcm5lcnMgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2Nvcm5lcnMgLmN1cnJlbnQtbWVudS1pdGVtOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAuY3VycmVudC1tZW51LWl0ZW06YWZ0ZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4wMDJzLCB3aWR0aCAwLjRzLCBoZWlnaHQgMC40czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4wMDJzLCB3aWR0aCAwLjRzLCBoZWlnaHQgMC40czsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0gewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzOwp9CgouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19ub25lOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZTphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZTpob3ZlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZTpmb2N1cywKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKfQoKLyogQmFja2dyb3VuZCBTdHlsZSAqLwoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IDAuM3M7CiAgICB0cmFuc2l0aW9uOiAwLjNzOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kOiAjNTU1OTVjOwogICAgei1pbmRleDogLTE7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZCAuY3VycmVudC1tZW51LWl0ZW0gewogICAgY29sb3I6ICNmZmY7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXM6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHJpbmsgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IDAuM3M7CiAgICB0cmFuc2l0aW9uOiAwLjNzOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2hyaW5rIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlcjpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHJpbmsgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzOmJlZm9yZSwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NocmluayAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2hyaW5rIC5jdXJyZW50LW1lbnUtaXRlbTpiZWZvcmUgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzLCAtd2Via2l0LXRyYW5zZm9ybSAwLjRzOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cywgLXdlYmtpdC10cmFuc2Zvcm0gMC40czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMsIHRyYW5zZm9ybSAwLjRzOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cywgdHJhbnNmb3JtIDAuNHMsIC13ZWJraXQtdHJhbnNmb3JtIDAuNHM7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zd2VlcC1sZWZ0IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgbGVmdDogMTAwJTsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3N3ZWVwLXJpZ2h0IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgcmlnaHQ6IDEwMCU7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zd2VlcC11cCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIHRvcDogMTAwJTsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3N3ZWVwLWRvd24gLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICBib3R0b206IDEwMCU7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLW91dC12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIGJvdHRvbTogNTAlOwogICAgdG9wOiA1MCU7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgcmlnaHQ6IDUwJTsKICAgIGxlZnQ6IDUwJTsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4tdmVydGljYWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmFmdGVyLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi1ob3Jpem9udGFsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kOiAjNTU1OTVjOwogICAgei1pbmRleDogLTE7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLXZlcnRpY2FsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUgewogICAgdG9wOiAwOwogICAgYm90dG9tOiAxMDAlOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIgewogICAgdG9wOiAxMDAlOwogICAgYm90dG9tOiAwOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXM6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlIHsKICAgIGJvdHRvbTogNTAlOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLXZlcnRpY2FsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1czphZnRlciwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4tdmVydGljYWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkOmFmdGVyLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAuY3VycmVudC1tZW51LWl0ZW06YWZ0ZXIgewogICAgdG9wOiA1MCU7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLWhvcml6b250YWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IDEwMCU7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLWhvcml6b250YWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmFmdGVyIHsKICAgIHJpZ2h0OiAxMDAlOwogICAgbGVmdDogMDsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4taG9yaXpvbnRhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi1ob3Jpem9udGFsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1czpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLWhvcml6b250YWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4taG9yaXpvbnRhbCAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlIHsKICAgIGxlZnQ6IDUwJTsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4taG9yaXpvbnRhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLWhvcml6b250YWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzOmFmdGVyLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi1ob3Jpem9udGFsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5oaWdobGlnaHRlZDphZnRlciwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4taG9yaXpvbnRhbCAuY3VycmVudC1tZW51LWl0ZW06YWZ0ZXIgewogICAgcmlnaHQ6IDUwJTsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX25vbmUsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDBzOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19ub25lOmJlZm9yZSwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX25vbmU6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19ub25lOmhvdmVyLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fbm9uZTpmb2N1cywKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmFmdGVyLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1cyB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDBzOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7Cn0KCi8qIFRleHQgU3R5bGUgKi8KCi5oZmUtcG9pbnRlcl9fdGV4dC5oZmUtYW5pbWF0aW9uX19za2V3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX3NrZXcgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3KC04ZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHNrZXcoLThkZWcpOwogICAgdHJhbnNmb3JtOiBza2V3KC04ZGVnKTsKfQoKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX2dyb3cgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwp9CgouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fc2hyaW5rIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX3NocmluayAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwp9CgouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fZmxvYXQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fZmxvYXQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsKfQoKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX3NpbmsgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fc2luayAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg4cHgpOwp9CgouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fcm90YXRlIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX3JvdGF0ZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg2ZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg2ZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDZkZWcpOwp9CgouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fbm9uZSwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKfQoKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX25vbmU6YmVmb3JlLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fbm9uZTphZnRlciwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX25vbmU6aG92ZXIsCi5oZmUtcG9pbnRlcl9fdGV4dC5oZmUtYW5pbWF0aW9uX19ub25lOmZvY3VzLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdGV4dC5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKfQoKLmhmZS1mbHlvdXQtb3ZlcmxheSB7CiAgICBkaXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwogICAgei1pbmRleDogOTk5OTk4OwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuNik7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLyogTm8gbGluayBob3ZlciBlZmZlY3QgdG8gbGFzdCBtZW51IGl0ZW0gKi8KCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uOmFmdGVyLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uZWxlbWVudG9yLWJ1dHRvbjphZnRlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uZWxlbWVudG9yLWJ1dHRvbjpiZWZvcmUgewogICAgaGVpZ2h0OiAwcHg7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLmVsZW1lbnRvci1idXR0b246YWZ0ZXIgewogICAgYm9yZGVyLXdpZHRoOiAwcHg7Cn0KCi5oZmUtcG9pbnRlcl9fdGV4dC5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uOmhvdmVyLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uZWxlbWVudG9yLWJ1dHRvbjpmb2N1cyB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTsKICAgIHRyYW5zZm9ybTogbm9uZTsKfQoKLmhmZS1mbHlvdXQtY2xvc2UsCi5oZmUtZmx5b3V0LWNsb3NlIHN2ZyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIG1hcmdpbjogNXB4OwogICAgd2lkdGg6IDIzcHg7CiAgICBoZWlnaHQ6IDIzcHg7CiAgICBsaW5lLWhlaWdodDogMjNweDsKICAgIGZvbnQtc2l6ZTogMjNweDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgouaGZlLWZseW91dC13cmFwcGVyIC5oZmUtc2lkZS5oZmUtZmx5b3V0LWxlZnQgewogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogLTEwMCU7CiAgICByaWdodDogYXV0bzsKICAgIGhlaWdodDogMTAwJTsKICAgIC8qaGVpZ2h0OiAxMDB2aDsqLwogICAgd2lkdGg6IDMwMHB4OwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDB2dzsKfQoKLmhmZS1mbHlvdXQtd3JhcHBlciAuaGZlLXNpZGUgewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDk5OTk5OTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLmhmZS1mbHlvdXQtd3JhcHBlciAuaGZlLXNpZGUuaGZlLWZseW91dC1zaG93IHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouaGZlLWZseW91dC1jb250ZW50LnB1c2ggewogICAgY29sb3I6ICNmZmZmZmY7Cn0KCi5oZmUtZmx5b3V0LWNvbnRlbnQgdWwgbGkgewogICAgY29sb3I6ICNmZmZmZmY7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqICBGbHlvdXQgTG9jYXRpb24KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCi5oZmUtZmx5b3V0LXdyYXBwZXIgLmhmZS1zaWRlLmhmZS1mbHlvdXQtcmlnaHQgewogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAtMTAwJTsKICAgIC8qIGRlZmF1bHQgKi8KICAgIGhlaWdodDogMTAwJTsKICAgIC8qaGVpZ2h0OiAxMDB2aDsqLwogICAgd2lkdGg6IDMwMHB4OwogICAgLyogZGVmYXVsdCAqLwogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgouaGZlLWZseW91dC13cmFwcGVyIC5oZmUtc2lkZS5oZmUtZmx5b3V0LWxlZnQgewogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogLTEwMCU7CiAgICAvKiBkZWZhdWx0ICovCiAgICByaWdodDogYXV0bzsKICAgIGhlaWdodDogMTAwJTsKICAgIC8qaGVpZ2h0OiAxMDB2aDsqLwogICAgd2lkdGg6IDMwMHB4OwogICAgLyogZGVmYXVsdCAqLwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDB2dzsKfQoKLmhmZS1mbHlvdXQtd3JhcHBlciAuaGZlLXNpZGUudG9wIHsKICAgIHRvcDogLTEwMCU7CiAgICAvKiBkZWZhdWx0ICovCiAgICBib3R0b206IGF1dG87CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIHdpZHRoOiAxMDB2dzsKICAgIGhlaWdodDogMzAwcHg7CiAgICAvKiBkZWZhdWx0ICovCiAgICBtYXgtaGVpZ2h0OiAxMDAlOwp9CgouaGZlLWZseW91dC13cmFwcGVyIC5oZmUtc2lkZS5ib3R0b20gewogICAgdG9wOiBhdXRvOwogICAgYm90dG9tOiAtMTAwJTsKICAgIC8qIGRlZmF1bHQgKi8KICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgd2lkdGg6IDEwMHZ3OwogICAgaGVpZ2h0OiAzMDBweDsKICAgIC8qIGRlZmF1bHQgKi8KICAgIG1heC1oZWlnaHQ6IDEwMCU7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqICBGbHlvdXQgQ29udGFpbmVyCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgouaGZlLWZseW91dC1jb250ZW50IHsKICAgIGhlaWdodDogMTAwJTsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBsaW5lLWhlaWdodDogMS40ZW07CiAgICBjb2xvcjogI2ZmZjsKfQoKLyogaU9TIGZpeCAqLwoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuaGZlLWZseW91dC1jb250ZW50IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICB9Cn0KCi5oZmUtZmx5b3V0LWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5hZG1pbi1iYXIgLmhmZS1zaWRlIHsKICAgIG1hcmdpbi10b3A6IDMycHg7Cn0KCi8qIERyb3Bkb3duIGFuaW1hdGlvbiBDU1MgKi8KCi5oZmUtc3VibWVudS1hbmltYXRpb24tc2xpZGVfdXAgLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbj51bC5zdWItbWVudSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwJSk7CiAgICBvcGFjaXR5OiAwOwogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApIjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMXM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xczsKfQoKLmhmZS1zdWJtZW51LWFuaW1hdGlvbi1zbGlkZV91cCAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyPnVsLnN1Yi1tZW51IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7Cn0KCi5oZmUtc3VibWVudS1hbmltYXRpb24tc2xpZGVfZG93biAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuPnVsLnN1Yi1tZW51IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAlKTsKICAgIG9wYWNpdHk6IDA7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4xczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjFzOwp9CgouaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLXNsaWRlX2Rvd24gLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpob3Zlcj51bC5zdWItbWVudSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICBvcGFjaXR5OiAxOwogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiOwp9CgouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnU6bm90KC5oZmUtbmF2LW1lbnVfX2FsaWduLWp1c3RpZnkpOm5vdCguaGZlLW1lbnUtaXRlbS1zcGFjZS1iZXR3ZWVuKSBhLmhmZS1tZW51LWl0ZW0uZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKfQoKLmhmZS1uYXYtbWVudSBsaS5lbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIgewogICAgYWxpZ24tc2VsZjogY2VudGVyOwp9CgovKiBUYWJsZXQgKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKCBtYXgtd2lkdGg6IDEwMjRweCkgewogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgbGksCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDBweDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudV9fdG9nZ2xlLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1sYXlvdXQtdmVydGljYWwgLmhmZS1uYXYtbWVudV9fdG9nZ2xlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1hY3RpdmUtbWVudSsuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IHsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgaGVpZ2h0OiAwOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1hY3RpdmUtbWVudSsuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtYWN0aXZlLW1lbnUrLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIHsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1hY3RpdmUtbWVudS5oZmUtYWN0aXZlLW1lbnUtZnVsbC13aWR0aCsuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLWFjdGl2ZS1tZW51LmhmZS1hY3RpdmUtbWVudS1mdWxsLXdpZHRoKy5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1hY3RpdmUtbWVudS5oZmUtYWN0aXZlLW1lbnUtZnVsbC13aWR0aCsuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5zdWItbWVudSB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUgewogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51X190b2dnbGUsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLWxheW91dC12ZXJ0aWNhbCAuaGZlLW5hdi1tZW51X190b2dnbGUgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCB7CiAgICAgICAgZmxvYXQ6IG5vbmU7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyPi5zdWItbWVudSwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXI+LnN1Yi1tZW51LAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXI+LnN1Yi1tZW51IHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbWVudS10b2dnbGU6aG92ZXIgewogICAgICAgIGJvcmRlcjogMXB4IGRvdHRlZDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbWVudS10b2dnbGUgewogICAgICAgIGJvcmRlcjogMXB4IGRvdHRlZCB0cmFuc3BhcmVudDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5zdWItbWVudSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5zdWItbWVudSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMDsKICAgICAgICB0b3A6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuc2F2ZWQtY29udGVudCwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5zdWItbWVudSwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5jaGlsZCB7CiAgICAgICAgbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51IC5zdWItbWVudSB7CiAgICAgICAgbWluLXdpZHRoOiBhdXRvOwogICAgICAgIG1hcmdpbjogMDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLnN1Yi1hcnJvdyB7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0LmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/igJ7igKEnOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQuaGZlLXN1Ym1lbnUtaWNvbi1jbGFzc2ljIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIHVsIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8OvxpLigJQnOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8Ov4oCe4oCgJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0LmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8OvxpLLnCc7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldC5oZmUtc3VibWVudS1pY29uLXBsdXMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LWFjdGl2ZSBhIC5zdWItYXJyb3cgaTpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICctJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnUgLnN1Yi1tZW51IHsKICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LWFjdGl2ZSBhIC5zdWItYXJyb3cgaTpiZWZvcmUsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW5vbmUuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8Ov4oCe4oCeJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZS5oZmUtc3VibWVudS1pY29uLWNsYXNzaWMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LWFjdGl2ZSBhIC5zdWItYXJyb3cgaTpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICfDr8aS4oSiJwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEuaGZlLW1lbnUtaXRlbSAuc3ViLWFycm93IGk6YmVmb3JlLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lLmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LWFjdGl2ZSBhLmhmZS1tZW51LWl0ZW0gLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8Ov4oCe4oCgJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEuaGZlLW1lbnUtaXRlbSAuc3ViLWFycm93IGk6YmVmb3JlLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEuaGZlLW1lbnUtaXRlbSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/GksucJwogICAgfQogICAgLyogRWZmZWN0IDE6IEZhZGUgaW4gYW5kIHNjYWxlIHVwICovCiAgICAuaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLXNsaWRlX3VwIC5oZmUtbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwuc3ViLW1lbnUsCiAgICAuaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLXNsaWRlX3VwIC5oZmUtbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXIgdWwuc3ViLW1lbnUsCiAgICAuaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLXNsaWRlX2Rvd24gLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB1bC5zdWItbWVudSwKICAgIC5oZmUtc3VibWVudS1hbmltYXRpb24tc2xpZGVfZG93biAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyIHVsLnN1Yi1tZW51IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBub25lOwogICAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgIH0KICAgIC8qLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSB1bC5zdWItbWVudSB1bC5zdWItbWVudSBsaSBhewogICAgICAgIGJvcmRlci1sZWZ0OiAxNnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgfSovCiAgICAuZWxlbWVudG9yLXdpZGdldC1oZmUtbmF2LW1lbnUuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51LWxheW91dDpub3QoLmhmZS1wb2ludGVyX19mcmFtZWQpIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnUtbGF5b3V0Om5vdCguaGZlLXBvaW50ZXJfX2ZyYW1lZCkgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdW5zZXQgIWltcG9ydGFudDsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUgewogICAgICAgIGJvcmRlcjogMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1oZmUtbmF2LW1lbnUuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLXBvaW50ZXJfX3RleHQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAogICAgLmhmZS1wb2ludGVyX190ZXh0IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1cyB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldC5oZmUtbmF2LW1lbnVfX2FsaWduLWp1c3RpZnkgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSBsaSBhLmhmZS1tZW51LWl0ZW0sCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldC5oZmUtbmF2LW1lbnVfX2FsaWduLWp1c3RpZnkgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSBsaSBhLmhmZS1zdWItbWVudS1pdGVtLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQuaGZlLW5hdi1tZW51X19hbGlnbi1qdXN0aWZ5IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgbGkuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC1tb3otYm94LXBhY2s6IGp1c3RpZnk7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICB9Cn0KCi8qIE1vYmlsZSAqLwoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoIG1heC13aWR0aDogNzY3cHgpIHsKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1uYXYtbWVudV9fYWxpZ24tanVzdGlmeSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IGxpIGEuaGZlLW1lbnUtaXRlbSwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1uYXYtbWVudV9fYWxpZ24tanVzdGlmeSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0gLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQuaGZlLW5hdi1tZW51X19hbGlnbi1qdXN0aWZ5IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgbGkuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC1tb3otYm94LXBhY2s6IGp1c3RpZnk7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51X190b2dnbGUsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSB7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgbGkubWVudS1pdGVtLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudSB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1uYXYtdG9nZ2xlLXllcyAuaGZlLWxheW91dC12ZXJ0aWNhbCAuaGZlLW5hdi1tZW51X190b2dnbGUgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5zdWItbWVudSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMDsKICAgICAgICB0b3A6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51IC5zdWItbWVudSB7CiAgICAgICAgbWluLXdpZHRoOiBhdXRvOwogICAgICAgIG1hcmdpbjogMDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXI+LnN1Yi1tZW51LAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXI+LnN1Yi1tZW51IHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCB7CiAgICAgICAgZmxvYXQ6IG5vbmU7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1sYXlvdXQtdmVydGljYWwgLmhmZS1uYXYtbWVudV9fdG9nZ2xlLmhmZS1hY3RpdmUtbWVudSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZSwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbGF5b3V0LXZlcnRpY2FsIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZSB7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGhlaWdodDogMDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCB7CiAgICAgICAgZmxvYXQ6IG5vbmU7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuc3ViLW1lbnUgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLWFjdGl2ZS1tZW51Ky5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLWFjdGl2ZS1tZW51Ky5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1hY3RpdmUtbWVudSsuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLWFjdGl2ZS1tZW51LmhmZS1hY3RpdmUtbWVudS1mdWxsLXdpZHRoKy5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtYWN0aXZlLW1lbnUuaGZlLWFjdGl2ZS1tZW51LWZ1bGwtd2lkdGgrLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLWFjdGl2ZS1tZW51LmhmZS1hY3RpdmUtbWVudS1mdWxsLXdpZHRoKy5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51IHsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/igJ7igKEnOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUuaGZlLXN1Ym1lbnUtaWNvbi1jbGFzc2ljIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIHVsIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8OvxpLigJQnOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8Ov4oCe4oCgJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8OvxpLLnCc7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtc3VibWVudS1pY29uLXBsdXMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LWFjdGl2ZSBhIC5zdWItYXJyb3cgaTpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICctJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZS5oZmUtc3VibWVudS1pY29uLWFycm93IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIC5zdWItbWVudS1hY3RpdmUgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/igJ7igJ4nOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8OvxpLihKInCiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW5vbmUuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEuaGZlLW1lbnUtaXRlbSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/igJ7igKAnOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEuaGZlLW1lbnUtaXRlbSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/GksucJwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1tZW51LXRvZ2dsZTpob3ZlciB7CiAgICAgICAgYm9yZGVyOiAxcHggZG90dGVkOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1tZW51LXRvZ2dsZSB7CiAgICAgICAgYm9yZGVyOiAxcHggZG90dGVkIHRyYW5zcGFyZW50OwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudSAuc3ViLW1lbnUgewogICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgfQogICAgLyogRWZmZWN0IDE6IEZhZGUgaW4gYW5kIHNjYWxlIHVwICovCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1lZmZlY3QtMSAuaGZlLW5hdi1tZW51IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC43KTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjcpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC43KTsKICAgICAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiOwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IC5zdWItYXJyb3cgewogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAubWVudS1pcy1hY3RpdmUuaGZlLWVmZmVjdC0xIC5oZmUtbmF2LW1lbnUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiOwogICAgfQogICAgLyogRWZmZWN0IDI6IFNsaWRlIGZyb20gdGhlIHJpZ2h0ICovCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1lZmZlY3QtMiAuaGZlLW5hdi1tZW51IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMCUpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAlKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKSI7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC41LCAwLjUsIDAuOSk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNSwgMC41LCAwLjkpOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLm1lbnUtaXMtYWN0aXZlLmhmZS1lZmZlY3QtMiAuaGZlLW5hdi1tZW51IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApIjsKICAgIH0KICAgIC8qIEVmZmVjdCAzOiBTbGlkZSBmcm9tIHRoZSBib3R0b20gKi8KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1uYXYtdG9nZ2xlLXllcyAuaGZlLWVmZmVjdC0zIC5oZmUtbmF2LW1lbnUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwJSk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMCUpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApIjsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLm1lbnUtaXMtYWN0aXZlLmhmZS1lZmZlY3QtMyAuaGZlLW5hdi1tZW51IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApIjsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5zYXZlZC1jb250ZW50LAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLnN1Yi1tZW51LAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmNoaWxkLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLnNhdmVkLWNvbnRlbnQsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuc3ViLW1lbnUsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuY2hpbGQgewogICAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgfQogICAgLmhmZS1zdWJtZW51LWFuaW1hdGlvbi1zbGlkZV91cCAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIHVsLnN1Yi1tZW51LAogICAgLmhmZS1zdWJtZW51LWFuaW1hdGlvbi1zbGlkZV91cCAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyIHVsLnN1Yi1tZW51LAogICAgLmhmZS1zdWJtZW51LWFuaW1hdGlvbi1zbGlkZV9kb3duIC5oZmUtbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwuc3ViLW1lbnUsCiAgICAuaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLXNsaWRlX2Rvd24gLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpob3ZlciB1bC5zdWItbWVudSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogbm9uZTsKICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1oZmUtbmF2LW1lbnUuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51LWxheW91dDpub3QoLmhmZS1wb2ludGVyX19mcmFtZWQpIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnUtbGF5b3V0Om5vdCguaGZlLXBvaW50ZXJfX2ZyYW1lZCkgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmFmdGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtaGZlLW5hdi1tZW51LmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1uYXYtbWVudS1sYXlvdXQ6bm90KC5oZmUtcG9pbnRlcl9fZnJhbWVkKSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAogICAgLmVsZW1lbnRvci13aWRnZXQtaGZlLW5hdi1tZW51LmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudS1sYXlvdXQ6bm90KC5oZmUtcG9pbnRlcl9fZnJhbWVkKSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnNldCAhaW1wb3J0YW50OwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaGZlLW5hdi1tZW51LmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1wb2ludGVyX19mcmFtZWQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUgewogICAgICAgIGJvcmRlcjogMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1oZmUtbmF2LW1lbnUuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLXBvaW50ZXJfX3RleHQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAogICAgLmhmZS1wb2ludGVyX190ZXh0IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1cywKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtcG9pbnRlcl9fdGV4dCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCiAgICAuaGZlLXBvaW50ZXJfX3RleHQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIC1tcy10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgIH0KfQoKLmhmZS10b2dnbGUtbm8gLmhmZS1sYXlvdXQtZXhwYW5kaWJsZSAuaGZlLW5hdi1tZW51X190b2dnbGUgewogICAgZGlzcGxheTogbm9uZTsKfQoKLyogSWNvbiBjb21tb24gQ1NTICovCgouaGZlLWljb24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgovKiBNZW51IENhcnQgQ1NTICovCgouaGZlLWNhcnQtbWVudS13cmFwLWN1c3RvbSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMTsKfQoKLmhmZS1jYXJ0LW1lbnUtd3JhcC1jdXN0b20gLmhmZS1jYXJ0LWNvdW50LAouaGZlLWNhcnQtbWVudS13cmFwLWN1c3RvbSAuaGZlLWNhcnQtY291bnQ6YWZ0ZXIgewogICAgYm9yZGVyLWNvbG9yOiAjNzVjMzJjOwogICAgY29sb3I6ICM3NWMzMmM7Cn0KCi5oZmUtY2FydC1tZW51LXdyYXAtY3VzdG9tIC5oZmUtY2FydC1jb3VudCB7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtaW4td2lkdGg6IDIuMWVtOwogICAgbWluLWhlaWdodDogMi4xZW07CiAgICBmb250LXNpemU6IDAuODYwZW07CiAgICBsaW5lLWhlaWdodDogMS44OwogICAgYm9yZGVyLXJhZGl1czogMC4zZW0gMC4zZW0gMC4zZW0gMC4zZW07CiAgICBib3JkZXItd2lkdGg6IDJweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7Cn0KCi8qIERlZmF1bHQgc2tpbiBmb3IgY2FydCovCgouaGZlLWNhcnQtbWVudS13cmFwLWRlZmF1bHQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDE7Cn0KCi5oZmUtY2FydC1tZW51LXdyYXAtZGVmYXVsdCAuaGZlLWNhcnQtY291bnQsCi5oZmUtY2FydC1tZW51LXdyYXAtZGVmYXVsdCAuaGZlLWNhcnQtY291bnQ6YWZ0ZXIgewogICAgYm9yZGVyLWNvbG9yOiAjNzVjMzJjOwogICAgY29sb3I6ICM3NWMzMmM7Cn0KCi5oZmUtY2FydC1tZW51LXdyYXAtZGVmYXVsdCAuaGZlLWNhcnQtY291bnQgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWluLXdpZHRoOiAyLjFlbTsKICAgIG1pbi1oZWlnaHQ6IDIuMWVtOwogICAgZm9udC1zaXplOiAwLjg2MGVtOwogICAgbGluZS1oZWlnaHQ6IDEuODsKICAgIGJvcmRlci1yYWRpdXM6IDBlbSAwZW0gMC4zZW0gMC4zZW07CiAgICBib3JkZXItd2lkdGg6IDJweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBwYWRkaW5nOiAwIC40ZW07Cn0KCi5oZmUtY2FydC1tZW51LXdyYXAtZGVmYXVsdCAuaGZlLWNhcnQtY291bnQ6YWZ0ZXIgewogICAgYm90dG9tOiAxMDAlOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGhlaWdodDogLjhlbTsKICAgIHdpZHRoOiAuOGVtOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgdG9wOiAtLjZlbTsKICAgIGNvbnRlbnQ6ICcgJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgYm9yZGVyLXdpZHRoOiAycHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBlbTsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMGVtOwogICAgYm9yZGVyLWJvdHRvbTogMDsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLWNhcnQ6bm90KC5oZmUtbWVudS1jYXJ0LS1zaG93LXN1YnRvdGFsLXllcykgLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi10ZXh0IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1jYXJ0LnRvZ2dsZS1pY29uLS1iYWctbGlnaHQgLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi1pY29uIGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThlMyc7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1jYXJ0LnRvZ2dsZS1pY29uLS1iYWctbWVkaXVtIC5oZmUtbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbiBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZTQnOwp9CgouZWxlbWVudG9yLXdpZGdldC1oZmUtY2FydC50b2dnbGUtaWNvbi0tYmFnLXNvbGlkIC5oZmUtbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbiBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZTUnOwp9CgouaGZlLW1lbnUtY2FydF9fdG9nZ2xlIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIGNvbG9yOiAjODE4YTkxOwogICAgYm9yZGVyOiAxcHggc29saWQ7CiAgICBib3JkZXItY29sb3I6IGluaGVyaXQ7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi10ZXh0IHsKICAgIG1hcmdpbi1yaWdodDogMC4zZW07Cn0KCi5oZmUtbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDAuMXM7CiAgICAtby10cmFuc2l0aW9uOiBjb2xvciAwLjFzOwogICAgdHJhbnNpdGlvbjogY29sb3IgMC4xczsKfQoKLmhmZS1tZW51LWNhcnQtLWl0ZW1zLWluZGljYXRvci1idWJibGUgLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi1pY29uW2RhdGEtY291bnRlcl06YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1jb3VudGVyKTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbWluLXdpZHRoOiAxLjZlbTsKICAgIGhlaWdodDogMS42ZW07CiAgICBsaW5lLWhlaWdodDogMS41ZW07CiAgICB0b3A6IC0wLjdlbTsKICAgIHJpZ2h0OiAtMC43ZW07CiAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxMHB4Owp9CgouaGZlLW1lbnUtY2FydC0taXRlbXMtaW5kaWNhdG9yLXBsYWluIC5oZmUtbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbltkYXRhLWNvdW50ZXJdOmJlZm9yZSB7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtY291bnRlcik7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwp9CgouaGZlLW1lbnUtY2FydC0tZW1wdHktaW5kaWNhdG9yLWhpZGUgLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbi1pY29uW2RhdGEtY291bnRlcj0iMCJdOmJlZm9yZSB7CiAgICBjb250ZW50OiBub25lOwogICAgZGlzcGxheTogbm9uZTsKfQoKLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi1pY29uIHsKICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDE2OwogICAgLXdlYmtpdC1vcmRlcjogMTU7CiAgICAtbXMtZmxleC1vcmRlcjogMTU7CiAgICBvcmRlcjogMTU7Cn0KCi5oZmUtbWVudS1jYXJ0X190b2dnbGUuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGNvbG9yOiAjNGQ0ODQ4Owp9CgovKlNlYXJjaCBCb3ggQ1NTKi8KCi5oZmUtc2VhcmNoLWJ1dHRvbi13cmFwcGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgouaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5oZmUtc2VhcmNoLWZvcm1fX2lucHV0IHsKICAgIGZsZXgtYmFzaXM6IDEwMCU7Cn0KCi5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIGkuZmEtc2VhcmNoIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAyMHB4OwogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgouaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSBpOmJlZm9yZSB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgovKnNlYXJjaCBpY29uIHRvZ2dsZSBjc3MqLwoKLmhmZS1zZWFyY2gtYnV0dG9uLXdyYXBwZXIgaW5wdXRbdHlwZT1zZWFyY2hdIHsKICAgIGJvcmRlcjogMDsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgdHJhbnNpdGlvbjogYWxsIC41czsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBvdXRsaW5lOiBub25lOwp9CgouaGZlLXNlYXJjaC1idXR0b24td3JhcHBlciBidXR0b24gewogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5oZmUtc2VhcmNoLWJ1dHRvbi13cmFwcGVyIGlucHV0W3R5cGU9c2VhcmNoXTpmb2N1cyB7CiAgICBjdXJzb3I6IGF1dG87CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgouaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSBpbnB1dDotbW96LXBsYWNlaG9sZGVyLAouaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5oZmUtc2VhcmNoLWxheW91dC1pY29uIC5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIC5oZmUtc2VhcmNoLWZvcm1fX2lucHV0IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHVuc2V0OwogICAgaGVpZ2h0OiAxMDAlOwp9CgouaGZlLXNlYXJjaC1idXR0b24td3JhcHBlci5oZmUtaW5wdXQtZm9jdXMgewogICAgZGlzcGxheTogZmxleDsKfQoKLmhmZS1zZWFyY2gtZm9ybV9fY29udGFpbmVyIC5oZmUtc2VhcmNoLXN1Ym1pdCB7CiAgICBtaW4td2lkdGg6IDMlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIgYnV0dG9uI2NsZWFyLAouaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSBidXR0b24jY2xlYXIgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDA7CiAgICB0b3A6IDA7CiAgICBwYWRkaW5nOiAwIDhweDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm90dG9tOiAwOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5oZmUtc2VhcmNoLWJ1dHRvbi13cmFwcGVyIGlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLAouaGZlLXNlYXJjaC1idXR0b24td3JhcHBlciBpbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwKLmhmZS1zZWFyY2gtYnV0dG9uLXdyYXBwZXIgaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLAouaGZlLXNlYXJjaC1idXR0b24td3JhcHBlciBpbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5oZmUtc2VhcmNoLWZvcm1fX2NvbnRhaW5lciBidXR0b24jY2xlYXItd2l0aC1idXR0b24gewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgcGFkZGluZzogMCA4cHg7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXNpemU6IDEuMmVtOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmhmZS1zZWFyY2gtYnV0dG9uLXdyYXBwZXIsCi5oZmUtc2VhcmNoLWZvcm1fX2NvbnRhaW5lciwKLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUsCi5oZmUtc2VhcmNoLWJ1dHRvbi13cmFwcGVyIC5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIGksCi5oZmUtc2VhcmNoLWJ1dHRvbi13cmFwcGVyIC5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIGk6YmVmb3JlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmhmZS1zZWFyY2gtYnV0dG9uLXdyYXBwZXIgLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUgLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDA7CiAgICByaWdodDogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgouaGZlLXNlYXJjaC1idXR0b24td3JhcHBlci5oZmUtaW5wdXQtZm9jdXMgLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUgLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDI1MHB4OwogICAgcmlnaHQ6IDA7Cn0KCi5oZmUtc2VhcmNoLWxheW91dC10ZXh0IC5oZmUtc2VhcmNoLWZvcm1fX2NvbnRhaW5lciwKLmhmZS1zZWFyY2gtbGF5b3V0LWljb25fdGV4dCAuaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIsCi5oZmUtc2VhcmNoLWxheW91dC10ZXh0IC5oZmUtc2VhcmNoLWZvcm1fX2NvbnRhaW5lciAuaGZlLXNlYXJjaC1mb3JtX19pbnB1dCwKLmhmZS1zZWFyY2gtbGF5b3V0LWljb25fdGV4dCAuaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIgLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQgewogICAgd2lkdGg6IDEwMCU7Cn0KCi5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIHsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi8qLS0tLS0tLU5hdmlnYXRpb24gbWVudSBhY3RpdmUgcGFyZW50LS0tLS0tLS0tKi8KCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUuaGZlLWFuaW1hdGlvbl9fc2xpZGUgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmFmdGVyLAouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX3NsaWRlIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX3NsaWRlIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19zbGlkZSAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX2ZhZGUgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICBvcGFjaXR5OiAxOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2Ryb3Atb3V0IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1vdXQgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmFmdGVyLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX2Ryb3Atb3V0IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLWluIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1pbiAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1pbiAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgYm90dG9tOiAwcHg7CiAgICBvcGFjaXR5OiAxOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2Ryb3Atb3V0IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX2Ryb3Atb3V0IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1vdXQgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLWluIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX2Ryb3AtaW4gLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLWluIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgdG9wOiAwcHg7CiAgICBvcGFjaXR5OiAxOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2dyb3cgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX3VuZGVybGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgaGVpZ2h0OiAzcHg7CiAgICB3aWR0aDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICBvcGFjaXR5OiAxOwp9CgouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX3NocmluayAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2ZhZGUgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX3VuZGVybGluZS5oZmUtYW5pbWF0aW9uX19mYWRlIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19mYWRlIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUuaGZlLWFuaW1hdGlvbl9fZmFkZSAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgb3BhY2l0eTogMTsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19jb3JuZXJzIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciB7CiAgICBib3JkZXItd2lkdGg6IDNweDsKICAgIHdpZHRoOiAxMDAlOwogICAgb3BhY2l0eTogMTsKICAgIGhlaWdodDogMTAwJTsKfQ=="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/images/plan_img.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.081Z","timestamp":1785130090081,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/images/plan_img.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:30 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=RFtN1W2B9WEofm0xhvQZD65tArdIqJC22WH%2Bf0FyhaXSCweNQxjNEaFeE51uMK9T6tBZYIuRa4z0lDXLIB3laFGdBD2Nkm8UrrE8XD7firOZ3C3SWQ7OW6InBIvrqtEtyYI4m6xbvg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d370e61120a-OSL\r\ncontent-length: 9776\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":9776,"size_decoded":10537,"mime_type":"image/png","magic":"PNG image data, 98 x 98, 8-bit/color RGBA, non-interlaced","md5":"428eef7103c65f445005a58c665037b6","sha1":"977db624758f00d831b85915ec225a9ea52f9ca5","sha256":"c66cd3992f455d30d7371ba44c8abc3186de5f85e2a25fb9a336ef3fe8f496d1","sha512":"123b8911fd796094933bf0c7cb85acddc9e4fb3d941d6574c498ee5990755b067543414cf66ada176331309eb13cc4208b1bc2e4e43fb8171f81c2c12273ac4c","ssdeep":"192:SIIHUCD4wau5wrEwZlp0ZW08bTPANFkkQnpeA7EY1j5WwP:80w1wL9yJ83A/kkWpe21j5W8","tlshash":"0912af9dee8305d9210a89e035ef8c034f7b79005654ba4debea51164b84db61cf4adb","first_seen":"2026-07-27T04:11:05.721724Z","last_seen":"2026-07-27T05:30:59.833127Z","times_seen":3,"resource_available":false,"data":"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UmVhZHlxyWU8AAADfWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuZGFiYWNiYiwgMjAyMS8wNC8xNC0wMDozOTo0NCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5QzkwNDI1QTc5NkRFOTExQjkyNkY0QUYxMUQxRTNEQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NUUzQUI5QjhGM0ExMUVFOEIxQUJENzcxQTY1QTM2RSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NUUzQUI5QThGM0ExMUVFOEIxQUJENzcxQTY1QTM2RSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU4ZDQ5ZmVjLTVkNWUtNmU0NC1hNDVlLWZlZDA0ZjU0MjRhZiIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhkMjk5NDE5LTNjNmYtZmU0MS05ZWE1LTZmZmRmMDBlODU0NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0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"}},"time_used":5,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":5,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/bg-buy-cryptocurrency.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.353Z","timestamp":1785130090353,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/bg-buy-cryptocurrency.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-9.css?ver=1706574923\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:19 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=%2FY9%2BPOw3ipb1MYJW5CyP89KzR3JXzYbTNDt%2B%2FdNT3fNJ2QeJYvJ6YTUpY2fVqg1mmn8ILFK2ZgyZi9saziSm8dLzPIVU2O8eInUzpmCoN8x6oqgHtxuoxL5pbadzKBZl%2BW2uUDB4vg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=4,i\r\ncf-ray: a2193d38be8d120a-OSL\r\ncontent-length: 42076\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":42076,"size_decoded":42846,"mime_type":"image/png","magic":"PNG image data, 3840 x 1808, 8-bit/color RGBA, non-interlaced","md5":"ddd27fd9ada2740eb29300764e4b106e","sha1":"4ea97498e1d18bc4ce5cde7ae29a86204c405c31","sha256":"efa96ff4c3b3e0cc96d31ea6348be44388b9c1f955fe59d380c4be61a54f6405","sha512":"03e7c187bdb360717285477cb03e53fff74da6ecb9a8b830288af380ea38eccd347ab803683fd3d1c6742bc1153a99aa236c1dd695a686d80b8540a751c0fde6","ssdeep":"384:vPVXDi6iyMKBI2MTt9KPeR/aZ+Oa0SEinq6me3VPKW:FXDi6sbSIOjSEir5sW","tlshash":"a21320f4826b549eed9a487506ef1bf53bb80f021403170ec732a818ef6faf6d854a55","first_seen":"2026-07-27T04:11:05.673118Z","last_seen":"2026-07-27T05:30:59.819147Z","times_seen":3,"resource_available":false,"data":"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AAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAAAAIIIgAEAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAAAggiAAQAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAACCCIABAAAAAAAAAAAAAAAAACCIABgAAAAAAIB/2bdjAQAAAIBB/tbT2FEeAQAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAAMCIAAwAAAAAAAAAAAAAAAAAACMCMAAAAAAAAAAAAAAAAAAAjAjAAAAAAAAAAAAAAAAAAAAwIgADAAAAAAAAAAAAAAAAQOzbMQEAAADCIPuntsYO6AFAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAA8AAAAAAAAAAAAAAAAAAOgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAICzdwdKbRxZGEaFQBL7/i8bY2MvTdKYYSQ0I03P3O4+p2rXMch4seNsSv/9EAAAAAAAAAAAEIgAGAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAABAIAJgAAAAAAAAAAAAAAAAAAAIRAAMAAAAAAAAAAAAAAAAAACBCIABAAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAgEAEwAAAAAAAAAAAAAAAAAAAEIgAGAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAABAIAJgAAAAAAAAAAAAAAAAAAAIRAAMAAAAAAAAAAAAAAAAAACBCIABAAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAgEAEwAAAAAAAAAAAAAAAAAAAEIgAGAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAABAIAJgAAAAAAAAAAAAAAAAAAAIRAAMAAAAAAAAAAAAAAAAAACBCIABAAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAgEAEwAAAAAAAAAAAAAAAAAAAEIgAGAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAABAIAJgAAAAAAAAAAAAAAAAAAAIRAAMAAAAAAAAAAAAAAAAAACBCIABAAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAgEAEwAAAAAAAAAAAAAAAAAAAEIgAGAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAABAIAJgAAAAAAAAAAAAAAAAAAAIRAAMAAAAAAAAAAAAAAAAAACBCIABAAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAgEAEwAAAAAAAAAAAAAAAAAAAEIgAGAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAABAIAJgAAAAAAAAAAAAAAAAAAAIRAAMAAAAAAAAAAAAAAAAAACBCIABAAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAgEAEwAAAAAAAAAAAAAAAAAAAEIgAGAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAABAIAJgAAAAAAAAAAAAAAAAAAAIRAAMAAAAAAAAAAAAAAAAAACBCIABAAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAgEAEwAAAAAAAAAAAAAAAAAAAEIgAGAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAABAIAJgAAAAAAAAAAAAAAAAAAAIRAAMAAAAAAAAAAAAAAAAAACBCIABAAAAAAAAAAAAAAAAACAQATAAAAAAAAAAAAAAAAAAAAQiAAYAAAAAAAAAAAAAAAAAgEAEwAAAAAAAAAAAAAAAAAAAEIgAGAAAAAAAAAAAAAAAAAAAAhEAAwAAAAAAAAAAAAAAAABAIAJgAAAAAAAAAAAAAAAAAAAIRAAMAAAAAAAAAAAAAAAAAACBCIABAAAAAAAAAAAA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AAAAAACAIAJgAAAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAIAgAmAAAAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAgCACYAAAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAACAIAJgAAAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAIAgAmAAAAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAgCACYAAAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAACAIAJgAAAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAIAgAmAAAAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAgCACYAAAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAACAIAJgAAAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAIAgAmAAAAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAgCACYAAAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAACAIAJgAAAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAIAgAmAAAAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAgCACYAAAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAACAIAJgAAAAAAAAAAAAAAAAAAAIIgAGAAAAAAAAAAAAAAAAAIAgAmAAAAAAAAAAAAAAAAAAAAgiAAYAAAAAAAAAAAAAAAAAgCACYAAAAAAAAAAAAAAAAAAACCIABgAAAAAAAAAAAAAAAACAIAJgAAAAAAAAAAAAAAAAAAAI8g+gVI3PWBjCmwAAAABJRU5ErkJggg=="}},"time_used":8,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":7,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.google.com/translate_a/element.js?cb=googleTranslateElementInit","fqdn":"translate.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.178.78","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.973Z","timestamp":1785130089973,"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":"*.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:35 GMT","end":"Mon, 21 Sep 2026 08:37:34 GMT"},"fingerprint":{"sha1":"2F:20:3B:91:88:65:20:CD:06:9D:0C:58:4D:17:6F:FC:9D:EC:41:83","sha256":"0C:7B:D3:23:E9:5B:D6:6B:F2:5C:71:91:4D:41:CE:E6:D7:1F:A2:F2:63:BA:25:70:1D:00:F3:C0:72:21:51:6D"}}},"request":{"raw":"GET /translate_a/element.js?cb=googleTranslateElementInit HTTP/1.1\r\nHost: translate.google.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://dreamspinfluence.com/\r\nSec-Fetch-Dest: script\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/javascript; charset=utf-8\r\nvary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site\r\ncache-control: no-cache, no-store, max-age=0, must-revalidate\r\npragma: no-cache\r\nexpires: Mon, 01 Jan 1990 00:00:00 GMT\r\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin-allow-popups\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":null,"data":{"size":75428,"size_decoded":27153,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (2543)","md5":"6c25051498fe2146ffb7bf30b37fabba","sha1":"9634b50dd2401b5ab4c0953e0b6b617619a2ddeb","sha256":"1282813f4d381b5ec2278d3f5bc5a3ca4fdb0ff0a086dabdad2b7e4db35c8928","sha512":"dac02c44fc6a98ee4a6f4016f8ed9d0c8af57c736d3138f03f0dac1963f1163dec2295accd5fe081e4819e58d5b05865716c660159831c66334d8d7a208d125a","ssdeep":"1536:XWjLpxIZnZzYOwRUSfl26KKZkXtmqR6Y06ECiPwNWF0:XDD4U6KKZgtBgtCi90","tlshash":"9a73b88cb6a5b4658363f4b5412f000eb23b58adf8484cadb288d8e1adf5949453bf7d","first_seen":"2026-07-27T05:01:06.091819Z","last_seen":"2026-07-27T06:00:36.81411Z","times_seen":116,"resource_available":true,"data":"CiAgICAvLyBnby9tc3Mtc2V0dXAjNy1sb2FkLXRoZS1qcy1vci1jc3MtZnJvbS15b3VyLWluaXRpYWwtcGFnZQogICAgaWYoIXdpbmRvd1snX0R1bXBFeGNlcHRpb24nXSkgewogICAgICBjb25zdCBfRHVtcEV4Y2VwdGlvbiA9IHdpbmRvd1snX0R1bXBFeGNlcHRpb24nXSB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgdGhyb3cgZTsKICAgICAgfTsKICAgICAgd2luZG93WydfRHVtcEV4Y2VwdGlvbiddID0gX0R1bXBFeGNlcHRpb247CiAgICB9CiAgInVzZSBzdHJpY3QiO3RoaXMuZGVmYXVsdF90cj10aGlzLmRlZmF1bHRfdHJ8fHt9OyhmdW5jdGlvbihfKXt2YXIgd2luZG93PXRoaXM7CnRyeXsKXy5fRl90b2dnbGVzX2luaXRpYWxpemU9ZnVuY3Rpb24oYSl7KHR5cGVvZiBnbG9iYWxUaGlzIT09InVuZGVmaW5lZCI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZiE9PSJ1bmRlZmluZWQiP3NlbGY6dGhpcykuX0ZfdG9nZ2xlc19kZWZhdWx0X3RyPWF8fFtdfTsoMCxfLl9GX3RvZ2dsZXNfaW5pdGlhbGl6ZSkoWzB4NzAwODAwNCwgMHgwLCBdKTsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KLyoKCiBDb3B5cmlnaHQgR29vZ2xlIExMQwogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KLyoKCiBDb3B5cmlnaHQgMjAwNSwgMjAwNyBCb2IgSXBwb2xpdG8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAoqLwp2YXIgYWEsY2EsZmEsamEscmEseGEsQmEsRGEsRmEsR2EsSWEsWWEsYmIsZmIsZ2IsamIsa2IsbmIscGIscWIsc2IsdWIsdmIsQWIsQmIsRmIsSWIsSmIsTWIsTmIsT2IsUWIsU2IseixSYixVYixZYixaYixhYyxiYzthYT1mdW5jdGlvbihhLGIpe2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsYWEpO2Vsc2V7dmFyIGM9RXJyb3IoKS5zdGFjaztjJiYodGhpcy5zdGFjaz1jKX1hJiYodGhpcy5tZXNzYWdlPVN0cmluZyhhKSk7YiE9PXZvaWQgMCYmKHRoaXMuY2F1c2U9Yil9O2NhPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIlcyIpO2Zvcih2YXIgYz0iIixkPWEubGVuZ3RoLTEsZT0wO2U8ZDtlKyspYys9YVtlXSsoZTxiLmxlbmd0aD9iW2VdOiIlcyIpO2FhLmNhbGwodGhpcyxjK2FbZF0pfTtmYT1mdW5jdGlvbihhKXtpZihfLmRhKWEoXy5kYSk7ZWxzZXt2YXIgYjsoKGI9ZWEpIT1udWxsP2I6ZWE9W10pLnB1c2goYSl9fTsKamE9ZnVuY3Rpb24oKXshXy5kYSYmXy5oYSYmXy5pYSgpO3JldHVybiBfLmRhfTtfLmlhPWZ1bmN0aW9uKCl7Xy5kYT1fLmhhKCk7dmFyIGE7KGE9ZWEpPT1udWxsfHxhLmZvckVhY2goZmEpO2VhPXZvaWQgMH07Xy5sYT1mdW5jdGlvbihhKXtfLmRhJiZrYShhKX07Xy5tYT1mdW5jdGlvbigpe18uZGEmJl8uZGEubWQoKX07Xy5vYT1mdW5jdGlvbihhLGIpe2IuaGFzT3duUHJvcGVydHkoImRpc3BsYXlOYW1lIil8fChiLmRpc3BsYXlOYW1lPWEudG9TdHJpbmcoKSk7YltuYV09YX07Xy5wYT1mdW5jdGlvbihhKXthJiZ0eXBlb2YgYS5kaXNwb3NlPT0iZnVuY3Rpb24iJiZhLmRpc3Bvc2UoKX07cmE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz1hcmd1bWVudHMubGVuZ3RoO2I8YzsrK2Ipe3ZhciBkPWFyZ3VtZW50c1tiXTtfLnFhKGQpP3JhLmFwcGx5KG51bGwsZCk6Xy5wYShkKX19O18udT1mdW5jdGlvbigpe3RoaXMucWE9dGhpcy5xYTt0aGlzLlc9dGhpcy5XfTsKXy50YT1mdW5jdGlvbihhLGIpe3JldHVybiBzYShhLGIpPj0wfTtfLnVhPWZ1bmN0aW9uKGEsYil7Xy50YShhLGIpfHxhLnB1c2goYil9O18udmE9ZnVuY3Rpb24oYSxiKXtiPXNhKGEsYik7dmFyIGM7KGM9Yj49MCkmJkFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSk7cmV0dXJuIGN9O18ud2E9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGg7aWYoYj4wKXtmb3IodmFyIGM9QXJyYXkoYiksZD0wO2Q8YjtkKyspY1tkXT1hW2RdO3JldHVybiBjfXJldHVybltdfTt4YT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihfLnFhKGQpKXt2YXIgZT1hLmxlbmd0aHx8MCxmPWQubGVuZ3RofHwwO2EubGVuZ3RoPWUrZjtmb3IodmFyIGc9MDtnPGY7ZysrKWFbZStnXT1kW2ddfWVsc2UgYS5wdXNoKGQpfX07CkJhPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9MCxkPXt9O2M8YS5sZW5ndGg7KXt2YXIgZT1hW2MrK10sZj1fLnlhKGUpPyJvIisoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsemEpJiZlW3phXXx8KGVbemFdPSsrQWEpKToodHlwZW9mIGUpLmNoYXJBdCgwKStlO09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGYpfHwoZFtmXT0hMCxhW2IrK109ZSl9YS5sZW5ndGg9Yn07Xy5DYT1mdW5jdGlvbihhLGIpe3RoaXMud2lkdGg9YTt0aGlzLmhlaWdodD1ifTtEYT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBhKWlmKGIuY2FsbCh2b2lkIDAsYVtjXSxjLGEpKXJldHVybiEwO3JldHVybiExfTsKRmE9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZCxlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClhW2NdPWRbY107Zm9yKHZhciBmPTA7ZjxFYS5sZW5ndGg7ZisrKWM9RWFbZl0sT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRbY10pfX07R2E9ZnVuY3Rpb24oYSl7cmV0dXJue3ZhbHVlT2Y6YX0udmFsdWVPZigpfTtJYT1mdW5jdGlvbigpe3ZhciBhPW51bGw7aWYoIUhhKXJldHVybiBhO3RyeXt2YXIgYj1mdW5jdGlvbihjKXtyZXR1cm4gY307YT1IYS5jcmVhdGVQb2xpY3koImdvb2cjaHRtbCIse2NyZWF0ZUhUTUw6YixjcmVhdGVTY3JpcHQ6YixjcmVhdGVTY3JpcHRVUkw6Yn0pfWNhdGNoKGMpe31yZXR1cm4gYX07Xy5LYT1mdW5jdGlvbigpe0phPT09dm9pZCAwJiYoSmE9SWEoKSk7cmV0dXJuIEphfTsKXy5NYT1mdW5jdGlvbihhKXt2YXIgYj1fLkthKCk7YT1iP2IuY3JlYXRlU2NyaXB0VVJMKGEpOmE7cmV0dXJuIG5ldyBfLkxhKGEpfTtfLk5hPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLkxhKXJldHVybiBhLmc7dGhyb3cgRXJyb3IoInQiKTt9O18uT2E9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/ZG9jdW1lbnQ6Yjt2YXIgYyxkO2I9KGQ9KGM9YikucXVlcnlTZWxlY3Rvcik9PW51bGw/dm9pZCAwOmQuY2FsbChjLGErIltub25jZV0iKTtyZXR1cm4gYj09bnVsbD8iIjpiLm5vbmNlfHxiLmdldEF0dHJpYnV0ZSgibm9uY2UiKXx8IiJ9O18uUWE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5LYSgpO2E9Yj9iLmNyZWF0ZVNjcmlwdChhKTphO3JldHVybiBuZXcgXy5QYShhKX07Xy5SYT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5QYSlyZXR1cm4gYS5nO3Rocm93IEVycm9yKCJ0Iik7fTsKXy5TYT1mdW5jdGlvbihhLGIpe2Euc3JjPV8uTmEoYik7KGI9Xy5PYSgic2NyaXB0IixhLm93bmVyRG9jdW1lbnQpKSYmYS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixiKX07Xy5UYT1mdW5jdGlvbigpe3ZhciBhPV8udi5uYXZpZ2F0b3I7cmV0dXJuIGEmJihhPWEudXNlckFnZW50KT9hOiIifTtfLnc9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uVGEoKS5pbmRleE9mKGEpIT0tMX07Xy5XYT1mdW5jdGlvbigpe3JldHVybiBfLlVhPyEhXy5WYSYmXy5WYS5icmFuZHMubGVuZ3RoPjA6ITF9O18uWGE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5XYSgpPyExOl8udygiT3BlcmEiKX07WWE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5VYT8hIV8uVmEmJiEhXy5WYS5wbGF0Zm9ybTohMX07Xy5aYT1mdW5jdGlvbigpe3JldHVybiBfLncoImlQaG9uZSIpJiYhXy53KCJpUG9kIikmJiFfLncoImlQYWQiKX07Xy4kYT1mdW5jdGlvbigpe3JldHVybiBfLlphKCl8fF8udygiaVBhZCIpfHxfLncoImlQb2QiKX07Cl8uYWI9ZnVuY3Rpb24oKXtyZXR1cm4gWWEoKT9fLlZhLnBsYXRmb3JtPT09Im1hY09TIjpfLncoIk1hY2ludG9zaCIpfTtiYj1mdW5jdGlvbigpe3RoaXMuaWQ9ImIifTtfLmRiPWZ1bmN0aW9uKGEsYil7Y2IuY2FsbCh0aGlzLGE/YS50eXBlOiIiKTt0aGlzLnJlbGF0ZWRUYXJnZXQ9dGhpcy5jdXJyZW50VGFyZ2V0PXRoaXMudGFyZ2V0PW51bGw7dGhpcy5idXR0b249dGhpcy5zY3JlZW5ZPXRoaXMuc2NyZWVuWD10aGlzLmNsaWVudFk9dGhpcy5jbGllbnRYPXRoaXMub2Zmc2V0WT10aGlzLm9mZnNldFg9MDt0aGlzLmtleT0iIjt0aGlzLmNoYXJDb2RlPXRoaXMua2V5Q29kZT0wO3RoaXMubWV0YUtleT10aGlzLnNoaWZ0S2V5PXRoaXMuYWx0S2V5PXRoaXMuY3RybEtleT0hMTt0aGlzLnN0YXRlPW51bGw7dGhpcy5wb2ludGVySWQ9MDt0aGlzLnBvaW50ZXJUeXBlPSIiO3RoaXMudGltZVN0YW1wPTA7dGhpcy5nPW51bGw7YSYmdGhpcy5pbml0KGEsYil9OwpmYj1mdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMubGlzdGVuZXI9YTt0aGlzLnByb3h5PW51bGw7dGhpcy5zcmM9Yjt0aGlzLnR5cGU9Yzt0aGlzLmNhcHR1cmU9ISFkO3RoaXMuVmM9ZTt0aGlzLmtleT0rK2ViO3RoaXMub2M9dGhpcy5IYz0hMX07Z2I9ZnVuY3Rpb24oYSl7dGhpcy5zcmM9YTt0aGlzLmc9e307dGhpcy5oPTB9O18uaGI9ZnVuY3Rpb24oKXtfLnUuY2FsbCh0aGlzKTt0aGlzLlFhPW5ldyBnYih0aGlzKTt0aGlzLldnPXRoaXM7dGhpcy5mZD1udWxsfTtqYj1mdW5jdGlvbihhKXtfLmhiLmNhbGwodGhpcyk7dGhpcy5nPWF8fHdpbmRvdzt0aGlzLmg9Xy54KHRoaXMuZywicmVzaXplIix0aGlzLmwsITEsdGhpcyk7dGhpcy5qPV8uaWIodGhpcy5nfHx3aW5kb3cpfTsKa2I9ZnVuY3Rpb24oYSl7Xy5oYi5jYWxsKHRoaXMpO3RoaXMuaD1hP2EuZy5kZWZhdWx0Vmlldzp3aW5kb3c7dGhpcy5vPXRoaXMuaC5kZXZpY2VQaXhlbFJhdGlvPj0xLjU/MjoxO3RoaXMuaj0oMCxfLnkpKHRoaXMuQSx0aGlzKTt0aGlzLmw9bnVsbDsodGhpcy5nPXRoaXMuaC5tYXRjaE1lZGlhP3RoaXMuaC5tYXRjaE1lZGlhKCIobWluLXJlc29sdXRpb246IDEuNWRwcHgpLCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpIik6bnVsbCkmJnR5cGVvZiB0aGlzLmcuYWRkTGlzdGVuZXIhPT0iZnVuY3Rpb24iJiZ0eXBlb2YgdGhpcy5nLmFkZEV2ZW50TGlzdGVuZXIhPT0iZnVuY3Rpb24iJiYodGhpcy5nPW51bGwpfTsKbmI9ZnVuY3Rpb24oYSxiKXtfLnUuY2FsbCh0aGlzKTt0aGlzLm89YTtpZihiKXtpZih0aGlzLmwpdGhyb3cgRXJyb3IoIngiKTt0aGlzLmw9Yjt0aGlzLmg9Xy5sYihiKTt0aGlzLmc9bmV3IGpiKF8ubWIoYikpO3RoaXMuZy5uZCh0aGlzLm8uaCgpKTt0aGlzLmo9bmV3IGtiKHRoaXMuaCk7dGhpcy5qLnN0YXJ0KCl9fTtwYj1mdW5jdGlvbihhKXthPWEuSGQuY2hhckNvZGVBdChhLkJiKyspO3JldHVybiBvYlthXX07cWI9ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPTA7ZG97dmFyIGQ9cGIoYSk7Ynw9KGQmMzEpPDxjO2MrPTV9d2hpbGUoZCYzMik7cmV0dXJuIGI8MD9iKzQyOTQ5NjcyOTY6Yn07Xy5yYj1mdW5jdGlvbihhKXtfLnYuc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGE7fSwwKX07c2I9ZnVuY3Rpb24oYSxiKXt0aGlzLmc9YTt0aGlzLmg9Yn07CnViPWZ1bmN0aW9uKGEsYil7Xy51LmNhbGwodGhpcyk7dGhpcy5sPWE7dGhpcy5BPWI7dGhpcy5qPXRiP251bGw6W107dGhpcy5oPXRiP251bGw6W107dGhpcy5vPXRiP251bGw6W107dGhpcy5CPSExfTt2Yj1mdW5jdGlvbigpe3RoaXMuTz10aGlzLnFhPW51bGx9O0FiPWZ1bmN0aW9uKCl7Zm9yKHZhciBhO2E9d2IucmVtb3ZlKCk7KXt0cnl7YS5nLmNhbGwoYS5zY29wZSl9Y2F0Y2goYil7Xy5yYihiKX14Yih5YixhKX16Yj0hMX07QmI9ZnVuY3Rpb24oKXt0aGlzLkI9W107dGhpcy5vPXRoaXMuaD0hMTt0aGlzLmw9dm9pZCAwO3RoaXMuRz10aGlzLlc9dGhpcy5EPSExO3RoaXMuQz0wO3RoaXMuaj1udWxsO3RoaXMuQT0wfTtfLkNiPWZ1bmN0aW9uKGEpe3JldHVybiBhP2RlY29kZVVSSShhKTphfTsKXy5FYj1mdW5jdGlvbihhLGIpe2lmKGEpe2E9YS5zcGxpdCgiJiIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLmluZGV4T2YoIj0iKSxlPW51bGw7aWYoZD49MCl7dmFyIGY9YVtjXS5zdWJzdHJpbmcoMCxkKTtlPWFbY10uc3Vic3RyaW5nKGQrMSl9ZWxzZSBmPWFbY107YihmLGU/Xy5EYihlKToiIil9fX07RmI9ZnVuY3Rpb24oYSxiLGMpe2lmKEFycmF5LmlzQXJyYXkoYikpZm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspRmIoYSxTdHJpbmcoYltkXSksYyk7ZWxzZSBiIT1udWxsJiZjLnB1c2goYSsoYj09PSIiPyIiOiI9IitfLkdiKGIpKSl9O18uSGI9ZnVuY3Rpb24oYSl7Xy51LmNhbGwodGhpcyk7dGhpcy5oPWE7dGhpcy5nPXt9fTtJYj1mdW5jdGlvbigpe307SmI9ZnVuY3Rpb24oKXt9O18uTGI9ZnVuY3Rpb24oYSl7YT1fLktiKGEpO3JldHVybiBfLk1hKGEpfTsKXy5LYj1mdW5jdGlvbihhKXtyZXR1cm4gYT09PW51bGw/Im51bGwiOmE9PT12b2lkIDA/InVuZGVmaW5lZCI6YX07TWI9dHlwZW9mIE9iamVjdC5jcmVhdGU9PSJmdW5jdGlvbiI/T2JqZWN0LmNyZWF0ZTpmdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbigpe307Yi5wcm90b3R5cGU9YTtyZXR1cm4gbmV3IGJ9O05iPXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz09ImZ1bmN0aW9uIj9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PUFycmF5LnByb3RvdHlwZXx8YT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2JdPWMudmFsdWU7cmV0dXJuIGF9OwpPYj1mdW5jdGlvbihhKXthPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoImEiKTt9O18uUGI9T2IodGhpcyk7UWI9IkludDggVWludDggVWludDhDbGFtcGVkIEludDE2IFVpbnQxNiBJbnQzMiBVaW50MzIgRmxvYXQzMiBGbG9hdDY0Ii5zcGxpdCgiICIpO18uUGIuQmlnSW50NjRBcnJheSYmKFFiLnB1c2goIkJpZ0ludDY0IiksUWIucHVzaCgiQmlnVWludDY0IikpO1NiPWZ1bmN0aW9uKGEsYil7aWYoYilmb3IodmFyIGM9MDtjPFFiLmxlbmd0aDtjKyspUmIoUWJbY10rIkFycmF5LnByb3RvdHlwZS4iK2EsYil9Owp6PWZ1bmN0aW9uKGEsYil7YiYmUmIoYSxiKX07UmI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLlBiO2E9YS5zcGxpdCgiLiIpO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGgtMTtkKyspe3ZhciBlPWFbZF07aWYoIShlIGluIGMpKXJldHVybjtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmYiE9bnVsbCYmTmIoYyxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfTsKXy5UYj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtmdW5jdGlvbiBjKCl7fW5ldyBjO1JlZmxlY3QuY29uc3RydWN0KGMsW10sZnVuY3Rpb24oKXt9KTtyZXR1cm4gbmV3IGMgaW5zdGFuY2VvZiBjfWlmKHR5cGVvZiBSZWZsZWN0IT0idW5kZWZpbmVkIiYmUmVmbGVjdC5jb25zdHJ1Y3Qpe2lmKGEoKSlyZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3Q7dmFyIGI9UmVmbGVjdC5jb25zdHJ1Y3Q7cmV0dXJuIGZ1bmN0aW9uKGMsZCxlKXtjPWIoYyxkKTtlJiZSZWZsZWN0LnNldFByb3RvdHlwZU9mKGMsZS5wcm90b3R5cGUpO3JldHVybiBjfX1yZXR1cm4gZnVuY3Rpb24oYyxkLGUpe2U9PT12b2lkIDAmJihlPWMpO2U9TWIoZS5wcm90b3R5cGV8fE9iamVjdC5wcm90b3R5cGUpO3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChjLGUsZCl8fGV9fSgpOwppZih0eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mPT0iZnVuY3Rpb24iKVViPU9iamVjdC5zZXRQcm90b3R5cGVPZjtlbHNle3ZhciBWYjthOnt2YXIgV2I9e2E6ITB9LFhiPXt9O3RyeXtYYi5fX3Byb3RvX189V2I7VmI9WGIuYTticmVhayBhfWNhdGNoKGEpe31WYj0hMX1VYj1WYj9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoImJgIithKTtyZXR1cm4gYX06bnVsbH1ZYj1VYjsKXy5CPWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9TWIoYi5wcm90b3R5cGUpO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7aWYoWWIpWWIoYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBiKWlmKGMhPSJwcm90b3R5cGUiKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGIsYyk7ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYyxkKX1lbHNlIGFbY109YltjXTthLmVhPWIucHJvdG90eXBlfTtaYj1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX07Cl8uQz1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgU3ltYm9sIT0idW5kZWZpbmVkIiYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07aWYoYilyZXR1cm4gYi5jYWxsKGEpO2lmKHR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpcmV0dXJue25leHQ6WmIoYSl9O3Rocm93IEVycm9yKCJjYCIrU3RyaW5nKGEpKTt9O18uJGI9ZnVuY3Rpb24oYSl7aWYoIShhIGluc3RhbmNlb2YgQXJyYXkpKXthPV8uQyhhKTtmb3IodmFyIGIsYz1bXTshKGI9YS5uZXh0KCkpLmRvbmU7KWMucHVzaChiLnZhbHVlKTthPWN9cmV0dXJuIGF9O2FjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpfTsKYmM9dHlwZW9mIE9iamVjdC5hc3NpZ249PSJmdW5jdGlvbiI/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihhLGIpe2lmKGE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiZCIpO2E9T2JqZWN0KGEpO2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihkKWZvcih2YXIgZSBpbiBkKWFjKGQsZSkmJihhW2VdPWRbZV0pfXJldHVybiBhfTt6KCJPYmplY3QuYXNzaWduIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8YmN9KTtfLmNjPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZWAiK2EpO307Xy5GPWZ1bmN0aW9uKCl7dGhpcy5HPSExO3RoaXMuQT1udWxsO3RoaXMuaj12b2lkIDA7dGhpcy5nPTE7dGhpcy5vPXRoaXMuQz0wO3RoaXMuVz10aGlzLmw9bnVsbH07Xy5GLnByb3RvdHlwZS5JPWZ1bmN0aW9uKGEpe3RoaXMuaj1hfTsKXy5GLnByb3RvdHlwZS5nZXROZXh0QWRkcmVzc0pzYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmd9O18uRi5wcm90b3R5cGUuZ2V0WWllbGRSZXN1bHRKc2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTtfLkYucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihhKXt0aGlzLmw9e3JldHVybjphfTt0aGlzLmc9dGhpcy5vfTtfLkYucHJvdG90eXBlWyJyZXR1cm4iXT1fLkYucHJvdG90eXBlLnJldHVybjtfLkYucHJvdG90eXBlLlI9ZnVuY3Rpb24oYSl7dGhpcy5sPXt4YTphfTt0aGlzLmc9dGhpcy5vfTtfLkYucHJvdG90eXBlLmp1bXBUaHJvdWdoRmluYWxseUJsb2Nrcz1fLkYucHJvdG90eXBlLlI7Xy5GLnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEsYil7dGhpcy5nPWI7cmV0dXJue3ZhbHVlOmF9fTtfLkYucHJvdG90eXBlLnlpZWxkPV8uRi5wcm90b3R5cGUuaDsKXy5GLnByb3RvdHlwZS5UPWZ1bmN0aW9uKGEsYil7YT1fLkMoYSk7dmFyIGM9YS5uZXh0KCk7Xy5jYyhjKTtpZihjLmRvbmUpdGhpcy5qPWMudmFsdWUsdGhpcy5nPWI7ZWxzZSByZXR1cm4gdGhpcy5BPWEsdGhpcy5oKGMudmFsdWUsYil9O18uRi5wcm90b3R5cGUueWllbGRBbGw9Xy5GLnByb3RvdHlwZS5UO18uRi5wcm90b3R5cGUueGE9ZnVuY3Rpb24oYSl7dGhpcy5nPWF9O18uRi5wcm90b3R5cGUuanVtcFRvPV8uRi5wcm90b3R5cGUueGE7Xy5GLnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7dGhpcy5nPTB9O18uRi5wcm90b3R5cGUuanVtcFRvRW5kPV8uRi5wcm90b3R5cGUuQjtfLkYucHJvdG90eXBlLkY9ZnVuY3Rpb24oYSxiKXt0aGlzLkM9YTtiIT12b2lkIDAmJih0aGlzLm89Yil9O18uRi5wcm90b3R5cGUuc2V0Q2F0Y2hGaW5hbGx5QmxvY2tzPV8uRi5wcm90b3R5cGUuRjtfLkYucHJvdG90eXBlLlA9ZnVuY3Rpb24oYSl7dGhpcy5DPTA7dGhpcy5vPWF8fDB9OwpfLkYucHJvdG90eXBlLnNldEZpbmFsbHlCbG9jaz1fLkYucHJvdG90eXBlLlA7Xy5GLnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYil7dGhpcy5nPWE7dGhpcy5DPWJ8fDB9O18uRi5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1fLkYucHJvdG90eXBlLks7Xy5GLnByb3RvdHlwZS5EPWZ1bmN0aW9uKGEpe3RoaXMuQz1hfHwwO2E9dGhpcy5sLmJmO3RoaXMubD1udWxsO3JldHVybiBhfTtfLkYucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1fLkYucHJvdG90eXBlLkQ7Xy5GLnByb3RvdHlwZS5MPWZ1bmN0aW9uKGEsYixjKXtjP3RoaXMuV1tjXT10aGlzLmw6dGhpcy5XPVt0aGlzLmxdO3RoaXMuQz1hfHwwO3RoaXMubz1ifHwwfTtfLkYucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPV8uRi5wcm90b3R5cGUuTDsKXy5GLnByb3RvdHlwZS5xYT1mdW5jdGlvbihhLGIpe2I9dGhpcy5XLnNwbGljZShifHwwKVswXTsoYj10aGlzLmw9dGhpcy5sfHxiKT9iLkNmP3RoaXMuZz10aGlzLkN8fHRoaXMubzpiLnhhIT12b2lkIDAmJnRoaXMubzxiLnhhPyh0aGlzLmc9Yi54YSx0aGlzLmw9bnVsbCk6dGhpcy5nPXRoaXMubzp0aGlzLmc9YX07Xy5GLnByb3RvdHlwZS5sZWF2ZUZpbmFsbHlCbG9jaz1fLkYucHJvdG90eXBlLnFhO18uRi5wcm90b3R5cGUuTz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IGRjKGEpfTtfLkYucHJvdG90eXBlLmZvckluPV8uRi5wcm90b3R5cGUuTzt2YXIgZGM9ZnVuY3Rpb24oYSl7dGhpcy5qPWE7dGhpcy5nPVtdO2Zvcih2YXIgYiBpbiBhKXRoaXMuZy5wdXNoKGIpO3RoaXMuZy5yZXZlcnNlKCl9O2RjLnByb3RvdHlwZS5oPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmcubGVuZ3RoPjA7KXt2YXIgYT10aGlzLmcucG9wKCk7aWYoYSBpbiB0aGlzLmopcmV0dXJuIGF9cmV0dXJuIG51bGx9OwpkYy5wcm90b3R5cGUuZ2V0TmV4dD1kYy5wcm90b3R5cGUuaDtfLmVjPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPU51bWJlcih0aGlzKSxiPVtdLGM9YTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWJbYy1hXT1hcmd1bWVudHNbY107cmV0dXJuIGJ9O3ooImdsb2JhbFRoaXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxfLlBifSk7eigiUmVmbGVjdCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTp7fX0pO3ooIlJlZmxlY3QuY29uc3RydWN0IixmdW5jdGlvbigpe3JldHVybiBfLlRifSk7eigiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpZYj9mdW5jdGlvbihiLGMpe3RyeXtyZXR1cm4gWWIoYixjKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19Om51bGx9KTsKeigiU3ltYm9sIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO3ZhciBiPWZ1bmN0aW9uKGYsZyl7dGhpcy5nPWY7TmIodGhpcywiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pfTtiLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmd9O3ZhciBjPSJqc2NvbXBfc3ltYm9sXyIrKE1hdGgucmFuZG9tKCkqMUU5Pj4+MCkrIl8iLGQ9MCxlPWZ1bmN0aW9uKGYpe2lmKHRoaXMgaW5zdGFuY2VvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImciKTtyZXR1cm4gbmV3IGIoYysoZnx8IiIpKyJfIitkKyssZil9O3JldHVybiBlfSk7eigiU3ltYm9sLml0ZXJhdG9yIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO2E9U3ltYm9sKCJoIik7TmIoQXJyYXkucHJvdG90eXBlLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBmYyhaYih0aGlzKSl9fSk7cmV0dXJuIGF9KTsKdmFyIGZjPWZ1bmN0aW9uKGEpe2E9e25leHQ6YX07YVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3JldHVybiBhfTsKeigiUHJvbWlzZSIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe3RoaXMuZz1udWxsfWZ1bmN0aW9uIGMoZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBlP2c6bmV3IGUoZnVuY3Rpb24oaCl7aChnKX0pfWlmKGEpcmV0dXJuIGE7Yi5wcm90b3R5cGUuaD1mdW5jdGlvbihnKXtpZih0aGlzLmc9PW51bGwpe3RoaXMuZz1bXTt2YXIgaD10aGlzO3RoaXMuaihmdW5jdGlvbigpe2gubygpfSl9dGhpcy5nLnB1c2goZyl9O3ZhciBkPV8uUGIuc2V0VGltZW91dDtiLnByb3RvdHlwZS5qPWZ1bmN0aW9uKGcpe2QoZywwKX07Yi5wcm90b3R5cGUubz1mdW5jdGlvbigpe2Zvcig7dGhpcy5nJiZ0aGlzLmcubGVuZ3RoOyl7dmFyIGc9dGhpcy5nO3RoaXMuZz1bXTtmb3IodmFyIGg9MDtoPGcubGVuZ3RoOysraCl7dmFyIGs9Z1toXTtnW2hdPW51bGw7dHJ5e2soKX1jYXRjaChsKXt0aGlzLmwobCl9fX10aGlzLmc9bnVsbH07Yi5wcm90b3R5cGUubD1mdW5jdGlvbihnKXt0aGlzLmooZnVuY3Rpb24oKXt0aHJvdyBnOwp9KX07dmFyIGU9ZnVuY3Rpb24oZyl7dGhpcy5nPTA7dGhpcy5qPXZvaWQgMDt0aGlzLmg9W107dGhpcy5CPSExO3ZhciBoPXRoaXMubCgpO3RyeXtnKGgucmVzb2x2ZSxoLnJlamVjdCl9Y2F0Y2goayl7aC5yZWplY3Qoayl9fTtlLnByb3RvdHlwZS5sPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhsKXtyZXR1cm4gZnVuY3Rpb24obil7a3x8KGs9ITAsbC5jYWxsKGgsbikpfX12YXIgaD10aGlzLGs9ITE7cmV0dXJue3Jlc29sdmU6Zyh0aGlzLkkpLHJlamVjdDpnKHRoaXMubyl9fTtlLnByb3RvdHlwZS5JPWZ1bmN0aW9uKGcpe2lmKGc9PT10aGlzKXRoaXMubyhuZXcgVHlwZUVycm9yKCJpIikpO2Vsc2UgaWYoZyBpbnN0YW5jZW9mIGUpdGhpcy5LKGcpO2Vsc2V7YTpzd2l0Y2godHlwZW9mIGcpe2Nhc2UgIm9iamVjdCI6dmFyIGg9ZyE9bnVsbDticmVhayBhO2Nhc2UgImZ1bmN0aW9uIjpoPSEwO2JyZWFrIGE7ZGVmYXVsdDpoPSExfWg/dGhpcy5HKGcpOnRoaXMuQShnKX19O2UucHJvdG90eXBlLkc9CmZ1bmN0aW9uKGcpe3ZhciBoPXZvaWQgMDt0cnl7aD1nLnRoZW59Y2F0Y2goayl7dGhpcy5vKGspO3JldHVybn10eXBlb2YgaD09ImZ1bmN0aW9uIj90aGlzLkwoaCxnKTp0aGlzLkEoZyl9O2UucHJvdG90eXBlLm89ZnVuY3Rpb24oZyl7dGhpcy5DKDIsZyl9O2UucHJvdG90eXBlLkE9ZnVuY3Rpb24oZyl7dGhpcy5DKDEsZyl9O2UucHJvdG90eXBlLkM9ZnVuY3Rpb24oZyxoKXtpZih0aGlzLmchPTApdGhyb3cgRXJyb3IoImpgIitnKyJgIitoKyJgIit0aGlzLmcpO3RoaXMuZz1nO3RoaXMuaj1oO3RoaXMuZz09PTImJnRoaXMuVygpO3RoaXMuRCgpfTtlLnByb3RvdHlwZS5XPWZ1bmN0aW9uKCl7dmFyIGc9dGhpcztkKGZ1bmN0aW9uKCl7aWYoZy5GKCkpe3ZhciBoPV8uUGIuY29uc29sZTt0eXBlb2YgaCE9PSJ1bmRlZmluZWQiJiZoLmVycm9yKGcuail9fSwxKX07ZS5wcm90b3R5cGUuRj1mdW5jdGlvbigpe2lmKHRoaXMuQilyZXR1cm4hMTt2YXIgZz1fLlBiLkN1c3RvbUV2ZW50LApoPV8uUGIuRXZlbnQsaz1fLlBiLmRpc3BhdGNoRXZlbnQ7aWYodHlwZW9mIGs9PT0idW5kZWZpbmVkIilyZXR1cm4hMDt0eXBlb2YgZz09PSJmdW5jdGlvbiI/Zz1uZXcgZygidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOnR5cGVvZiBoPT09ImZ1bmN0aW9uIj9nPW5ldyBoKCJ1bmhhbmRsZWRyZWplY3Rpb24iLHtjYW5jZWxhYmxlOiEwfSk6KGc9Xy5QYi5kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKSxnLmluaXRDdXN0b21FdmVudCgidW5oYW5kbGVkcmVqZWN0aW9uIiwhMSwhMCxnKSk7Zy5wcm9taXNlPXRoaXM7Zy5yZWFzb249dGhpcy5qO3JldHVybiBrKGcpfTtlLnByb3RvdHlwZS5EPWZ1bmN0aW9uKCl7aWYodGhpcy5oIT1udWxsKXtmb3IodmFyIGc9MDtnPHRoaXMuaC5sZW5ndGg7KytnKWYuaCh0aGlzLmhbZ10pO3RoaXMuaD1udWxsfX07dmFyIGY9bmV3IGI7ZS5wcm90b3R5cGUuSz1mdW5jdGlvbihnKXt2YXIgaD10aGlzLmwoKTtnLkljKGgucmVzb2x2ZSwKaC5yZWplY3QpfTtlLnByb3RvdHlwZS5MPWZ1bmN0aW9uKGcsaCl7dmFyIGs9dGhpcy5sKCk7dHJ5e2cuY2FsbChoLGsucmVzb2x2ZSxrLnJlamVjdCl9Y2F0Y2gobCl7ay5yZWplY3QobCl9fTtlLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGcsaCl7ZnVuY3Rpb24gayhwLHIpe3JldHVybiB0eXBlb2YgcD09ImZ1bmN0aW9uIj9mdW5jdGlvbih0KXt0cnl7bChwKHQpKX1jYXRjaChBKXtuKEEpfX06cn12YXIgbCxuLHE9bmV3IGUoZnVuY3Rpb24ocCxyKXtsPXA7bj1yfSk7dGhpcy5JYyhrKGcsbCksayhoLG4pKTtyZXR1cm4gcX07ZS5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZyl9O2UucHJvdG90eXBlLkljPWZ1bmN0aW9uKGcsaCl7ZnVuY3Rpb24gaygpe3N3aXRjaChsLmcpe2Nhc2UgMTpnKGwuaik7YnJlYWs7Y2FzZSAyOmgobC5qKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJrYCIrbC5nKTt9fXZhciBsPXRoaXM7dGhpcy5oPT0KbnVsbD9mLmgoayk6dGhpcy5oLnB1c2goayk7dGhpcy5CPSEwfTtlLnJlc29sdmU9YztlLnJlamVjdD1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IGUoZnVuY3Rpb24oaCxrKXtrKGcpfSl9O2UucmFjZT1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IGUoZnVuY3Rpb24oaCxrKXtmb3IodmFyIGw9Xy5DKGcpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKWMobi52YWx1ZSkuSWMoaCxrKX0pfTtlLmFsbD1mdW5jdGlvbihnKXt2YXIgaD1fLkMoZyksaz1oLm5leHQoKTtyZXR1cm4gay5kb25lP2MoW10pOm5ldyBlKGZ1bmN0aW9uKGwsbil7ZnVuY3Rpb24gcSh0KXtyZXR1cm4gZnVuY3Rpb24oQSl7cFt0XT1BO3ItLTtyPT0wJiZsKHApfX12YXIgcD1bXSxyPTA7ZG8gcC5wdXNoKHZvaWQgMCkscisrLGMoay52YWx1ZSkuSWMocShwLmxlbmd0aC0xKSxuKSxrPWgubmV4dCgpO3doaWxlKCFrLmRvbmUpfSl9O3JldHVybiBlfSk7CnZhciBoYz1mdW5jdGlvbihhLGIsYyl7aWYoYT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJsYCIrYyk7aWYoYiBpbnN0YW5jZW9mIFJlZ0V4cCl0aHJvdyBuZXcgVHlwZUVycm9yKCJtYCIrYyk7cmV0dXJuIGErIiJ9O3ooIlN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3ZhciBkPWhjKHRoaXMsYiwic3RhcnRzV2l0aCIpLGU9ZC5sZW5ndGgsZj1iLmxlbmd0aDtjPU1hdGgubWF4KDAsTWF0aC5taW4oY3wwLGQubGVuZ3RoKSk7Zm9yKHZhciBnPTA7ZzxmJiZjPGU7KWlmKGRbYysrXSE9YltnKytdKXJldHVybiExO3JldHVybiBnPj1mfX0pO3ooIk9iamVjdC5zZXRQcm90b3R5cGVPZiIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fFlifSk7eigiU3ltYm9sLmRpc3Bvc2UiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6U3ltYm9sKCJuIil9KTsKeigiV2Vha01hcCIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe31mdW5jdGlvbiBjKGspe3ZhciBsPXR5cGVvZiBrO3JldHVybiBsPT09Im9iamVjdCImJmshPT1udWxsfHxsPT09ImZ1bmN0aW9uIn1mdW5jdGlvbiBkKGspe2lmKCFhYyhrLGYpKXt2YXIgbD1uZXcgYjtOYihrLGYse3ZhbHVlOmx9KX19ZnVuY3Rpb24gZShrKXt2YXIgbD1PYmplY3Rba107bCYmKE9iamVjdFtrXT1mdW5jdGlvbihuKXtpZihuIGluc3RhbmNlb2YgYilyZXR1cm4gbjtPYmplY3QuaXNFeHRlbnNpYmxlKG4pJiZkKG4pO3JldHVybiBsKG4pfSl9aWYoZnVuY3Rpb24oKXtpZighYXx8IU9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgaz1PYmplY3Quc2VhbCh7fSksbD1PYmplY3Quc2VhbCh7fSksbj1uZXcgYShbW2ssMl0sW2wsM11dKTtpZihuLmdldChrKSE9Mnx8bi5nZXQobCkhPTMpcmV0dXJuITE7bi5kZWxldGUoayk7bi5zZXQobCw0KTtyZXR1cm4hbi5oYXMoaykmJm4uZ2V0KGwpPT00fWNhdGNoKHEpe3JldHVybiExfX0oKSlyZXR1cm4gYTsKdmFyIGY9IiRqc2NvbXBfaGlkZGVuXyIrTWF0aC5yYW5kb20oKTtlKCJmcmVlemUiKTtlKCJwcmV2ZW50RXh0ZW5zaW9ucyIpO2UoInNlYWwiKTt2YXIgZz0wLGg9ZnVuY3Rpb24oayl7dGhpcy5nPShnKz1NYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKCk7aWYoayl7az1fLkMoayk7Zm9yKHZhciBsOyEobD1rLm5leHQoKSkuZG9uZTspbD1sLnZhbHVlLHRoaXMuc2V0KGxbMF0sbFsxXSl9fTtoLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oayxsKXtpZighYyhrKSl0aHJvdyBFcnJvcigibyIpO2Qoayk7aWYoIWFjKGssZikpdGhyb3cgRXJyb3IoInBgIitrKTtrW2ZdW3RoaXMuZ109bDtyZXR1cm4gdGhpc307aC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGspe3JldHVybiBjKGspJiZhYyhrLGYpP2tbZl1bdGhpcy5nXTp2b2lkIDB9O2gucHJvdG90eXBlLmhhcz1mdW5jdGlvbihrKXtyZXR1cm4gYyhrKSYmYWMoayxmKSYmYWMoa1tmXSx0aGlzLmcpfTtoLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oayl7cmV0dXJuIGMoaykmJgphYyhrLGYpJiZhYyhrW2ZdLHRoaXMuZyk/ZGVsZXRlIGtbZl1bdGhpcy5nXTohMX07cmV0dXJuIGh9KTsKeigiTWFwIixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHx0eXBlb2YgYSE9ImZ1bmN0aW9uInx8IWEucHJvdG90eXBlLmVudHJpZXN8fHR5cGVvZiBPYmplY3Quc2VhbCE9ImZ1bmN0aW9uIilyZXR1cm4hMTt0cnl7dmFyIGg9T2JqZWN0LnNlYWwoe3g6NH0pLGs9bmV3IGEoXy5DKFtbaCwicyJdXSkpO2lmKGsuZ2V0KGgpIT0icyJ8fGsuc2l6ZSE9MXx8ay5nZXQoe3g6NH0pfHxrLnNldCh7eDo0fSwidCIpIT1rfHxrLnNpemUhPTIpcmV0dXJuITE7dmFyIGw9ay5lbnRyaWVzKCksbj1sLm5leHQoKTtpZihuLmRvbmV8fG4udmFsdWVbMF0hPWh8fG4udmFsdWVbMV0hPSJzIilyZXR1cm4hMTtuPWwubmV4dCgpO3JldHVybiBuLmRvbmV8fG4udmFsdWVbMF0ueCE9NHx8bi52YWx1ZVsxXSE9InQifHwhbC5uZXh0KCkuZG9uZT8hMTohMH1jYXRjaChxKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7dmFyIGI9bmV3IFdlYWtNYXAsYz1mdW5jdGlvbihoKXt0aGlzWzBdPXt9O3RoaXNbMV09CmYoKTt0aGlzLnNpemU9MDtpZihoKXtoPV8uQyhoKTtmb3IodmFyIGs7IShrPWgubmV4dCgpKS5kb25lOylrPWsudmFsdWUsdGhpcy5zZXQoa1swXSxrWzFdKX19O2MucHJvdG90eXBlLnNldD1mdW5jdGlvbihoLGspe2g9aD09PTA/MDpoO3ZhciBsPWQodGhpcyxoKTtsLmxpc3R8fChsLmxpc3Q9dGhpc1swXVtsLmlkXT1bXSk7bC5lbnRyeT9sLmVudHJ5LnZhbHVlPWs6KGwuZW50cnk9e25leHQ6dGhpc1sxXSxiYjp0aGlzWzFdLmJiLGhlYWQ6dGhpc1sxXSxrZXk6aCx2YWx1ZTprfSxsLmxpc3QucHVzaChsLmVudHJ5KSx0aGlzWzFdLmJiLm5leHQ9bC5lbnRyeSx0aGlzWzFdLmJiPWwuZW50cnksdGhpcy5zaXplKyspO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oaCl7aD1kKHRoaXMsaCk7cmV0dXJuIGguZW50cnkmJmgubGlzdD8oaC5saXN0LnNwbGljZShoLmluZGV4LDEpLGgubGlzdC5sZW5ndGh8fGRlbGV0ZSB0aGlzWzBdW2guaWRdLGguZW50cnkuYmIubmV4dD0KaC5lbnRyeS5uZXh0LGguZW50cnkubmV4dC5iYj1oLmVudHJ5LmJiLGguZW50cnkuaGVhZD1udWxsLHRoaXMuc2l6ZS0tLCEwKTohMX07Yy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzWzBdPXt9O3RoaXNbMV09dGhpc1sxXS5iYj1mKCk7dGhpcy5zaXplPTB9O2MucHJvdG90eXBlLmhhcz1mdW5jdGlvbihoKXtyZXR1cm4hIWQodGhpcyxoKS5lbnRyeX07Yy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGgpe3JldHVybihoPWQodGhpcyxoKS5lbnRyeSkmJmgudmFsdWV9O2MucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGgpe3JldHVybltoLmtleSxoLnZhbHVlXX0pfTtjLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm4gaC5rZXl9KX07Yy5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm4gaC52YWx1ZX0pfTtjLnByb3RvdHlwZS5mb3JFYWNoPQpmdW5jdGlvbihoLGspe2Zvcih2YXIgbD10aGlzLmVudHJpZXMoKSxuOyEobj1sLm5leHQoKSkuZG9uZTspbj1uLnZhbHVlLGguY2FsbChrLG5bMV0sblswXSx0aGlzKX07Yy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1jLnByb3RvdHlwZS5lbnRyaWVzO3ZhciBkPWZ1bmN0aW9uKGgsayl7dmFyIGw9ayYmdHlwZW9mIGs7bD09Im9iamVjdCJ8fGw9PSJmdW5jdGlvbiI/Yi5oYXMoayk/bD1iLmdldChrKToobD0iIisgKytnLGIuc2V0KGssbCkpOmw9InBfIitrO3ZhciBuPWhbMF1bbF07aWYobiYmYWMoaFswXSxsKSlmb3IoaD0wO2g8bi5sZW5ndGg7aCsrKXt2YXIgcT1uW2hdO2lmKGshPT1rJiZxLmtleSE9PXEua2V5fHxrPT09cS5rZXkpcmV0dXJue2lkOmwsbGlzdDpuLGluZGV4OmgsZW50cnk6cX19cmV0dXJue2lkOmwsbGlzdDpuLGluZGV4Oi0xLGVudHJ5OnZvaWQgMH19LGU9ZnVuY3Rpb24oaCxrKXt2YXIgbD1oWzFdO3JldHVybiBmYyhmdW5jdGlvbigpe2lmKGwpe2Zvcig7bC5oZWFkIT0KaFsxXTspbD1sLmJiO2Zvcig7bC5uZXh0IT1sLmhlYWQ7KXJldHVybiBsPWwubmV4dCx7ZG9uZTohMSx2YWx1ZTprKGwpfTtsPW51bGx9cmV0dXJue2RvbmU6ITAsdmFsdWU6dm9pZCAwfX0pfSxmPWZ1bmN0aW9uKCl7dmFyIGg9e307cmV0dXJuIGguYmI9aC5uZXh0PWguaGVhZD1ofSxnPTA7cmV0dXJuIGN9KTsKeigiU2V0IixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHx0eXBlb2YgYSE9ImZ1bmN0aW9uInx8IWEucHJvdG90eXBlLmVudHJpZXN8fHR5cGVvZiBPYmplY3Quc2VhbCE9ImZ1bmN0aW9uIilyZXR1cm4hMTt0cnl7dmFyIGM9T2JqZWN0LnNlYWwoe3g6NH0pLGQ9bmV3IGEoXy5DKFtjXSkpO2lmKCFkLmhhcyhjKXx8ZC5zaXplIT0xfHxkLmFkZChjKSE9ZHx8ZC5zaXplIT0xfHxkLmFkZCh7eDo0fSkhPWR8fGQuc2l6ZSE9MilyZXR1cm4hMTt2YXIgZT1kLmVudHJpZXMoKSxmPWUubmV4dCgpO2lmKGYuZG9uZXx8Zi52YWx1ZVswXSE9Y3x8Zi52YWx1ZVsxXSE9YylyZXR1cm4hMTtmPWUubmV4dCgpO3JldHVybiBmLmRvbmV8fGYudmFsdWVbMF09PWN8fGYudmFsdWVbMF0ueCE9NHx8Zi52YWx1ZVsxXSE9Zi52YWx1ZVswXT8hMTplLm5leHQoKS5kb25lfWNhdGNoKGcpe3JldHVybiExfX0oKSlyZXR1cm4gYTt2YXIgYj1mdW5jdGlvbihjKXt0aGlzLmc9bmV3IE1hcDtpZihjKXtjPQpfLkMoYyk7Zm9yKHZhciBkOyEoZD1jLm5leHQoKSkuZG9uZTspdGhpcy5hZGQoZC52YWx1ZSl9dGhpcy5zaXplPXRoaXMuZy5zaXplfTtiLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYyl7Yz1jPT09MD8wOmM7dGhpcy5nLnNldChjLGMpO3RoaXMuc2l6ZT10aGlzLmcuc2l6ZTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGMpe2M9dGhpcy5nLmRlbGV0ZShjKTt0aGlzLnNpemU9dGhpcy5nLnNpemU7cmV0dXJuIGN9O2IucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5nLmNsZWFyKCk7dGhpcy5zaXplPTB9O2IucHJvdG90eXBlLmhhcz1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5nLmhhcyhjKX07Yi5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcuZW50cmllcygpfTtiLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLnZhbHVlcygpfTtiLnByb3RvdHlwZS5rZXlzPWIucHJvdG90eXBlLnZhbHVlczsKYi5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1iLnByb3RvdHlwZS52YWx1ZXM7Yi5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihjLGQpe3ZhciBlPXRoaXM7dGhpcy5nLmZvckVhY2goZnVuY3Rpb24oZil7cmV0dXJuIGMuY2FsbChkLGYsZixlKX0pfTtyZXR1cm4gYn0pO3ZhciBpYz1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiBTdHJpbmcmJihhKz0iIik7dmFyIGM9MCxkPSExLGU9e25leHQ6ZnVuY3Rpb24oKXtpZighZCYmYzxhLmxlbmd0aCl7dmFyIGY9YysrO3JldHVybnt2YWx1ZTpiKGYsYVtmXSksZG9uZTohMX19ZD0hMDtyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fX07ZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBlfTt6KCJBcnJheS5wcm90b3R5cGUuZW50cmllcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybiBpYyh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuW2IsY119KX19KTsKeigiQXJyYXkucHJvdG90eXBlLmtleXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gaWModGhpcyxmdW5jdGlvbihiKXtyZXR1cm4gYn0pfX0pO3ooIlN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGgiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD1oYyh0aGlzLGIsImVuZHNXaXRoIik7Yz09PXZvaWQgMCYmKGM9ZC5sZW5ndGgpO2M9TWF0aC5tYXgoMCxNYXRoLm1pbihjfDAsZC5sZW5ndGgpKTtmb3IodmFyIGU9Yi5sZW5ndGg7ZT4wJiZjPjA7KWlmKGRbLS1jXSE9YlstLWVdKXJldHVybiExO3JldHVybiBlPD0wfX0pO3ooIk51bWJlci5pc0Zpbml0ZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGIhPT0ibnVtYmVyIj8hMTohaXNOYU4oYikmJmIhPT1JbmZpbml0eSYmYiE9PS1JbmZpbml0eX19KTsKeigiQXJyYXkucHJvdG90eXBlLmZpbmQiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXthOnt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7Zm9yKHZhciBlPWQubGVuZ3RoLGY9MDtmPGU7ZisrKXt2YXIgZz1kW2ZdO2lmKGIuY2FsbChjLGcsZixkKSl7Yj1nO2JyZWFrIGF9fWI9dm9pZCAwfXJldHVybiBifX0pO3ooIk9iamVjdC5lbnRyaWVzIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3ZhciBjPVtdLGQ7Zm9yKGQgaW4gYilhYyhiLGQpJiZjLnB1c2goW2QsYltkXV0pO3JldHVybiBjfX0pOwp6KCJBcnJheS5mcm9tIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyxkKXtjPWMhPW51bGw/YzpmdW5jdGlvbihoKXtyZXR1cm4gaH07dmFyIGU9W10sZj10eXBlb2YgU3ltYm9sIT0idW5kZWZpbmVkIiYmU3ltYm9sLml0ZXJhdG9yJiZiW1N5bWJvbC5pdGVyYXRvcl07aWYodHlwZW9mIGY9PSJmdW5jdGlvbiIpe2I9Zi5jYWxsKGIpO2Zvcih2YXIgZz0wOyEoZj1iLm5leHQoKSkuZG9uZTspZS5wdXNoKGMuY2FsbChkLGYudmFsdWUsZysrKSl9ZWxzZSBmb3IoZj1iLmxlbmd0aCxnPTA7ZzxmO2crKyllLnB1c2goYy5jYWxsKGQsYltnXSxnKSk7cmV0dXJuIGV9fSk7eigiQXJyYXkucHJvdG90eXBlLnZhbHVlcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybiBpYyh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGN9KX19KTsKeigiT2JqZWN0LnZhbHVlcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXt2YXIgYz1bXSxkO2ZvcihkIGluIGIpYWMoYixkKSYmYy5wdXNoKGJbZF0pO3JldHVybiBjfX0pO3ooIk9iamVjdC5pcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiBiPT09Yz9iIT09MHx8MS9iPT09MS9jOmIhPT1iJiZjIT09Y319KTt6KCJBcnJheS5wcm90b3R5cGUuaW5jbHVkZXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7dmFyIGU9ZC5sZW5ndGg7Yz1jfHwwO2ZvcihjPDAmJihjPU1hdGgubWF4KGMrZSwwKSk7YzxlO2MrKyl7dmFyIGY9ZFtjXTtpZihmPT09Ynx8T2JqZWN0LmlzKGYsYikpcmV0dXJuITB9cmV0dXJuITF9fSk7CnooIlN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gaGModGhpcyxiLCJpbmNsdWRlcyIpLmluZGV4T2YoYixjfHwwKSE9PS0xfX0pO3ooIk51bWJlci5NQVhfU0FGRV9JTlRFR0VSIixmdW5jdGlvbigpe3JldHVybiA5MDA3MTk5MjU0NzQwOTkxfSk7eigiTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIiLGZ1bmN0aW9uKCl7cmV0dXJuLTkwMDcxOTkyNTQ3NDA5OTF9KTt6KCJOdW1iZXIuaXNJbnRlZ2VyIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUoYik/Yj09PU1hdGguZmxvb3IoYik6ITF9fSk7eigiTnVtYmVyLmlzU2FmZUludGVnZXIiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoYikmJk1hdGguYWJzKGIpPD1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUn19KTsKeigiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybltdfX0pO3ooIk1hdGgudHJ1bmMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7Yj1OdW1iZXIoYik7aWYoaXNOYU4oYil8fGI9PT1JbmZpbml0eXx8Yj09PS1JbmZpbml0eXx8Yj09PTApcmV0dXJuIGI7dmFyIGM9TWF0aC5mbG9vcihNYXRoLmFicyhiKSk7cmV0dXJuIGI8MD8tYzpjfX0pO3ooIk51bWJlci5pc05hTiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGI9PT0ibnVtYmVyIiYmaXNOYU4oYil9fSk7CnooIlN0cmluZy5wcm90b3R5cGUucmVwbGFjZUFsbCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe2lmKGIgaW5zdGFuY2VvZiBSZWdFeHAmJiFiLmdsb2JhbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJxIik7cmV0dXJuIGIgaW5zdGFuY2VvZiBSZWdFeHA/dGhpcy5yZXBsYWNlKGIsYyk6dGhpcy5yZXBsYWNlKG5ldyBSZWdFeHAoU3RyaW5nKGIpLnJlcGxhY2UoLyhbLSgpXFtcXXt9Kz8qLiRcXnwsOiM8IVxcXSkvZywiXFwkMSIpLnJlcGxhY2UoL1x4MDgvZywiXFx4MDgiKSwiZyIpLGMpfX0pOwp6KCJBcnJheS5wcm90b3R5cGUuZmxhdCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtiPWI9PT12b2lkIDA/MTpiO3ZhciBjPVtdO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodGhpcyxmdW5jdGlvbihkKXtBcnJheS5pc0FycmF5KGQpJiZiPjA/KGQ9QXJyYXkucHJvdG90eXBlLmZsYXQuY2FsbChkLGItMSksYy5wdXNoLmFwcGx5KGMsZCkpOmMucHVzaChkKX0pO3JldHVybiBjfX0pO3ooIlByb21pc2UucHJvdG90eXBlLmZpbmFsbHkiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihjKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGIoKSkudGhlbihmdW5jdGlvbigpe3JldHVybiBjfSl9LGZ1bmN0aW9uKGMpe3JldHVybiBQcm9taXNlLnJlc29sdmUoYigpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgYzt9KX0pfX0pOwp6KCJBcnJheS5wcm90b3R5cGUuZmlsbCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMsZCl7dmFyIGU9dGhpcy5sZW5ndGh8fDA7YzwwJiYoYz1NYXRoLm1heCgwLGUrYykpO2lmKGQ9PW51bGx8fGQ+ZSlkPWU7ZD1OdW1iZXIoZCk7ZDwwJiYoZD1NYXRoLm1heCgwLGUrZCkpO2ZvcihjPU51bWJlcihjfHwwKTtjPGQ7YysrKXRoaXNbY109YjtyZXR1cm4gdGhpc319KTtTYigiZmlsbCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpBcnJheS5wcm90b3R5cGUuZmlsbH0pO18uX0R1bXBFeGNlcHRpb249d2luZG93Ll9EdW1wRXhjZXB0aW9ufHxmdW5jdGlvbihhKXt0aHJvdyBhO307d2luZG93Ll9EdW1wRXhjZXB0aW9uPV8uX0R1bXBFeGNlcHRpb247dmFyIGpjLGxjLG1jLG5jLHphLEFhLHBjLHFjO2pjPWpjfHx7fTtfLnY9dGhpc3x8c2VsZjtsYz1mdW5jdGlvbihhLGIpe3ZhciBjPV8ua2MoIldJWl9nbG9iYWxfZGF0YS5veE4zbmIiKTthPWMmJmNbYV07cmV0dXJuIGEhPW51bGw/YTpifTttYz1fLnYuX0ZfdG9nZ2xlc19kZWZhdWx0X3RyfHxbXTtuYz1mdW5jdGlvbigpe307bmMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O18ua2M9ZnVuY3Rpb24oYSxiKXthPWEuc3BsaXQoIi4iKTtiPWJ8fF8udjtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihiPWJbYVtjXV0sYj09bnVsbClyZXR1cm4gbnVsbDtyZXR1cm4gYn07Xy5vYz1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4gYiE9Im9iamVjdCI/YjphP0FycmF5LmlzQXJyYXkoYSk/ImFycmF5IjpiOiJudWxsIn07Xy5xYT1mdW5jdGlvbihhKXt2YXIgYj1fLm9jKGEpO3JldHVybiBiPT0iYXJyYXkifHxiPT0ib2JqZWN0IiYmdHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIn07Cl8ueWE9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7cmV0dXJuIGI9PSJvYmplY3QiJiZhIT1udWxsfHxiPT0iZnVuY3Rpb24ifTt6YT0iY2xvc3VyZV91aWRfIisoTWF0aC5yYW5kb20oKSoxRTk+Pj4wKTtBYT0wO3BjPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5jYWxsLmFwcGx5KGEuYmluZCxhcmd1bWVudHMpfTtxYz1mdW5jdGlvbihhLGIsYyl7aWYoIWEpdGhyb3cgRXJyb3IoKTtpZihhcmd1bWVudHMubGVuZ3RoPjIpe3ZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGUsZCk7cmV0dXJuIGEuYXBwbHkoYixlKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYixhcmd1bWVudHMpfX07Cl8ueT1mdW5jdGlvbihhLGIsYyl7Xy55PUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kJiZGdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIikhPS0xP3BjOnFjO3JldHVybiBfLnkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtfLnJjPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Zm9yKHZhciBjPV8udixkO2EubGVuZ3RoJiYoZD1hLnNoaWZ0KCkpOylhLmxlbmd0aHx8Yj09PXZvaWQgMD9jW2RdJiZjW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXT9jPWNbZF06Yz1jW2RdPXt9OmNbZF09Yn07Cl8uRz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5lYT1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuTWs9ZnVuY3Rpb24oZCxlLGYpe2Zvcih2YXIgZz1BcnJheShhcmd1bWVudHMubGVuZ3RoLTIpLGg9MjtoPGFyZ3VtZW50cy5sZW5ndGg7aCsrKWdbaC0yXT1hcmd1bWVudHNbaF07cmV0dXJuIGIucHJvdG90eXBlW2VdLmFwcGx5KGQsZyl9fTtfLkcoYWEsRXJyb3IpO2FhLnByb3RvdHlwZS5uYW1lPSJDdXN0b21FcnJvciI7dmFyIHNjO18uRyhjYSxhYSk7Y2EucHJvdG90eXBlLm5hbWU9IkFzc2VydGlvbkVycm9yIjt2YXIgZWE7dmFyIHRjPWZ1bmN0aW9uKGEsYil7dGhpcy5oPWE7dGhpcy5nPWJ8fG51bGx9O3RjLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmh9O3ZhciB1Yz1uZXcgdGMoIm43M3F3ZiIsIm43M3F3ZiIpO3ZhciBuYT1TeW1ib2woInMiKTtfLnUucHJvdG90eXBlLnFhPSExO18udS5wcm90b3R5cGUucWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xYX07Xy51LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5xYXx8KHRoaXMucWE9ITAsdGhpcy5NKCkpfTtfLnUucHJvdG90eXBlW1N5bWJvbC5kaXNwb3NlXT1mdW5jdGlvbigpe3RoaXMuZGlzcG9zZSgpfTtfLnUucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtpZih0aGlzLlcpZm9yKDt0aGlzLlcubGVuZ3RoOyl0aGlzLlcuc2hpZnQoKSgpfTt2YXIgc2Esd2M7c2E9QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsdm9pZCAwKX06ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYT09PSJzdHJpbmciKXJldHVybiB0eXBlb2YgYiE9PSJzdHJpbmcifHxiLmxlbmd0aCE9MT8tMTphLmluZGV4T2YoYiwwKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihjIGluIGEmJmFbY109PT1iKXJldHVybiBjO3JldHVybi0xfTtfLnZjPUFycmF5LnByb3RvdHlwZS5mb3JFYWNoP2Z1bmN0aW9uKGEsYil7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLGIsdm9pZCAwKX06ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YS5sZW5ndGgsZD10eXBlb2YgYT09PSJzdHJpbmciP2Euc3BsaXQoIiIpOmEsZT0wO2U8YztlKyspZSBpbiBkJiZiLmNhbGwodm9pZCAwLGRbZV0sZSxhKX07CndjPUFycmF5LnByb3RvdHlwZS5yZWR1Y2U/ZnVuY3Rpb24oYSxiLGMpe0FycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jOygwLF8udmMpKGEsZnVuY3Rpb24oZSxmKXtkPWIuY2FsbCh2b2lkIDAsZCxlLGYsYSl9KX07Xy54Yz1BcnJheS5wcm90b3R5cGUuc29tZT9mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYix2b2lkIDApfTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPXR5cGVvZiBhPT09InN0cmluZyI/YS5zcGxpdCgiIik6YSxlPTA7ZTxjO2UrKylpZihlIGluIGQmJmIuY2FsbCh2b2lkIDAsZFtlXSxlLGEpKXJldHVybiEwO3JldHVybiExfTtfLnljPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PWI/ITA6YSYmYj9hLndpZHRoPT1iLndpZHRoJiZhLmhlaWdodD09Yi5oZWlnaHQ6ITF9O18uQ2EucHJvdG90eXBlLmFzcGVjdFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGgvdGhpcy5oZWlnaHR9O18uQ2EucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLkNhLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMud2lkdGg9TWF0aC5mbG9vcih0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Xy5DYS5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGgucm91bmQodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O3ZhciBFYTtFYT0iY29uc3RydWN0b3IgaGFzT3duUHJvcGVydHkgaXNQcm90b3R5cGVPZiBwcm9wZXJ0eUlzRW51bWVyYWJsZSB0b0xvY2FsZVN0cmluZyB0b1N0cmluZyB2YWx1ZU9mIi5zcGxpdCgiICIpO18uemM9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCBpbiBhKWIuY2FsbChjLGFbZF0sZCxhKX07Xy5BYz1TdHJpbmcucHJvdG90eXBlLnRyaW0/ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHJpbSgpfTpmdW5jdGlvbihhKXtyZXR1cm4vXltcc1x4YTBdKihbXHNcU10qPylbXHNceGEwXSokLy5leGVjKGEpWzFdfTt2YXIgQmM9Z2xvYmFsVGhpcy50cnVzdGVkVHlwZXMsSGE9QmMsSmE7Xy5MYT1mdW5jdGlvbihhKXt0aGlzLmc9YX07Xy5MYS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nKyIifTtfLkNjPUdhKGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBVUkw9PT0iZnVuY3Rpb24ifSk7Xy5EYz1mdW5jdGlvbihhKXt0aGlzLmc9YX07Xy5EYy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nKyIifTtfLkVjPUdhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLkRjKEJjP0JjLmVtcHR5SFRNTDoiIil9KTtfLlBhPWZ1bmN0aW9uKGEpe3RoaXMuZz1hfTtfLlBhLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcrIiJ9O18uR2I9ZnVuY3Rpb24oYSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoYSkpfTtfLkRiPWZ1bmN0aW9uKGEpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYS5yZXBsYWNlKC9cKy9nLCIgIikpfTt2YXIgRmM9ISEobWNbMF0+PjI1JjEpLEdjPSEhKG1jWzBdPj4yMCYxKSxIYz0hIShtY1swXT4+MjcmMSksSWM9ISEobWNbMF0mODE5MiksSmM9ISEobWNbMF0+PjE5JjEpLEtjPSEhKG1jWzBdPj4xNyYxKSxMYz0hIShtY1swXT4+MTgmMSk7dmFyIHRiLE5jLE9jO18uVWE9RmM/SGM6bGMoNjEwNDAxMzAxLCExKTtfLk1jPUZjP0djfHwhSWM6bGMoNzQ4NDAyMTQ3LCEwKTt0Yj1GYz9KYzpsYyg5MTk0NDQ4MjQsITEpO05jPUZjP0tjOmxjKDkyODg3NTM5OCwhMSk7T2M9RmM/TGM6bGMoNjgzNzQ5MjAxLCExKTt2YXIgUGM7UGM9Xy52Lm5hdmlnYXRvcjtfLlZhPVBjP1BjLnVzZXJBZ2VudERhdGF8fG51bGw6bnVsbDtfLlFjPWZ1bmN0aW9uKGEpe18uUWNbIiAiXShhKTtyZXR1cm4gYX07Xy5RY1siICJdPWZ1bmN0aW9uKCl7fTt2YXIgZWQ7Xy5SYz1fLlhhKCk7Xy5TYz1fLldhKCk/ITE6Xy53KCJUcmlkZW50Iil8fF8udygiTVNJRSIpO18uVGM9Xy53KCJFZGdlIik7Xy5VYz1fLncoIkdlY2tvIikmJiEoXy5UYSgpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigid2Via2l0IikhPS0xJiYhXy53KCJFZGdlIikpJiYhKF8udygiVHJpZGVudCIpfHxfLncoIk1TSUUiKSkmJiFfLncoIkVkZ2UiKTtfLlZjPV8uVGEoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIndlYmtpdCIpIT0tMSYmIV8udygiRWRnZSIpO18uV2M9Xy5WYyYmXy53KCJNb2JpbGUiKTtfLlljPV8uYWIoKTtfLlpjPVlhKCk/Xy5WYS5wbGF0Zm9ybT09PSJXaW5kb3dzIjpfLncoIldpbmRvd3MiKTtfLiRjPVlhKCk/Xy5WYS5wbGF0Zm9ybT09PSJBbmRyb2lkIjpfLncoIkFuZHJvaWQiKTtfLmFkPV8uWmEoKTtfLmJkPV8udygiaVBhZCIpO18uY2Q9Xy53KCJpUG9kIik7Xy5kZD1fLiRhKCk7CmE6e3ZhciBmZD0iIixnZD1mdW5jdGlvbigpe3ZhciBhPV8uVGEoKTtpZihfLlVjKXJldHVybi9ydjooW15cKTtdKykoXCl8OykvLmV4ZWMoYSk7aWYoXy5UYylyZXR1cm4vRWRnZVwvKFtcZFwuXSspLy5leGVjKGEpO2lmKF8uU2MpcmV0dXJuL1xiKD86TVNJRXxydilbOiBdKFteXCk7XSspKFwpfDspLy5leGVjKGEpO2lmKF8uVmMpcmV0dXJuL1dlYktpdFwvKFxTKykvLmV4ZWMoYSk7aWYoXy5SYylyZXR1cm4vKD86VmVyc2lvbilbIFwvXT8oXFMrKS8uZXhlYyhhKX0oKTtnZCYmKGZkPWdkP2dkWzFdOiIiKTtpZihfLlNjKXt2YXIgaGQsaWQ9Xy52LmRvY3VtZW50O2hkPWlkP2lkLmRvY3VtZW50TW9kZTp2b2lkIDA7aWYoaGQhPW51bGwmJmhkPnBhcnNlRmxvYXQoZmQpKXtlZD1TdHJpbmcoaGQpO2JyZWFrIGF9fWVkPWZkfV8uamQ9ZWQ7dmFyIGtkPSJBUlRJQ0xFIFNFQ1RJT04gTkFWIEFTSURFIEgxIEgyIEgzIEg0IEg1IEg2IEhFQURFUiBGT09URVIgQUREUkVTUyBQIEhSIFBSRSBCTE9DS1FVT1RFIE9MIFVMIExIIExJIERMIERUIEREIEZJR1VSRSBGSUdDQVBUSU9OIE1BSU4gRElWIEVNIFNUUk9ORyBTTUFMTCBTIENJVEUgUSBERk4gQUJCUiBSVUJZIFJCIFJUIFJUQyBSUCBEQVRBIFRJTUUgQ09ERSBWQVIgU0FNUCBLQkQgU1VCIFNVUCBJIEIgVSBNQVJLIEJESSBCRE8gU1BBTiBCUiBXQlIgTk9CUiBJTlMgREVMIFBJQ1RVUkUgUEFSQU0gVFJBQ0sgTUFQIFRBQkxFIENBUFRJT04gQ09MR1JPVVAgQ09MIFRCT0RZIFRIRUFEIFRGT09UIFRSIFREIFRIIFNFTEVDVCBEQVRBTElTVCBPUFRHUk9VUCBPUFRJT04gT1VUUFVUIFBST0dSRVNTIE1FVEVSIEZJRUxEU0VUIExFR0VORCBERVRBSUxTIFNVTU1BUlkgTUVOVSBESUFMT0cgU0xPVCBDQU5WQVMgRk9OVCBDRU5URVIgQUNST05ZTSBCQVNFRk9OVCBCSUcgRElSIEhHUk9VUCBTVFJJS0UgVFQiLnNwbGl0KCIgIiksCmxkPVtbIkEiLG5ldyBNYXAoW1siaHJlZiIse3VhOjd9XV0pXSxbIkFSRUEiLG5ldyBNYXAoW1siaHJlZiIse3VhOjd9XV0pXSxbIkxJTksiLG5ldyBNYXAoW1siaHJlZiIse3VhOjUsY29uZGl0aW9uczpuZXcgTWFwKFtbInJlbCIsbmV3IFNldCgiYWx0ZXJuYXRlIGF1dGhvciBib29rbWFyayBjYW5vbmljYWwgY2l0ZSBoZWxwIGljb24gbGljZW5zZSBuZXh0IHByZWZldGNoIGRucy1wcmVmZXRjaCBwcmVyZW5kZXIgcHJlY29ubmVjdCBwcmVsb2FkIHByZXYgc2VhcmNoIHN1YnJlc291cmNlIi5zcGxpdCgiICIpKV1dKX1dXSldLFsiU09VUkNFIixuZXcgTWFwKFtbInNyYyIse3VhOjV9XSxbInNyY3NldCIse3VhOjZ9XV0pXSxbIklNRyIsbmV3IE1hcChbWyJzcmMiLHt1YTo1fV0sWyJzcmNzZXQiLHt1YTo2fV1dKV0sWyJWSURFTyIsbmV3IE1hcChbWyJzcmMiLHt1YTo1fV1dKV0sWyJBVURJTyIsbmV3IE1hcChbWyJzcmMiLHt1YTo1fV1dKV1dLG1kPSJ0aXRsZSBhcmlhLWF0b21pYyBhcmlhLWF1dG9jb21wbGV0ZSBhcmlhLWJ1c3kgYXJpYS1jaGVja2VkIGFyaWEtY3VycmVudCBhcmlhLWRpc2FibGVkIGFyaWEtZHJvcGVmZmVjdCBhcmlhLWV4cGFuZGVkIGFyaWEtaGFzcG9wdXAgYXJpYS1oaWRkZW4gYXJpYS1pbnZhbGlkIGFyaWEtbGFiZWwgYXJpYS1sZXZlbCBhcmlhLWxpdmUgYXJpYS1tdWx0aWxpbmUgYXJpYS1tdWx0aXNlbGVjdGFibGUgYXJpYS1vcmllbnRhdGlvbiBhcmlhLXBvc2luc2V0IGFyaWEtcHJlc3NlZCBhcmlhLXJlYWRvbmx5IGFyaWEtcmVsZXZhbnQgYXJpYS1yZXF1aXJlZCBhcmlhLXNlbGVjdGVkIGFyaWEtc2V0c2l6ZSBhcmlhLXNvcnQgYXJpYS12YWx1ZW1heCBhcmlhLXZhbHVlbWluIGFyaWEtdmFsdWVub3cgYXJpYS12YWx1ZXRleHQgYWx0IGFsaWduIGF1dG9jYXBpdGFsaXplIGF1dG9jb21wbGV0ZSBhdXRvY29ycmVjdCBhdXRvZm9jdXMgYXV0b3BsYXkgYmdjb2xvciBib3JkZXIgY2VsbHBhZGRpbmcgY2VsbHNwYWNpbmcgY2hlY2tlZCBjaXRlIGNvbG9yIGNvbHMgY29sc3BhbiBjb250cm9scyBjb250cm9sc2xpc3QgY29vcmRzIGNyb3Nzb3JpZ2luIGRhdGV0aW1lIGRpc2FibGVkIGRvd25sb2FkIGRyYWdnYWJsZSBlbmN0eXBlIGZhY2UgZm9ybWVuY3R5cGUgZnJhbWVib3JkZXIgaGVpZ2h0IGhyZWZsYW5nIGhpZGRlbiBpbmVydCBpc21hcCBsYWJlbCBsYW5nIGxvb3AgbWF4IG1heGxlbmd0aCBtZWRpYSBtaW5sZW5ndGggbWluIG11bHRpcGxlIG11dGVkIG5vbmNlIG9wZW4gcGxheXNpbmxpbmUgcGxhY2Vob2xkZXIgcHJlbG9hZCByZWwgcmVxdWlyZWQgcmV2ZXJzZWQgcm9sZSByb3dzIHJvd3NwYW4gc2VsZWN0ZWQgc2hhcGUgc2l6ZSBzaXplcyBzbG90IHNwYW4gc3BlbGxjaGVjayBzdGFydCBzdGVwIHN1bW1hcnkgdHJhbnNsYXRlIHR5cGUgdXNlbWFwIHZhbGlnbiB2YWx1ZSB3aWR0aCB3cmFwIGl0ZW1zY29wZSBpdGVtdHlwZSBpdGVtaWQgaXRlbXByb3AgaXRlbXJlZiIuc3BsaXQoIiAiKSwKbmQ9W1siZGlyIix7dWE6Myxjb25kaXRpb25zOkdhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNYXAoW1siZGlyIixuZXcgU2V0KFsiYXV0byIsImx0ciIsInJ0bCJdKV1dKX0pfV0sWyJhc3luYyIse3VhOjMsY29uZGl0aW9uczpHYShmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwKFtbImFzeW5jIixuZXcgU2V0KFsiYXN5bmMiXSldXSl9KX1dLFsibG9hZGluZyIse3VhOjMsY29uZGl0aW9uczpHYShmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwKFtbImxvYWRpbmciLG5ldyBTZXQoWyJlYWdlciIsImxhenkiXSldXSl9KX1dLFsicG9zdGVyIix7dWE6NX1dLFsidGFyZ2V0Iix7dWE6Myxjb25kaXRpb25zOkdhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNYXAoW1sidGFyZ2V0IixuZXcgU2V0KFsiX3NlbGYiLCJfYmxhbmsiXSldXSl9KX1dXSxvZD1uZXcgZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW5ldyBTZXQoWyJkYXRhLSIsImFyaWEtIl0pLGU9bmV3IE1hcChsZCk7dGhpcy5qPWE7dGhpcy5nPQplO3RoaXMubD1iO3RoaXMubz1jO3RoaXMuaD1kfShuZXcgU2V0KEdhKGZ1bmN0aW9uKCl7cmV0dXJuIGtkLmNvbmNhdCgiU1RZTEUgVElUTEUgSU5QVVQgVEVYVEFSRUEgQlVUVE9OIExBQkVMIi5zcGxpdCgiICIpKX0pKSxuZXcgU2V0KEdhKGZ1bmN0aW9uKCl7cmV0dXJuIG1kLmNvbmNhdChbImNsYXNzIiwiaWQiLCJ0YWJpbmRleCIsImNvbnRlbnRlZGl0YWJsZSIsIm5hbWUiXSl9KSksbmV3IE1hcChHYShmdW5jdGlvbigpe3JldHVybiBuZC5jb25jYXQoW1sic3R5bGUiLHt1YToxfV1dKX0pKSk7dmFyIHBkPWZ1bmN0aW9uKCl7dGhpcy5nPW9kfTtwZC5wcm90b3R5cGUuY3JlYXRlVGV4dE5vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGEpfTtfLnFkPUdhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBwZH0pO3ZhciB2ZCx1ZCx4ZDtfLmxiPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyBfLnJkKF8uc2QoYSkpOnNjfHwoc2M9bmV3IF8ucmQpfTtfLnRkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiPT09InN0cmluZyI/YS5nZXRFbGVtZW50QnlJZChiKTpifTt2ZD1mdW5jdGlvbihhLGIpe18uemMoYixmdW5jdGlvbihjLGQpe2Q9PSJzdHlsZSI/YS5zdHlsZS5jc3NUZXh0PWM6ZD09ImNsYXNzIj9hLmNsYXNzTmFtZT1jOmQ9PSJmb3IiP2EuaHRtbEZvcj1jOnVkLmhhc093blByb3BlcnR5KGQpP2Euc2V0QXR0cmlidXRlKHVkW2RdLGMpOmQubGFzdEluZGV4T2YoImFyaWEtIiwwKT09MHx8ZC5sYXN0SW5kZXhPZigiZGF0YS0iLDApPT0wP2Euc2V0QXR0cmlidXRlKGQsYyk6YVtkXT1jfSl9Owp1ZD17Y2VsbHBhZGRpbmc6ImNlbGxQYWRkaW5nIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNvbHNwYW46ImNvbFNwYW4iLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsaGVpZ2h0OiJoZWlnaHQiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixub25jZToibm9uY2UiLHJvbGU6InJvbGUiLHJvd3NwYW46InJvd1NwYW4iLHR5cGU6InR5cGUiLHVzZW1hcDoidXNlTWFwIix2YWxpZ246InZBbGlnbiIsd2lkdGg6IndpZHRoIn07Xy5pYj1mdW5jdGlvbihhKXthPWEuZG9jdW1lbnQ7YT1hLmNvbXBhdE1vZGU9PSJDU1MxQ29tcGF0Ij9hLmRvY3VtZW50RWxlbWVudDphLmJvZHk7cmV0dXJuIG5ldyBfLkNhKGEuY2xpZW50V2lkdGgsYS5jbGllbnRIZWlnaHQpfTtfLm1iPWZ1bmN0aW9uKGEpe3JldHVybiBhP2EuZGVmYXVsdFZpZXc6d2luZG93fTsKXy55ZD1mdW5jdGlvbihhLGIpe3ZhciBjPWJbMV0sZD1fLndkKGEsU3RyaW5nKGJbMF0pKTtjJiYodHlwZW9mIGM9PT0ic3RyaW5nIj9kLmNsYXNzTmFtZT1jOkFycmF5LmlzQXJyYXkoYyk/ZC5jbGFzc05hbWU9Yy5qb2luKCIgIik6dmQoZCxjKSk7Yi5sZW5ndGg+MiYmeGQoYSxkLGIsMik7cmV0dXJuIGR9Owp4ZD1mdW5jdGlvbihhLGIsYyxkKXtmdW5jdGlvbiBlKGgpe2gmJmIuYXBwZW5kQ2hpbGQodHlwZW9mIGg9PT0ic3RyaW5nIj9hLmNyZWF0ZVRleHROb2RlKGgpOmgpfWZvcig7ZDxjLmxlbmd0aDtkKyspe3ZhciBmPWNbZF07aWYoIV8ucWEoZil8fF8ueWEoZikmJmYubm9kZVR5cGU+MCllKGYpO2Vsc2V7YTp7aWYoZiYmdHlwZW9mIGYubGVuZ3RoPT0ibnVtYmVyIil7aWYoXy55YShmKSl7dmFyIGc9dHlwZW9mIGYuaXRlbT09ImZ1bmN0aW9uInx8dHlwZW9mIGYuaXRlbT09InN0cmluZyI7YnJlYWsgYX1pZih0eXBlb2YgZj09PSJmdW5jdGlvbiIpe2c9dHlwZW9mIGYuaXRlbT09ImZ1bmN0aW9uIjticmVhayBhfX1nPSExfV8udmMoZz9fLndhKGYpOmYsZSl9fX07Xy53ZD1mdW5jdGlvbihhLGIpe2I9U3RyaW5nKGIpO2EuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veGh0bWwreG1sIiYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KGIpfTsKXy56ZD1mdW5jdGlvbihhKXtmb3IodmFyIGI7Yj1hLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYil9O18uQWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEucGFyZW50Tm9kZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk6bnVsbH07Xy5CZD1mdW5jdGlvbihhLGIpe2lmKCFhfHwhYilyZXR1cm4hMTtpZihhLmNvbnRhaW5zJiZiLm5vZGVUeXBlPT0xKXJldHVybiBhPT1ifHxhLmNvbnRhaW5zKGIpO2lmKHR5cGVvZiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIT0idW5kZWZpbmVkIilyZXR1cm4gYT09Ynx8ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik7Zm9yKDtiJiZhIT1iOyliPWIucGFyZW50Tm9kZTtyZXR1cm4gYj09YX07Xy5zZD1mdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09OT9hOmEub3duZXJEb2N1bWVudHx8YS5kb2N1bWVudH07Cl8uQ2Q9ZnVuY3Rpb24oYSxiKXtpZigidGV4dENvbnRlbnQiaW4gYSlhLnRleHRDb250ZW50PWI7ZWxzZSBpZihhLm5vZGVUeXBlPT0zKWEuZGF0YT1TdHJpbmcoYik7ZWxzZSBpZihhLmZpcnN0Q2hpbGQmJmEuZmlyc3RDaGlsZC5ub2RlVHlwZT09Myl7Zm9yKDthLmxhc3RDaGlsZCE9YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEubGFzdENoaWxkKTthLmZpcnN0Q2hpbGQuZGF0YT1TdHJpbmcoYil9ZWxzZSBfLnpkKGEpLGEuYXBwZW5kQ2hpbGQoXy5zZChhKS5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoYikpKX07Xy5yZD1mdW5jdGlvbihhKXt0aGlzLmc9YXx8Xy52LmRvY3VtZW50fHxkb2N1bWVudH07Xy5tPV8ucmQucHJvdG90eXBlO18ubS5IPWZ1bmN0aW9uKGEpe3JldHVybiBfLnRkKHRoaXMuZyxhKX07Xy5tLmRqPV8ucmQucHJvdG90eXBlLkg7Xy5tLmdldEVsZW1lbnRzQnlUYWdOYW1lPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGJ8fHRoaXMuZykuZ2V0RWxlbWVudHNCeVRhZ05hbWUoU3RyaW5nKGEpKX07Cl8ubS5TPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy55ZCh0aGlzLmcsYXJndW1lbnRzKX07Xy5tLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ud2QodGhpcy5nLGEpfTtfLm0uY3JlYXRlVGV4dE5vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZy5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoYSkpfTtfLm0uYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24oYSxiKXthLmFwcGVuZENoaWxkKGIpfTtfLm0uYXBwZW5kPWZ1bmN0aW9uKGEsYil7eGQoXy5zZChhKSxhLGFyZ3VtZW50cywxKX07Xy5tLmNhbkhhdmVDaGlsZHJlbj1mdW5jdGlvbihhKXtpZihhLm5vZGVUeXBlIT0xKXJldHVybiExO3N3aXRjaChhLnRhZ05hbWUpe2Nhc2UgIkFQUExFVCI6Y2FzZSAiQVJFQSI6Y2FzZSAiQkFTRSI6Y2FzZSAiQlIiOmNhc2UgIkNPTCI6Y2FzZSAiQ09NTUFORCI6Y2FzZSAiRU1CRUQiOmNhc2UgIkZSQU1FIjpjYXNlICJIUiI6Y2FzZSAiSU1HIjpjYXNlICJJTlBVVCI6Y2FzZSAiSUZSQU1FIjpjYXNlICJJU0lOREVYIjpjYXNlICJLRVlHRU4iOmNhc2UgIkxJTksiOmNhc2UgIk5PRlJBTUVTIjpjYXNlICJOT1NDUklQVCI6Y2FzZSAiTUVUQSI6Y2FzZSAiT0JKRUNUIjpjYXNlICJQQVJBTSI6Y2FzZSAiU0NSSVBUIjpjYXNlICJTT1VSQ0UiOmNhc2UgIlNUWUxFIjpjYXNlICJUUkFDSyI6Y2FzZSAiV0JSIjpyZXR1cm4hMX1yZXR1cm4hMH07Cl8ubS5pZT1fLnpkO18ubS5yZW1vdmVOb2RlPV8uQWQ7Xy5tLmNvbnRhaW5zPV8uQmQ7Xy5tLlNiPV8uQ2Q7YmIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWR9O3ZhciBjYj1mdW5jdGlvbihhLGIpe3RoaXMudHlwZT1hIGluc3RhbmNlb2YgYmI/U3RyaW5nKGEpOmE7dGhpcy5jdXJyZW50VGFyZ2V0PXRoaXMudGFyZ2V0PWI7dGhpcy5kZWZhdWx0UHJldmVudGVkPXRoaXMuaD0hMX07Y2IucHJvdG90eXBlLnN0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbigpe3RoaXMuaD0hMH07Y2IucHJvdG90eXBlLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfTt2YXIgRGQ9ZnVuY3Rpb24oKXtpZighXy52LmFkZEV2ZW50TGlzdGVuZXJ8fCFPYmplY3QuZGVmaW5lUHJvcGVydHkpcmV0dXJuITE7dmFyIGE9ITEsYj1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXthPSEwfX0pO3RyeXt2YXIgYz1mdW5jdGlvbigpe307Xy52LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLGMsYik7Xy52LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLGMsYil9Y2F0Y2goZCl7fXJldHVybiBhfSgpO18uRyhfLmRiLGNiKTsKXy5kYi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMudHlwZT1hLnR5cGUsZD1hLmNoYW5nZWRUb3VjaGVzJiZhLmNoYW5nZWRUb3VjaGVzLmxlbmd0aD9hLmNoYW5nZWRUb3VjaGVzWzBdOm51bGw7dGhpcy50YXJnZXQ9YS50YXJnZXR8fGEuc3JjRWxlbWVudDt0aGlzLmN1cnJlbnRUYXJnZXQ9YjtiPWEucmVsYXRlZFRhcmdldDtifHwoYz09Im1vdXNlb3ZlciI/Yj1hLmZyb21FbGVtZW50OmM9PSJtb3VzZW91dCImJihiPWEudG9FbGVtZW50KSk7dGhpcy5yZWxhdGVkVGFyZ2V0PWI7ZD8odGhpcy5jbGllbnRYPWQuY2xpZW50WCE9PXZvaWQgMD9kLmNsaWVudFg6ZC5wYWdlWCx0aGlzLmNsaWVudFk9ZC5jbGllbnRZIT09dm9pZCAwP2QuY2xpZW50WTpkLnBhZ2VZLHRoaXMuc2NyZWVuWD1kLnNjcmVlblh8fDAsdGhpcy5zY3JlZW5ZPWQuc2NyZWVuWXx8MCk6KHRoaXMub2Zmc2V0WD1fLlZjfHxhLm9mZnNldFghPT12b2lkIDA/YS5vZmZzZXRYOmEubGF5ZXJYLAp0aGlzLm9mZnNldFk9Xy5WY3x8YS5vZmZzZXRZIT09dm9pZCAwP2Eub2Zmc2V0WTphLmxheWVyWSx0aGlzLmNsaWVudFg9YS5jbGllbnRYIT09dm9pZCAwP2EuY2xpZW50WDphLnBhZ2VYLHRoaXMuY2xpZW50WT1hLmNsaWVudFkhPT12b2lkIDA/YS5jbGllbnRZOmEucGFnZVksdGhpcy5zY3JlZW5YPWEuc2NyZWVuWHx8MCx0aGlzLnNjcmVlblk9YS5zY3JlZW5ZfHwwKTt0aGlzLmJ1dHRvbj1hLmJ1dHRvbjt0aGlzLmtleUNvZGU9YS5rZXlDb2RlfHwwO3RoaXMua2V5PWEua2V5fHwiIjt0aGlzLmNoYXJDb2RlPWEuY2hhckNvZGV8fChjPT0ia2V5cHJlc3MiP2Eua2V5Q29kZTowKTt0aGlzLmN0cmxLZXk9YS5jdHJsS2V5O3RoaXMuYWx0S2V5PWEuYWx0S2V5O3RoaXMuc2hpZnRLZXk9YS5zaGlmdEtleTt0aGlzLm1ldGFLZXk9YS5tZXRhS2V5O3RoaXMucG9pbnRlcklkPWEucG9pbnRlcklkfHwwO3RoaXMucG9pbnRlclR5cGU9YS5wb2ludGVyVHlwZTt0aGlzLnN0YXRlPWEuc3RhdGU7CnRoaXMudGltZVN0YW1wPWEudGltZVN0YW1wO3RoaXMuZz1hO2EuZGVmYXVsdFByZXZlbnRlZCYmXy5kYi5lYS5wcmV2ZW50RGVmYXVsdC5jYWxsKHRoaXMpfTtfLmRiLnByb3RvdHlwZS5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXtfLmRiLmVhLnN0b3BQcm9wYWdhdGlvbi5jYWxsKHRoaXMpO3RoaXMuZy5zdG9wUHJvcGFnYXRpb24/dGhpcy5nLnN0b3BQcm9wYWdhdGlvbigpOnRoaXMuZy5jYW5jZWxCdWJibGU9ITB9O18uZGIucHJvdG90eXBlLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7Xy5kYi5lYS5wcmV2ZW50RGVmYXVsdC5jYWxsKHRoaXMpO3ZhciBhPXRoaXMuZzthLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExfTt2YXIgRWQ9ImNsb3N1cmVfbGlzdGVuYWJsZV8iKyhNYXRoLnJhbmRvbSgpKjFFNnwwKSxGZD1mdW5jdGlvbihhKXtyZXR1cm4hKCFhfHwhYVtFZF0pfTt2YXIgZWI9MDt2YXIgR2Q9ZnVuY3Rpb24oYSl7YS5vYz0hMDthLmxpc3RlbmVyPW51bGw7YS5wcm94eT1udWxsO2Euc3JjPW51bGw7YS5WYz1udWxsfTtnYi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YS50b1N0cmluZygpO2E9dGhpcy5nW2ZdO2F8fChhPXRoaXMuZ1tmXT1bXSx0aGlzLmgrKyk7dmFyIGc9SGQoYSxiLGQsZSk7Zz4tMT8oYj1hW2ddLGN8fChiLkhjPSExKSk6KGI9bmV3IGZiKGIsdGhpcy5zcmMsZiwhIWQsZSksYi5IYz1jLGEucHVzaChiKSk7cmV0dXJuIGJ9O2diLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnRvU3RyaW5nKCk7aWYoIShhIGluIHRoaXMuZykpcmV0dXJuITE7dmFyIGU9dGhpcy5nW2FdO2I9SGQoZSxiLGMsZCk7cmV0dXJuIGI+LTE/KEdkKGVbYl0pLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChlLGIsMSksZS5sZW5ndGg9PTAmJihkZWxldGUgdGhpcy5nW2FdLHRoaXMuaC0tKSwhMCk6ITF9Owp2YXIgSWQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnR5cGU7YyBpbiBhLmcmJl8udmEoYS5nW2NdLGIpJiYoR2QoYiksYS5nW2NdLmxlbmd0aD09MCYmKGRlbGV0ZSBhLmdbY10sYS5oLS0pKX07Z2IucHJvdG90eXBlLmpjPWZ1bmN0aW9uKGEsYixjLGQpe2E9dGhpcy5nW2EudG9TdHJpbmcoKV07dmFyIGU9LTE7YSYmKGU9SGQoYSxiLGMsZCkpO3JldHVybiBlPi0xP2FbZV06bnVsbH07Z2IucHJvdG90eXBlLmhhc0xpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dmFyIGM9YSE9PXZvaWQgMCxkPWM/YS50b1N0cmluZygpOiIiLGU9YiE9PXZvaWQgMDtyZXR1cm4gRGEodGhpcy5nLGZ1bmN0aW9uKGYpe2Zvcih2YXIgZz0wO2c8Zi5sZW5ndGg7KytnKWlmKCEoYyYmZltnXS50eXBlIT1kfHxlJiZmW2ddLmNhcHR1cmUhPWIpKXJldHVybiEwO3JldHVybiExfSl9Owp2YXIgSGQ9ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDsrK2Upe3ZhciBmPWFbZV07aWYoIWYub2MmJmYubGlzdGVuZXI9PWImJmYuY2FwdHVyZT09ISFjJiZmLlZjPT1kKXJldHVybiBlfXJldHVybi0xfTt2YXIgSmQsS2QsTWQsUGQsUmQsU2QsVGQsUWQsV2QsT2Q7SmQ9ImNsb3N1cmVfbG1fIisoTWF0aC5yYW5kb20oKSoxRTZ8MCk7S2Q9e307TWQ9MDtfLng9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihkJiZkLm9uY2UpcmV0dXJuIF8uTmQoYSxiLGMsZCxlKTtpZihBcnJheS5pc0FycmF5KGIpKXtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKylfLngoYSxiW2ZdLGMsZCxlKTtyZXR1cm4gbnVsbH1jPU9kKGMpO3JldHVybiBGZChhKT9hLk4oYixjLF8ueWEoZCk/ISFkLmNhcHR1cmU6ISFkLGUpOlBkKGEsYixjLCExLGQsZSl9OwpQZD1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoIWIpdGhyb3cgRXJyb3IoInYiKTt2YXIgZz1fLnlhKGUpPyEhZS5jYXB0dXJlOiEhZSxoPVFkKGEpO2h8fChhW0pkXT1oPW5ldyBnYihhKSk7Yz1oLmFkZChiLGMsZCxnLGYpO2lmKGMucHJveHkpcmV0dXJuIGM7ZD1SZCgpO2MucHJveHk9ZDtkLnNyYz1hO2QubGlzdGVuZXI9YztpZihhLmFkZEV2ZW50TGlzdGVuZXIpRGR8fChlPWcpLGU9PT12b2lkIDAmJihlPSExKSxhLmFkZEV2ZW50TGlzdGVuZXIoYi50b1N0cmluZygpLGQsZSk7ZWxzZSBpZihhLmF0dGFjaEV2ZW50KWEuYXR0YWNoRXZlbnQoU2QoYi50b1N0cmluZygpKSxkKTtlbHNlIGlmKGEuYWRkTGlzdGVuZXImJmEucmVtb3ZlTGlzdGVuZXIpYS5hZGRMaXN0ZW5lcihkKTtlbHNlIHRocm93IEVycm9yKCJ3Iik7TWQrKztyZXR1cm4gY307UmQ9ZnVuY3Rpb24oKXt2YXIgYT1UZCxiPWZ1bmN0aW9uKGMpe3JldHVybiBhLmNhbGwoYi5zcmMsYi5saXN0ZW5lcixjKX07cmV0dXJuIGJ9OwpfLk5kPWZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspXy5OZChhLGJbZl0sYyxkLGUpO3JldHVybiBudWxsfWM9T2QoYyk7cmV0dXJuIEZkKGEpP2EuYWUoYixjLF8ueWEoZCk/ISFkLmNhcHR1cmU6ISFkLGUpOlBkKGEsYixjLCEwLGQsZSl9O18uVWQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihBcnJheS5pc0FycmF5KGIpKWZvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKV8uVWQoYSxiW2ZdLGMsZCxlKTtlbHNlIGQ9Xy55YShkKT8hIWQuY2FwdHVyZTohIWQsYz1PZChjKSxGZChhKT9hLnljKGIsYyxkLGUpOmEmJihhPVFkKGEpKSYmKGI9YS5qYyhiLGMsZCxlKSkmJl8uVmQoYil9OwpfLlZkPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT09Im51bWJlciImJmEmJiFhLm9jKXt2YXIgYj1hLnNyYztpZihGZChiKSlJZChiLlFhLGEpO2Vsc2V7dmFyIGM9YS50eXBlLGQ9YS5wcm94eTtiLnJlbW92ZUV2ZW50TGlzdGVuZXI/Yi5yZW1vdmVFdmVudExpc3RlbmVyKGMsZCxhLmNhcHR1cmUpOmIuZGV0YWNoRXZlbnQ/Yi5kZXRhY2hFdmVudChTZChjKSxkKTpiLmFkZExpc3RlbmVyJiZiLnJlbW92ZUxpc3RlbmVyJiZiLnJlbW92ZUxpc3RlbmVyKGQpO01kLS07KGM9UWQoYikpPyhJZChjLGEpLGMuaD09MCYmKGMuc3JjPW51bGwsYltKZF09bnVsbCkpOkdkKGEpfX19O1NkPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluIEtkP0tkW2FdOktkW2FdPSJvbiIrYX07VGQ9ZnVuY3Rpb24oYSxiKXtpZihhLm9jKWE9ITA7ZWxzZXtiPW5ldyBfLmRiKGIsdGhpcyk7dmFyIGM9YS5saXN0ZW5lcixkPWEuVmN8fGEuc3JjO2EuSGMmJl8uVmQoYSk7YT1jLmNhbGwoZCxiKX1yZXR1cm4gYX07ClFkPWZ1bmN0aW9uKGEpe2E9YVtKZF07cmV0dXJuIGEgaW5zdGFuY2VvZiBnYj9hOm51bGx9O1dkPSJfX2Nsb3N1cmVfZXZlbnRzX2ZuXyIrKE1hdGgucmFuZG9tKCkqMUU5Pj4+MCk7T2Q9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PT0iZnVuY3Rpb24iKXJldHVybiBhO2FbV2RdfHwoYVtXZF09ZnVuY3Rpb24oYil7cmV0dXJuIGEuaGFuZGxlRXZlbnQoYil9KTtyZXR1cm4gYVtXZF19O18uRyhfLmhiLF8udSk7Xy5oYi5wcm90b3R5cGVbRWRdPSEwO18ubT1fLmhiLnByb3RvdHlwZTtfLm0ubmQ9ZnVuY3Rpb24oYSl7dGhpcy5mZD1hfTtfLm0uYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhLGIsYyxkKXtfLngodGhpcyxhLGIsYyxkKX07Xy5tLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5VZCh0aGlzLGEsYixjLGQpfTsKXy5tLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz10aGlzLmZkO2lmKGMpZm9yKGI9W107YztjPWMuZmQpYi5wdXNoKGMpO2M9dGhpcy5XZzt2YXIgZD1hLnR5cGV8fGE7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilhPW5ldyBjYihhLGMpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGNiKWEudGFyZ2V0PWEudGFyZ2V0fHxjO2Vsc2V7dmFyIGU9YTthPW5ldyBjYihkLGMpO0ZhKGEsZSl9ZT0hMDt2YXIgZjtpZihiKWZvcihmPWIubGVuZ3RoLTE7IWEuaCYmZj49MDtmLS0pe3ZhciBnPWEuY3VycmVudFRhcmdldD1iW2ZdO2U9WGQoZyxkLCEwLGEpJiZlfWEuaHx8KGc9YS5jdXJyZW50VGFyZ2V0PWMsZT1YZChnLGQsITAsYSkmJmUsYS5ofHwoZT1YZChnLGQsITEsYSkmJmUpKTtpZihiKWZvcihmPTA7IWEuaCYmZjxiLmxlbmd0aDtmKyspZz1hLmN1cnJlbnRUYXJnZXQ9YltmXSxlPVhkKGcsZCwhMSxhKSYmZTtyZXR1cm4gZX07Cl8ubS5NPWZ1bmN0aW9uKCl7Xy5oYi5lYS5NLmNhbGwodGhpcyk7aWYodGhpcy5RYSl7dmFyIGE9dGhpcy5RYSxiPTAsYztmb3IoYyBpbiBhLmcpe2Zvcih2YXIgZD1hLmdbY10sZT0wO2U8ZC5sZW5ndGg7ZSsrKSsrYixHZChkW2VdKTtkZWxldGUgYS5nW2NdO2EuaC0tfX10aGlzLmZkPW51bGx9O18ubS5OPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLlFhLmFkZChTdHJpbmcoYSksYiwhMSxjLGQpfTtfLm0uYWU9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuUWEuYWRkKFN0cmluZyhhKSxiLCEwLGMsZCl9O18ubS55Yz1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5RYS5yZW1vdmUoU3RyaW5nKGEpLGIsYyxkKX07CnZhciBYZD1mdW5jdGlvbihhLGIsYyxkKXtiPWEuUWEuZ1tTdHJpbmcoYildO2lmKCFiKXJldHVybiEwO2I9Yi5jb25jYXQoKTtmb3IodmFyIGU9ITAsZj0wO2Y8Yi5sZW5ndGg7KytmKXt2YXIgZz1iW2ZdO2lmKGcmJiFnLm9jJiZnLmNhcHR1cmU9PWMpe3ZhciBoPWcubGlzdGVuZXIsaz1nLlZjfHxnLnNyYztnLkhjJiZJZChhLlFhLGcpO2U9aC5jYWxsKGssZCkhPT0hMSYmZX19cmV0dXJuIGUmJiFkLmRlZmF1bHRQcmV2ZW50ZWR9O18uaGIucHJvdG90eXBlLmpjPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLlFhLmpjKFN0cmluZyhhKSxiLGMsZCl9O18uaGIucHJvdG90eXBlLmhhc0xpc3RlbmVyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuUWEuaGFzTGlzdGVuZXIoYSE9PXZvaWQgMD9TdHJpbmcoYSk6dm9pZCAwLGIpfTtfLkcoamIsXy5oYik7amIucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtqYi5lYS5NLmNhbGwodGhpcyk7dGhpcy5oJiYoXy5WZCh0aGlzLmgpLHRoaXMuaD1udWxsKTt0aGlzLmo9dGhpcy5nPW51bGx9O2piLnByb3RvdHlwZS5sPWZ1bmN0aW9uKCl7dmFyIGE9Xy5pYih0aGlzLmd8fHdpbmRvdyk7Xy55YyhhLHRoaXMuail8fCh0aGlzLmo9YSx0aGlzLmRpc3BhdGNoRXZlbnQoInJlc2l6ZSIpKX07Xy5HKGtiLF8uaGIpO2tiLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5nJiYodHlwZW9mIHRoaXMuZy5hZGRFdmVudExpc3RlbmVyPT09ImZ1bmN0aW9uIj8odGhpcy5nLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy5qKSx0aGlzLmw9ZnVuY3Rpb24oKXthLmcucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixhLmopfSk6KHRoaXMuZy5hZGRMaXN0ZW5lcih0aGlzLmopLHRoaXMubD1mdW5jdGlvbigpe2EuZy5yZW1vdmVMaXN0ZW5lcihhLmopfSkpfTtrYi5wcm90b3R5cGUuQT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaC5kZXZpY2VQaXhlbFJhdGlvPj0xLjU/MjoxO3RoaXMubyE9YSYmKHRoaXMubz1hLHRoaXMuZGlzcGF0Y2hFdmVudCgiYSIpKX07a2IucHJvdG90eXBlLk09ZnVuY3Rpb24oKXt0aGlzLmwmJnRoaXMubCgpO2tiLmVhLk0uY2FsbCh0aGlzKX07Xy5HKG5iLF8udSk7bmIucHJvdG90eXBlLk09ZnVuY3Rpb24oKXt0aGlzLmg9dGhpcy5sPW51bGw7dGhpcy5nJiYodGhpcy5nLmRpc3Bvc2UoKSx0aGlzLmc9bnVsbCk7Xy5wYSh0aGlzLmopO3RoaXMuaj1udWxsfTtfLm9hKHVjLG5iKTt2YXIgb2I9bmV3IFVpbnQ4QXJyYXkoMTIzKSxZZD0hMTt2YXIgWmQ9W107bmM9bmN8fHt9O3ZhciAkZD1mdW5jdGlvbigpe18udS5jYWxsKHRoaXMpfTtfLkcoJGQsXy51KTskZC5wcm90b3R5cGUuaW5pdGlhbGl6ZT1mdW5jdGlvbigpe307c2IucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oYSl7dGhpcy5nJiYodGhpcy5nLmNhbGwodGhpcy5ofHxudWxsLGEpLHRoaXMuZz10aGlzLmg9bnVsbCl9O3NiLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbigpe3RoaXMuaD10aGlzLmc9bnVsbH07bmMuR2U9c2I7Xy5HKHViLF8udSk7dWIucHJvdG90eXBlLkM9JGQ7dWIucHJvdG90eXBlLmc9bnVsbDt1Yi5wcm90b3R5cGUuUmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5BfTt2YXIgYWU9ZnVuY3Rpb24oYSxiLGMpe2Euanx8KGEuaj1bXSk7YS5qLnB1c2gobmV3IG5jLkdlKGIsYykpfSxiZT1mdW5jdGlvbihhLGIpe2EuaHx8KGEuaD1bXSk7YS5oLnB1c2gobmV3IG5jLkdlKGIsdm9pZCAwKSl9O3ViLnByb3RvdHlwZS5tZD1mdW5jdGlvbigpe3RoaXMuZz1uZXcgJGR9O3ViLnByb3RvdHlwZS5vbkxvYWQ9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHRoaXMuQztiLmluaXRpYWxpemUoYSgpKTt0aGlzLmc9YjtpZih0aGlzLm8mJihiPWNlKHRoaXMubyxhKCkpKSlyZXR1cm4gYjtpZih0aGlzLmomJihhPWNlKHRoaXMuaixhKCkpKSlyZXR1cm4gYTt0aGlzLmgmJih0aGlzLmgubGVuZ3RoPTApO3JldHVybiBudWxsfTsKdWIucHJvdG90eXBlLmZlPWZ1bmN0aW9uKGEpe3RoaXMuaCYmKGE9Y2UodGhpcy5oLGEpKSYmXy5yYihFcnJvcigieWAiK2EpKTt0aGlzLm8mJih0aGlzLm8ubGVuZ3RoPTApO3RoaXMuaiYmKHRoaXMuai5sZW5ndGg9MCl9O3ZhciBjZT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxhLmxlbmd0aDtkKyspdHJ5e2FbZF0uZXhlY3V0ZShiKX1jYXRjaChlKXtfLnJiKGUpLGMucHVzaChlKX1hLmxlbmd0aD0wO3JldHVybiBjLmxlbmd0aD9jOm51bGx9O3ViLnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7dWIuZWEuTS5jYWxsKHRoaXMpO18ucGEodGhpcy5nKX07bmMuRmU9dWI7dmFyIGRlPXtFUlJPUjoiZXJyb3IiLElETEU6ImlkbGUiLGxnOiJhY3RpdmUiLElnOiJ1c2VySWRsZSIsSGc6InVzZXJBY3RpdmUifTtfLm09dmIucHJvdG90eXBlO18ubS5YZj1mdW5jdGlvbigpe307Xy5tLnFlPWZ1bmN0aW9uKCl7fTtfLm0uamU9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiQSIpO307Xy5tLmtmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucWF9O18ubS5zZT1mdW5jdGlvbihhKXt0aGlzLnFhPWF9O18ubS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiExfTtfLm0uRGY9ZnVuY3Rpb24oKXtyZXR1cm4hMX07dmFyIGVlPXR5cGVvZiBBc3luY0NvbnRleHQhPT0idW5kZWZpbmVkIiYmdHlwZW9mIEFzeW5jQ29udGV4dC5TbmFwc2hvdD09PSJmdW5jdGlvbiI/ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJkFzeW5jQ29udGV4dC5TbmFwc2hvdC53cmFwKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gYX07dmFyIGZlPWZ1bmN0aW9uKGEsYil7dGhpcy5sPWE7dGhpcy5qPWI7dGhpcy5oPTA7dGhpcy5nPW51bGx9O2ZlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmg+MCl7dGhpcy5oLS07dmFyIGE9dGhpcy5nO3RoaXMuZz1hLm5leHQ7YS5uZXh0PW51bGx9ZWxzZSBhPXRoaXMubCgpO3JldHVybiBhfTt2YXIgeGI9ZnVuY3Rpb24oYSxiKXthLmooYik7YS5oPDEwMCYmKGEuaCsrLGIubmV4dD1hLmcsYS5nPWIpfTt2YXIgZ2U9ZnVuY3Rpb24oKXt0aGlzLmg9dGhpcy5nPW51bGx9O2dlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz15Yi5nZXQoKTtjLnNldChhLGIpO3RoaXMuaD90aGlzLmgubmV4dD1jOnRoaXMuZz1jO3RoaXMuaD1jfTtnZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbDt0aGlzLmcmJihhPXRoaXMuZyx0aGlzLmc9dGhpcy5nLm5leHQsdGhpcy5nfHwodGhpcy5oPW51bGwpLGEubmV4dD1udWxsKTtyZXR1cm4gYX07dmFyIHliPW5ldyBmZShmdW5jdGlvbigpe3JldHVybiBuZXcgaGV9LGZ1bmN0aW9uKGEpe3JldHVybiBhLnJlc2V0KCl9KSxoZT1mdW5jdGlvbigpe3RoaXMubmV4dD10aGlzLnNjb3BlPXRoaXMuZz1udWxsfTtoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5nPWE7dGhpcy5zY29wZT1iO3RoaXMubmV4dD1udWxsfTsKaGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5uZXh0PXRoaXMuc2NvcGU9dGhpcy5nPW51bGx9O3ZhciBpZSx6Yj0hMSx3Yj1uZXcgZ2Usa2U9ZnVuY3Rpb24oYSxiKXtpZXx8amUoKTt6Ynx8KGllKCksemI9ITApO3diLmFkZChhLGIpfSxqZT1mdW5jdGlvbigpe3ZhciBhPVByb21pc2UucmVzb2x2ZSh2b2lkIDApO2llPWZ1bmN0aW9uKCl7YS50aGVuKEFiKX19O18ubGU9ZnVuY3Rpb24oKXt9O3ZhciBtZT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4hMTt0cnl7cmV0dXJuISFhLiRnb29nX1RoZW5hYmxlfWNhdGNoKGIpe3JldHVybiExfX07dmFyIHBlLEFlLHllLHdlO18ub2U9ZnVuY3Rpb24oYSl7dGhpcy5nPTA7dGhpcy5CPXZvaWQgMDt0aGlzLmw9dGhpcy5oPXRoaXMuaj1udWxsO3RoaXMubz10aGlzLkE9ITE7aWYoYSE9Xy5sZSl0cnl7dmFyIGI9dGhpczthLmNhbGwodm9pZCAwLGZ1bmN0aW9uKGMpe18ubmUoYiwyLGMpfSxmdW5jdGlvbihjKXtfLm5lKGIsMyxjKX0pfWNhdGNoKGMpe18ubmUodGhpcywzLGMpfX07cGU9ZnVuY3Rpb24oKXt0aGlzLm5leHQ9dGhpcy5qPXRoaXMuaD10aGlzLmw9dGhpcy5nPW51bGw7dGhpcy5vPSExfTtwZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmo9dGhpcy5oPXRoaXMubD10aGlzLmc9bnVsbDt0aGlzLm89ITF9O3ZhciBxZT1uZXcgZmUoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHBlfSxmdW5jdGlvbihhKXthLnJlc2V0KCl9KSxyZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9cWUuZ2V0KCk7ZC5sPWE7ZC5oPWI7ZC5qPWM7cmV0dXJuIGR9OwpfLm9lLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gc2UodGhpcyxlZSh0eXBlb2YgYT09PSJmdW5jdGlvbiI/YTpudWxsKSxlZSh0eXBlb2YgYj09PSJmdW5jdGlvbiI/YjpudWxsKSxjKX07Xy5vZS5wcm90b3R5cGUuJGdvb2dfVGhlbmFibGU9ITA7Xy5vZS5wcm90b3R5cGUuQz1mdW5jdGlvbihhLGIpe3JldHVybiBzZSh0aGlzLG51bGwsZWUoYSksYil9O18ub2UucHJvdG90eXBlLmNhdGNoPV8ub2UucHJvdG90eXBlLkM7Xy5vZS5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKGEpe2lmKHRoaXMuZz09MCl7dmFyIGI9bmV3IHVlKGEpO2tlKGZ1bmN0aW9uKCl7dmUodGhpcyxiKX0sdGhpcyl9fTsKdmFyIHZlPWZ1bmN0aW9uKGEsYil7aWYoYS5nPT0wKWlmKGEuail7dmFyIGM9YS5qO2lmKGMuaCl7Zm9yKHZhciBkPTAsZT1udWxsLGY9bnVsbCxnPWMuaDtnJiYoZy5vfHwoZCsrLGcuZz09YSYmKGU9ZyksIShlJiZkPjEpKSk7Zz1nLm5leHQpZXx8KGY9Zyk7ZSYmKGMuZz09MCYmZD09MT92ZShjLGIpOihmPyhkPWYsZC5uZXh0PT1jLmwmJihjLmw9ZCksZC5uZXh0PWQubmV4dC5uZXh0KTp3ZShjKSx4ZShjLGUsMyxiKSkpfWEuaj1udWxsfWVsc2UgXy5uZShhLDMsYil9LHplPWZ1bmN0aW9uKGEsYil7YS5ofHxhLmchPTImJmEuZyE9M3x8eWUoYSk7YS5sP2EubC5uZXh0PWI6YS5oPWI7YS5sPWJ9LHNlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXJlKG51bGwsbnVsbCxudWxsKTtlLmc9bmV3IF8ub2UoZnVuY3Rpb24oZixnKXtlLmw9Yj9mdW5jdGlvbihoKXt0cnl7dmFyIGs9Yi5jYWxsKGQsaCk7ZihrKX1jYXRjaChsKXtnKGwpfX06ZjtlLmg9Yz9mdW5jdGlvbihoKXt0cnl7dmFyIGs9CmMuY2FsbChkLGgpO2s9PT12b2lkIDAmJmggaW5zdGFuY2VvZiB1ZT9nKGgpOmYoayl9Y2F0Y2gobCl7ZyhsKX19Omd9KTtlLmcuaj1hO3plKGEsZSk7cmV0dXJuIGUuZ307Xy5vZS5wcm90b3R5cGUuRj1mdW5jdGlvbihhKXt0aGlzLmc9MDtfLm5lKHRoaXMsMixhKX07Xy5vZS5wcm90b3R5cGUuRz1mdW5jdGlvbihhKXt0aGlzLmc9MDtfLm5lKHRoaXMsMyxhKX07Cl8ubmU9ZnVuY3Rpb24oYSxiLGMpe2lmKGEuZz09MCl7YT09PWMmJihiPTMsYz1uZXcgVHlwZUVycm9yKCJCIikpO2EuZz0xO2E6e3ZhciBkPWMsZT1hLkYsZj1hLkc7aWYoZCBpbnN0YW5jZW9mIF8ub2Upe3plKGQscmUoZXx8Xy5sZSxmfHxudWxsLGEpKTt2YXIgZz0hMH1lbHNlIGlmKG1lKGQpKWQudGhlbihlLGYsYSksZz0hMDtlbHNle2lmKF8ueWEoZCkpdHJ5e3ZhciBoPWQudGhlbjtpZih0eXBlb2YgaD09PSJmdW5jdGlvbiIpe0FlKGQsaCxlLGYsYSk7Zz0hMDticmVhayBhfX1jYXRjaChrKXtmLmNhbGwoYSxrKTtnPSEwO2JyZWFrIGF9Zz0hMX19Z3x8KGEuQj1jLGEuZz1iLGEuaj1udWxsLHllKGEpLGIhPTN8fGMgaW5zdGFuY2VvZiB1ZXx8QmUoYSxjKSl9fTtBZT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSExLGc9ZnVuY3Rpb24oayl7Znx8KGY9ITAsYy5jYWxsKGUsaykpfSxoPWZ1bmN0aW9uKGspe2Z8fChmPSEwLGQuY2FsbChlLGspKX07dHJ5e2IuY2FsbChhLGcsaCl9Y2F0Y2goayl7aChrKX19Owp5ZT1mdW5jdGlvbihhKXthLkF8fChhLkE9ITAsa2UoYS5ELGEpKX07d2U9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbDthLmgmJihiPWEuaCxhLmg9Yi5uZXh0LGIubmV4dD1udWxsKTthLmh8fChhLmw9bnVsbCk7cmV0dXJuIGJ9O18ub2UucHJvdG90eXBlLkQ9ZnVuY3Rpb24oKXtmb3IodmFyIGE7YT13ZSh0aGlzKTspeGUodGhpcyxhLHRoaXMuZyx0aGlzLkIpO3RoaXMuQT0hMX07CnZhciB4ZT1mdW5jdGlvbihhLGIsYyxkKXtpZihjPT0zJiZiLmgmJiFiLm8pZm9yKDthJiZhLm87YT1hLmopYS5vPSExO2lmKGIuZyliLmcuaj1udWxsLENlKGIsYyxkKTtlbHNlIHRyeXtiLm8/Yi5sLmNhbGwoYi5qKTpDZShiLGMsZCl9Y2F0Y2goZSl7RmUuY2FsbChudWxsLGUpfXhiKHFlLGIpfSxDZT1mdW5jdGlvbihhLGIsYyl7Yj09Mj9hLmwuY2FsbChhLmosYyk6YS5oJiZhLmguY2FsbChhLmosYyl9LEJlPWZ1bmN0aW9uKGEsYil7YS5vPSEwO2tlKGZ1bmN0aW9uKCl7YS5vJiZGZS5jYWxsKG51bGwsYil9KX0sRmU9Xy5yYix1ZT1mdW5jdGlvbihhKXthYS5jYWxsKHRoaXMsYSl9O18uRyh1ZSxhYSk7dWUucHJvdG90eXBlLm5hbWU9ImNhbmNlbCI7QmIucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihhKXtpZih0aGlzLmgpdGhpcy5sIGluc3RhbmNlb2YgQmImJnRoaXMubC5jYW5jZWwoKTtlbHNle2lmKHRoaXMuail7dmFyIGI9dGhpcy5qO2RlbGV0ZSB0aGlzLmo7YT9iLmNhbmNlbChhKTooYi5BLS0sYi5BPD0wJiZiLmNhbmNlbCgpKX10aGlzLkc9ITA7dGhpcy5ofHx0aGlzLkYobmV3IEdlKHRoaXMpKX19O0JiLnByb3RvdHlwZS5JPWZ1bmN0aW9uKGEsYil7dGhpcy5EPSExO0hlKHRoaXMsYSxiKX07dmFyIEhlPWZ1bmN0aW9uKGEsYixjKXthLmg9ITA7YS5sPWM7YS5vPSFiO0llKGEpfSxLZT1mdW5jdGlvbihhKXtpZihhLmgpe2lmKCFhLkcpdGhyb3cgbmV3IEplKGEpO2EuRz0hMX19O0JiLnByb3RvdHlwZS5nPWZ1bmN0aW9uKGEpe0tlKHRoaXMpO0hlKHRoaXMsITAsYSl9O0JiLnByb3RvdHlwZS5GPWZ1bmN0aW9uKGEpe0tlKHRoaXMpO0hlKHRoaXMsITEsYSl9Owp2YXIgTWU9ZnVuY3Rpb24oYSxiLGMpe0xlKGEsYixudWxsLGMpfSxOZT1mdW5jdGlvbihhLGIsYyl7TGUoYSxudWxsLGIsYyl9LExlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuaDtlfHwoYj09PWM/Yj1jPWVlKGIpOihiPWVlKGIpLGM9ZWUoYykpKTthLkIucHVzaChbYixjLGRdKTtlJiZJZShhKX07QmIucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1uZXcgXy5vZShmdW5jdGlvbihnLGgpe2U9ZztkPWh9KTtMZSh0aGlzLGUsZnVuY3Rpb24oZyl7ZyBpbnN0YW5jZW9mIEdlP2YuY2FuY2VsKCk6ZChnKTtyZXR1cm4gT2V9LHRoaXMpO3JldHVybiBmLnRoZW4oYSxiLGMpfTtCYi5wcm90b3R5cGUuJGdvb2dfVGhlbmFibGU9ITA7dmFyIFBlPWZ1bmN0aW9uKGEsYil7YiBpbnN0YW5jZW9mIEJiP01lKGEsKDAsXy55KShiLkssYikpOk1lKGEsZnVuY3Rpb24oKXtyZXR1cm4gYn0pfTsKQmIucHJvdG90eXBlLks9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEJiO0xlKHRoaXMsYi5nLGIuRixiKTthJiYoYi5qPXRoaXMsdGhpcy5BKyspO3JldHVybiBifTsKdmFyIFFlPWZ1bmN0aW9uKGEpe3JldHVybiBfLnhjKGEuQixmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGJbMV09PT0iZnVuY3Rpb24ifSl9LE9lPXt9LEllPWZ1bmN0aW9uKGEpe2lmKGEuQyYmYS5oJiZRZShhKSl7dmFyIGI9YS5DLGM9UmVbYl07YyYmKF8udi5jbGVhclRpbWVvdXQoYy5nKSxkZWxldGUgUmVbYl0pO2EuQz0wfWEuaiYmKGEuai5BLS0sZGVsZXRlIGEuaik7Yj1hLmw7Zm9yKHZhciBkPWM9ITE7YS5CLmxlbmd0aCYmIWEuRDspe3ZhciBlPWEuQi5zaGlmdCgpLGY9ZVswXSxnPWVbMV07ZT1lWzJdO2lmKGY9YS5vP2c6Zil0cnl7dmFyIGg9Zi5jYWxsKGV8fG51bGwsYik7aD09PU9lJiYoaD12b2lkIDApO2ghPT12b2lkIDAmJihhLm89YS5vJiYoaD09Ynx8aCBpbnN0YW5jZW9mIEVycm9yKSxhLmw9Yj1oKTtpZihtZShiKXx8dHlwZW9mIF8udi5Qcm9taXNlPT09ImZ1bmN0aW9uIiYmYiBpbnN0YW5jZW9mIF8udi5Qcm9taXNlKWQ9ITAsYS5EPSEwfWNhdGNoKGspe2I9CmssYS5vPSEwLFFlKGEpfHwoYz0hMCl9fWEubD1iO2QmJihoPSgwLF8ueSkoYS5JLGEsITApLGQ9KDAsXy55KShhLkksYSwhMSksYiBpbnN0YW5jZW9mIEJiPyhMZShiLGgsZCksYi5XPSEwKTpiLnRoZW4oaCxkKSk7YyYmKGI9bmV3IFNlKGIpLFJlW2IuZ109YixhLkM9Yi5nKX0sSmU9ZnVuY3Rpb24oKXthYS5jYWxsKHRoaXMpfTtfLkcoSmUsYWEpO0plLnByb3RvdHlwZS5tZXNzYWdlPSJEZWZlcnJlZCBoYXMgYWxyZWFkeSBmaXJlZCI7SmUucHJvdG90eXBlLm5hbWU9IkFscmVhZHlDYWxsZWRFcnJvciI7dmFyIEdlPWZ1bmN0aW9uKCl7YWEuY2FsbCh0aGlzKX07Xy5HKEdlLGFhKTtHZS5wcm90b3R5cGUubWVzc2FnZT0iRGVmZXJyZWQgd2FzIGNhbmNlbGVkIjtHZS5wcm90b3R5cGUubmFtZT0iQ2FuY2VsZWRFcnJvciI7dmFyIFNlPWZ1bmN0aW9uKGEpe3RoaXMuZz1fLnYuc2V0VGltZW91dCgoMCxfLnkpKHRoaXMudGhyb3dFcnJvcix0aGlzKSwwKTt0aGlzLmg9YX07ClNlLnByb3RvdHlwZS50aHJvd0Vycm9yPWZ1bmN0aW9uKCl7ZGVsZXRlIFJlW3RoaXMuZ107dGhyb3cgdGhpcy5oO307dmFyIFJlPXt9O3ZhciBUZT1mdW5jdGlvbihhLGIsYyxkLGUpe2M9RXJyb3IuY2FsbCh0aGlzKTt0aGlzLm1lc3NhZ2U9Yy5tZXNzYWdlOyJzdGFjayJpbiBjJiYodGhpcy5zdGFjaz1jLnN0YWNrKTt0aGlzLm5hbWU9Ik1vZHVsZUxvYWRGYWlsdXJlIjt0aGlzLnR5cGU9YTt0aGlzLnN0YXR1cz1iO3RoaXMudXJsPWQ7dGhpcy5jYXVzZT1lO3RoaXMubWVzc2FnZT10aGlzLnRvU3RyaW5nKCl9O18uQihUZSxFcnJvcik7VGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFVlKHRoaXMpKyIgKCIrKHRoaXMuc3RhdHVzIT12b2lkIDA/dGhpcy5zdGF0dXM6Ij8iKSsiKSJ9Owp2YXIgVWU9ZnVuY3Rpb24oYSl7c3dpdGNoKGEudHlwZSl7Y2FzZSBUZS5nLkplOnJldHVybiJVbmF1dGhvcml6ZWQiO2Nhc2UgVGUuZy5CZTpyZXR1cm4iQ29uc2VjdXRpdmUgbG9hZCBmYWlsdXJlcyI7Y2FzZSBUZS5nLlRJTUVPVVQ6cmV0dXJuIlRpbWVkIG91dCI7Y2FzZSBUZS5nLkhlOnJldHVybiJPdXQgb2YgZGF0ZSBtb2R1bGUgaWQiO2Nhc2UgVGUuZy50ZDpyZXR1cm4iSW5pdCBlcnJvciI7ZGVmYXVsdDpyZXR1cm4iVW5rbm93biBmYWlsdXJlIHR5cGUgIithLnR5cGV9fTtuYy5GYT1UZTtuYy5GYS5nPXtKZTowLEJlOjEsVElNRU9VVDoyLEhlOjMsdGQ6NH07dmFyIFZlPWZ1bmN0aW9uKCl7dmIuY2FsbCh0aGlzKTt0aGlzLkk9bnVsbDt0aGlzLmc9bmV3IE1hcDt0aGlzLm89bmV3IFNldDt0aGlzLkE9W107dGhpcy5DPW5ldyBTZXQ7dGhpcy5qPVtdO3RoaXMuQj1uZXcgU2V0O3RoaXMuaD1OYz9uZXcgTWFwOnt9O3RoaXMuSz1uZXcgTWFwO3RoaXMubD10aGlzLkQ9bmV3IG5jLkZlKFtdLCIiKTt0aGlzLkw9bnVsbDt0aGlzLkY9bmV3IEJiO3RoaXMuUj10aGlzLlQ9dGhpcy5QPXRoaXMuVz0hMX07Xy5HKFZlLHZiKTt2YXIgV2U9ZnVuY3Rpb24oYSxiKXthYS5jYWxsKHRoaXMsIkVycm9yIGxvYWRpbmcgIithKyI6ICIrYil9O18uRyhXZSxhYSk7VmUucHJvdG90eXBlLlhmPWZ1bmN0aW9uKGEpe3RoaXMuVz1hfTsKVmUucHJvdG90eXBlLnFlPWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgVmUpKXRoaXMucWUoYSxiKTtlbHNlIGlmKHR5cGVvZiBhPT09InN0cmluZyIpe2lmKGEuc3RhcnRzV2l0aCgiZCQiKSl7YT1hLnN1YnN0cmluZygyKTtmb3IodmFyIGM9W10sZD0wLGU9YS5pbmRleE9mKCIvIiksZj0wLGc9ITEsaD0wOzspe3ZhciBrPWc/YS5zdWJzdHJpbmcoZik6YS5zdWJzdHJpbmcoZixlKTtpZihrLmxlbmd0aD09PTApZCsrLGY9InN5IitkLnRvU3RyaW5nKDM2KSxrPVtdO2Vsc2V7dmFyIGw9ay5pbmRleE9mKCI6Iik7aWYobDwwKWY9ayxrPVtdO2Vsc2UgaWYobD09PWsubGVuZ3RoLTEpZj1rLnN1YnN0cmluZygwLGwpLGs9QXJyYXkoY1toLTFdKTtlbHNle2Y9ay5zdWJzdHJpbmcoMCxsKTtrPWsuc3Vic3RyaW5nKGwrMSkuc3BsaXQoIiwiKTtsPWg7Zm9yKHZhciBuPTA7bjxrLmxlbmd0aDtuKyspbC09a1tuXS5sZW5ndGg9PT0wPzE6TnVtYmVyKGtbbl0pLGtbbl09Y1tsXX1sPQowO2lmKGYubGVuZ3RoPT09MClsPTE7ZWxzZSBpZihmLmNoYXJBdCgwKT09PSIrInx8Zi5jaGFyQXQoMCk9PT0iLSIpbD1OdW1iZXIoZik7bCE9PTAmJihkKz1sLGY9InN5IitkLnRvU3RyaW5nKDM2KSl9Yy5wdXNoKGYpO1hlKHRoaXMsZixrKTtpZihnKWJyZWFrO2Y9ZSsxO2U9YS5pbmRleE9mKCIvIixmKTtlPT09LTEmJihnPSEwKTtoKyt9dGhpcy5JPWN9ZWxzZSBpZihhLnN0YXJ0c1dpdGgoInAkIikpWWUodGhpcyxhKTtlbHNle2E9YS5zcGxpdCgiLyIpO2M9W107Zm9yKGQ9MDtkPGEubGVuZ3RoO2QrKyl7aD1hW2RdLnNwbGl0KCI6Iik7ZT1oWzBdO2c9W107aWYoaFsxXSlmb3IoZz1oWzFdLnNwbGl0KCIsIiksaD0wO2g8Zy5sZW5ndGg7aCsrKWdbaF09Y1twYXJzZUludChnW2hdLDM2KV07Yy5wdXNoKGUpO1hlKHRoaXMsZSxnKX10aGlzLkk9Y31pZihiJiZiLmxlbmd0aCl7YT1fLkMoYik7Zm9yKGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKXRoaXMuby5hZGQoYy52YWx1ZSk7CnRoaXMuTD1iW2IubGVuZ3RoLTFdfWVsc2UgdGhpcy5GLmh8fHRoaXMuRi5nKCk7T2JqZWN0LmZyZWV6ZSh0aGlzLkkpO1plKHRoaXMpfX07CnZhciBZZT1mdW5jdGlvbihhLGIpe2lmKCFZZCl7Zm9yKHZhciBjPTA7Yzw2NDtjKyspb2JbIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8iLmNoYXJDb2RlQXQoYyldPWM7WWQ9ITB9dmFyIGQ9e0hkOmIsQmI6Mn07cWIoZCk7dmFyIGU9cWIoZCksZj1xYihkKSsxO2I9QXJyYXkoZSk7Yz1BcnJheShlKTt2YXIgZz1BcnJheShlKTtmPUFycmF5KGYpO3ZhciBoPTAsaz0wLGw9ZC5IZCxuPWQuQmI7ZC5CYj1kLkhkLmluZGV4T2YoInwiLGQuQmIpKzE7Zm9yKHZhciBxPTA7cTxlO3ErKyl7dmFyIHA9cWIoZCkscj1wJjIsdD1wJjE7cD4+Pj0yO3Q/KGgrPXA+Pj4xXi0ocCYxKSxwPSJzeSIraC50b1N0cmluZygzNikpOih0PW4sbis9cCxwPWwuc3Vic3RyaW5nKHQsbikpO2JbcV09cDtyJiYoZltrKytdPXApfWZba109IiI7ZC5CYisrO2s9ZSYtMjtoPWUmMTtmb3IobD0wO2w8aztsKz0yKW49cGIoZCksZ1tsXT1uJjcsZ1tsKwoxXT1uPj4+MyY3O2gmJihoPXBiKGQpLGdba109aCY3KTtkLkJiKys7Zm9yKGs9MDtrPGU7aysrKWdba109PT03JiYoZ1trXT1xYihkKSk7ZC5CYisrO2ZvcihoPWs9MDtoPGU7aCsrKXtsPWdbaF07bj1sPT09MD9aZDpBcnJheShsKTtjW2hdPW47cT1rO2ZvcihyPTA7cjxsO3IrKylxLT1xYihkKSxuW3JdPWZbcV07ZltrXT09PWJbaF0mJmsrK31mb3IoZD0wO2Q8Yi5sZW5ndGg7ZCsrKVhlKGEsYltkXSxjW2RdKTthLkk9Yn07VmUucHJvdG90eXBlLmplPWZ1bmN0aW9uKGEsYil7aWYodGhpcy5oIGluc3RhbmNlb2YgTWFwKXt2YXIgYz10aGlzLmguZ2V0KGEpO2MmJihjLmRlbGV0ZShiKSxjLnNpemU9PT0wJiZ0aGlzLmguZGVsZXRlKGEpKX1lbHNlIGlmKHRoaXMuaFthXSl7ZGVsZXRlIHRoaXMuaFthXVtiXTtmb3IoYyBpbiB0aGlzLmhbYV0pcmV0dXJuO2RlbGV0ZSB0aGlzLmhbYV19fTtWZS5wcm90b3R5cGUuc2U9ZnVuY3Rpb24oYSl7VmUuZWEuc2UuY2FsbCh0aGlzLGEpO1plKHRoaXMpfTsKVmUucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuby5zaXplPjB9O1ZlLnByb3RvdHlwZS5EZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkIuc2l6ZT4wfTsKdmFyIGFmPWZ1bmN0aW9uKGEpe3ZhciBiPWEuUCxjPWEuaXNBY3RpdmUoKTtjIT1iJiYoJGUoYSxjP2RlLmxnOmRlLklETEUpLGEuUD1jKTtiPWEuRGYoKTtiIT1hLlQmJigkZShhLGI/ZGUuSGc6ZGUuSWcpLGEuVD1iKX0sWGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZy5nZXQoYik7ZD9kLmw9YzphLmcuc2V0KGIsbmV3IG5jLkZlKGMsYikpfSxkZj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT17fTtiPV8uQyhuZXcgU2V0KGIpKTtmb3IodmFyIGY9Yi5uZXh0KCk7IWYuZG9uZTtmPWIubmV4dCgpKXtmPWYudmFsdWU7dmFyIGc9YS5nLmdldChmKTtpZighZyl0aHJvdyBFcnJvcigiQ2AiK2YpO3ZhciBoPW5ldyBCYjtlW2ZdPWg7Zy5nP2guZyhhLnFhKTooYmYoYSxmLGcsISFjLGgpLGNmKGEsZil8fGQucHVzaChmKSl9ZC5sZW5ndGg+MCYmKGEuby5zaXplPT09MD9hLkcoZCk6KGEuai5wdXNoKGQpLGFmKGEpKSk7cmV0dXJuIGV9LGJmPWZ1bmN0aW9uKGEsYixjLGQsZSl7YWUoYywKZS5nLGUpO2JlKGMsZnVuY3Rpb24oZil7ZS5GKG5ldyBXZShiLGYpKX0pO2NmKGEsYik/ZCYmKGEuQi5hZGQoYiksYWYoYSkpOmQmJmEuQi5hZGQoYil9OwpWZS5wcm90b3R5cGUuRz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcztiPWI9PT12b2lkIDA/MDpiO3ZhciBlPWVmKHRoaXMsYSk7dGhpcy5vPW5ldyBTZXQoZSk7dGhpcy5BPXRoaXMuVz9hOl8ud2EoZSk7YWYodGhpcyk7aWYoZS5sZW5ndGghPT0wKXthPV8uQyhlKTtmb3IodmFyIGY9YS5uZXh0KCk7IWYuZG9uZTtmPWEubmV4dCgpKXRoaXMuQy5hZGQoZi52YWx1ZSk7YT10aGlzLk87aWYoIWEpdGhyb3cgRXJyb3IoIkQiKTtpZigodGhpcy5oIGluc3RhbmNlb2YgTWFwP3RoaXMuaC5zaXplPjA6T2JqZWN0LmtleXModGhpcy5oKS5sZW5ndGg+MCkmJiFhLkkpdGhyb3cgRXJyb3IoIkUiKTtmZihhLF8ud2EoZSksdGhpcy5nLHtqaDp0aGlzLmgsZmU6ZnVuY3Rpb24oZyxoLGspe3JldHVybiBnZihkLGQuQSxlLGchPW51bGw/Zzp2b2lkIDAsaCxiLCEhayl9LEZpOigwLF8ueSkodGhpcy5sYSx0aGlzKSxtaDohIWN9KX19Owp2YXIgaGY9ZnVuY3Rpb24oYSl7dGhpcy5oPWE7dGhpcy5qPW5ldyBTZXQ7dGhpcy5nPVtdfSxqZj1mdW5jdGlvbihhLGIpe2lmKCFhLmouaGFzKGIpJiYoYS5qLmFkZChiKSwhYS5oLkMuaGFzKGIpKSl7dmFyIGM9YS5oLmcuZ2V0KGIpO2lmKGMmJiFjLmcpe2M9Yy5sO2Zvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKWpmKGEsY1tkXSk7YS5nLnB1c2goYil9fX0sZWY9ZnVuY3Rpb24oYSxiKXtiPWIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBhLmcuZ2V0KGUpLmc/KF8udi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIEVycm9yKCJGYCIrZSl9LDApLCExKTohMH0pO2lmKE9jKXt2YXIgYz1uZXcgaGYoYSk7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspamYoYyxiW2RdKTtjPWMuZ31lbHNle2M9W107Zm9yKGQ9MDtkPGIubGVuZ3RoO2QrKyljPWMuY29uY2F0KGtmKGEsYltkXSkpO0JhKGMpfXJldHVybiFhLlcmJmMubGVuZ3RoPjE/KGI9Yy5zaGlmdCgpLGEuaj1jLm1hcChmdW5jdGlvbihlKXtyZXR1cm5bZV19KS5jb25jYXQoYS5qKSwKW2JdKTpjfSxrZj1mdW5jdGlvbihhLGIpe2lmKE9jKXJldHVybiBhPW5ldyBoZihhKSxqZihhLGIpLGEuZzt2YXIgYz1bXTthLkMuaGFzKGIpfHxjLnB1c2goYik7Yj1bYl07Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspZm9yKHZhciBlPWEuZy5nZXQoYltkXSkubCxmPWUubGVuZ3RoLTE7Zj49MDtmLS0pe3ZhciBnPWVbZl07YS5nLmdldChnKS5nfHxhLkMuaGFzKGcpfHwoYy5wdXNoKGcpLGIucHVzaChnKSl9Yy5yZXZlcnNlKCk7QmEoYyk7cmV0dXJuIGN9LFplPWZ1bmN0aW9uKGEpe2lmKGEubD09YS5EKXthLmw9bnVsbDt2YXIgYj1hLkQub25Mb2FkKCgwLF8ueSkoYS5rZixhKSk7YiYmYi5sZW5ndGgmJmxmKGEsbmV3IG5jLkZhKG5jLkZhLmcudGQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsYlswXSkpO2FmKGEpfX07ClZlLnByb3RvdHlwZS5tZD1mdW5jdGlvbigpe2lmKHRoaXMubCl7dmFyIGE9dGhpcy5sLlJhKCksYj1bXTtpZih0aGlzLmggaW5zdGFuY2VvZiBNYXApe3ZhciBjPXRoaXMuaC5nZXQoYSk7aWYoYyl7Yz1fLkMoQXJyYXkuZnJvbShjKSk7Zm9yKHZhciBkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7ZD1kLnZhbHVlO3ZhciBlPXRoaXMuZy5nZXQoZCk7ZSYmIWUuZyYmKHRoaXMuamUoYSxkKSxiLnB1c2goZCkpfWRmKHRoaXMsYil9fWVsc2UgaWYodGhpcy5oW2FdKXtjPV8uQyhPYmplY3Qua2V5cyh0aGlzLmhbYV0pKTtmb3IoZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpZD1kLnZhbHVlLChlPXRoaXMuZy5nZXQoZCkpJiYhZS5nJiYodGhpcy5qZShhLGQpLGIucHVzaChkKSk7ZGYodGhpcyxiKX10aGlzLnFiKCl8fCgoYj10aGlzLmcuZ2V0KGEpLm9uTG9hZCgoMCxfLnkpKHRoaXMua2YsdGhpcykpKSYmYi5sZW5ndGgmJmxmKHRoaXMsbmV3IG5jLkZhKG5jLkZhLmcudGQsCnZvaWQgMCx2b2lkIDAsdm9pZCAwLGJbMF0pKSx0aGlzLkIuZGVsZXRlKGEpLHRoaXMuby5kZWxldGUoYSksdGhpcy5vLnNpemUhPT0wfHxtZih0aGlzKSx0aGlzLkwmJmE9PXRoaXMuTCYmKHRoaXMuRi5ofHx0aGlzLkYuZygpKSxhZih0aGlzKSx0aGlzLmw9bnVsbCl9fTt2YXIgY2Y9ZnVuY3Rpb24oYSxiKXtpZihhLm8uaGFzKGIpKXJldHVybiEwO2Zvcih2YXIgYz0wO2M8YS5qLmxlbmd0aDtjKyspaWYoXy50YShhLmpbY10sYikpcmV0dXJuITA7cmV0dXJuITF9O1ZlLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGRmKHRoaXMsW2FdLGIpW2FdfTsKdmFyIGthPWZ1bmN0aW9uKGEpe3ZhciBiPV8uZGE7Yi5sJiZiLmwuUmEoKT09PSJzeW50aGV0aWNfbW9kdWxlX292ZXJoZWFkIiYmKGIubWQoKSxiLmcuZGVsZXRlKCJzeW50aGV0aWNfbW9kdWxlX292ZXJoZWFkIikpO3ZhciBjPWIuZy5nZXQoYSk7YyYmbmYoYixjLmx8fFtdLGZ1bmN0aW9uKGQpe2QubWQoKTtiLm8uZGVsZXRlKGQuUmEoKSl9LGZ1bmN0aW9uKGQpe3JldHVybiFkLmd9LG5ldyBTZXQpO2IubD1iLmcuZ2V0KGEpO2IubCYmKGIubC5CPSEwKX0sZ2Y9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9KGc9PT12b2lkIDA/MDpnKT8wOihmPT09dm9pZCAwPzA6ZikrMTtmPV8ud2EoYyk7YS5BPWI7Yz1fLkMoYyk7Zm9yKGc9Yy5uZXh0KCk7IWcuZG9uZTtnPWMubmV4dCgpKWEuQy5kZWxldGUoZy52YWx1ZSk7aWYoZD09NDAxKWxmKGEsbmV3IG5jLkZhKG5jLkZhLmcuSmUsZCkpLGEuai5sZW5ndGg9MDtlbHNlIGlmKGQ9PTQxMClvZihhLG5ldyBuYy5GYShuYy5GYS5nLkhlLApkKSksbWYoYSk7ZWxzZSBpZihoPj0zKW9mKGEsbmV3IG5jLkZhKG5jLkZhLmcuQmUsZCxmLGUpKSxtZihhKTtlbHNle3ZhciBrPWQ9PTgwMDF8fCExOyhkPU1hdGgucG93KGgsMikqNUUzKT9fLnYuc2V0VGltZW91dChmdW5jdGlvbigpe2EuRyhiLGgsayl9LGQpOmEuRyhiLGgsayl9fTtWZS5wcm90b3R5cGUubGE9ZnVuY3Rpb24oKXtvZih0aGlzLG5ldyBuYy5GYShuYy5GYS5nLlRJTUVPVVQpKTttZih0aGlzKX07CnZhciBvZj1mdW5jdGlvbihhLGIpe2EuQS5sZW5ndGg+MT9hLmo9YS5BLm1hcChmdW5jdGlvbihjKXtyZXR1cm5bY119KS5jb25jYXQoYS5qKTpsZihhLGIpfSxsZj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuQTthLm8uY2xlYXIoKTtmb3IodmFyIGQ9W10sZT0wO2U8YS5qLmxlbmd0aDtlKyspe3ZhciBmPWEualtlXS5maWx0ZXIoZnVuY3Rpb24oayl7dmFyIGw9a2YodGhpcyxrKTtyZXR1cm4gXy54YyhjLGZ1bmN0aW9uKG4pe3JldHVybiBfLnRhKGwsbil9KX0sYSk7eGEoZCxmKX1mb3IoZT0wO2U8Yy5sZW5ndGg7ZSsrKV8udWEoZCxjW2VdKTtmb3IoZT0wO2U8ZC5sZW5ndGg7ZSsrKXtmb3IoZj0wO2Y8YS5qLmxlbmd0aDtmKyspXy52YShhLmpbZl0sZFtlXSk7YS5CLmRlbGV0ZShkW2VdKX1pZihlPWEuSy5nZXQoZGUuRVJST1IpKWZvcihmPTA7ZjxlLmxlbmd0aDtmKyspZm9yKHZhciBnPWVbZl0saD0wO2g8ZC5sZW5ndGg7aCsrKWcoZGUuRVJST1IsZFtoXSxiKTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKShlPQphLmcuZ2V0KGNbZF0pKSYmZS5mZShiKTthLkEubGVuZ3RoPTA7YWYoYSl9LG1mPWZ1bmN0aW9uKGEpe2Zvcig7YS5qLmxlbmd0aDspe3ZhciBiPWEuai5zaGlmdCgpLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4hdGhpcy5nLmdldChjKS5nfSxhKTtpZihiLmxlbmd0aD4wKXthLkcoYik7cmV0dXJufX1hZihhKX0sJGU9ZnVuY3Rpb24oYSxiKXthPWEuSy5nZXQoYik7Zm9yKHZhciBjPTA7YSYmYzxhLmxlbmd0aDtjKyspYVtjXShiKX0sbmY9ZnVuY3Rpb24oYSxiLGMsZCxlKXtiPV8uQyhiKTtmb3IodmFyIGY9Yi5uZXh0KCk7IWYuZG9uZTtmPWIubmV4dCgpKXtmPWYudmFsdWU7dmFyIGc9YS5nLmdldChmKTshZS5oYXMoZikmJmQoZykmJihlLmFkZChmKSxuZihhLGcubHx8W10sYyxkLGUpLGMoZykpfX07ClZlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7cmEoQXJyYXkuZnJvbSh0aGlzLmcudmFsdWVzKCkpLHRoaXMuRCk7dGhpcy5nLmNsZWFyKCk7dGhpcy5vLmNsZWFyKCk7dGhpcy5BPVtdO3RoaXMuQi5jbGVhcigpO3RoaXMuaj1bXTt0aGlzLksuY2xlYXIoKTt0aGlzLlI9ITB9O1ZlLnByb3RvdHlwZS5xYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJ9O18uaGE9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZlfTt2YXIgcGY9W10scWY9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkKXtkJiZ3YyhkLGZ1bmN0aW9uKGUsZil7ZVtmLmlkXT0hMDtyZXR1cm4gZX0sYy5KaSl9dmFyIGM9e0ppOnt9LGluZGV4OnBmLmxlbmd0aCxWbDphfTtiKGEubGQpO2IoYS5qbSk7cGYucHVzaChjKTthLmxkJiZfLnZjKGEubGQsZnVuY3Rpb24oZCl7dmFyIGU9ZC5pZDtlIGluc3RhbmNlb2YgdGMmJmQubW9kdWxlJiYoZS5nPWQubW9kdWxlKX0pfTtxZih7bGQ6W3tpZDp1YyxMYjpuYixtdWx0aXBsZTohMH1dfSk7Xy5yZj1SZWdFeHAoIl4oPzooW146Lz8jLl0rKTopPyg/Oi8vKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JCIpO3ZhciBzZj17fTt2YXIgdGY9bmV3IHRjKCJNcEp3WmMiLCJNcEp3WmMiKTtfLnVmPW5ldyB0YygiVVVKcVZlIiwiVVVKcVZlIik7dmFyIHZmPW5ldyBiYix3Zj1mdW5jdGlvbihhLGIsYyl7Y2IuY2FsbCh0aGlzLGEsYik7dGhpcy5ub2RlPWI7dGhpcy5raW5kPWN9O18uQih3ZixjYik7Xy54Zj1SZWdFeHAoIl4oYXJ8Y2tifGR2fGhlfGl3fGZhfG5xb3xwc3xzZHx1Z3x1cnx5aXwuKlstX10oQWRsbXxBcmFifEhlYnJ8Tmtvb3xSb2hnfFRoYWEpKSg/IS4qWy1fXShMYXRufEN5cmwpKCR8LXxfKSkoJHwtfF8pIiwiaSIpO18ueWY9ZnVuY3Rpb24oYSxiKXtifHxfLmxiKCk7dGhpcy5oPWF8fG51bGx9O18ueWYucHJvdG90eXBlLmthPWZ1bmN0aW9uKGEsYil7YT1hKGJ8fHt9LHRoaXMuaD90aGlzLmguZ2V0RGF0YSgpOnt9KTt0aGlzLmcobnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgXy56ZiYmYSBpbnN0YW5jZW9mIF8uemY/YS5aYjpudWxsKTtyZXR1cm4gU3RyaW5nKGEpfTtfLnlmLnByb3RvdHlwZS5nPWZ1bmN0aW9uKCl7fTt2YXIgQWY9ZnVuY3Rpb24oYSl7dGhpcy5nPWE7dGhpcy5oPXRoaXMuZy5nKF8udWYpfTtBZi5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbigpe3RoaXMuZy5xYigpfHwodGhpcy5oPXRoaXMuZy5nKF8udWYpKTtyZXR1cm4gdGhpcy5oP3RoaXMuaC5qKCk6e319O3ZhciBCZj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgQWYoYSk7Xy55Zi5jYWxsKHRoaXMsYixhLmdldCh1YykuaCk7dGhpcy5qPW5ldyBfLmhiO3RoaXMubD1ifTtfLkIoQmYsXy55Zik7QmYucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sLmdldERhdGEoKX07QmYucHJvdG90eXBlLmc9ZnVuY3Rpb24oYSxiKXtfLnlmLnByb3RvdHlwZS5nLmNhbGwodGhpcyxhLGIpO3RoaXMuai5kaXNwYXRjaEV2ZW50KG5ldyB3Zih2ZixhLGIpKX07Xy5vYSh0ZixCZik7cWYoe2xkOlt7aWQ6dGYsTGI6QmYsbXVsdGlwbGU6ITB9XX0pO3ZhciBDZj1mdW5jdGlvbihhLGIpe3RoaXMuZGVmYXVsdFZhbHVlPWE7dGhpcy50eXBlPWI7dGhpcy52YWx1ZT1hfTtDZi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9O0NmLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSl7dGhpcy52YWx1ZT1hfTt2YXIgRGY9ZnVuY3Rpb24oYSl7Q2YuY2FsbCh0aGlzLGEsImIiKX07Xy5CKERmLENmKTtEZi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9O3ZhciBFZj1mdW5jdGlvbigpe3RoaXMuZz17fTt0aGlzLmo9IiI7dGhpcy5oPXt9fTtFZi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmorRmYodGhpcyk7dmFyIGI9dGhpcy5oO3ZhciBjPVtdLGQ7Zm9yKGQgaW4gYilGYihkLGJbZF0sYyk7Yj1jLmpvaW4oIiYiKTtjPSIiO2IhPSIiJiYoYz0iPyIrYik7cmV0dXJuIGErY307CnZhciBIZj1mdW5jdGlvbihhKXthPUdmKGEsIm1kIik7cmV0dXJuISFhJiZhIT09IjAifSxGZj1mdW5jdGlvbihhKXt2YXIgYj1bXSxjPWZ1bmN0aW9uKGQpe2EuZ1tkXSE9PXZvaWQgMCYmYi5wdXNoKGQrIj0iK2EuZ1tkXSl9O0hmKGEpPyhjKCJtZCIpLGMoImsiKSxjKCJjayIpLGMoImFtIiksYygicnMiKSxjKCJnc3Ntb2R1bGVzZXRwcm90byIpLGMoInNsayIpLGMoImR0aSIpLGMoImRid2giKSk6KGMoInNkY2giKSxjKCJrIiksYygiY2siKSxjKCJhbSIpLGMoImFtYyIpLGMoInJ0IiksImQiaW4gYS5nfHxJZihhLCJkIiwiMCIpLGMoImQiKSxjKCJleG0iKSxjKCJleGNtIiksKGEuZy5leGNtfHxhLmcuZXhtKSYmYi5wdXNoKCJlZD0xIiksYygiaW0iKSxjKCJkZyIpLGMoInNtIiksR2YoYSwiYnIiKSE9IjEiJiZHZihhLCJiciIpIT0iMCJ8fGMoImJyIiksYygiYnItZCIpLEdmKGEsInJiIik9PSIxIiYmYygicmIiKSxHZihhLCJ6cyIpIT09IjAiJiZjKCJ6cyIpLEpmKGEpIT09IiImJgpjKCJ3dCIpLGMoImdzc21vZHVsZXNldHByb3RvIiksYygidWpnIiksYygic3AiKSxjKCJpY2hjIiksYygicnMiKSxjKCJjYiIpLGMoImNjYiIpLGMoImVlIiksYygic2xrIiksYygiZHRpIiksYygiZGJ3aCIpLGMoImljIiksYygibSIpKTtyZXR1cm4gYi5qb2luKCIvIil9LEdmPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZ1tiXT9hLmdbYl06bnVsbH0sSWY9ZnVuY3Rpb24oYSxiLGMpe2M/YS5nW2JdPWM6ZGVsZXRlIGEuZ1tiXX0sSmY9ZnVuY3Rpb24oYSl7c3dpdGNoKEdmKGEsInd0Iikpe2Nhc2UgIjAiOnJldHVybiIwIjtjYXNlICIxIjpyZXR1cm4iMSI7Y2FzZSAiMiI6cmV0dXJuIjIiO2RlZmF1bHQ6cmV0dXJuIiJ9fSxNZj1mdW5jdGlvbihhKXt2YXIgYj1iPT09dm9pZCAwPyEwOmI7dmFyIGM9S2YoYSksZD1uZXcgRWYsZT1jLm1hdGNoKF8ucmYpWzVdO18uemMoTGYsZnVuY3Rpb24oZyl7dmFyIGg9ZS5tYXRjaCgiLyIrZysiPShbXi9dKykiKTtoJiZJZihkLGcsaFsxXSl9KTsKdmFyIGY9IiI7Zj1hLmluZGV4T2YoIl8vc3MvIikhPS0xPyJfL3NzLyI6Il8vanMvIjtkLmo9YS5zdWJzdHIoMCxhLmluZGV4T2YoZikrZi5sZW5ndGgpO2lmKCFiKXJldHVybiBkOyhhPWMubWF0Y2goXy5yZilbNl18fG51bGwpJiZfLkViKGEsZnVuY3Rpb24oZyxoKXtkLmhbZ109aH0pO3JldHVybiBkfSxLZj1mdW5jdGlvbihhKXtyZXR1cm4gYS5zdGFydHNXaXRoKCJodHRwczovL3ViZXJwcm94eS1wZW4tcmVkaXJlY3QuY29ycC5nb29nbGUuY29tL3ViZXJwcm94eS9wZW4/dXJsPSIpP2Euc3Vic3RyKDY1KTphfSxMZj17Wmo6ImsiLHFqOiJjayIsVGo6Im0iLERqOiJleG0iLEJqOiJleGNtIixlajoiYW0iLGZqOiJhbWMiLFJqOiJtbSIsWWo6InJ0IixNajoiZCIsQ2o6ImVkIixqazoic3YiLHNqOiJkZW9iIixtajoiY2IiLG9qOiJjY2IiLG5qOiJjYmkiLGdrOiJycyIsYWs6InNkY2giLE5qOiJpbSIsdGo6ImRnIix6ajoiYnIiLHlqOiJici1kIixBajoicmIiLEJrOiJ6cyIsQWs6Ind0IiwKRWo6ImVlIixpazoic20iLFNqOiJtZCIsSmo6Imdzc21vZHVsZXNldHByb3RvIix5azoidWpnIix4azoic3AiLExqOiJpY2hjIixmazoic2xrIix2ajoiZHRpIix1ajoiZGJ3aCIsT2o6ImljIn0sTmY9UmVnRXhwKCJeW2EtekEtWjAtOS1fKl0rJCIpO18uRyhfLkhiLF8udSk7dmFyIE9mPVtdO18uSGIucHJvdG90eXBlLk49ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIFBmKHRoaXMsYSxiLGMsZCl9O3ZhciBQZj1mdW5jdGlvbihhLGIsYyxkLGUsZil7QXJyYXkuaXNBcnJheShjKXx8KGMmJihPZlswXT1jLnRvU3RyaW5nKCkpLGM9T2YpO2Zvcih2YXIgZz0wO2c8Yy5sZW5ndGg7ZysrKXt2YXIgaD1fLngoYixjW2ddLGR8fGEuaGFuZGxlRXZlbnQsZXx8ITEsZnx8YS5ofHxhKTtpZighaClicmVhazthLmdbaC5rZXldPWh9cmV0dXJuIGF9O18uSGIucHJvdG90eXBlLmFlPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBRZih0aGlzLGEsYixjLGQpfTsKdmFyIFFmPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZihBcnJheS5pc0FycmF5KGMpKWZvcih2YXIgZz0wO2c8Yy5sZW5ndGg7ZysrKVFmKGEsYixjW2ddLGQsZSxmKTtlbHNle2I9Xy5OZChiLGMsZHx8YS5oYW5kbGVFdmVudCxlLGZ8fGEuaHx8YSk7aWYoIWIpcmV0dXJuIGE7YS5nW2Iua2V5XT1ifXJldHVybiBhfTtfLkhiLnByb3RvdHlwZS55Yz1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKEFycmF5LmlzQXJyYXkoYikpZm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspdGhpcy55YyhhLGJbZl0sYyxkLGUpO2Vsc2UgYz1jfHx0aGlzLmhhbmRsZUV2ZW50LGQ9Xy55YShkKT8hIWQuY2FwdHVyZTohIWQsZT1lfHx0aGlzLmh8fHRoaXMsYz1PZChjKSxkPSEhZCxiPUZkKGEpP2EuamMoYixjLGQsZSk6YT8oYT1RZChhKSk/YS5qYyhiLGMsZCxlKTpudWxsOm51bGwsYiYmKF8uVmQoYiksZGVsZXRlIHRoaXMuZ1tiLmtleV0pO3JldHVybiB0aGlzfTsKXy5SZj1mdW5jdGlvbihhKXtfLnpjKGEuZyxmdW5jdGlvbihiLGMpe3RoaXMuZy5oYXNPd25Qcm9wZXJ0eShjKSYmXy5WZChiKX0sYSk7YS5nPXt9fTtfLkhiLnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7Xy5IYi5lYS5NLmNhbGwodGhpcyk7Xy5SZih0aGlzKX07Xy5IYi5wcm90b3R5cGUuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiTiIpO307dmFyIFNmLFRmPWZ1bmN0aW9uKCl7fTtfLkcoVGYsSWIpO1RmLnByb3RvdHlwZS5nPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH07U2Y9bmV3IFRmO18uRyhKYixJYik7SmIucHJvdG90eXBlLmc9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoIndpdGhDcmVkZW50aWFscyJpbiBhKXJldHVybiBhO2lmKHR5cGVvZiBYRG9tYWluUmVxdWVzdCE9InVuZGVmaW5lZCIpcmV0dXJuIG5ldyBVZjt0aHJvdyBFcnJvcigiTyIpO307dmFyIFVmPWZ1bmN0aW9uKCl7dGhpcy5nPW5ldyBYRG9tYWluUmVxdWVzdDt0aGlzLnJlYWR5U3RhdGU9MDt0aGlzLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO3RoaXMucmVzcG9uc2VUeXBlPXRoaXMucmVzcG9uc2VUZXh0PSIiO3RoaXMuc3RhdHVzPS0xO3RoaXMuc3RhdHVzVGV4dD0iIjt0aGlzLmcub25sb2FkPSgwLF8ueSkodGhpcy5QaCx0aGlzKTt0aGlzLmcub25lcnJvcj0oMCxfLnkpKHRoaXMuRGUsdGhpcyk7dGhpcy5nLm9ucHJvZ3Jlc3M9KDAsXy55KSh0aGlzLlNoLHRoaXMpO3RoaXMuZy5vbnRpbWVvdXQ9KDAsXy55KSh0aGlzLldoLHRoaXMpfTtfLm09VWYucHJvdG90eXBlOwpfLm0ub3Blbj1mdW5jdGlvbihhLGIsYyl7aWYoYyE9bnVsbCYmIWMpdGhyb3cgRXJyb3IoIlAiKTt0aGlzLmcub3BlbihhLGIpfTtfLm0uc2VuZD1mdW5jdGlvbihhKXtpZihhKWlmKHR5cGVvZiBhPT0ic3RyaW5nIil0aGlzLmcuc2VuZChhKTtlbHNlIHRocm93IEVycm9yKCJRIik7ZWxzZSB0aGlzLmcuc2VuZCgpfTtfLm0uYWJvcnQ9ZnVuY3Rpb24oKXt0aGlzLmcuYWJvcnQoKX07Xy5tLnNldFJlcXVlc3RIZWFkZXI9ZnVuY3Rpb24oKXt9O18ubS5nZXRSZXNwb25zZUhlYWRlcj1mdW5jdGlvbihhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpPT0iY29udGVudC10eXBlIj90aGlzLmcuY29udGVudFR5cGU6IiJ9O18ubS5QaD1mdW5jdGlvbigpe3RoaXMuc3RhdHVzPTIwMDt0aGlzLnJlc3BvbnNlVGV4dD10aGlzLmcucmVzcG9uc2VUZXh0O1ZmKHRoaXMsNCl9O18ubS5EZT1mdW5jdGlvbigpe3RoaXMuc3RhdHVzPTUwMDt0aGlzLnJlc3BvbnNlVGV4dD0iIjtWZih0aGlzLDQpfTsKXy5tLldoPWZ1bmN0aW9uKCl7dGhpcy5EZSgpfTtfLm0uU2g9ZnVuY3Rpb24oKXt0aGlzLnN0YXR1cz0yMDA7VmYodGhpcywxKX07dmFyIFZmPWZ1bmN0aW9uKGEsYil7YS5yZWFkeVN0YXRlPWI7aWYoYS5vbnJlYWR5c3RhdGVjaGFuZ2UpYS5vbnJlYWR5c3RhdGVjaGFuZ2UoKX07VWYucHJvdG90eXBlLmdldEFsbFJlc3BvbnNlSGVhZGVycz1mdW5jdGlvbigpe3JldHVybiJjb250ZW50LXR5cGU6ICIrdGhpcy5nLmNvbnRlbnRUeXBlfTt2YXIgWGYsWWY7Xy5XZj1mdW5jdGlvbihhKXtfLmhiLmNhbGwodGhpcyk7dGhpcy5oZWFkZXJzPW5ldyBNYXA7dGhpcy5LPWF8fG51bGw7dGhpcy5oPSExO3RoaXMuZz1udWxsO3RoaXMuQT0iIjt0aGlzLmo9dGhpcy5GPXRoaXMubz10aGlzLkQ9ITE7dGhpcy5CPTA7dGhpcy5sPW51bGw7dGhpcy5JPSIiO3RoaXMuQz0hMX07Xy5HKF8uV2YsXy5oYik7WGY9L15odHRwcz8kL2k7WWY9WyJQT1NUIiwiUFVUIl07Xy5aZj1bXTtfLldmLnByb3RvdHlwZS5MPWZ1bmN0aW9uKCl7dGhpcy5kaXNwb3NlKCk7Xy52YShfLlpmLHRoaXMpfTsKXy5XZi5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihhLGIsYyxkKXtpZih0aGlzLmcpdGhyb3cgRXJyb3IoIlNgIit0aGlzLkErImAiK2EpO2I9Yj9iLnRvVXBwZXJDYXNlKCk6IkdFVCI7dGhpcy5BPWE7dGhpcy5EPSExO3RoaXMuaD0hMDt0aGlzLmc9dGhpcy5LP3RoaXMuSy5nKCk6U2YuZygpO3RoaXMuZy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZWUoKDAsXy55KSh0aGlzLkcsdGhpcykpO3RyeXt0aGlzLkY9ITAsdGhpcy5nLm9wZW4oYixTdHJpbmcoYSksITApLHRoaXMuRj0hMX1jYXRjaChnKXskZih0aGlzKTtyZXR1cm59YT1jfHwiIjtjPW5ldyBNYXAodGhpcy5oZWFkZXJzKTtpZihkKWlmKE9iamVjdC5nZXRQcm90b3R5cGVPZihkKT09PU9iamVjdC5wcm90b3R5cGUpZm9yKHZhciBlIGluIGQpYy5zZXQoZSxkW2VdKTtlbHNlIGlmKHR5cGVvZiBkLmtleXM9PT0iZnVuY3Rpb24iJiZ0eXBlb2YgZC5nZXQ9PT0iZnVuY3Rpb24iKXtlPV8uQyhkLmtleXMoKSk7Zm9yKHZhciBmPWUubmV4dCgpOyFmLmRvbmU7Zj0KZS5uZXh0KCkpZj1mLnZhbHVlLGMuc2V0KGYsZC5nZXQoZikpfWVsc2UgdGhyb3cgRXJyb3IoIlRgIitTdHJpbmcoZCkpO2Q9QXJyYXkuZnJvbShjLmtleXMoKSkuZmluZChmdW5jdGlvbihnKXtyZXR1cm4iY29udGVudC10eXBlIj09Zy50b0xvd2VyQ2FzZSgpfSk7ZT1fLnYuRm9ybURhdGEmJmEgaW5zdGFuY2VvZiBfLnYuRm9ybURhdGE7IV8udGEoWWYsYil8fGR8fGV8fGMuc2V0KCJDb250ZW50LVR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpO2I9Xy5DKGMpO2ZvcihkPWIubmV4dCgpOyFkLmRvbmU7ZD1iLm5leHQoKSljPV8uQyhkLnZhbHVlKSxkPWMubmV4dCgpLnZhbHVlLGM9Yy5uZXh0KCkudmFsdWUsdGhpcy5nLnNldFJlcXVlc3RIZWFkZXIoZCxjKTt0aGlzLkkmJih0aGlzLmcucmVzcG9uc2VUeXBlPXRoaXMuSSk7IndpdGhDcmVkZW50aWFscyJpbiB0aGlzLmcmJnRoaXMuZy53aXRoQ3JlZGVudGlhbHMhPT10aGlzLkMmJgoodGhpcy5nLndpdGhDcmVkZW50aWFscz10aGlzLkMpO3RyeXt0aGlzLmwmJihjbGVhclRpbWVvdXQodGhpcy5sKSx0aGlzLmw9bnVsbCksdGhpcy5CPjAmJih0aGlzLmw9c2V0VGltZW91dCh0aGlzLlIuYmluZCh0aGlzKSx0aGlzLkIpKSx0aGlzLm89ITAsdGhpcy5nLnNlbmQoYSksdGhpcy5vPSExfWNhdGNoKGcpeyRmKHRoaXMpfX07Xy5XZi5wcm90b3R5cGUuUj1mdW5jdGlvbigpe3R5cGVvZiBqYyE9InVuZGVmaW5lZCImJnRoaXMuZyYmKHRoaXMuZGlzcGF0Y2hFdmVudCgidGltZW91dCIpLHRoaXMuYWJvcnQoOCkpfTt2YXIgJGY9ZnVuY3Rpb24oYSl7YS5oPSExO2EuZyYmKGEuaj0hMCxhLmcuYWJvcnQoKSxhLmo9ITEpO2RnKGEpO2VnKGEpfSxkZz1mdW5jdGlvbihhKXthLkR8fChhLkQ9ITAsYS5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLGEuZGlzcGF0Y2hFdmVudCgiZXJyb3IiKSl9OwpfLldmLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbigpe3RoaXMuZyYmdGhpcy5oJiYodGhpcy5oPSExLHRoaXMuaj0hMCx0aGlzLmcuYWJvcnQoKSx0aGlzLmo9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLHRoaXMuZGlzcGF0Y2hFdmVudCgiYWJvcnQiKSxlZyh0aGlzKSl9O18uV2YucHJvdG90eXBlLk09ZnVuY3Rpb24oKXt0aGlzLmcmJih0aGlzLmgmJih0aGlzLmg9ITEsdGhpcy5qPSEwLHRoaXMuZy5hYm9ydCgpLHRoaXMuaj0hMSksZWcodGhpcywhMCkpO18uV2YuZWEuTS5jYWxsKHRoaXMpfTtfLldmLnByb3RvdHlwZS5HPWZ1bmN0aW9uKCl7dGhpcy5xYigpfHwodGhpcy5GfHx0aGlzLm98fHRoaXMuaj9mZyh0aGlzKTp0aGlzLk8oKSl9O18uV2YucHJvdG90eXBlLk89ZnVuY3Rpb24oKXtmZyh0aGlzKX07CnZhciBmZz1mdW5jdGlvbihhKXtpZihhLmgmJnR5cGVvZiBqYyE9InVuZGVmaW5lZCIpaWYoYS5vJiYoYS5nP2EuZy5yZWFkeVN0YXRlOjApPT00KXNldFRpbWVvdXQoYS5HLmJpbmQoYSksMCk7ZWxzZSBpZihhLmRpc3BhdGNoRXZlbnQoInJlYWR5c3RhdGVjaGFuZ2UiKSwoYS5nP2EuZy5yZWFkeVN0YXRlOjApPT00KXthLmg9ITE7dHJ5e18uZ2coYSk/KGEuZGlzcGF0Y2hFdmVudCgiY29tcGxldGUiKSxhLmRpc3BhdGNoRXZlbnQoInN1Y2Nlc3MiKSk6ZGcoYSl9ZmluYWxseXtlZyhhKX19fSxlZz1mdW5jdGlvbihhLGIpe2lmKGEuZyl7YS5sJiYoY2xlYXJUaW1lb3V0KGEubCksYS5sPW51bGwpO3ZhciBjPWEuZzthLmc9bnVsbDtifHxhLmRpc3BhdGNoRXZlbnQoInJlYWR5Iik7dHJ5e2Mub25yZWFkeXN0YXRlY2hhbmdlPW51bGx9Y2F0Y2goZCl7fX19O18uV2YucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmd9OwpfLmdnPWZ1bmN0aW9uKGEpe3ZhciBiPV8uaGcoYSk7YTpzd2l0Y2goYil7Y2FzZSAyMDA6Y2FzZSAyMDE6Y2FzZSAyMDI6Y2FzZSAyMDQ6Y2FzZSAyMDY6Y2FzZSAzMDQ6Y2FzZSAxMjIzOnZhciBjPSEwO2JyZWFrIGE7ZGVmYXVsdDpjPSExfWlmKCFjKXtpZihiPWI9PT0wKWE9U3RyaW5nKGEuQSkubWF0Y2goXy5yZilbMV18fG51bGwsIWEmJl8udi5zZWxmJiZfLnYuc2VsZi5sb2NhdGlvbiYmKGE9Xy52LnNlbGYubG9jYXRpb24ucHJvdG9jb2wuc2xpY2UoMCwtMSkpLGI9IVhmLnRlc3QoYT9hLnRvTG93ZXJDYXNlKCk6IiIpO2M9Yn1yZXR1cm4gY307Xy5oZz1mdW5jdGlvbihhKXt0cnl7cmV0dXJuKGEuZz9hLmcucmVhZHlTdGF0ZTowKT4yP2EuZy5zdGF0dXM6LTF9Y2F0Y2goYil7cmV0dXJuLTF9fTtfLmlnPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS5nP2EuZy5yZXNwb25zZVRleHQ6IiJ9Y2F0Y2goYil7cmV0dXJuIiJ9fTt2YXIga2c9ZnVuY3Rpb24oYSl7Xy51LmNhbGwodGhpcyk7dGhpcy5GPWE7dGhpcy5CPU1mKGEpO3RoaXMubD10aGlzLm89bnVsbDt0aGlzLkk9ITA7dGhpcy5oPW5ldyBfLkhiKHRoaXMpO3RoaXMuRz1bXTt0aGlzLkE9bmV3IFNldDt0aGlzLmc9W107dGhpcy5LPW5ldyBqZzt0aGlzLmo9W107dGhpcy5DPSExO2E9KDAsXy55KSh0aGlzLkQsdGhpcyk7c2YudmVyc2lvbj1hfTtfLkIoa2csXy51KTsKdmFyIGxnPWZ1bmN0aW9uKGEsYil7YS5nLmxlbmd0aCYmUGUoYixhLmdbYS5nLmxlbmd0aC0xXSk7YS5nLnB1c2goYik7TWUoYixmdW5jdGlvbigpe18udmEodGhpcy5nLGIpfSxhKX0sZmY9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZD09PXZvaWQgMD97fTpkO3ZhciBmPWUuamg7ZD1lLm1oO3ZhciBnPWUuZmU7ZT1lLkZpO2I9bWcoYSxiLGMsZixkKTtuZyhhLGIsZyxlLGQpfSxtZz1mdW5jdGlvbihhLGIsYyxkLGUpe2Q9ZD09PXZvaWQgMD9OYz9uZXcgTWFwOnt9OmQ7dmFyIGY9W107b2coYSxiLGMsZCxlPT09dm9pZCAwPyExOmUsZnVuY3Rpb24oZyl7Zi5wdXNoKGcuUmEoKSl9KTtyZXR1cm4gZn0sb2c9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7Zz1nPT09dm9pZCAwP3t9Omc7Yj1fLkMoYik7Zm9yKHZhciBoPWIubmV4dCgpOyFoLmRvbmU7aD1iLm5leHQoKSl7dmFyIGs9aC52YWx1ZTtoPWMuZ2V0KGspOyFlJiYoYS5BLmhhcyhrKXx8aC5nKXx8Z1trXXx8KGdba109ITAsaz1kIGluc3RhbmNlb2YKTWFwPyhrPWQuZ2V0KGspKT9BcnJheS5mcm9tKGspOltdOmRba10/T2JqZWN0LmtleXMoZFtrXSk6W10sb2coYSxoLmwuY29uY2F0KGspLGMsZCxlLGYsZyksZihoKSl9fSxuZz1mdW5jdGlvbihhLGIsYyxkLGUpe2U9ZT09PXZvaWQgMD8hMTplO3ZhciBmPVtdLGc9bmV3IEJiO2I9W2JdO2Zvcih2YXIgaD1mdW5jdGlvbihxLHApe2Zvcih2YXIgcj1bXSx0PTAsQT1NYXRoLmZsb29yKHEubGVuZ3RoL3ApKzEsRD0wO0Q8cDtEKyspe3ZhciBFPShEKzEpKkE7ci5wdXNoKHEuc2xpY2UodCxFKSk7dD1FfXJldHVybiByfSxrPWIuc2hpZnQoKTtrOyl7dmFyIGw9cGcoYSxrLCEhZSwhMCk7aWYobC5sZW5ndGg8PTJFMyl7aWYoaz1yZyhhLGssZSkpZi5wdXNoKGspLFBlKGcsay5nKX1lbHNlIGI9aChrLE1hdGguY2VpbChsLmxlbmd0aC8yRTMpKS5jb25jYXQoYik7az1iLnNoaWZ0KCl9dmFyIG49bmV3IEJiO2xnKGEsbik7TWUobixmdW5jdGlvbigpe3JldHVybiBzZyhhLGYsYyxkKX0pO05lKG4sCmZ1bmN0aW9uKCl7dmFyIHE9bmV3IHRnO3Euaj0hMDtxLmg9LTE7c2codGhpcyxbcV0sYyxkKX0sYSk7TWUoZyxmdW5jdGlvbigpe3JldHVybiBuLmcoKX0pO2cuZygpfSxyZz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9cGcoYSxiLCEoYz09PXZvaWQgMHx8IWMpKTthLkcucHVzaChkKTtiPV8uQyhiKTtmb3IoYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYS5BLmFkZChjLnZhbHVlKTtpZihhLkMpYT1fLndkKGRvY3VtZW50LCJTQ1JJUFQiKSxfLlNhKGEsXy5MYihkKSksYS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLGEuYXN5bmM9ITEsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtlbHNle3ZhciBlPW5ldyB0ZyxmPW5ldyBfLldmKGEuai5sZW5ndGg+MD9uZXcgSmI6dm9pZCAwKTthLmguTihmLCJzdWNjZXNzIiwoMCxfLnkpKGUuQixlLGYpKTthLmguTihmLCJlcnJvciIsKDAsXy55KShlLkEsZSxmKSk7YS5oLk4oZiwidGltZW91dCIsKDAsXy55KShlLkMsZSkpO1BmKGEuaCwKZiwicmVhZHkiLGYuZGlzcG9zZSwhMSxmKTtmLkI9M0U0O3VnKGEuSyxmdW5jdGlvbigpe2Yuc2VuZChkKTtyZXR1cm4gZS5nfSk7cmV0dXJuIGV9cmV0dXJuIG51bGx9LHNnPWZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZT0hMSxmLGc9ITEsaD0wO2g8Yi5sZW5ndGg7aCsrKXt2YXIgaz1iW2hdO2lmKCFmJiZrLmope2U9ITA7Zj1rLmg7YnJlYWt9ZWxzZSBrLmwmJihnPSEwKX1oPV8ud2EoYS5nKTsoZXx8ZykmJmYhPS0xJiYoYS5nLmxlbmd0aD0wKTtpZihlKWMmJmMoZik7ZWxzZSBpZihnKWQmJmQoKTtlbHNlIGZvcihhPTA7YTxiLmxlbmd0aDthKyspZD1iW2FdLHZnKGQubyxkLkNhKXx8YyYmYyg4MDAxKTsoZXx8ZykmJmYhPS0xJiZfLnZjKGgsZnVuY3Rpb24obCl7bC5jYW5jZWwoKX0pfTtrZy5wcm90b3R5cGUuTT1mdW5jdGlvbigpe3RoaXMuaC5kaXNwb3NlKCk7ZGVsZXRlIHNmLnZlcnNpb247Xy51LnByb3RvdHlwZS5NLmNhbGwodGhpcyl9OwprZy5wcm90b3R5cGUuRD1mdW5jdGlvbigpe3JldHVybiBHZih0aGlzLkIsImsiKX07CnZhciBwZz1mdW5jdGlvbihhLGIsYyxkKXtkPWQ9PT12b2lkIDA/ITE6ZDt2YXIgZT1fLkNiKGEuRi5tYXRjaChfLnJmKVszXXx8bnVsbCk7aWYoYS5qLmxlbmd0aD4wJiYhXy50YShhLmosZSkmJmUhPW51bGwmJndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSE9ZSl0aHJvdyBFcnJvcigiV2AiK2UpO3ZhciBmPWEuQjtlPW5ldyBFZjtlLmc9T2JqZWN0LmFzc2lnbih7fSxmLmcpO2Uuaj1mLmo7ZS5oPU9iamVjdC5hc3NpZ24oe30sZi5oKTtkZWxldGUgZS5nLm07ZGVsZXRlIGUuZy5leG07ZGVsZXRlIGUuZy5lZDtpZihiKXtmPV8uQyhiKTtmb3IodmFyIGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWlmKGc9Zy52YWx1ZSwhTmYudGVzdChnKSl0aHJvdyBFcnJvcigiTWAiK2cpO31JZihlLCJtIixiLmpvaW4oIiwiKSk7YS5vJiYoSWYoZSwiY2siLGEubyksYS5sJiZJZihlLCJycyIsYS5sKSk7SWYoZSwiZCIsIjAiKTtjJiYoZS5oLnp4PU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoKMjE0NzQ4MzY0OCkudG9TdHJpbmcoMzYpK01hdGguYWJzKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoyMTQ3NDgzNjQ4KV5EYXRlLm5vdygpKS50b1N0cmluZygzNikpO2E9ZS50b1N0cmluZygpO2QmJmEubGFzdEluZGV4T2YoIi8iLDApPT0wJiYoZT1kb2N1bWVudC5sb2NhdGlvbi5ocmVmLm1hdGNoKF8ucmYpLGQ9ZVsxXSxiPWVbMl0sYz1lWzNdLGU9ZVs0XSxmPSIiLGQmJihmKz1kKyI6IiksYyYmKGYrPSIvLyIsYiYmKGYrPWIrIkAiKSxmKz1jLGUmJihmKz0iOiIrZSkpLGE9ZithKTtyZXR1cm4gYX0sdmc9ZnVuY3Rpb24oYSxiKXt2YXIgYz0iIjtpZihhLmxlbmd0aD4xJiZhLmNoYXJBdChhLmxlbmd0aC0xKT09PSJcbiIpe3ZhciBkPWEubGFzdEluZGV4T2YoIlxuIixhLmxlbmd0aC0yKTtkPj0wJiYoYz1hLnN1YnN0cmluZyhkKzEsYS5sZW5ndGgtMSkpfWQ9Yy5sZW5ndGgtMTE7aWYoZD49MCYmYy5pbmRleE9mKCJHb29nbGUgSW5jLiIsZCk9PWR8fGMubGFzdEluZGV4T2YoIi8vIyBzb3VyY2VNYXBwaW5nVVJMPSIsCjApPT0wKXRyeXtjPXdpbmRvdzthPWErIlxyXG4vLyMgc291cmNlVVJMPSIrYjthPV8uS2IoYSk7dmFyIGU9Xy5RYShhKTt2YXIgZj1fLlJhKGUpO2MuZXZhbChmKT09PWYmJmMuZXZhbChmLnRvU3RyaW5nKCkpfWNhdGNoKGcpe3JldHVybiExfWVsc2UgcmV0dXJuITE7cmV0dXJuITB9LHdnPWZ1bmN0aW9uKGEpe3ZhciBiPV8uQ2IoYS5tYXRjaChfLnJmKVs1XXx8bnVsbCl8fCIiO2I9Xy5DYihLZihiKS5tYXRjaChfLnJmKVs1XXx8bnVsbCk7cmV0dXJuKGI9PT1udWxsPzA6UmVnRXhwKCIoL18vanMvKXwoL18vc3MvKSIsImciKS50ZXN0KGIpJiYvXC9rPS8udGVzdChiKSk/YTpudWxsfSx0Zz1mdW5jdGlvbigpe3RoaXMuZz1uZXcgQmI7dGhpcy5DYT10aGlzLm89IiI7dGhpcy5qPSExO3RoaXMuaD0wO3RoaXMubD0hMX07dGcucHJvdG90eXBlLkI9ZnVuY3Rpb24oYSl7dGhpcy5vPV8uaWcoYSk7dGhpcy5DYT1TdHJpbmcoYS5BKTt0aGlzLmcuZygpfTsKdGcucHJvdG90eXBlLkE9ZnVuY3Rpb24oYSl7dGhpcy5qPSEwO3RoaXMuaD1fLmhnKGEpO3RoaXMuZy5nKCl9O3RnLnByb3RvdHlwZS5DPWZ1bmN0aW9uKCl7dGhpcy5sPSEwO3RoaXMuZy5nKCl9O3ZhciBqZz1mdW5jdGlvbigpe3RoaXMuZz0wO3RoaXMuaD1bXX0sdWc9ZnVuY3Rpb24oYSxiKXthLmgucHVzaChiKTt4ZyhhKX0seGc9ZnVuY3Rpb24oYSl7Zm9yKDthLmc8NSYmYS5oLmxlbmd0aDspeWcoYSxhLmguc2hpZnQoKSl9LHlnPWZ1bmN0aW9uKGEsYil7YS5nKys7TWUoYigpLGZ1bmN0aW9uKCl7dGhpcy5nLS07eGcodGhpcyl9LGEpfTt2YXIgemc9bmV3IERmKCExKSxBZz1kb2N1bWVudC5sb2NhdGlvbi5ocmVmOwpxZih7ZmxhZ3M6e2RtbDp6Z30saW5pdGlhbGl6ZTpmdW5jdGlvbihhKXt2YXIgYj16Zy5nZXQoKSxjPSIiLGQ9IiI7d2luZG93JiZ3aW5kb3cuX0ZfY3NzUm93S2V5JiYoYz13aW5kb3cuX0ZfY3NzUm93S2V5LHdpbmRvdy5fRl9jb21iaW5lZFNpZ25hdHVyZSYmKGQ9d2luZG93Ll9GX2NvbWJpbmVkU2lnbmF0dXJlKSk7aWYoYyYmdHlwZW9mIHdpbmRvdy5fRl9pbnN0YWxsQ3NzIT09ImZ1bmN0aW9uIil0aHJvdyBFcnJvcigiVSIpO3ZhciBlLGY9Xy52Ll9GX2pzVXJsO2YmJihlPXdnKGYpKTshZSYmKGY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJhc2UtanMiKSkmJihlPWYuc3JjP2Yuc3JjOmYuZ2V0QXR0cmlidXRlKCJocmVmIiksZT13ZyhlKSk7ZXx8KGU9d2coQWcpKTtlfHwoZT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IiksZT13ZyhlW2UubGVuZ3RoLTFdLnNyYykpO2lmKCFlKXRocm93IEVycm9yKCJWIik7ZT1uZXcga2coZSk7YyYmKGUubz1jKTsKZCYmKGUubD1kKTtlLkM9YjtiPWphKCk7Yi5PPWU7Yi5YZighMCk7Yj1qYSgpO2Iuc2UoYSk7YS5qKGIpfX0pOwpfLl9Nb2R1bGVNYW5hZ2VyX2luaXRpYWxpemU9ZnVuY3Rpb24oYSxiKXtpZighXy5kYSl7aWYoIV8uaGEpcmV0dXJuO18uaWEoKX1fLmRhLnFlKGEsYil9OwpfLl9Nb2R1bGVNYW5hZ2VyX2luaXRpYWxpemUoJ2IvbjczcXdmL1VVSnFWZS9NcEp3WmMvZWxfY29uZi9lbF9tYWluX2Nzcy9zeTEvc3kyOjYvc3kzOjcvc3k0OjYvZWxfbWFpbjo1LDgsOS9jb3JzcHJveHkvd2Vic2l0ZV9lcnJvci9uYXZpZ2F0aW9udWk6Ny9waGlzaGluZ19wcm90ZWN0aW9uOjgvX3N0YW06OScsWydlbF9jb25mJ10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmxhKCJlbF9jb25mIik7CnZhciBDZztfLl9leHBvcnRWZXJzaW9uPWZ1bmN0aW9uKGEpe18ucmMoImdvb2dsZS50cmFuc2xhdGUudiIsYSl9O18uX2dldENhbGxiYWNrRnVuY3Rpb249ZnVuY3Rpb24oYSl7cmV0dXJuIF8ua2MoYSl9O0NnPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07Ynx8KGI9ZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhlYWQiKSkpO2IuYXBwZW5kQ2hpbGQoYSl9O18uX2xvYWRKcz1mdW5jdGlvbihhKXt2YXIgYj1fLndkKGRvY3VtZW50LCJTQ1JJUFQiKTtiLnR5cGU9InRleHQvamF2YXNjcmlwdCI7Yi5jaGFyc2V0PSJVVEYtOCI7Xy5TYShiLF8uTGIoYSkpO0NnKGIpfTsKXy5fbG9hZENzcz1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7Yi50eXBlPSJ0ZXh0L2NzcyI7Yi5yZWw9InN0eWxlc2hlZXQiO2IuY2hhcnNldD0iVVRGLTgiO2IuaHJlZj1hO0NnKGIpfTtfLl9pc05TPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgiLiIpO2Zvcih2YXIgYj13aW5kb3csYz0wO2M8YS5sZW5ndGg7KytjKWlmKCEoYj1iW2FbY11dKSlyZXR1cm4hMTtyZXR1cm4hMH07Xy5fc2V0dXBOUz1mdW5jdGlvbihhKXthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGI9d2luZG93LGM9MDtjPGEubGVuZ3RoOysrYyliLmhhc093blByb3BlcnR5P2IuaGFzT3duUHJvcGVydHkoYVtjXSk/Yj1iW2FbY11dOmI9YlthW2NdXT17fTpiPWJbYVtjXV18fChiW2FbY11dPXt9KTtyZXR1cm4gYn07Xy5yYygiX2V4cG9ydFZlcnNpb24iLF8uX2V4cG9ydFZlcnNpb24pO18ucmMoIl9nZXRDYWxsYmFja0Z1bmN0aW9uIixfLl9nZXRDYWxsYmFja0Z1bmN0aW9uKTsKXy5yYygiX2xvYWRKcyIsXy5fbG9hZEpzKTtfLnJjKCJfbG9hZENzcyIsXy5fbG9hZENzcyk7Xy5yYygiX2lzTlMiLF8uX2lzTlMpO18ucmMoIl9zZXR1cE5TIixfLl9zZXR1cE5TKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciYmdHlwZW9mIGRvY3VtZW50LnJlYWR5U3RhdGU9PSJ1bmRlZmluZWQiJiZ3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZnVuY3Rpb24oKXtkb2N1bWVudC5yZWFkeVN0YXRlPSJjb21wbGV0ZSJ9LCExKTsKXy5tYSgpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KfSkuY2FsbCh0aGlzLHRoaXMuZGVmYXVsdF90cik7Ci8vIEdvb2dsZSBJbmMuCgovLyMgc291cmNlVVJMPS9fL3RyYW5zbGF0ZV9odHRwL18vanMvaz10cmFuc2xhdGVfaHR0cC50ci5uby5zY3JuWTZRMl95dy5PL2FtPUJJQUFCdy9kPTEvcnM9QU44U1BmcTFLbFVGcWVpRnZCTXVkZHV6R3RiMzlRV1h1dy9tPWVsX2NvbmYKICAgIC8vIENvbmZpZ3VyZSBDb25zdGFudHMKICAgIChmdW5jdGlvbigpewogICAgICBsZXQgZ3RDb25zdEV2YWxTdGFydFRpbWUgPSBuZXcgRGF0ZSgpOwogICAgICBpZiAoX2lzTlMoJ2dvb2dsZS50cmFuc2xhdGUuRWxlbWVudCcpKXtyZXR1cm59CgogICAgICAoZnVuY3Rpb24oKXsKICAgICAgICBjb25zdCBjPV9zZXR1cE5TKCdnb29nbGUudHJhbnNsYXRlLl9jb25zdCcpOwoKICAgICAgICBjLl9jZXN0ID0gZ3RDb25zdEV2YWxTdGFydFRpbWU7CiAgICAgICAgZ3RDb25zdEV2YWxTdGFydFRpbWUgPSB1bmRlZmluZWQ7IC8vIGhpZGUgdGhpcyBldmFsIHN0YXJ0IHRpbWUgY29uc3RhbnQKICBjLl9jbD0nbm8nOyBjLl9jdWM9J2dvb2dsZVRyYW5zbGF0ZUVsZW1lbnRJbml0JzsgYy5fY2VmPSdceDViMCwxLDAsXHg1Ylx4MjJlc19lblx4MjIsXHgyMmVuX3poXHgyMixceDIyZW5fZGVceDIyLFx4MjJlbl9qYVx4MjIsXHgyMmVuX2VzXHgyMixceDIyZGVfZW5ceDIyXHg1ZCxudWxsLFx4NWIwLDMsMTAwLFx4NWJceDIyZW5faGlceDIyLFx4MjJoaV9lblx4MjIsXHgyMmVuX2VzXHgyMixceDIyZXNfZW5ceDIyLFx4MjJlbl9kZVx4MjIsXHgyMmRlX2VuXHgyMixceDIyZW5femhceDIyLFx4MjJlbl9qYVx4MjIsXHgyMmVuX2FyXHgyMixceDIyZW5faWRceDIyXHg1ZFx4NWQsMCwxLDBceDVkJzsgYy5fY2FjPScnOyBjLl9jYW09Jyc7IGMuX2NlbnY9J3Byb2QnO2MuX2NsbD0nSU5GTyc7IGMuX2NnYWs9Jyc7IGMuX2N0a2s9JzQ5NTg2OS4yNzA0ODE1MTA0JzsgY29uc3QgaD0ndHJhbnNsYXRlLmdvb2dsZWFwaXMuY29tJzsgY29uc3Qgb3BoPSd0cmFuc2xhdGUtcGEuZ29vZ2xlYXBpcy5jb20nOyBjb25zdCBzPSdodHRwcycrJzovLyc7IGMuX3BhaD1oOyBjLl9wYXM9czsgY29uc3QgYj1zKyd0cmFuc2xhdGUuZ29vZ2xlYXBpcy5jb20nOyBjb25zdCBzdGF0aWNQYXRoID0gJy90cmFuc2xhdGVfc3RhdGljLyc7IGMuX3BjaT1iK3N0YXRpY1BhdGgrJ2ltZy90ZV9jdHJsMy5naWYnOyBjLl9wbWk9YitzdGF0aWNQYXRoKydpbWcvbWluaV9nb29nbGUucG5nJzsgYy5fcGJpPWIrc3RhdGljUGF0aCsnaW1nL3RlX2JrLmdpZic7IGMuX3BsaT1iK3N0YXRpY1BhdGgrJ2ltZy9sb2FkaW5nLmdpZic7IGMuX3BzPSdodHRwczpcL1wvd3d3LmdzdGF0aWMuY29tXC9fXC90cmFuc2xhdGVfaHR0cFwvX1wvc3NcL2tceDNkdHJhbnNsYXRlX2h0dHAudHIuQjdEaWg5SnlqbncuTC5GNC5PXC9hbVx4M2RCSUFBQndcL2RceDNkMFwvcnNceDNkQU44U1BmcEMwNHZycnpRWGdzX1RDTTVFdHJ1d2ZQek50UVwvbVx4M2RlbF9tYWluX2Nzcyc7IGMuX3BsbGE9b3BoKydcL3YxXC9zdXBwb3J0ZWRMYW5ndWFnZXMnOyBjLl9wdWg9J3RyYW5zbGF0ZS5nb29nbGUuY29tJztjLl9jbmFsPXt9O19sb2FkQ3NzKGMuX3BzKTsgX2xvYWRKcygnaHR0cHM6XC9cL3RyYW5zbGF0ZS5nb29nbGVhcGlzLmNvbVwvX1wvdHJhbnNsYXRlX2h0dHBcL19cL2pzXC9rXHgzZHRyYW5zbGF0ZV9odHRwLnRyLm5vLnNjcm5ZNlEyX3l3Lk9cL2FtXHgzZEJJQUFCd1wvZFx4M2QxXC9leG1ceDNkZWxfY29uZlwvZWRceDNkMVwvcnNceDNkQU44U1BmcTFLbFVGcWVpRnZCTXVkZHV6R3RiMzlRV1h1d1wvbVx4M2RlbF9tYWluJyk7X2V4cG9ydFZlcnNpb24oJ1RFXzIwMjYwNzIyJyk7CiAgICAgICAgfSkoKTsKICAgICAgfSkoKTsKICA="}},"time_used":165,"timings":{"blocked":-1,"dns":3,"connect":15,"send":0,"wait":113,"receive":0,"ssl":34},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/metform/public/assets/css/style.css?ver=3.8.2","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.018Z","timestamp":1785130090018,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/metform/public/assets/css/style.css?ver=3.8.2 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=d28fgKgAVB3VsUYcPEnxSLSERMO6znTSjruaDC2N5w9bkJHBCio3Yt3doOHicIfE5tvCdeaGK3l5PUTzrqmyIVa1%2FTPQWtqsIehJ890IJIB5Tqf7HMRS%2BqA4e0Work02t98afkdS9Q%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d369e41120a-OSL\r\ncontent-length: 4882\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":31175,"size_decoded":5692,"mime_type":"text/css","magic":"ASCII text","md5":"781ce4abf7b3c5db96d449fe1322e382","sha1":"f3743f0657e7e5bab1f8d665d341af7fab160185","sha256":"27ca2fa9087e5ca8d4970b1feb5ad0537ec71da9798692d42169ab5e0dd6caa6","sha512":"9dd5e5e5c456e91e1c843cd5bf7c93d771e4ea18b6ab93b739985a1fbba9f56cc4349edfa334d59e04d8731c46d1b54e6030a86b611b8f627f1b2e2eba81b4d0","ssdeep":"384:EwVl7aNkjFVfEO9O9jFp6FBnFyQj+GYgrQ2MUmItAF:lJjFV8O9sFoFBnFyQj+irwUmIw","tlshash":"54e244258d631b80701f4e7d17ebd74826248093d907cdb97acaa6488f8e6554bb3f8a","first_seen":"2026-07-27T03:56:42.585285Z","last_seen":"2026-07-27T05:30:59.82664Z","times_seen":6,"resource_available":false,"data":"QC13ZWJraXQta2V5ZnJhbWVzIG1ldGZvcm0tcmVzcG9uc2VPcGVuIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcgogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcgogICAgfQp9CgpAa2V5ZnJhbWVzIG1ldGZvcm0tcmVzcG9uc2VPcGVuIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcgogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcgogICAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgbWV0Zm9ybS1yZXNwb25zZUNsb3NlIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXIKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGV5KDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGV5KDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyCiAgICB9Cn0KCkBrZXlmcmFtZXMgbWV0Zm9ybS1yZXNwb25zZUNsb3NlIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXIKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGV5KDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGV5KDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyCiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBtZXRmb3JtLXpvb20tb3V0LXplcm8gewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkKICAgIH0KfQoKQGtleWZyYW1lcyBtZXRmb3JtLXpvb20tb3V0LXplcm8gewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIG1ldGZvcm0tem9vbS1pbi1mdWxsIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpCiAgICB9Cn0KCkBrZXlmcmFtZXMgbWV0Zm9ybS16b29tLWluLWZ1bGwgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKICAgIH0KfQoKLm1mLW1haW4tcmVzcG9uc2Utd3JhcFtkYXRhLXNob3c9IjEiXSAubWYtcmVzcG9uc2UtbXNnIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAuNXM7CiAgICBhbmltYXRpb24tZHVyYXRpb246IC41czsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IG1ldGZvcm0tcmVzcG9uc2VPcGVuOwogICAgYW5pbWF0aW9uLW5hbWU6IG1ldGZvcm0tcmVzcG9uc2VPcGVuCn0KCi5tZi1tYWluLXJlc3BvbnNlLXdyYXBbZGF0YS1zaG93PSIwIl0gLm1mLXJlc3BvbnNlLW1zZyB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogLjVzOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuNXM7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBtZXRmb3JtLXJlc3BvbnNlQ2xvc2U7CiAgICBhbmltYXRpb24tbmFtZTogbWV0Zm9ybS1yZXNwb25zZUNsb3NlCn0KCi5tZi1tYWluLXJlc3BvbnNlLXdyYXAgLm1mLXJlc3BvbnNlLW1zZyB7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2MzYzJjMgp9CgoubWYtbWFpbi1yZXNwb25zZS13cmFwOm5vdCgubWZfcHJvX2FjdGl2YXRlZCkgLm1mLXJlc3BvbnNlLW1zZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5tZi1jbG9zZS10aGlzLWZvcm0gewogICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IC42czsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogLjZzOwogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogbWV0Zm9ybS16b29tLW91dC16ZXJvOwogICAgYW5pbWF0aW9uLW5hbWU6IG1ldGZvcm0tem9vbS1vdXQtemVybwp9CgoubWYtY2xvc2UtdGhpcy1mb3JtPmgyIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAuNXM7CiAgICBhbmltYXRpb24tZHVyYXRpb246IC41czsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IG1ldGZvcm0tem9vbS1pbi1mdWxsOwogICAgYW5pbWF0aW9uLW5hbWU6IG1ldGZvcm0tem9vbS1pbi1mdWxsCn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi10aW1lLWlucHV0W3R5cGU9dGltZV06bm90KC52YWx1ZS1mb3VuZCk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGF0dHIocGxhY2Vob2xkZXIpOwogICAgcGFkZGluZy1yaWdodDogMnB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi10aW1lLWlucHV0W3R5cGU9dGltZV06Zm9jdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnICFpbXBvcnRhbnQKfQoKQHN1cHBvcnRzICgtd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZSkgewogICAgLm1mLWlucHV0LXdyYXBwZXIgLm1mLXRpbWUtaW5wdXQgewogICAgICAgIG1pbi13aWR0aDogMTAwJTsKICAgICAgICBtaW4taGVpZ2h0OiA0NXB4OwogICAgICAgIGhlaWdodDogNDVweCAhaW1wb3J0YW50CiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWNoZWNrYm94IC5tZi1pbnB1dC1sYWJlbCB7CiAgICBtYXJnaW4tYm90dG9tOiAtNXB4ICFpbXBvcnRhbnQKfQoKI2VsZW1lbnRvciAubWYtYnRuLXdyYXBlciBhLm1ldGZvcm0tYnRuIHsKICAgIGJhY2tncm91bmQ6ICMzMzdhYjc7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGhlaWdodDogMjAlOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgcGFkZGluZzogMTBweAp9CgoubWYtZm9ybS13cmFwcGVyIHNlY3Rpb24sCi5zaW5nbGUtbWV0Zm9ybS1mb3JtIHNlY3Rpb24gewogICAgcGFkZGluZy10b3A6IDA7CiAgICBwYWRkaW5nLWJvdHRvbTogMAp9CgoubWYtaW5wdXQtc3dpdGNoLWNvbnRyb2wgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5tZi1pbnB1dC1zd2l0Y2gtY29udHJvbD5pbnB1dFt0eXBlPWNoZWNrYm94XSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLm1mLWlucHV0LWNvbnRyb2wgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogLTE7CiAgICBvcGFjaXR5OiAwCn0KCi5tZi1pbnB1dC1zd2l0Y2ggLm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtZGlzYWJsZSk7CiAgICB3aWR0aDogNTVweDsKICAgIGhlaWdodDogMjVweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZGVkZWQ7CiAgICBsZWZ0OiAwOwogICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGZvbnQtc2l6ZTogMTBweDsKICAgIHBhZGRpbmc6IDNweDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjRzOwogICAgdHJhbnNpdGlvbjogYWxsIC40czsKICAgIGZsb2F0OiByaWdodDsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCn0KCi5tZXRmb3JtLWZvcm0tY29udGVudCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAwOwogICAgb3ZlcmZsb3cteDogY2xpcAp9CgoubWV0Zm9ybS1mb3JtLWNvbnRlbnQgLm1ldGZvcm0tZm9ybS1tYWluLXdyYXBwZXIgLmUtY29udGFpbmVyIHsKICAgIGlzb2xhdGlvbjogdW5zZXQKfQoKLm1mLXRleHQtZWRpdG9yIC5xbC1jb250YWluZXIucWwtc25vdyB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjCn0KCl86Oi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhLApfOmZ1dHVyZSwKOnJvb3QgLm1ldGZvcm0tZm9ybS1jb250ZW50IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDA7CiAgICBvdmVyZmxvdy14OiBpbmhlcml0Cn0KCi5tZi1tdWx0aXN0ZXAtY29udGFpbmVyIC5lbGVtZW50b3ItdG9wLXNlY3Rpb24gLmVsZW1lbnRvci1pbm5lci1zZWN0aW9uIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogaW5oZXJpdAp9CgoubWYtbXVsdGlzdGVwLWNvbnRhaW5lciAuZWxlbWVudG9yLXRvcC1zZWN0aW9uIC5lbGVtZW50b3ItaW5uZXItY29sdW1uIC5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQKfQoKLm1mLW11bHRpc3RlcC1jb250YWluZXIgLmVsZW1lbnRvci10b3Atc2VjdGlvbiAuZWxlbWVudG9yLWlubmVyLWNvbHVtbiAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgbWFyZ2luOiAxMHB4IDAKfQoKLm1mLW11bHRpc3RlcC1jb250YWluZXIgLmUtY29uIC5lLWNvbi1pbm5lciwKLm1mLW11bHRpc3RlcC1jb250YWluZXIgLmUtY29uIC5lLWNvbnRhaW5lci0tcm93LAoubWYtbXVsdGlzdGVwLWNvbnRhaW5lciAuZS1jb250YWluZXItLWNvbHVtbiAuZS1jb24taW5uZXIsCi5tZi1tdWx0aXN0ZXAtY29udGFpbmVyIC5lLWNvbnRhaW5lci0tY29sdW1uIC5lLWNvbnRhaW5lci0tcm93IHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogaW5oZXJpdAp9CgoubWYtcmVzcG9uc2UtbXNnLXdyYXAgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBoZWlnaHQgLjQ1cywgb3BhY2l0eSAuNDVzLCB2aXNpYmlsaXR5IC40NXM7CiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgLjQ1cywgb3BhY2l0eSAuNDVzLCB2aXNpYmlsaXR5IC40NXM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5tZi1yZXNwb25zZS1tc2ctd3JhcFtkYXRhLXNob3c9IjAiXSB7CiAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgIG9wYWNpdHk6IDA7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4KfQoKLm1mLXJlc3BvbnNlLW1zZy13cmFwW2RhdGEtc2hvdz0iMSJdIHsKICAgIGhlaWdodDogYXV0bzsKICAgIG9wYWNpdHk6IDE7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgbWFyZ2luLWJvdHRvbTogMjBweAp9CgoubWYtcmVzcG9uc2UtbXNnIHsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDE1cHggMzRweDsKICAgIGhlaWdodDogMTAwJQp9Cgoud2YtZXJyb3ItcmVzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGQ3ZGE7CiAgICBib3JkZXItY29sb3I6ICNmNWM2Y2IKfQoKLm1mLXN1Y2Nlc3MtaWNvbiwKLndmLWVycm9yLXJlcyAubWYtYWxlcnQtaWNvbiB7CiAgICBjb2xvcjogIzcyMWMyNDsKICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIG1hcmdpbi1ib3R0b206IDVweAp9CgoubWYtc3VjY2Vzcy1pY29uIHsKICAgIGNvbG9yOiAjMTAxMDEwCn0KCi5tZi1yZXNwb25zZS1tc2cgcCB7CiAgICBmb250LXNpemU6IDE3cHg7CiAgICBsaW5lLWhlaWdodDogMjBweDsKICAgIGNvbG9yOiAjMTAxMDEwOwogICAgbWFyZ2luLWJvdHRvbTogMAp9Cgoud2YtZXJyb3ItcmVzIHAgewogICAgY29sb3I6ICM3MjFjMjQKfQoKLmN1c3RvbS1maWxlLWxhYmVsLAouY3VzdG9tLXNlbGVjdCwKLm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCAtd2Via2l0LWJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQKfQoKLm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMnB4OwogICAgbGVmdDogMnB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTRweDsKICAgIGhlaWdodDogMTRweDsKICAgIGNvbnRlbnQ6ICIiOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2FkYjViZDsKICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjRzOwogICAgdHJhbnNpdGlvbjogYWxsIC40czsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgoubWYtaW5wdXQtc3dpdGNoIGxhYmVsLm1mLWlucHV0LWNvbnRyb2wtbGFiZWwgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbjogMAp9CgoubWYtaW5wdXQtY29udHJvbDpjaGVja2Vkfi5tZi1pbnB1dC1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogICAgY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICMwMDdiZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogICAgY29udGVudDogYXR0cihkYXRhLWVuYWJsZSk7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAp9CgoubWYtaW5wdXQtc3dpdGNoIC5tZi1pbnB1dC1jb250cm9sOmNoZWNrZWR+Lm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKYm9keS50aGVtZS10d2VudHl0d2VudHlvbmUgLm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgIGxlZnQ6IDEycHgKfQoKYm9keS50aGVtZS10d2VudHl0d2VudHlvbmUgLm1mLWlucHV0LXN3aXRjaCAubWYtaW5wdXQtY29udHJvbDpjaGVja2Vkfi5tZi1pbnB1dC1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgICBsZWZ0OiBjYWxjKDU1cHggLSAoKDU1cHggLyAyKSAtIDdweCkgKyA4cHgpICFpbXBvcnRhbnQKfQoKLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0LWhlbHAgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IC45ZW07CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBvcGFjaXR5OiAuNzsKICAgIGNsZWFyOiBib3RoOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgoubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQgewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAxMnB4OwogICAgaGVpZ2h0OiBhdXRvOwogICAgYm9yZGVyLXdpZHRoOiAxcHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLWNvbG9yOiAjZWFlYWVhOwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgYmFja2dyb3VuZDogMCAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjJzIGxpbmVhcjsKICAgIHRyYW5zaXRpb246IGFsbCAuMnMgbGluZWFyOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgbGluZS1oZWlnaHQ6IDIxcHg7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Cn0KCi5tZi1mb3JtLXdyYXBwZXIgLm1ldGZvcm0tZm9ybS1jb250ZW50IC5tZXRmb3JtLWZvcm0tbWFpbi13cmFwcGVyIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dCB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmUKfQoKLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0OmZvY3VzLAoubWYtaW5wdXQtd3JhcHBlci5tZi1maWVsZC1lcnJvciAubWYtaW5wdXQsCi5tZi1pbnB1dC13cmFwcGVyLm1mLWZpZWxkLWVycm9yIC5tZi1pbnB1dDpmb2N1cyB7CiAgICBvdXRsaW5lOiAwCn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM0Mjg1ZjQ3OAp9CgoubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiAjYzljMWMxOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc2l6ZTogMTRweAp9CgoubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICNjOWMxYzE7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiAxNHB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogI2M5YzFjMTsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICNjOWMxYzE7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiAxNHB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgY29sb3I6ICNjOWMxYzE7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiAxNHB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogI2M5YzFjMTsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICNjOWMxYzE7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiAxNHB4Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci1mb3JtLWdyb3VwPi5hdHRyLWNvbnRyb2wtbGFiZWwsCiAgICAuYXR0ci1mb3JtLWdyb3VwPi5tZi1pbnB1dCwKICAgIC5tZi1pbnB1dC13cmFwcGVyPi5tZi1jYXB0Y2hhLWlucHV0LXdyYXBwZXIsCiAgICAubWYtaW5wdXQtd3JhcHBlcj4ubWYtY2hlY2tib3gsCiAgICAubWYtaW5wdXQtd3JhcHBlcj4ubWYtaW1hZ2Utc2VsZWN0LAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLWlucHV0LWxhYmVsLAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLWlucHV0Om5vdCgubWYtbGVmdC1wYXJlbnQpLAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLXBheW1lbnQtbWV0aG9kLAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLXJhZGlvLAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLXJlcGVhdGVyLWZpZWxkLWxhYmVsLAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLXNpZ25hdHVyZSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWluLXdpZHRoOiAxMDAlCiAgICB9Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC1sYWJlbCwKLm1mLXJlcGVhdGVyLWZpZWxkLWxhYmVsIHsKICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICBjb2xvcjogIzAwMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxNnB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dCwKLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0LWxhYmVsIHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKZGl2Lm1mLWlucHV0LXdyYXBwZXI+dGV4dGFyZWEubWYtaW5wdXQgewogICAgcGFkZGluZzogMTVweAp9CgouaXJzLS1yb3VuZCAuaXJzLW1heCwKLmlycy0tcm91bmQgLmlycy1taW4gewogICAgZGlzcGxheTogbm9uZQp9CgouaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm11bHRpLW9wdGlvbi1pbnB1dC10eXBlIHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKLm1mLWNoZWNrYm94LW9wdGlvbiBpbnB1dFt0eXBlPWNoZWNrYm94XSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLm1mLWNoZWNrYm94LW9wdGlvbjpub3QoLmRpc2FibGVkKSBsYWJlbCB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm1mLWNoZWNrYm94LW9wdGlvbiBpbnB1dFt0eXBlPWNoZWNrYm94XStzcGFuOjpiZWZvcmUgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgY29udGVudDogIlxmMGM4IjsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGJvcmRlcjogbm9uZTsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGNvbG9yOiAjNWY3YmZmOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIHdpZHRoOiAyNXB4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0b3A6IDJweAp9CgoubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9Y2hlY2tib3hdK3NwYW4gewogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgoubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrc3Bhbjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YSI7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXI6IG5vbmU7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBjb2xvcjogIzVmN2JmZgp9CgoubWYtcmFkaW8tb3B0aW9uIGlucHV0W3R5cGU9cmFkaW9dIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9CgoubWYtY2hlY2tib3gtb3B0aW9uLAoubWYtcmFkaW8tb3B0aW9uIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHgKfQoKLm1mLXJhZGlvLW9wdGlvbiBpbnB1dFt0eXBlPXJhZGlvXStzcGFuOjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTExIjsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGJvcmRlcjogbm9uZTsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGNvbG9yOiAjNWY3YmZmOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIHdpZHRoOiAyNXB4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0b3A6IDJweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgoubWYtcmFkaW8tb3B0aW9uIGlucHV0W3R5cGU9cmFkaW9dK3NwYW4gewogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgoubWYtcmFkaW8tb3B0aW9uIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrc3Bhbjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1OCI7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXI6IG5vbmU7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBjb2xvcjogIzVmN2JmZgp9CgoubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQtc2VsZWN0IHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudAp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX2NvbnRyb2wgewogICAgbWluLWhlaWdodDogMDsKICAgIHBhZGRpbmc6IDEycHg7CiAgICBib3JkZXItd2lkdGg6IDA7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYWVhZWE7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX2NvbnRyb2w6aG92ZXIgewogICAgYm9yZGVyOiAxcHggc29saWQgI2VhZWFlYQp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX2luZGljYXRvci1zZXBhcmF0b3IgewogICAgZGlzcGxheTogbm9uZQp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX3ZhbHVlLWNvbnRhaW5lciwKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X192YWx1ZS1jb250YWluZXIgaW5wdXQgewogICAgcGFkZGluZzogMAp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgY29sb3I6IGluaGVyaXQKfQoKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19pbmRpY2F0b3JzIHsKICAgIG1hcmdpbi1yaWdodDogMnB4Cn0KCi5tZi1pbnB1dC1tdWx0aXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX2luZGljYXRvcnMgewogICAgbWFyZ2luLXJpZ2h0OiAxNXB4Cn0KCi5tZi1pbnB1dC1tdWx0aXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX2Ryb3Bkb3duLWluZGljYXRvciwKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19pbmRpY2F0b3IgewogICAgcGFkZGluZzogMDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItd2lkdGg6IDVweCA0cHggMDsKICAgIGJvcmRlci1jb2xvcjogY3VycmVudENvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50Cn0KCi5tZi1pbnB1dC1tdWx0aXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX2NvbnRyb2wtLW1lbnUtaXMtb3BlbiAubWZfbXVsdGlzZWxlY3RfX2Ryb3Bkb3duLWluZGljYXRvciwKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19jb250cm9sLS1tZW51LWlzLW9wZW4gLm1mX3NlbGVjdF9faW5kaWNhdG9yIHsKICAgIGJvcmRlci13aWR0aDogMCA0cHggNXB4OwogICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCBjdXJyZW50Q29sb3IKfQoKLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fZHJvcGRvd24taW5kaWNhdG9yPnN2ZywKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19pbmRpY2F0b3I+c3ZnIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19tZW51IHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luOiAwOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5tZi1pbnB1dC1zZWxlY3QgLm1mX3NlbGVjdF9fbWVudT5kaXYgewogICAgb3ZlcmZsb3cteDogaGlkZGVuCn0KCi5tZi1pbnB1dC1zZWxlY3QgLm1mX3NlbGVjdF9fbWVudS1saXN0IHsKICAgIHBhZGRpbmc6IDAKfQoKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19vcHRpb24gewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyOiAxcHggc29saWQgI2VhZWFlYQp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX29wdGlvbi5tZl9zZWxlY3RfX29wdGlvbi0taXMtZm9jdXNlZCwKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19vcHRpb24ubWZfc2VsZWN0X19vcHRpb24tLWlzLXNlbGVjdGVkLAoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX29wdGlvbjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwCn0KCi5tZi1pbnB1dC1zZWxlY3QgLm1mX3NlbGVjdF9fY29udHJvbC5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgewogICAgYm9yZGVyLWNvbG9yOiAjNDI4NWY0Nzg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0Cn0KCi5tZi1pbnB1dC5tZi1pbnB1dC1zZWxlY3QgewogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhCn0KCi5tZi1pbnB1dC1zZWxlY3QgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRvcDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyMnB4KTsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICB0cmFuc2Zvcm06IG5vbmUKfQoKLm1mLWlucHV0LXdyYXBwZXIgc2VsZWN0Lm1mLWlucHV0LWRyb3Bkb3duIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBhZGRpbmc6IDE1cHggMjVweDsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgIC1vLWFwcGVhcmFuY2U6IG5vbmU7CiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgICBhcHBlYXJhbmNlOiBub25lOwogICAgYm9yZGVyLXdpZHRoOiAxcHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLWNvbG9yOiAjZWFlYWVhCn0KCi5tZi1pbnB1dC13cmFwcGVyIHNlbGVjdC5tZi1pbnB1dC1kcm9wZG93biBvcHRpb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGNvbG9yOiAjMjIyOwogICAgZm9udC1zaXplOiAxNXB4Cn0KCi5tZi1pbnB1dC1zd2l0Y2gtY29udHJvbC5tZi1pbnB1dC1zd2l0Y2gubWYtaW5wdXQgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICB2ZXJ0aWNhbC1hbGlnbjogLXdlYmtpdC1iYXNlbGluZS1taWRkbGU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAwCn0KCi5tZi1pbnB1dC13cmFwcGVyIC5yYW5nZS1zbGlkZXIgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDEwMCUKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgewogICAgd2lkdGg6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmNGY5Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwOjpiZWZvcmUsCi5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXI6OmJlZm9yZSwKLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2Utc2VsZWN0ZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzFmYjc4Nwp9CgoubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWZiNzg3OwogICAgYm9yZGVyOiAxcHggc29saWQgIzFmYjc4NzsKICAgIHRvcDogaW5oZXJpdDsKICAgIGJvdHRvbTogMThweDsKICAgIGxlZnQ6IC01MCU7CiAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkKfQoKLm1ldGZvcm0tYnRuIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0Mjg1ZjQ7CiAgICBib3JkZXI6IG5vbmU7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMTZweCA0MHB4OwogICAgZm9udC1zaXplOiAxNnB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCA1cHggMCByZ2JhKDY2LCAxMzMsIDI0NCwgLjMpOwogICAgYm94LXNoYWRvdzogMCA1cHggNXB4IDAgcmdiYSg2NiwgMTMzLCAyNDQsIC4zKTsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjRzOwogICAgdHJhbnNpdGlvbjogYWxsIC40czsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKLm1ldGZvcm0tYnRuOmZvY3VzLAoubWV0Zm9ybS1idG46aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzQyODVmNDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIG91dGxpbmU6IDAKfQoKYnV0dG9uLm1ldGZvcm0tYnRuLApidXR0b24ubWV0Zm9ybS1idG46bm90KC50b2dnbGUpIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0Mjg1ZjQKfQoKYnV0dG9uLm1ldGZvcm0tYnRuOmZvY3VzLApidXR0b24ubWV0Zm9ybS1idG46aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzQyODVmNAp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLm1mLWJ0bi0tbW9iaWxlLWp1c3RpZnkgLm1ldGZvcm0tYnRuIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAubWYtYnRuLS10YWJsZXQtanVzdGlmeSAubWV0Zm9ybS1idG4gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjVweCkgewogICAgLm1mLWJ0bi0tanVzdGlmeSAubWV0Zm9ybS1idG4gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCi5tZXRmb3JtLXN1Ym1pdC1idG4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMAp9CgoubWV0Zm9ybS1zdWJtaXQtYnRuOjphZnRlciwKLm1ldGZvcm0tc3VibWl0LWJ0bjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgd2lkdGg6IDIycHg7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBtYXJnaW46IC0xMXB4IDAgMCAtMTFweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6IGN1cnJlbnRDb2xvcjsKICAgIGJvcmRlci13aWR0aDogMDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGVhc2U7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zcyBlYXNlCn0KCi5tZXRmb3JtLXN1Ym1pdC1idG5bZGlzYWJsZWRdOjphZnRlciwKLm1ldGZvcm0tc3VibWl0LWJ0bltkaXNhYmxlZF06OmJlZm9yZSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAuMTVzOwogICAgdHJhbnNpdGlvbi1kZWxheTogLjE1cwp9CgoubWV0Zm9ybS1zdWJtaXQtYnRuOjpiZWZvcmUgewogICAgYm9yZGVyLXdpZHRoOiAycHgKfQoKLm1ldGZvcm0tc3VibWl0LWJ0bltkaXNhYmxlZF06OmJlZm9yZSB7CiAgICBvcGFjaXR5OiAuMjUKfQoKLm1ldGZvcm0tc3VibWl0LWJ0bjo6YWZ0ZXIgewogICAgYm9yZGVyLXRvcC13aWR0aDogMnB4OwogICAgLXdlYmtpdC1hbmltYXRpb246IHN1Ym1pdHNwaW4gLjU1cyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHN1Ym1pdFNwaW4gLjU1cyBsaW5lYXIgaW5maW5pdGUKfQoKLm1ldGZvcm0tc3VibWl0LWJ0bj5zcGFuIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzIGVhc2UgLjE1czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjE1cyBlYXNlIC4xNXMKfQoKLm1ldGZvcm0tc3VibWl0LWJ0bltkaXNhYmxlZF0+c3BhbiB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwOwogICAgdHJhbnNpdGlvbi1kZWxheTogMAp9CgpALXdlYmtpdC1rZXlmcmFtZXMgc3VibWl0U3BpbiB7CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykKICAgIH0KfQoKQGtleWZyYW1lcyBzdWJtaXRTcGluIHsKICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKQogICAgfQp9CgoubWYtaW5wdXQtd3JhcHBlciAuaXRpIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5tZi1pbnB1dC13cmFwcGVyPi5pdGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDEwMCUKfQoKLm1mLWlucHV0LXdyYXBwZXIgLml0aSAubWYtaW5wdXQgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudAp9CgoubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmNmY2Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5pdGkgLml0aV9fZmxhZy1jb250YWluZXIgewogICAgZGlzcGxheTogbm9uZQp9CgoubWYtaW5wdXQtd3JhcHBlciAuaXRpPi5pdGlfX2ZsYWctY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5mbGF0cGlja3ItY2FsZW5kYXIgewogICAgbWFyZ2luLXRvcDogOHB4Cn0KCi5mbGF0cGlja3ItbW9udGggewogICAgbWFyZ2luLXRvcDogM3B4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyPi5mbGF0cGlja3Itd3JhcHBlciB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZmxhdHBpY2tyLXdyYXBwZXIgc2VsZWN0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItdGltZSB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZS5lbGVtZW50b3ItZWxlbWVudC1lZGl0LW1vZGUgLmZsYXRwaWNrci1jYWxlbmRhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZS5lbGVtZW50b3ItZWxlbWVudC1lZGl0LW1vZGUgLmZsYXRwaWNrci1jYWxlbmRhciB7CiAgICB0b3A6IDEwMCUgIWltcG9ydGFudDsKICAgIGxlZnQ6IDAgIWltcG9ydGFudAp9CgoubWYtcmF0aW5ncyB7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm1mLXJhdGluZ3M+aW5wdXQgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5tZi1yYXRpbmdzPmxhYmVsIHsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgoubWYtcmF0aW5ncz5sYWJlbDpub3QoOmxhc3QtY2hpbGQpIHsKICAgIHBhZGRpbmctcmlnaHQ6IDVweAp9CgoubWYtcmF0aW5ncy5pcy1zZWxlY3RlZD5sYWJlbCwKLm1mLXJhdGluZ3M6bm90KC5pcy1zZWxlY3RlZCk6aG92ZXI+bGFiZWwgewogICAgY29sb3I6ICNmZmRiNzIKfQoKLm1mLXJhdGluZ3MuaXMtc2VsZWN0ZWQ6bm90KDpob3Zlcik+aW5wdXQ6Y2hlY2tlZCtsYWJlbH5sYWJlbCwKLm1mLXJhdGluZ3MuaXMtc2VsZWN0ZWQ+bGFiZWw6aG92ZXJ+bGFiZWwsCi5tZi1yYXRpbmdzOm5vdCguaXMtc2VsZWN0ZWQpLAoubWYtcmF0aW5nczpub3QoLmlzLXNlbGVjdGVkKT5sYWJlbDpob3Zlcn5sYWJlbCB7CiAgICBjb2xvcjogI2NjYwp9CgoubWYtaW5wdXQtZmlsZS11cGxvYWQgewogICAgd2lkdGg6IC4xcHg7CiAgICBoZWlnaHQ6IC4xcHg7CiAgICBvcGFjaXR5OiAwOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlCn0KCi5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCB7CiAgICBjb2xvcjogI2ZmZjsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIHBhZGRpbmc6IDVweCAxNXB4OwogICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94OwogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4Cn0KCi5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBpIHsKICAgIGZvbnQtc2l6ZTogMThweAp9CgoubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHsKICAgIG1heC13aWR0aDogMThweDsKICAgIGhlaWdodDogYXV0bzsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKLm1mLWZpbGUtbmFtZSBzcGFuIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTVweAp9CgoubWYtaW5wdXQtd3JhcHBlciAuZXJyb3IgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLm1mLWlucHV0LW11bHRpc2VsZWN0LAoubWYtaW5wdXQtc2VsZWN0IHsKICAgIHBhZGRpbmc6IDA7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm1mLWlucHV0Lm1mLWlucHV0LW11bHRpc2VsZWN0IHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQKfQoKLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fY29udHJvbCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWFlYWVhOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fY29udHJvbDpmb2N1cywKLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fY29udHJvbDpob3ZlciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWFlYWVhOwogICAgb3V0bGluZTogMDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmUKfQoKLm1mX211bHRpc2VsZWN0X19pbmRpY2F0b3Itc2VwYXJhdG9yIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLm1mX211bHRpc2VsZWN0X19vcHRpb24ubWZfbXVsdGlzZWxlY3RfX29wdGlvbi0taXMtZm9jdXNlZCwKLm1mX211bHRpc2VsZWN0X19vcHRpb246aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMAp9CgoubWZfbXVsdGlzZWxlY3RfX29wdGlvbi5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uLS1pcy1mb2N1c2VkIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKLm1mX211bHRpc2VsZWN0X19vcHRpb24gewogICAgYm9yZGVyOiAxcHggc29saWQgI2VhZWFlYTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBmb250LXNpemU6IDE1cHgKfQoKLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fbWVudSB7CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgoubWYtaW5wdXQtbXVsdGlzZWxlY3QgLm1mX211bHRpc2VsZWN0X19tZW51LWxpc3QgewogICAgcGFkZGluZzogMAp9CgoubWYtaW5wdXQtbXVsdGlzZWxlY3QgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogI2M5YzFjMQp9CgoubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYWVhZWE7CiAgICBjb2xvcjogI2M5YzFjMQp9CgoubWZfbXVsdGlzZWxlY3RfX2NvbnRyb2wgLm1mX211bHRpc2VsZWN0X192YWx1ZS1jb250YWluZXIgewogICAgcGFkZGluZzogOHB4IDEycHgKfQoKLm1mX211bHRpc2VsZWN0X19jb250cm9sIC5tZl9tdWx0aXNlbGVjdF9fdmFsdWUtY29udGFpbmVyPmRpdjpsYXN0LWNoaWxkIHsKICAgIGhlaWdodDogMjVweAp9CgoubWYtaW5wdXQtbXVsdGlzZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZSB7CiAgICBtYXJnaW46IDAgNXB4IDAgMAp9CgoubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUgewogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50Cn0KCi5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50Cn0KCi5tZi1pbnB1dC1tdWx0aXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX2lucHV0PmlucHV0IHsKICAgIG1pbi1oZWlnaHQ6IDAKfQoKLm1mLWlucHV0Lm1mLWlucHV0LXN1bW1hcnkgewogICAgcGFkZGluZzogMTBweCAxM3B4IDEzcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyLXdpZHRoOiAwOwogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDFweCAwIHRyYW5zcGFyZW50OwogICAgYm94LXNoYWRvdzogMCAwIDFweCAwIHRyYW5zcGFyZW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQKfQoKLm1mLWlucHV0Lm1mLWlucHV0LXN1bW1hcnk6aGFzKGxpKSB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxcHggMCBncmV5OwogICAgYm94LXNoYWRvdzogMCAwIDFweCAwIGdyZXk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmOWZmCn0KCi5tZi1lbnRyeS1kYXRhIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgd29yZC1icmVhazogYnJlYWstd29yZAp9CgoubWYtZW50cnktZGF0YT5saTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDAKfQoKLm1mLWVudHJ5LWRhdGE+bGk+c3Ryb25nIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogOHB4IDA7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLm1mLWVudHJ5LWRhdGE+bGk+c3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMTJweDsKICAgIGhlaWdodDogYXV0bzsKICAgIGJvcmRlci13aWR0aDogMXB4OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci1jb2xvcjogI2VhZWFlYTsKICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgIGJhY2tncm91bmQ6IDAgMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZlZmU7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC4ycyBsaW5lYXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjJzIGxpbmVhcjsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAyMXB4OwogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtZmllbGQtZXJyb3IgLmVycm9yIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9CgouZy1yZWNhcHRjaGE+ZGl2IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDAKfQoKLmctcmVjYXB0Y2hhPmRpdjo6YWZ0ZXIsCi5nLXJlY2FwdGNoYT5kaXY6OmJlZm9yZSwKLmctcmVjYXB0Y2hhPmRpdj5kaXY6OmFmdGVyLAouZy1yZWNhcHRjaGE+ZGl2PmRpdjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6ICNkM2QzZDM7CiAgICBib3JkZXItd2lkdGg6IDA7CiAgICB6LWluZGV4OiAwCn0KCi5nLXJlY2FwdGNoYT5kaXY6OmJlZm9yZSB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgYm90dG9tOiAycHg7CiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4Cn0KCi5nLXJlY2FwdGNoYT5kaXY6OmFmdGVyIHsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAycHg7CiAgICBib3R0b206IDJweDsKICAgIGJvcmRlci1yaWdodC13aWR0aDogMXB4Cn0KCi5nLXJlY2FwdGNoYT5kaXY+ZGl2OjpiZWZvcmUgewogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAycHg7CiAgICBib3JkZXItdG9wLXdpZHRoOiAxcHgKfQoKLmctcmVjYXB0Y2hhPmRpdj5kaXY6OmFmdGVyIHsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMnB4OwogICAgYm90dG9tOiAycHg7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHgKfQoKLmctcmVjYXB0Y2hhKy5hdHRyLWFsZXJ0IHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmctcmVjYXB0Y2hhOmVtcHR5Ky5hdHRyLWFsZXJ0IHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQKfQoKLm1mLWNhcHRjaGEtaW5wdXQtd3JhcHBlci5tZi1jYXB0Y2hhLWJsb2NrPmkgewogICAgcGFkZGluZy1sZWZ0OiAyNXB4Cn0KCmltZy5tZi1pbnB1dC5tZi1jYXB0Y2hhLWltYWdlIHsKICAgIG1heC13aWR0aDogMjAwcHg7CiAgICBib3JkZXI6IG5vbmU7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IHVuc2V0OwogICAgYm94LXNpemluZzogdW5zZXQ7CiAgICBiYWNrZ3JvdW5kOiAwIDA7CiAgICBwYWRkaW5nOiAwOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5tZi1jYXB0Y2hhLWJsb2NrPmltZy5tZi1pbnB1dC5tZi1jYXB0Y2hhLWltYWdlIHsKICAgIG1hcmdpbjogNXB4IDAgNXB4IDAKfQoKLm1mLWNhcHRjaGEtaW5saW5lPmltZy5tZi1pbnB1dC5tZi1jYXB0Y2hhLWltYWdlIHsKICAgIG1hcmdpbjogMCA1cHggMCAwCn0KCi5tZi1jYXB0Y2hhLWlucHV0LXdyYXBwZXIubWYtY2FwdGNoYS1pbmxpbmUgewogICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJQp9CgoubWYtY2FwdGNoYS1pbnB1dC13cmFwcGVyLm1mLWNhcHRjaGEtaW5saW5lPmkgewogICAgbWFyZ2luLWxlZnQ6IDI1cHggIWltcG9ydGFudDsKICAgIC1tcy1mbGV4LW9yZGVyOiAxOwogICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjsKICAgIG9yZGVyOiAxCn0KCi5tZi1yZWZyZXNoLWNhcHRjaGE6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMWUiOwogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm1mLWVycm9yLW1lc3NhZ2UgewogICAgZGlzcGxheTogYmxvY2sKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiByZWQKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19zbGlkZXIgewogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogICAgYXBwZWFyYW5jZTogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDRweCBzb2xpZCAjMDAwOwogICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAxNXB4OwogICAgbWFyZ2luLWxlZnQ6IC03LjVweDsKICAgIG1hcmdpbi10b3A6IC0xMXB4OwogICAgb3V0bGluZTogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIGJveC1zaGFkb3cgLjNzIGVhc2Utb3V0OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAuM3MgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAuM3MgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0LCBib3gtc2hhZG93IC4zcyBlYXNlLW91dDsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIGJveC1zaGFkb3cgLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAuM3MgZWFzZS1vdXQ7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIC4zcyBlYXNlLW91dCwgYm94LXNoYWRvdyAuM3MgZWFzZS1vdXQsIC13ZWJraXQtdHJhbnNmb3JtIC4zcyBlYXNlLW91dDsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIGJveC1zaGFkb3cgLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7CiAgICB3aWR0aDogMTVweAp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3NsaWRlcjpmb2N1cyB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDVweCByZ2JhKDYzLCA4MSwgMTgxLCAuMik7CiAgICBib3gtc2hhZG93OiAwIDAgMCA1cHggcmdiYSg2MywgODEsIDE4MSwgLjIpCn0KCi5pbnB1dC1yYW5nZS0tZGlzYWJsZWQgLmlucHV0LXJhbmdlX19zbGlkZXIgewogICAgYmFja2dyb3VuZDogI2NjYzsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICB0cmFuc2Zvcm06IG5vbmUKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19zbGlkZXItY29udGFpbmVyIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbGVmdCAuM3MgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiBsZWZ0IC4zcyBlYXNlLW91dAp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsIHsKICAgIGNvbG9yOiAjYWFhOwogICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbi1zZXJpZjsKICAgIGZvbnQtc2l6ZTogLjhyZW07CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXAKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC0tbWF4LAoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLS1taW4gewogICAgYm90dG9tOiAtMS40cmVtOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogbm9uZQp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLS1taW4gewogICAgbGVmdDogMAp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLS1tYXggewogICAgcmlnaHQ6IDAKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC0tdmFsdWUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAyMHB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIHsKICAgIGxlZnQ6IC01MCU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogICAgd2lkdGg6IDM2cHg7CiAgICBoZWlnaHQ6IDIwcHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDNweAp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lcjo6YmVmb3JlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogLTNweDsKICAgIGxlZnQ6IDUwJTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiA2cHg7CiAgICBoZWlnaHQ6IDZweDsKICAgIG1hcmdpbi1sZWZ0OiAtM3B4OwogICAgY29udGVudDogIiI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKQp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLS1tYXggLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgbGVmdDogNTAlCn0KCi5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fdHJhY2sgewogICAgYmFja2dyb3VuZDogI2YxZjRmOTsKICAgIGJvcmRlci1yYWRpdXM6IC4zcmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDhweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbGVmdCAuM3MgZWFzZS1vdXQsIHdpZHRoIC4zcyBlYXNlLW91dDsKICAgIHRyYW5zaXRpb246IGxlZnQgLjNzIGVhc2Utb3V0LCB3aWR0aCAuM3MgZWFzZS1vdXQKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlLS1kaXNhYmxlZCAuaW5wdXQtcmFuZ2VfX3RyYWNrIHsKICAgIGJhY2tncm91bmQ6ICNmMWY0ZjkKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYmFja2dyb3VuZCB7CiAgICBsZWZ0OiAwOwogICAgbWFyZ2luLXRvcDogLS4xNXJlbTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiA1MCUKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICMwMDAKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlIHsKICAgIGhlaWdodDogMXJlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlCn0KCi5tZi1jb25kaXRpb24tLWhpZGRlbiwKW21mLWNvbmRpdGlvbi1oaWRkZW49dHJ1ZV0gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgdmlzaWJpbGl0eTogaGlkZGVuCn0="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/bg-create-your-proton-wallet.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.352Z","timestamp":1785130090352,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/bg-create-your-proton-wallet.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-9.css?ver=1706574923\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:19 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=GacVIGSZ2XtV3%2FwGlarKC8wwv0tYWvkVQjCCUfSR92uPvrdaiq19nOpH4WaeFN%2BJL%2BlCMFoXSW7bfF7PvJFDtqLVhcVDRB6eIAgmdoCa%2FrVy5Gbkl9wxksV6yGUCEQG0CM22iRranw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=4,i\r\ncf-ray: a2193d38be8b120a-OSL\r\ncontent-length: 36042\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":36042,"size_decoded":36810,"mime_type":"image/png","magic":"PNG image data, 3840 x 1468, 8-bit/color RGBA, non-interlaced","md5":"84ab6135437f65fed3aa0cf5cbf50a20","sha1":"adba391a1343784281ce855fe4c40ae615bbbee7","sha256":"3116b8e864f205b1a6722c6c7a1370f11b71c891976988183f30bf093d45dbac","sha512":"f86ffd631f1cd0b1ed70ba6c2b66f8fb24d07303f564bc70fe215fa52d290ca3a96935851dd3406899cd570905fc45d59dbf0fbb47939d7e2972a832fc79aea5","ssdeep":"384:F68Q2HbZD1UmA5cuPWPijdnRPrNxGfcaAl7mo8:F6YHb9XA5cp0RPGflA7c","tlshash":"c3f24164d831f21dd52c443983ef2fac33a4478dd801172e9b35ee37ad972619a6eb90","first_seen":"2026-07-27T04:11:05.659835Z","last_seen":"2026-07-27T05:30:59.821613Z","times_seen":3,"resource_available":false,"data":"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AAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAAABAiAAMAAAAAAAAAAAAAAAAAAAhAjAAAAAAAAAAAAAAAAAAAIQIwAAAAAAAAAAAAAAAAAAAECIAAwAAAAAAAAAAAAAAMAAAOgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgAAAAAAAAAAAAAAAAAAAIEYABAAAAAAAAAAAAAAAAACBEAAYAAAAAAAAAAAAAAAAAgBABGAAAAAAAAAAAAAAAAAAAQgRgOPt2LAAAAAAwyN96GjvKIwAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAAAAAAAAAAAABGBGAAAAAAAAAAAAAAAAAAABgRgAEAAAAAAAAAAAAAAAAAYEQABgAAAAAAAAAAAAAAAACAEQEYAAAAAAAA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"}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/translate_static/img/te_ctrl3.gif","fqdn":"translate.googleapis.com","domain":"translate.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":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:12.180Z","timestamp":1785130092180,"http_version":"HTTP/3","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 /translate_static/img/te_ctrl3.gif HTTP/1.1\r\nHost: translate.googleapis.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://dreamspinfluence.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, 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\naccept-ranges: bytes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 1412\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 02:32:24 GMT\r\nexpires: Fri, 23 Jul 2027 02:32:24 GMT\r\ncache-control: public, max-age=31536000\r\nage: 356148\r\nlast-modified: Thu, 03 Oct 2019 10:15:00 GMT\r\ncontent-type: image/gif\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":1412,"size_decoded":2072,"mime_type":"image/gif","magic":"GIF image data, version 89a, 84 x 19","md5":"9afe50090c0bc612953d081295eab5b1","sha1":"71a4da2a622879c29176ecfa5afe1bbe3e8cfa40","sha256":"d228d0256370863119c043f1e5ca8f3930f6999bd9f250434b6d8935f45dc171","sha512":"d7290b951cec51994f3480c32b70de0faeca433b5d99209b044e1d4c12327768de8c344b6bded806d993251e0ee6f98f0dd64f4480e999fbc06abfe3dd8056fa","ssdeep":"","tlshash":"042182b5cc99114a5be1bd27a334899da8b12c56c38d74595436bdb43470f098422812","first_seen":"2023-04-05T08:27:37Z","last_seen":"2026-08-02T15:21:36.263102Z","times_seen":16520,"resource_available":false,"data":"R0lGODlhVAATAOePAAAAyxZBmhdFrBhHrhpMyB1Uxh1Vzh5X0R9ZzR9awSFf1SNk2CYW0SZq2yZs4Cka2yt45TB9ITJ11TODHjODIDWKGzdgrDmUGjuaRTybGT1svj6hGUClGEF1tEGnFkGpGUKrFUNnrkWjYUWoUkZtskdww0dxy0l/EkmP5EqlLUtLS0uxFFCmLlGY6lON3la4E1e0GFhYD1uxRlu5EVyyU1+vLGW8FGef5mmTx22p7W6PEW+d32+e4XKa2Hp6en6p5H9lE4eHh4i06YurxYyqyYyufoy8iI29ho7AhpCz55DEhJW55ZaT15jClqGm9afE2KgeFavK7LDN47rV7b7J4cTa9cXi0MjX8Mrd9c0lGs3l/9QmGtbW1tfq/9jl9djl+NmcANns0dnt4NonG9otM9yGft4pG9/x4OCrIuG3I+Hv/+Lfz+Px4eRWTOSaAeSyNuUpHOWIgOalAOby/+c5P+egD+exAefJcOhYXuqjAOq3Tuq9YOtqbuvHG+vz++xYTOy8AO2sAe6xAO7x9+/Ecu/SaPDYaPD2//D47/KzAPS7APfpy/ng3fzp7P347f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEKAP8ALAAAAABUABMAAAj+AP+pGEiw4MB//4goXMhQ4b8gECNKnIiwosWLGBE+2sjxkaNGIB115KjCB5eTKFP6UEEkypyXMGNGIRJkpM2NQSwO2bkzI8aRjOL8oUP0TxxGI1WkXIqSZcynMGnetJnz386OanpWxNGhKw6NHOMQHUs2jsiNSpkudQr1qVScI2vitLpRTZe7XdRoGYKQ65K/Hb5yxEO2MJ0/HdNyYQCgMQAGTYnAfOAYwIOociNy1Pwo55BHXZZ07XC3Ct9/HZZUFP1vo9ixfNYsWsOHDp6kKJlUZhIZppPKTjBvhtiZOM7PdlN34Xp3Ct/Uqzu0XjT2z5qRaxrhRsn4cUq2Lyn+W475FqfEjkE+4+0yhXkXKUNGy+/6yFAdotc7HrqpmItuALz15ltjwQmHnnGbqddcV3jBl9pfEIrmSB+KKILYVNtxB9l3ksX0wGXkyWUeZ8eBdheDDcY332iOVKiIIR0tgcKMNKKQwyP9+ReggL4VaGBxNZGYnl3r4TXFE/FFCGEHLVa4SEdR1EhjDofkqBZ4bb30lpDGeUYkiu89t2JXTb4Yo5Qz3mglU1hmWZ6IcM01hBZVrDeFFEiipiRgE1ZYREdzaCGoFi3MKASOJql10kotZfnSTHBiWNVOd0qBp1Zj0mdIGiOMYMVNVdAYxSMCGWQqQg2lSsRDGKKnE09jp/lU0SNhdDqCCJ929EWhKLTQBamyBuvTRMRKJKywGxlh6whGWOGsESLQeCiwx1Zr7bWyckTDstxi0MENHGEr7rjWdqQst7Ya0RG57LZ70UhWQGurCM2O5O697N6EyL773hQQADs="}},"time_used":16,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T05:28:07.866Z","timestamp":1785130087866,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: dreamspinfluence.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/3 200 \r\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/html; charset=UTF-8\r\nset-cookie: CameFrom=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; secure\nPHPSESSID=40gevugqve4dcmbj7nupd4vsp4; path=/; domain=dreamspinfluence.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\npriority: u=0,i\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\ncf-cache-status: DYNAMIC\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=HfUAZ3FmHU3LWMqut6fohlmIDuBLsYNnHmgsIjR3kifis5M41CQBgPttKk3fWi6G34hmRVJfsc6Y3Ag8aoKKsAi%2FYE%2FDqM%2BWWg15Ar4Gca%2Bh7%2Faxe3a6GiFfpcPDXEetdasv3oToyw%3D%3D\"}]}\r\ncontent-encoding: zstd\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a2193d295d31120a-OSL\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"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"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"name":"WordPress","description":"WordPress is a free and open-source content management system written in PHP and paired with a MySQL or MariaDB database. Features include a plugin architecture and a template system.","website":"https://wordpress.org","common_platform_enumeration":"cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:*","icon":"WordPress.svg","categories":["CMS","Blogs"]},{"name":"MySQL","description":"MySQL is an open-source relational database management system.","website":"https://mysql.com","common_platform_enumeration":"cpe:2.3:a:mysql:mysql:*:*:*:*:*:*:*:*","icon":"MySQL.svg","categories":["Databases"]},{"name":"jQuery:3.6.4","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":"PHP","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":"Font Awesome","description":"Font Awesome is a font and icon toolkit based on CSS and Less.","website":"https://fontawesome.com/","common_platform_enumeration":"","icon":"Font Awesome.svg","categories":["Font scripts"]},{"name":"jQuery Migrate:3.4.1","description":"Query Migrate is a javascript library that allows you to preserve the compatibility of your jQuery code developed for versions of jQuery older than 1.9.","website":"https://github.com/jquery/jquery-migrate","common_platform_enumeration":"","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"Elementor","description":"Elementor is a website builder platform for professionals on WordPress.","website":"https://elementor.com","common_platform_enumeration":"","icon":"Elementor.svg","categories":["Page builders","WordPress plugins"]}],"data":{"size":154951,"size_decoded":25138,"mime_type":"text/html; charset=UTF-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (9471)","md5":"1dd141e7d34218b75e0967096f48a35a","sha1":"46c452773f4d71b68d631ed4cd06e767e9b3cfd0","sha256":"3a29b035e8065e98b33a109d208b4ee9a2f36caa76b54e9f239a4b4067cb5967","sha512":"722f5c6ababa7558093b25ce1676d68edc733d384d3bf084502528911e876016f0f10ab01a5b2db8ca761ebcd6c8c9d7c07468acb151f074bd0bcdc0f0f2b146","ssdeep":"1536:capP78MbGgDswZrII1pIIwNII73IIydCz0pEqTNDckn4MbGfQLubIR5knbYf:bUgDswZxi9pz0pEqTNLki","tlshash":"d6e3a420b9f31037306f328bd1136b0d6a82e787c74597e571bc01a4afb6d957ea35a8","first_seen":"2026-07-27T05:28:46.244396Z","last_seen":"2026-07-27T05:28:46.244396Z","times_seen":1,"resource_available":false,"data":"CgogCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZnVuY3Rpb24gZ29vZ2xlVHJhbnNsYXRlRWxlbWVudEluaXQoKSB7CiAgbmV3IGdvb2dsZS50cmFuc2xhdGUuVHJhbnNsYXRlRWxlbWVudCh7cGFnZUxhbmd1YWdlOiAnZW4nLCBsYXlvdXQ6IGdvb2dsZS50cmFuc2xhdGUuVHJhbnNsYXRlRWxlbWVudC5JbmxpbmVMYXlvdXQuSE9SSVpPTlRBTH0sICdnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQnKTsKfQo8L3NjcmlwdD4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii8vdHJhbnNsYXRlLmdvb2dsZS5jb20vdHJhbnNsYXRlX2EvZWxlbWVudC5qcz9jYj1nb29nbGVUcmFuc2xhdGVFbGVtZW50SW5pdCI+PC9zY3JpcHQ+Cgo8c3R5bGU+CiNnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQgewoJCgljb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCiNnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQgYSB7CgkKICBkaXNwbGF5OiBub25lOwp9CgpzZWxlY3QuZ29vZ2xlX3RyYW5zbGF0ZV9lbGVtZW50IHsKCQogIGNvbG9yOiBibGFjazsKfQoKZGl2Lmdvb2ctdGUtZ2FkZ2V0IHsKCQogIGNvbG9yOiB0cmFuc3BhcmVudDsKfQoKZGl2Lmdvb2ctdGUtZ2FkZ2V0IHsKCWRpc3BsYXk6IHRhYmxlLWNhcHRpb247CiAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi5nb29nLXRlLWdhZGdldCAuZ29vZy10ZS1jb21ibyB7IAogICAgd2lkdGg6IGF1dG87CiAgICBwYWRkaW5nOiA5cHg7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgYmFja2dyb3VuZDogIzEyNjJmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMxMjYyZmY7CiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3V0bGluZTogbm9uZTsKICAgIGZvbnQtZmFtaWx5OiAnUG9wcGlucycsIHNhbnMtc2VyaWY7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7IAp9Cjwvc3R5bGU+CiAKCjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbi1VUyI+CiAgIDxoZWFkPgogICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiAvPgogICAgICA8dGl0bGU+RHJlYW0gU3BpbmZsdWVuY2U8L3RpdGxlPgogICAgICA8bWV0YSBuYW1lPSdyb2JvdHMnIGNvbnRlbnQ9J21heC1pbWFnZS1wcmV2aWV3OmxhcmdlJyAvPgogICAgICA8c3R5bGUgaWQ9J3dwLWVtb2ppLXN0eWxlcy1pbmxpbmUtY3NzJz4KICAgICAgICAgaW1nLndwLXNtaWxleSwgaW1nLmVtb2ppIHsKICAgICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgIGhlaWdodDogMWVtICFpbXBvcnRhbnQ7CiAgICAgICAgIHdpZHRoOiAxZW0gIWltcG9ydGFudDsKICAgICAgICAgbWFyZ2luOiAwIDAuMDdlbSAhaW1wb3J0YW50OwogICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogLTAuMWVtICFpbXBvcnRhbnQ7CiAgICAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICB9CiAgICAgIDwvc3R5bGU+CgkgIDxkaXYgaWQ9ImhtZXRyaWNzX3NpdGVfdmVyaWZpY2F0aW9uIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPjQ4OTA2MzwvZGl2PgogICAgICA8c3R5bGUgaWQ9J2NsYXNzaWMtdGhlbWUtc3R5bGVzLWlubGluZS1jc3MnPgogICAgICAgICAvKiEgVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkICovCiAgICAgICAgIC53cC1ibG9jay1idXR0b25fX2xpbmt7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMjM3M2M7Ym9yZGVyLXJhZGl1czo5OTk5cHg7Ym94LXNoYWRvdzpub25lO3RleHQtZGVjb3JhdGlvbjpub25lO3BhZGRpbmc6Y2FsYyguNjY3ZW0gKyAycHgpIGNhbGMoMS4zMzNlbSArIDJweCk7Zm9udC1zaXplOjEuMTI1ZW19LndwLWJsb2NrLWZpbGVfX2J1dHRvbntiYWNrZ3JvdW5kOiMzMjM3M2M7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZX0KICAgICAgPC9zdHlsZT4KICAgICAgPHN0eWxlIGlkPSdnbG9iYWwtc3R5bGVzLWlubGluZS1jc3MnPgogICAgICAgICBib2R5ey0td3AtLXByZXNldC0tY29sb3ItLWJsYWNrOiAjMDAwMDAwOy0td3AtLXByZXNldC0tY29sb3ItLWN5YW4tYmx1aXNoLWdyYXk6ICNhYmI4YzM7LS13cC0tcHJlc2V0LS1jb2xvci0td2hpdGU6ICNmZmZmZmY7LS13cC0tcHJlc2V0LS1jb2xvci0tcGFsZS1waW5rOiAjZjc4ZGE3Oy0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLXJlZDogI2NmMmUyZTstLXdwLS1wcmVzZXQtLWNvbG9yLS1sdW1pbm91cy12aXZpZC1vcmFuZ2U6ICNmZjY5MDA7LS13cC0tcHJlc2V0LS1jb2xvci0tbHVtaW5vdXMtdml2aWQtYW1iZXI6ICNmY2I5MDA7LS13cC0tcHJlc2V0LS1jb2xvci0tbGlnaHQtZ3JlZW4tY3lhbjogIzdiZGNiNTstLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1ncmVlbi1jeWFuOiAjMDBkMDg0Oy0td3AtLXByZXNldC0tY29sb3ItLXBhbGUtY3lhbi1ibHVlOiAjOGVkMWZjOy0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLWN5YW4tYmx1ZTogIzA2OTNlMzstLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1wdXJwbGU6ICM5YjUxZTA7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tdml2aWQtY3lhbi1ibHVlLXRvLXZpdmlkLXB1cnBsZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2JhKDYsMTQ3LDIyNywxKSAwJSxyZ2IoMTU1LDgxLDIyNCkgMTAwJSk7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbGlnaHQtZ3JlZW4tY3lhbi10by12aXZpZC1ncmVlbi1jeWFuOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYigxMjIsMjIwLDE4MCkgMCUscmdiKDAsMjA4LDEzMCkgMTAwJSk7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbHVtaW5vdXMtdml2aWQtYW1iZXItdG8tbHVtaW5vdXMtdml2aWQtb3JhbmdlOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYmEoMjUyLDE4NSwwLDEpIDAlLHJnYmEoMjU1LDEwNSwwLDEpIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLWx1bWlub3VzLXZpdmlkLW9yYW5nZS10by12aXZpZC1yZWQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiYSgyNTUsMTA1LDAsMSkgMCUscmdiKDIwNyw0Niw0NikgMTAwJSk7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tdmVyeS1saWdodC1ncmF5LXRvLWN5YW4tYmx1aXNoLWdyYXk6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiKDIzOCwyMzgsMjM4KSAwJSxyZ2IoMTY5LDE4NCwxOTUpIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLWNvb2wtdG8td2FybS1zcGVjdHJ1bTogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoNzQsMjM0LDIyMCkgMCUscmdiKDE1MSwxMjAsMjA5KSAyMCUscmdiKDIwNyw0MiwxODYpIDQwJSxyZ2IoMjM4LDQ0LDEzMCkgNjAlLHJnYigyNTEsMTA1LDk4KSA4MCUscmdiKDI1NCwyNDgsNzYpIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLWJsdXNoLWxpZ2h0LXB1cnBsZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoMjU1LDIwNiwyMzYpIDAlLHJnYigxNTIsMTUwLDI0MCkgMTAwJSk7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tYmx1c2gtYm9yZGVhdXg6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiKDI1NCwyMDUsMTY1KSAwJSxyZ2IoMjU0LDQ1LDQ1KSA1MCUscmdiKDEwNywwLDYyKSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1sdW1pbm91cy1kdXNrOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYigyNTUsMjAzLDExMikgMCUscmdiKDE5OSw4MSwxOTIpIDUwJSxyZ2IoNjUsODgsMjA4KSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1wYWxlLW9jZWFuOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYigyNTUsMjQ1LDIwMykgMCUscmdiKDE4MiwyMjcsMjEyKSA1MCUscmdiKDUxLDE2NywxODEpIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLWVsZWN0cmljLWdyYXNzOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYigyMDIsMjQ4LDEyOCkgMCUscmdiKDExMywyMDYsMTI2KSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1taWRuaWdodDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoMiwzLDEyOSkgMCUscmdiKDQwLDExNiwyNTIpIDEwMCUpOy0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbDogMTNweDstLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbWVkaXVtOiAyMHB4Oy0td3AtLXByZXNldC0tZm9udC1zaXplLS1sYXJnZTogMzZweDstLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0teC1sYXJnZTogNDJweDstLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwOiAwLjQ0cmVtOy0td3AtLXByZXNldC0tc3BhY2luZy0tMzA6IDAuNjdyZW07LS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MDogMXJlbTstLXdwLS1wcmVzZXQtLXNwYWNpbmctLTUwOiAxLjVyZW07LS13cC0tcHJlc2V0LS1zcGFjaW5nLS02MDogMi4yNXJlbTstLXdwLS1wcmVzZXQtLXNwYWNpbmctLTcwOiAzLjM4cmVtOy0td3AtLXByZXNldC0tc3BhY2luZy0tODA6IDUuMDZyZW07LS13cC0tcHJlc2V0LS1zaGFkb3ctLW5hdHVyYWw6IDZweCA2cHggOXB4IHJnYmEoMCwgMCwgMCwgMC4yKTstLXdwLS1wcmVzZXQtLXNoYWRvdy0tZGVlcDogMTJweCAxMnB4IDUwcHggcmdiYSgwLCAwLCAwLCAwLjQpOy0td3AtLXByZXNldC0tc2hhZG93LS1zaGFycDogNnB4IDZweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpOy0td3AtLXByZXNldC0tc2hhZG93LS1vdXRsaW5lZDogNnB4IDZweCAwcHggLTNweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpLCA2cHggNnB4IHJnYmEoMCwgMCwgMCwgMSk7LS13cC0tcHJlc2V0LS1zaGFkb3ctLWNyaXNwOiA2cHggNnB4IDBweCByZ2JhKDAsIDAsIDAsIDEpO306d2hlcmUoLmlzLWxheW91dC1mbGV4KXtnYXA6IDAuNWVtO306d2hlcmUoLmlzLWxheW91dC1ncmlkKXtnYXA6IDAuNWVtO31ib2R5IC5pcy1sYXlvdXQtZmxvdyA+IC5hbGlnbmxlZnR7ZmxvYXQ6IGxlZnQ7bWFyZ2luLWlubGluZS1zdGFydDogMDttYXJnaW4taW5saW5lLWVuZDogMmVtO31ib2R5IC5pcy1sYXlvdXQtZmxvdyA+IC5hbGlnbnJpZ2h0e2Zsb2F0OiByaWdodDttYXJnaW4taW5saW5lLXN0YXJ0OiAyZW07bWFyZ2luLWlubGluZS1lbmQ6IDA7fWJvZHkgLmlzLWxheW91dC1mbG93ID4gLmFsaWduY2VudGVye21hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7fWJvZHkgLmlzLWxheW91dC1jb25zdHJhaW5lZCA+IC5hbGlnbmxlZnR7ZmxvYXQ6IGxlZnQ7bWFyZ2luLWlubGluZS1zdGFydDogMDttYXJnaW4taW5saW5lLWVuZDogMmVtO31ib2R5IC5pcy1sYXlvdXQtY29uc3RyYWluZWQgPiAuYWxpZ25yaWdodHtmbG9hdDogcmlnaHQ7bWFyZ2luLWlubGluZS1zdGFydDogMmVtO21hcmdpbi1pbmxpbmUtZW5kOiAwO31ib2R5IC5pcy1sYXlvdXQtY29uc3RyYWluZWQgPiAuYWxpZ25jZW50ZXJ7bWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDt9Ym9keSAuaXMtbGF5b3V0LWNvbnN0cmFpbmVkID4gOndoZXJlKDpub3QoLmFsaWdubGVmdCk6bm90KC5hbGlnbnJpZ2h0KTpub3QoLmFsaWduZnVsbCkpe21heC13aWR0aDogdmFyKC0td3AtLXN0eWxlLS1nbG9iYWwtLWNvbnRlbnQtc2l6ZSk7bWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDt9Ym9keSAuaXMtbGF5b3V0LWNvbnN0cmFpbmVkID4gLmFsaWdud2lkZXttYXgtd2lkdGg6IHZhcigtLXdwLS1zdHlsZS0tZ2xvYmFsLS13aWRlLXNpemUpO31ib2R5IC5pcy1sYXlvdXQtZmxleHtkaXNwbGF5OiBmbGV4O31ib2R5IC5pcy1sYXlvdXQtZmxleHtmbGV4LXdyYXA6IHdyYXA7YWxpZ24taXRlbXM6IGNlbnRlcjt9Ym9keSAuaXMtbGF5b3V0LWZsZXggPiAqe21hcmdpbjogMDt9Ym9keSAuaXMtbGF5b3V0LWdyaWR7ZGlzcGxheTogZ3JpZDt9Ym9keSAuaXMtbGF5b3V0LWdyaWQgPiAqe21hcmdpbjogMDt9OndoZXJlKC53cC1ibG9jay1jb2x1bW5zLmlzLWxheW91dC1mbGV4KXtnYXA6IDJlbTt9OndoZXJlKC53cC1ibG9jay1jb2x1bW5zLmlzLWxheW91dC1ncmlkKXtnYXA6IDJlbTt9OndoZXJlKC53cC1ibG9jay1wb3N0LXRlbXBsYXRlLmlzLWxheW91dC1mbGV4KXtnYXA6IDEuMjVlbTt9OndoZXJlKC53cC1ibG9jay1wb3N0LXRlbXBsYXRlLmlzLWxheW91dC1ncmlkKXtnYXA6IDEuMjVlbTt9Lmhhcy1ibGFjay1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJsYWNrKSAhaW1wb3J0YW50O30uaGFzLWN5YW4tYmx1aXNoLWdyYXktY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jeWFuLWJsdWlzaC1ncmF5KSAhaW1wb3J0YW50O30uaGFzLXdoaXRlLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0td2hpdGUpICFpbXBvcnRhbnQ7fS5oYXMtcGFsZS1waW5rLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcGFsZS1waW5rKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLXJlZC1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLXJlZCkgIWltcG9ydGFudDt9Lmhhcy1sdW1pbm91cy12aXZpZC1vcmFuZ2UtY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1sdW1pbm91cy12aXZpZC1vcmFuZ2UpICFpbXBvcnRhbnQ7fS5oYXMtbHVtaW5vdXMtdml2aWQtYW1iZXItY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1sdW1pbm91cy12aXZpZC1hbWJlcikgIWltcG9ydGFudDt9Lmhhcy1saWdodC1ncmVlbi1jeWFuLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbGlnaHQtZ3JlZW4tY3lhbikgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1ncmVlbi1jeWFuLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtZ3JlZW4tY3lhbikgIWltcG9ydGFudDt9Lmhhcy1wYWxlLWN5YW4tYmx1ZS1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXBhbGUtY3lhbi1ibHVlKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLWN5YW4tYmx1ZS1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLWN5YW4tYmx1ZSkgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1wdXJwbGUtY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1wdXJwbGUpICFpbXBvcnRhbnQ7fS5oYXMtYmxhY2stYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spICFpbXBvcnRhbnQ7fS5oYXMtY3lhbi1ibHVpc2gtZ3JheS1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jeWFuLWJsdWlzaC1ncmF5KSAhaW1wb3J0YW50O30uaGFzLXdoaXRlLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXdoaXRlKSAhaW1wb3J0YW50O30uaGFzLXBhbGUtcGluay1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wYWxlLXBpbmspICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtcmVkLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLXJlZCkgIWltcG9ydGFudDt9Lmhhcy1sdW1pbm91cy12aXZpZC1vcmFuZ2UtYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbHVtaW5vdXMtdml2aWQtb3JhbmdlKSAhaW1wb3J0YW50O30uaGFzLWx1bWlub3VzLXZpdmlkLWFtYmVyLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWx1bWlub3VzLXZpdmlkLWFtYmVyKSAhaW1wb3J0YW50O30uaGFzLWxpZ2h0LWdyZWVuLWN5YW4tYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbGlnaHQtZ3JlZW4tY3lhbikgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1ncmVlbi1jeWFuLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLWdyZWVuLWN5YW4pICFpbXBvcnRhbnQ7fS5oYXMtcGFsZS1jeWFuLWJsdWUtYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcGFsZS1jeWFuLWJsdWUpICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtY3lhbi1ibHVlLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLWN5YW4tYmx1ZSkgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1wdXJwbGUtYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtcHVycGxlKSAhaW1wb3J0YW50O30uaGFzLWJsYWNrLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjaykgIWltcG9ydGFudDt9Lmhhcy1jeWFuLWJsdWlzaC1ncmF5LWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jeWFuLWJsdWlzaC1ncmF5KSAhaW1wb3J0YW50O30uaGFzLXdoaXRlLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS13aGl0ZSkgIWltcG9ydGFudDt9Lmhhcy1wYWxlLXBpbmstYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXBhbGUtcGluaykgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1yZWQtYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLXJlZCkgIWltcG9ydGFudDt9Lmhhcy1sdW1pbm91cy12aXZpZC1vcmFuZ2UtYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWx1bWlub3VzLXZpdmlkLW9yYW5nZSkgIWltcG9ydGFudDt9Lmhhcy1sdW1pbm91cy12aXZpZC1hbWJlci1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbHVtaW5vdXMtdml2aWQtYW1iZXIpICFpbXBvcnRhbnQ7fS5oYXMtbGlnaHQtZ3JlZW4tY3lhbi1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbGlnaHQtZ3JlZW4tY3lhbikgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1ncmVlbi1jeWFuLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1ncmVlbi1jeWFuKSAhaW1wb3J0YW50O30uaGFzLXBhbGUtY3lhbi1ibHVlLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wYWxlLWN5YW4tYmx1ZSkgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1jeWFuLWJsdWUtYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLWN5YW4tYmx1ZSkgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1wdXJwbGUtYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLXB1cnBsZSkgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1jeWFuLWJsdWUtdG8tdml2aWQtcHVycGxlLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLXZpdmlkLWN5YW4tYmx1ZS10by12aXZpZC1wdXJwbGUpICFpbXBvcnRhbnQ7fS5oYXMtbGlnaHQtZ3JlZW4tY3lhbi10by12aXZpZC1ncmVlbi1jeWFuLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLWxpZ2h0LWdyZWVuLWN5YW4tdG8tdml2aWQtZ3JlZW4tY3lhbikgIWltcG9ydGFudDt9Lmhhcy1sdW1pbm91cy12aXZpZC1hbWJlci10by1sdW1pbm91cy12aXZpZC1vcmFuZ2UtZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbHVtaW5vdXMtdml2aWQtYW1iZXItdG8tbHVtaW5vdXMtdml2aWQtb3JhbmdlKSAhaW1wb3J0YW50O30uaGFzLWx1bWlub3VzLXZpdmlkLW9yYW5nZS10by12aXZpZC1yZWQtZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbHVtaW5vdXMtdml2aWQtb3JhbmdlLXRvLXZpdmlkLXJlZCkgIWltcG9ydGFudDt9Lmhhcy12ZXJ5LWxpZ2h0LWdyYXktdG8tY3lhbi1ibHVpc2gtZ3JheS1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS12ZXJ5LWxpZ2h0LWdyYXktdG8tY3lhbi1ibHVpc2gtZ3JheSkgIWltcG9ydGFudDt9Lmhhcy1jb29sLXRvLXdhcm0tc3BlY3RydW0tZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tY29vbC10by13YXJtLXNwZWN0cnVtKSAhaW1wb3J0YW50O30uaGFzLWJsdXNoLWxpZ2h0LXB1cnBsZS1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1ibHVzaC1saWdodC1wdXJwbGUpICFpbXBvcnRhbnQ7fS5oYXMtYmx1c2gtYm9yZGVhdXgtZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tYmx1c2gtYm9yZGVhdXgpICFpbXBvcnRhbnQ7fS5oYXMtbHVtaW5vdXMtZHVzay1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1sdW1pbm91cy1kdXNrKSAhaW1wb3J0YW50O30uaGFzLXBhbGUtb2NlYW4tZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tcGFsZS1vY2VhbikgIWltcG9ydGFudDt9Lmhhcy1lbGVjdHJpYy1ncmFzcy1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1lbGVjdHJpYy1ncmFzcykgIWltcG9ydGFudDt9Lmhhcy1taWRuaWdodC1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1taWRuaWdodCkgIWltcG9ydGFudDt9Lmhhcy1zbWFsbC1mb250LXNpemV7Zm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKSAhaW1wb3J0YW50O30uaGFzLW1lZGl1bS1mb250LXNpemV7Zm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLW1lZGl1bSkgIWltcG9ydGFudDt9Lmhhcy1sYXJnZS1mb250LXNpemV7Zm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLWxhcmdlKSAhaW1wb3J0YW50O30uaGFzLXgtbGFyZ2UtZm9udC1zaXple2ZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS14LWxhcmdlKSAhaW1wb3J0YW50O30KICAgICAgICAgLndwLWJsb2NrLW5hdmlnYXRpb24gYTp3aGVyZSg6bm90KC53cC1lbGVtZW50LWJ1dHRvbikpe2NvbG9yOiBpbmhlcml0O30KICAgICAgICAgOndoZXJlKC53cC1ibG9jay1wb3N0LXRlbXBsYXRlLmlzLWxheW91dC1mbGV4KXtnYXA6IDEuMjVlbTt9OndoZXJlKC53cC1ibG9jay1wb3N0LXRlbXBsYXRlLmlzLWxheW91dC1ncmlkKXtnYXA6IDEuMjVlbTt9CiAgICAgICAgIDp3aGVyZSgud3AtYmxvY2stY29sdW1ucy5pcy1sYXlvdXQtZmxleCl7Z2FwOiAyZW07fTp3aGVyZSgud3AtYmxvY2stY29sdW1ucy5pcy1sYXlvdXQtZ3JpZCl7Z2FwOiAyZW07fQogICAgICAgICAud3AtYmxvY2stcHVsbHF1b3Rle2ZvbnQtc2l6ZTogMS41ZW07bGluZS1oZWlnaHQ6IDEuNjt9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2hmZS1zdHlsZS1jc3MnIGhyZWY9J2Fzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvaGVhZGVyLWZvb3Rlci1lbGVtZW50b3IvYXNzZXRzL2Nzcy9oZWFkZXItZm9vdGVyLWVsZW1lbnRvci5jc3M/dmVyPTEuNi4yMicgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSJhc3NldHMvY3NzL3Nwb3AubWluLmNzcyI+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2VsZW1lbnRvci1mcm9udGVuZC1jc3MnIGhyZWY9J2Fzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9jc3MvZnJvbnRlbmQtbGl0ZS5taW4uY3NzP3Zlcj0zLjE5LjEnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J3N3aXBlci1jc3MnIGhyZWY9J2Fzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9saWIvc3dpcGVyL3Y4L2Nzcy9zd2lwZXIubWluLmNzcz92ZXI9OC40LjUnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2VsZW1lbnRvci1wb3N0LTMtY3NzJyBocmVmPSdhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvZWxlbWVudG9yL2Nzcy9wb3N0LTMuY3NzP3Zlcj0xNzA2NTc0OTIxJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdlbGVtZW50b3ItZ2xvYmFsLWNzcycgaHJlZj0nYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84L2VsZW1lbnRvci9jc3MvZ2xvYmFsLmNzcz92ZXI9MTcwNjU3NDkyMicgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZWxlbWVudG9yLXBvc3QtOS1jc3MnIGhyZWY9J2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC9lbGVtZW50b3IvY3NzL3Bvc3QtOS5jc3M/dmVyPTE3MDY1NzQ5MjMnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2hmZS13aWRnZXRzLXN0eWxlLWNzcycgaHJlZj0nYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9oZWFkZXItZm9vdGVyLWVsZW1lbnRvci9pbmMvd2lkZ2V0cy1jc3MvZnJvbnRlbmQuY3NzP3Zlcj0xLjYuMjInIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2ZvbnQtYXdlc29tZS01LWFsbC1jc3MnIGhyZWY9J2Fzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9saWIvZm9udC1hd2Vzb21lL2Nzcy9hbGwubWluLmNzcz92ZXI9My4xOS4xJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdmb250LWF3ZXNvbWUtNC1zaGltLWNzcycgaHJlZj0nYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2xpYi9mb250LWF3ZXNvbWUvY3NzL3Y0LXNoaW1zLm1pbi5jc3M/dmVyPTMuMTkuMScgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZWxlbWVudG9yLXBvc3QtNy1jc3MnIGhyZWY9J2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC9lbGVtZW50b3IvY3NzL3Bvc3QtNy5jc3M/dmVyPTE3MDY1NzQ5MjMnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2VsZW1lbnRvci1wb3N0LTU5LWNzcycgaHJlZj0nYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84L2VsZW1lbnRvci9jc3MvcG9zdC01OS5jc3M/dmVyPTE3MDY1NzQ5MjMnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J3RleHQtZWRpdG9yLXN0eWxlLWNzcycgaHJlZj0nYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9tZXRmb3JtL3B1YmxpYy9hc3NldHMvY3NzL3RleHQtZWRpdG9yLmNzcz92ZXI9My44LjInIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2hlbGxvLWVsZW1lbnRvci1jc3MnIGhyZWY9J2Fzc2V0cy93cC1jb250ZW50L3RoZW1lcy9oZWxsby1lbGVtZW50b3Ivc3R5bGUubWluLmNzcz92ZXI9Mi45LjAnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2hlbGxvLWVsZW1lbnRvci10aGVtZS1zdHlsZS1jc3MnIGhyZWY9J2Fzc2V0cy93cC1jb250ZW50L3RoZW1lcy9oZWxsby1lbGVtZW50b3IvdGhlbWUubWluLmNzcz92ZXI9Mi45LjAnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nYXNzZXRzL2NzczIvY3VzdG9tLmNzcycgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSdhc3NldHMvY3NzMi9jYWxjdWxhdG9yLmNzcycgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZ29vZ2xlLWZvbnRzLTEtY3NzJyBocmVmPSdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9V29yaytTYW5zJTNBMTAwJTJDMTAwaXRhbGljJTJDMjAwJTJDMjAwaXRhbGljJTJDMzAwJTJDMzAwaXRhbGljJTJDNDAwJTJDNDAwaXRhbGljJTJDNTAwJTJDNTAwaXRhbGljJTJDNjAwJTJDNjAwaXRhbGljJTJDNzAwJTJDNzAwaXRhbGljJTJDODAwJTJDODAwaXRhbGljJTJDOTAwJTJDOTAwaXRhbGljJiMwMzg7ZGlzcGxheT1hdXRvJiMwMzg7dmVyPTYuNC4zJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vIiBjcm9zc29yaWdpbj4KICAgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9saWIvZm9udC1hd2Vzb21lL2pzL3Y0LXNoaW1zLm1pbi5qcz92ZXI9My4xOS4xIiBpZD0iZm9udC1hd2Vzb21lLTQtc2hpbS1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtaW5jbHVkZXMvanMvanF1ZXJ5L2pxdWVyeS5taW4uanM/dmVyPTMuNy4xIiBpZD0ianF1ZXJ5LWNvcmUtanMiPjwvc2NyaXB0PgogICAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3dwLWluY2x1ZGVzL2pzL2pxdWVyeS9qcXVlcnktbWlncmF0ZS5taW4uanM/dmVyPTMuNC4xIiBpZD0ianF1ZXJ5LW1pZ3JhdGUtanMiPjwvc2NyaXB0PgogICAgICA8bGluayByZWw9Imljb24iIGhyZWY9ImFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2Zhdmljb24tMTUweDE1MC5wbmciIHNpemVzPSIzMngzMiIgLz4KICAgICAgPGxpbmsgcmVsPSJpY29uIiBocmVmPSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9mYXZpY29uLTMwMHgzMDAucG5nIiBzaXplcz0iMTkyeDE5MiIgLz4KICAgICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9mYXZpY29uLTMwMHgzMDAucG5nIiAvPgogICAgICA8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLVRpbGVJbWFnZSIgY29udGVudD0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvZmF2aWNvbi0zMDB4MzAwLnBuZyIgLz4KICAgICAgPHN0eWxlIGlkPSJ3cC1jdXN0b20tY3NzIj4KICAgICAgICAgcHsKICAgICAgICAgbWFyZ2luOiAwCiAgICAgICAgIH0KICAgICAgICAgLmUtcGFyZW50ID4gLmUtY29uLWlubmVyIHsKICAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgbWF4LXdpZHRoOiAxMTcwcHggIWltcG9ydGFudDsKICAgICAgICAgfQogICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpewogICAgICAgICAuZS1wYXJlbnQgewogICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50OwogICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwcHggIWltcG9ydGFudDsKICAgICAgICAgfQogICAgICAgICB9CQkKICAgICAgPC9zdHlsZT4KICAgICAgCiAgICAgIAogICAgICA8IS0tIFNtYXJ0c3VwcCBMaXZlIENoYXQgc2NyaXB0IC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnZhciBfc21hcnRzdXBwID0gX3NtYXJ0c3VwcCB8fCB7fTsKX3NtYXJ0c3VwcC5rZXkgPSAnOTRhZjhkNDM1M2M2NGM4ODJhODljOTRhYWQ2NmI0OTQyZmIxMGExOCc7CndpbmRvdy5zbWFydHN1cHB8fChmdW5jdGlvbihkKSB7CiAgdmFyIHMsYyxvPXNtYXJ0c3VwcD1mdW5jdGlvbigpeyBvLl8ucHVzaChhcmd1bWVudHMpfTtvLl89W107CiAgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtjPWQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgYy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnO2MuY2hhcnNldD0ndXRmLTgnO2MuYXN5bmM9dHJ1ZTsKICBjLnNyYz0naHR0cHM6Ly93d3cuc21hcnRzdXBwY2hhdC5jb20vbG9hZGVyLmpzPyc7cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLHMpOwp9KShkb2N1bWVudCk7Cjwvc2NyaXB0Pgo8bm9zY3JpcHQ+IFBvd2VyZWQgYnkgPGEgaHJlZj3igJxodHRwczovL3d3dy5zbWFydHN1cHAuY29t4oCdIHRhcmdldD3igJxfYmxhbmvigJ0+U21hcnRzdXBwPC9hPjwvbm9zY3JpcHQ+CgogICAgICAKICAgICAgCiAgIDwvaGVhZD4KICAgPGJvZHkgY2xhc3M9ImhvbWUgcGFnZS10ZW1wbGF0ZSBwYWdlLXRlbXBsYXRlLWVsZW1lbnRvcl9oZWFkZXJfZm9vdGVyIHBhZ2UgcGFnZS1pZC05IGVoZi1oZWFkZXIgZWhmLWZvb3RlciBlaGYtdGVtcGxhdGUtaGVsbG8tZWxlbWVudG9yIGVoZi1zdHlsZXNoZWV0LWhlbGxvLWVsZW1lbnRvciBlbGVtZW50b3ItZGVmYXVsdCBlbGVtZW50b3ItdGVtcGxhdGUtZnVsbC13aWR0aCBlbGVtZW50b3Ita2l0LTMgZWxlbWVudG9yLXBhZ2UgZWxlbWVudG9yLXBhZ2UtOSI+CiAgICAgIDxkaXYgaWQ9InBhZ2UiIGNsYXNzPSJoZmVlZCBzaXRlIj4KICAgICAgPGhlYWRlciBpZD0ibWFzdGhlYWQiIGl0ZW1zY29wZT0iaXRlbXNjb3BlIiBpdGVtdHlwZT0iaHR0cHM6Ly9zY2hlbWEub3JnL1dQSGVhZGVyIj4KICAgICAgICAgPHAgY2xhc3M9Im1haW4tdGl0bGUgYmhmLWhpZGRlbiIgaXRlbXByb3A9ImhlYWRsaW5lIj48YSBocmVmPSI/YT1ob21lIiB0aXRsZT0iUHJvdG9uICYjODIxMTsgQ3J5cHRvIFdhbGxldCBMYW5kaW5nIFBhZ2UiIHJlbD0iaG9tZSI+RHJlYW0gU3BpbmZsdWVuY2U8L2E+PC9wPgogICAgICAgICA8ZGl2IGRhdGEtZWxlbWVudG9yLXR5cGU9IndwLXBvc3QiIGRhdGEtZWxlbWVudG9yLWlkPSI3IiBjbGFzcz0iZWxlbWVudG9yIGVsZW1lbnRvci03Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNzc5OGE5ZCBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1wYXJlbnQiIGRhdGEtaWQ9Ijc3OThhOWQiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90OywmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSIgZGF0YS1jb3JlLXYzMTYtcGx1cz0idHJ1ZSI+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMzBmNTRmNiBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9IjMwZjU0ZjYiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHlsZT4vKiEgZWxlbWVudG9yIC0gdjMuMTkuMCAtIDA1LTAyLTIwMjQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVsZW1lbnRvci13aWRnZXQtaW1hZ2V7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UgYXtkaXNwbGF5OmlubGluZS1ibG9ja30uZWxlbWVudG9yLXdpZGdldC1pbWFnZSBhIGltZ1tzcmMkPSIuc3ZnIl17d2lkdGg6NDhweH0uZWxlbWVudG9yLXdpZGdldC1pbWFnZSBpbWd7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfQogICAgICAgICAgICAgICAgICAgICAgICA8L3N0eWxlPgogICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGZldGNocHJpb3JpdHk9ImhpZ2gic3JjPSJhc3NldHMvaW1hZ2VzL2xvZ28ucG5nIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1lNjk1ZDlmIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSJlNjk1ZDlmIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWFiNzcwY2EgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iYWI3NzBjYSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IGhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgaGZlLW5hdi1tZW51X19hbGlnbi1sZWZ0IGhmZS1zdWJtZW51LWljb24tYXJyb3cgaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLW5vbmUgaGZlLWxpbmstcmVkaXJlY3QtY2hpbGQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSIgZGF0YS1pZD0iOWNmYzBjNyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3BhZGRpbmdfaG9yaXpvbnRhbF9tZW51X2l0ZW0mcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzoxMCwmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ192ZXJ0aWNhbF9tZW51X2l0ZW0mcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzowLCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3NwYWNlX2JldHdlZW4mcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90Ozo2MCwmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7bWVudV9zcGFjZV9iZXR3ZWVuX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OjMwLCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX2hvcml6b250YWxfbWVudV9pdGVtX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ19ob3Jpem9udGFsX21lbnVfaXRlbV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfdmVydGljYWxfbWVudV9pdGVtX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ192ZXJ0aWNhbF9tZW51X2l0ZW1fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3NwYWNlX2JldHdlZW5fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3Jvd19zcGFjZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7bWVudV9yb3dfc3BhY2VfdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3Jvd19zcGFjZV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O2Ryb3Bkb3duX2JvcmRlcl9yYWRpdXMmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7dG9wJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtyaWdodCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Ym90dG9tJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsZWZ0JnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtpc0xpbmtlZCZxdW90Ozp0cnVlfSwmcXVvdDtkcm9wZG93bl9ib3JkZXJfcmFkaXVzX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDt0b3AmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3JpZ2h0JnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtib3R0b20mcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xlZnQmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2lzTGlua2VkJnF1b3Q7OnRydWV9LCZxdW90O2Ryb3Bkb3duX2JvcmRlcl9yYWRpdXNfbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3RvcCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cmlnaHQmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2JvdHRvbSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGVmdCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7aXNMaW5rZWQmcXVvdDs6dHJ1ZX0sJnF1b3Q7d2lkdGhfZHJvcGRvd25faXRlbSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OzIyMCZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7d2lkdGhfZHJvcGRvd25faXRlbV90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3dpZHRoX2Ryb3Bkb3duX2l0ZW1fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX2hvcml6b250YWxfZHJvcGRvd25faXRlbSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ19ob3Jpem9udGFsX2Ryb3Bkb3duX2l0ZW1fdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX2hvcml6b250YWxfZHJvcGRvd25faXRlbV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfdmVydGljYWxfZHJvcGRvd25faXRlbSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OjE1LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX3ZlcnRpY2FsX2Ryb3Bkb3duX2l0ZW1fdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX3ZlcnRpY2FsX2Ryb3Bkb3duX2l0ZW1fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtkaXN0YW5jZV9mcm9tX21lbnUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O2Rpc3RhbmNlX2Zyb21fbWVudV90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O2Rpc3RhbmNlX2Zyb21fbWVudV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9zaXplJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfc2l6ZV90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9zaXplX21vYmlsZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX2JvcmRlcl93aWR0aCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX2JvcmRlcl93aWR0aF90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9ib3JkZXJfd2lkdGhfbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfYm9yZGVyX3JhZGl1cyZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX2JvcmRlcl9yYWRpdXNfdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfYm9yZGVyX3JhZGl1c19tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119fSIgZGF0YS13aWRnZXRfdHlwZT0ibmF2aWdhdGlvbi1tZW51LmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhmZS1uYXYtbWVudSBoZmUtbGF5b3V0LWhvcml6b250YWwgaGZlLW5hdi1tZW51LWxheW91dCBob3Jpem9udGFsIGhmZS1wb2ludGVyX19ub25lIiBkYXRhLWxheW91dD0iaG9yaXpvbnRhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcm9sZT0iYnV0dG9uIiBpZD0ibWVudVRvZ2dsZSIgY2xhc3M9ImhmZS1uYXYtbWVudV9fdG9nZ2xlIGVsZW1lbnRvci1jbGlja2FibGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2NyZWVuLXJlYWRlci10ZXh0Ij5NZW51PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZmUtbmF2LW1lbnUtaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgYXJpYS1oaWRkZW49InRydWUiICBjbGFzcz0iZS1mb250LWljb24tc3ZnIGUtZmFzLWFsaWduLWp1c3RpZnkiIHZpZXdCb3g9IjAgMCA0NDggNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDMyIDQxNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hdiBjbGFzcz0iaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCBoZmUtbmF2LW1lbnVfX3N1Ym1lbnUtYXJyb3ciIGRhdGEtdG9nZ2xlLWljb249IiZsdDtzdmcgYXJpYS1oaWRkZW49JnF1b3Q7dHJ1ZSZxdW90OyB0YWJpbmRleD0mcXVvdDswJnF1b3Q7IGNsYXNzPSZxdW90O2UtZm9udC1pY29uLXN2ZyBlLWZhcy1hbGlnbi1qdXN0aWZ5JnF1b3Q7IHZpZXdCb3g9JnF1b3Q7MCAwIDQ0OCA1MTImcXVvdDsgeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcmcXVvdDsmZ3Q7Jmx0O3BhdGggZD0mcXVvdDtNNDMyIDQxNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnomcXVvdDsmZ3Q7Jmx0Oy9wYXRoJmd0OyZsdDsvc3ZnJmd0OyIgZGF0YS1jbG9zZS1pY29uPSImbHQ7c3ZnIGFyaWEtaGlkZGVuPSZxdW90O3RydWUmcXVvdDsgdGFiaW5kZXg9JnF1b3Q7MCZxdW90OyBjbGFzcz0mcXVvdDtlLWZvbnQtaWNvbi1zdmcgZS1mYXItd2luZG93LWNsb3NlJnF1b3Q7IHZpZXdCb3g9JnF1b3Q7MCAwIDUxMiA1MTImcXVvdDsgeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcmcXVvdDsmZ3Q7Jmx0O3BhdGggZD0mcXVvdDtNNDY0IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCAzOTRjMCAzLjMtMi43IDYtNiA2SDU0Yy0zLjMgMC02LTIuNy02LTZWODZjMC0zLjMgMi43LTYgNi02aDQwNGMzLjMgMCA2IDIuNyA2IDZ2MzQwek0zNTYuNSAxOTQuNkwyOTUuMSAyNTZsNjEuNCA2MS40YzQuNiA0LjYgNC42IDEyLjEgMCAxNi44bC0yMi4zIDIyLjNjLTQuNiA0LjYtMTIuMSA0LjYtMTYuOCAwTDI1NiAyOTUuMWwtNjEuNCA2MS40Yy00LjYgNC42LTEyLjEgNC42LTE2LjggMGwtMjIuMy0yMi4zYy00LjYtNC42LTQuNi0xMi4xIDAtMTYuOGw2MS40LTYxLjQtNjEuNC02MS40Yy00LjYtNC42LTQuNi0xMi4xIDAtMTYuOGwyMi4zLTIyLjNjNC42LTQuNiAxMi4xLTQuNiAxNi44IDBsNjEuNCA2MS40IDYxLjQtNjEuNGM0LjYtNC42IDEyLjEtNC42IDE2LjggMGwyMi4zIDIyLjNjNC43IDQuNiA0LjcgMTIuMSAwIDE2Ljh6JnF1b3Q7Jmd0OyZsdDsvcGF0aCZndDsmbHQ7L3N2ZyZndDsiIGRhdGEtZnVsbC13aWR0aD0ieWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGlkPSJtZW51LTEtOWNmYzBjNyIgY2xhc3M9ImhmZS1uYXYtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0ibWVudS1pdGVtLTExIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLWhvbWUgY3VycmVudC1tZW51LWl0ZW0gcGFnZV9pdGVtIHBhZ2UtaXRlbS05IGN1cnJlbnRfcGFnZV9pdGVtIHBhcmVudCBoZmUtY3JlYXRpdmUtbWVudSI+PGEgaHJlZj0iP2E9aG9tZSIgY2xhc3MgPSAiaGZlLW1lbnUtaXRlbSIgc3R5bGU9ImNvbG9yOiB3aGl0ZSI+SG9tZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9Im1lbnUtaXRlbS0xMiIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gcGFyZW50IGhmZS1jcmVhdGl2ZS1tZW51Ij48YSBocmVmPSIjd2FsbGV0IiBjbGFzcyA9ICJoZmUtbWVudS1pdGVtIiBzdHlsZT0iY29sb3I6IHdoaXRlIj5BYm91dDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9Im1lbnUtaXRlbS0xNCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gcGFyZW50IGhmZS1jcmVhdGl2ZS1tZW51Ij48YSBocmVmPSIjcGxhbnMiIGNsYXNzID0gImhmZS1tZW51LWl0ZW0iIHN0eWxlPSJjb2xvcjogd2hpdGUiPlBsYW5zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0ibWVudS1pdGVtLTE1IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBwYXJlbnQgaGZlLWNyZWF0aXZlLW1lbnUiPjxhIGhyZWY9IiNmYXEiIGNsYXNzID0gImhmZS1tZW51LWl0ZW0iIHN0eWxlPSJjb2xvcjogd2hpdGUiPkZBUTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9Im1lbnUtaXRlbS0xNSIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gcGFyZW50IGhmZS1jcmVhdGl2ZS1tZW51Ij48YSBocmVmPSI/YT1zdXBwb3J0IiBjbGFzcyA9ICJoZmUtbWVudS1pdGVtIiBzdHlsZT0iY29sb3I6IHdoaXRlIj5TdXBwb3J0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g0J/QvtC70YPRh9Cw0LXQvCDRgdGB0YvQu9C60YMg0L3QsCDQuNC60L7QvdC60YMg0LzQtdC90Y4g0Lgg0L3QsCDRgdCw0LzQviDQvNC10L3RjgogICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVudVRvZ2dsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZW51VG9nZ2xlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhmZS1uYXYtbWVudScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g0JTQvtCx0LDQstC70Y/QtdC8INC+0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPINC60LvQuNC60LAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVRvZ2dsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g0J/QtdGA0LXQutC70Y7Rh9Cw0LXQvCDQutC70LDRgdGBINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPL9GB0LrRgNGL0YLQuNGPINC80LXQvdGOCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51LmNsYXNzTGlzdC50b2dnbGUoJ2hmZS1uYXYtbWVudS0tb3BlbicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkJICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ij9hPWxvZ2luIiBjbGFzcz0iaGVhZC1idXQiPkxvZ2luPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMnB4OyI+PGEgaHJlZj0iP2E9c2lnbnVwIiBjbGFzcz0iaGVhZC1idXQiPlNpZ251cDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4gPGRpdiBpZD0iZ29vZ2xlX3RyYW5zbGF0ZV9lbGVtZW50Ij48L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgPC9oZWFkZXI+CiAgICAgIDxkaXYgZGF0YS1lbGVtZW50b3ItdHlwZT0id3AtcGFnZSIgZGF0YS1lbGVtZW50b3ItaWQ9IjkiIGNsYXNzPSJlbGVtZW50b3IgZWxlbWVudG9yLTkiPgogICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1hNTBiYTM1IGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iYTUwYmEzNSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC02NzkyMzAyIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjY3OTIzMDIiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNTEyM2ZkZiBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iNTEyM2ZkZiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3R5bGU+LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNS0wMi0yMDI0ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZXtwYWRkaW5nOjA7bWFyZ2luOjA7bGluZS1oZWlnaHQ6MX0uZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZVtjbGFzcyo9ZWxlbWVudG9yLXNpemUtXT5he2NvbG9yOmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdH0uZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZS5lbGVtZW50b3Itc2l6ZS1zbWFsbHtmb250LXNpemU6MTVweH0uZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZS5lbGVtZW50b3Itc2l6ZS1tZWRpdW17Zm9udC1zaXplOjE5cHh9LmVsZW1lbnRvci13aWRnZXQtaGVhZGluZyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUuZWxlbWVudG9yLXNpemUtbGFyZ2V7Zm9udC1zaXplOjI5cHh9LmVsZW1lbnRvci13aWRnZXQtaGVhZGluZyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUuZWxlbWVudG9yLXNpemUteGx7Zm9udC1zaXplOjM5cHh9LmVsZW1lbnRvci13aWRnZXQtaGVhZGluZyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUuZWxlbWVudG9yLXNpemUteHhse2ZvbnQtc2l6ZTo1OXB4fQogICAgICAgICAgICAgICAgICAgICAgICA8L3N0eWxlPgogICAgICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPiBEcmVhbSBTcGluZmx1ZW5jZSA8c3BhbiBzdHlsZT0iY29sb3I6I0Y5RjlGOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVubGVhc2hpbmcgdGhlIFBvdGVudGlhbDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9oMT4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1mMmQ2OTJhIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvciIgZGF0YS1pZD0iZjJkNjkyYSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0idGV4dC1lZGl0b3IuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN0eWxlPi8qISBlbGVtZW50b3IgLSB2My4xOS4wIC0gMDUtMDItMjAyNCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAuZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvci5lbGVtZW50b3ItZHJvcC1jYXAtdmlldy1zdGFja2VkIC5lbGVtZW50b3ItZHJvcC1jYXB7YmFja2dyb3VuZC1jb2xvcjojNjk3MjdkO2NvbG9yOiNmZmZ9LmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IuZWxlbWVudG9yLWRyb3AtY2FwLXZpZXctZnJhbWVkIC5lbGVtZW50b3ItZHJvcC1jYXB7Y29sb3I6IzY5NzI3ZDtib3JkZXI6M3B4IHNvbGlkO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3I6bm90KC5lbGVtZW50b3ItZHJvcC1jYXAtdmlldy1kZWZhdWx0KSAuZWxlbWVudG9yLWRyb3AtY2Fwe21hcmdpbi10b3A6OHB4fS5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yOm5vdCguZWxlbWVudG9yLWRyb3AtY2FwLXZpZXctZGVmYXVsdCkgLmVsZW1lbnRvci1kcm9wLWNhcC1sZXR0ZXJ7d2lkdGg6MWVtO2hlaWdodDoxZW19LmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IgLmVsZW1lbnRvci1kcm9wLWNhcHtmbG9hdDpsZWZ0O3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjE7Zm9udC1zaXplOjUwcHh9LmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IgLmVsZW1lbnRvci1kcm9wLWNhcC1sZXR0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2t9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPkVtYmFyayBvbiBhIGxlZ2VuZGFyeSBqb3VybmV5IHdpdGggRHJlYW0gU3BpbmZsdWVuY2UsIHdoZXJlIGlubm92YXRpb24gbWVldHMgaW52ZXN0bWVudC48L3A+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZjg1ODYyOSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IiIGRhdGEtaWQ9ImY4NTg2MjkiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InRleHQtZWRpdG9yLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPldlIGFyZSB0aGUgY3J1Y2libGUgd2hlcmUgc3RhcnR1cHMgdHJhbnNmb3JtIGludG8gY2hhbXBpb25zLCBsYXVuY2hpbmcgeW91IG9uIGEgcGF0aCB0byBmaW5hbmNpYWwgcHJvc3Blcml0eS48L3A+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWQxZGNkMDIgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iZDFkY2QwMiIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1iZTQzNTA2IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iYmU0MzUwNiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSI1OTciIGhlaWdodD0iNTg3IiBzcmM9ImFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2NvbnRlbnQtaW1hZ2UucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0xNTYiIGFsdD0iIiBzcmNzZXQ9ImFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2NvbnRlbnQtaW1hZ2UucG5nIDU5N3csIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9jb250ZW50LWltYWdlLTMwMHgyOTUucG5nIDMwMHciIHNpemVzPSIobWF4LXdpZHRoOiA1OTdweCkgMTAwdncsIDU5N3B4IiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01Mzg2ZWNkIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iNTM4NmVjZCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgaWQ9IndhbGxldCIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xNzA0ZDA0IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSIxNzA0ZDA0IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+V2hhdCBXZSBEbzo8L2gyPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWYwMjM5ZGYgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIiBkYXRhLWlkPSJmMDIzOWRmIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJ0ZXh0LWVkaXRvci5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICA8cD5BdCBEcmVhbSBTcGluZmx1ZW5jZSwgd2UgYXJlIHRoZSBhcmNoaXRlY3RzIG9mIGRyZWFtcywgcHJvdmlkaW5nIGEgcGxhdGZvcm0gZm9yIHZpc2lvbmFyeSBlbnRyZXByZW5ldXJzIHRvIHNvYXIuIFdlIGN1cmF0ZSBhbmQgaW52ZXN0IGluIGdyb3VuZGJyZWFraW5nIHN0YXJ0dXAgY29tcGFuaWVzLCB0cmFuc2Zvcm1pbmcgdGhlbSBpbnRvIHRoZSBsZWdlbmRzIG9mIHRvbW9ycm93LjwvcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01NTZkOTBkIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iNTU2ZDkwZCIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxMzgiIGhlaWdodD0iMzIiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvZGVzaWduLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMTc0IiBhbHQ9IiIgLz4JCQkJCQkJCQkJCQkJCiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMTZmNDhhMyBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iMTZmNDhhMyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xZDdjZjI4IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjFkN2NmMjgiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OCBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3ItcG9zaXRpb24tdG9wIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3giIGRhdGEtaWQ9ImU4ZGNlNzgiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLWJveC5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3R5bGU+LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNS0wMi0yMDI0ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1jb250ZW50e3dpZHRoOjEwMCV9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyLC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlcntkaXNwbGF5OmZsZXh9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVye3RleHQtYWxpZ246cmlnaHQ7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXJ7dGV4dC1hbGlnbjpsZWZ0O2ZsZXgtZGlyZWN0aW9uOnJvd30uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWd7bWFyZ2luOmF1dG99LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci12ZXJ0aWNhbC1hbGlnbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlcnthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItdmVydGljYWwtYWxpZ24tbWlkZGxlIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItdmVydGljYWwtYWxpZ24tYm90dG9tIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXJ7YWxpZ24taXRlbXM6ZmxleC1lbmR9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1ne21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjE1cHh9fS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWd7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIGF7Y29sb3I6aW5oZXJpdH0uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlcnt0ZXh0LWFsaWduOmNlbnRlcn0uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb257bWFyZ2luOjB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIj48aW1nIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtY29udHJvbC15b3VyLWNyeXB0by5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTE4NSIgYWx0PSIiIHNyY3NldD0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtY29udHJvbC15b3VyLWNyeXB0by5wbmcgMjIwdywgL2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2ljLWNvbnRyb2wteW91ci1jcnlwdG8tMTUweDE1MC5wbmcgMTUwdyIgc2l6ZXM9IihtYXgtd2lkdGg6IDIyMHB4KSAxMDB2dywgMjIwcHgiIC8+PC9maWd1cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSIgc3R5bGU9ImZvbnQtc2l6ZTogMjVweDsiPklubm92YXRpdmUgSW52ZXN0bWVudCBFY29zeXN0ZW08L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiI+RGl2ZSBpbnRvIGFuIGlubm92YXRpdmUgaW52ZXN0bWVudCBsYW5kc2NhcGUgd2l0aCBEcmVhbSBTcGluZmx1ZW5jZS4gPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTU4NjEwNDcgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iNTg2MTA0NyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1kMTFiMWZjIGVsZW1lbnRvci13aWRnZXQtbW9iaWxlX193aWR0aC1pbmhlcml0IGVsZW1lbnRvci1wb3NpdGlvbi10b3AgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCIgZGF0YS1pZD0iZDExYjFmYyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UtYm94LmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIj48aW1nIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtc3RvcmUteW91ci1uZnRzLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMTk2IiBhbHQ9IiIgc3Jjc2V0PSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1zdG9yZS15b3VyLW5mdHMucG5nIDIyMHcsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1zdG9yZS15b3VyLW5mdHMtMTUweDE1MC5wbmcgMTUwdyIgc2l6ZXM9IihtYXgtd2lkdGg6IDIyMHB4KSAxMDB2dywgMjIwcHgiIC8+PC9maWd1cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSIgc3R5bGU9ImZvbnQtc2l6ZTogMjVweDsiPkV4cGVydGx5IEN1cmF0ZWQgUG9ydGZvbGlvPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24iPkV4cGVyaWVuY2UgdGhlIGFzc3VyYW5jZSBvZiBleHBlcnQgY3VyYXRpb24gYXQgRHJlYW0gU3BpbmZsdWVuY2UuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTBlMzkyNjMgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iMGUzOTI2MyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1iZTQ2MjBlIGVsZW1lbnRvci13aWRnZXQtbW9iaWxlX193aWR0aC1pbmhlcml0IGVsZW1lbnRvci1wb3NpdGlvbi10b3AgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCIgZGF0YS1pZD0iYmU0NjIwZSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UtYm94LmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIj48aW1nIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtd29ya3Mtd2l0aC13ZWJzaXRlLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMTk3IiBhbHQ9IiIgc3Jjc2V0PSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy13b3Jrcy13aXRoLXdlYnNpdGUucG5nIDIyMHcsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy13b3Jrcy13aXRoLXdlYnNpdGUtMTUweDE1MC5wbmcgMTUwdyIgc2l6ZXM9IihtYXgtd2lkdGg6IDIyMHB4KSAxMDB2dywgMjIwcHgiIC8+PC9maWd1cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSIgc3R5bGU9ImZvbnQtc2l6ZTogMjVweDsiPkhhbmRzLU9uIFN1cHBvcnQgZm9yIFN0YXJ0dXBzPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24iPldlIHByb3ZpZGUgaGFuZHMtb24gc3VwcG9ydCB0byB0aGUgc3RhcnR1cHMgd2UgaW52ZXN0IGluLCBmb3N0ZXJpbmcgYW4gZW52aXJvbm1lbnQgZm9yIGdyb3d0aCBhbmQgc3VjY2Vzcy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMzM1ODExOCBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSIzMzU4MTE4IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYgZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaGVyaXQgZWxlbWVudG9yLXBvc2l0aW9uLXRvcCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IiBkYXRhLWlkPSJjYTNiYTc2IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS1ib3guZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1pbWciPjxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjIyMCIgc3JjPSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1pbmR1c3RyeS1sZWFkaW5nLXNlY3VyaXR5LnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMTk4IiBhbHQ9IiIgc3Jjc2V0PSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1pbmR1c3RyeS1sZWFkaW5nLXNlY3VyaXR5LnBuZyAyMjB3LCAvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtaW5kdXN0cnktbGVhZGluZy1zZWN1cml0eS0xNTB4MTUwLnBuZyAxNTB3IiBzaXplcz0iKG1heC13aWR0aDogMjIwcHgpIDEwMHZ3LCAyMjBweCIgLz48L2ZpZ3VyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIiBzdHlsZT0iZm9udC1zaXplOiAyNXB4OyI+RXhjbHVzaXZlIEFjY2VzcyB0byBFbWVyZ2luZyBNYXJrZXRzPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24iPkdhaW4gYSBzdHJhdGVnaWMgYWR2YW50YWdlIHdpdGggRHJlYW0gU3BpbmZsdWVuY2UgYXMgd2UgcHJvdmlkZSBleGNsdXNpdmUgYWNjZXNzIHRvIGVtZXJnaW5nIG1hcmtldHMgYW5kIGluZHVzdHJpZXMuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC03ODRiZDcyIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iNzg0YmQ3MiIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNCIgb25jbGljaz0ic2hvd0RldGFpbHMoJ3BsYW4tMScpIj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1ib3giPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWctYm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvcGxhbl9pbWcucG5nIiBjbGFzcz0icGxhbi1pbWciIGlkPSJwbGFucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImJveC10aXRsZSI+U2VsZWN0IGEgUGxhbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYW4tYm94LXJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYW4tYm94MiIgZGF0YS1wbGFuPSJwbGFuLTEiPjxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3RhYl9pbWc1LnBuZyI+PHNwYW4gY2xhc3M9InBsYW4tYm94Mi10aXRsZSI+MTUlIEFmdGVyIDI0IGhvdXJzPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFuLWJveDIiIGRhdGEtcGxhbj0icGxhbi0yIj48aW1nIHNyYz0iYXNzZXRzL2ltYWdlcy90YWJfaW1nMS5wbmciPjxzcGFuIGNsYXNzPSJwbGFuLWJveDItdGl0bGUiPjMwJSBBZnRlciA0OCBob3Vyczwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1ib3gyIiBkYXRhLXBsYW49InBsYW4tMyI+PGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvdGFiX2ltZzIucG5nIj48c3BhbiBjbGFzcz0icGxhbi1ib3gyLXRpdGxlIj41MCUgQWZ0ZXIgNzIgaG91cnM8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYW4tYm94MiIgZGF0YS1wbGFuPSJwbGFuLTQiPjxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3RhYl9pbWczLnBuZyI+PHNwYW4gY2xhc3M9InBsYW4tYm94Mi10aXRsZSI+MTAwJSBBZnRlciA1IERheXM8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC04Ij4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVzYy1ib3gtcm93IiBpZD0icGxhbi0xLWRldGFpbHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjLWNvbC00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJkZXNjLWJveC10aXRsZSI+PHNwYW4gY2xhc3M9InBsYW4tYmlnIj4xNSU8L3NwYW4+IEFmdGVyIDI0IGhvdXJzPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwZXJjZW50LXRpdGxlIj4xNSU8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjLXBsYW4tZGVzYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPk1pbiBEZXBvc2l0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj4kNTA8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5NYXggRGVwb3NpdDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+JDQ5OTwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPlRvdGFsIFByb2ZpdDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+MTUlPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+UHJpbmNpcGFsOiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj5JbmNsdWRlZDwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPkVhcm5pbmdzOiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj5BdCB0aGUgZW5kPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9ImRlc2MtY29sLTgiIGlkPSJwbGFuLTEtZGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYzItcCI+IDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL25leHQuc3ZnIiBhbHQ9InBsYW5faW1nNiIgY2xhc3M9ImRlc2MyLXBvaW50Ij4gRXhwZXJpZW5jZSBmaW5hbmNpYWwgaW50ZWxsaWdlbmNlIHdpdGggU3VwZXIgWiBMaW1pdGVkJ3MgUXVhbnR1bSBZaWVsZCBQbGFuLiBIYXJuZXNzaW5nIHN0YXRlLW9mLXRoZS1hcnQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHBsYW4gc3RyYXRlZ2ljYWxseSBpbnZlc3RzIGluIHN0YWJsZSBhc3NldHMsIGluY2x1ZGluZyBlc3RhYmxpc2hlZCBjcnlwdG9jdXJyZW5jaWVzIGxpa2UgQml0Y29pbiBhbmQgZm9yd2FyZC1sb29raW5nIHRlY2ggc3RvY2tzLgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjMi1wIj4gPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvbmV4dC5zdmciIGFsdD0icGxhbl9pbWc2IiBjbGFzcz0iZGVzYzItcG9pbnQiPiBFeHBlcmllbmNlIGZpbmFuY2lhbCBpbnRlbGxpZ2VuY2Ugd2l0aCBTdXBlciBaIExpbWl0ZWQncyBRdWFudHVtIFlpZWxkIFBsYW4uIEhhcm5lc3Npbmcgc3RhdGUtb2YtdGhlLWFydCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGxhbiBzdHJhdGVnaWNhbGx5IGludmVzdHMgaW4gc3RhYmxlIGFzc2V0cywgaW5jbHVkaW5nIGVzdGFibGlzaGVkIGNyeXB0b2N1cnJlbmNpZXMgbGlrZSBCaXRjb2luIGFuZCBmb3J3YXJkLWxvb2tpbmcgdGVjaCBzdG9ja3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MyLXAiPiA8aW1nIHNyYz0iYXNzZXRzL2ltYWdlcy9uZXh0LnN2ZyIgYWx0PSJwbGFuX2ltZzYiIGNsYXNzPSJkZXNjMi1wb2ludCI+IEV4cGVyaWVuY2UgZmluYW5jaWFsIGludGVsbGlnZW5jZSB3aXRoIFN1cGVyIFogTGltaXRlZCdzIFF1YW50dW0gWWllbGQgUGxhbi4gSGFybmVzc2luZyBzdGF0ZS1vZi10aGUtYXJ0IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwbGFuIHN0cmF0ZWdpY2FsbHkgaW52ZXN0cyBpbiBzdGFibGUgYXNzZXRzLCBpbmNsdWRpbmcgZXN0YWJsaXNoZWQgY3J5cHRvY3VycmVuY2llcyBsaWtlIEJpdGNvaW4gYW5kIGZvcndhcmQtbG9va2luZyB0ZWNoIHN0b2Nrcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjLWJveC1yb3ciIGlkPSJwbGFuLTItZGV0YWlscyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVzYy1jb2wtNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iZGVzYy1ib3gtdGl0bGUiPjxzcGFuIGNsYXNzPSJwbGFuLWJpZyI+MzAlPC9zcGFuPiBBZnRlciA0OCBob3VyczwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icGVyY2VudC10aXRsZSI+MzAlPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVzYy1wbGFuLWRlc2MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5NaW4gRGVwb3NpdDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+JDUwMDwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPk1heCBEZXBvc2l0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj4kMyw5OTk8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5Ub3RhbCBQcm9maXQ6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPjMwJTwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPlByaW5jaXBhbDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+SW5jbHVkZWQ8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5FYXJuaW5nczogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+QXQgdGhlIGVuZDwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPSJkZXNjLWNvbC04IiBpZD0icGxhbi0yLWRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MyLXAiPiA8aW1nIHNyYz0iYXNzZXRzL2ltYWdlcy9uZXh0LnN2ZyIgYWx0PSJwbGFuX2ltZzYiIGNsYXNzPSJkZXNjMi1wb2ludCI+IEV4cGVyaWVuY2UgZmluYW5jaWFsIGludGVsbGlnZW5jZSB3aXRoIFN1cGVyIFogTGltaXRlZCdzIFF1YW50dW0gWWllbGQgUGxhbi4gSGFybmVzc2luZyBzdGF0ZS1vZi10aGUtYXJ0IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwbGFuIHN0cmF0ZWdpY2FsbHkgaW52ZXN0cyBpbiBzdGFibGUgYXNzZXRzLCBpbmNsdWRpbmcgZXN0YWJsaXNoZWQgY3J5cHRvY3VycmVuY2llcyBsaWtlIEJpdGNvaW4gYW5kIGZvcndhcmQtbG9va2luZyB0ZWNoIHN0b2Nrcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYzItcCI+IDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL25leHQuc3ZnIiBhbHQ9InBsYW5faW1nNiIgY2xhc3M9ImRlc2MyLXBvaW50Ij4gRXhwZXJpZW5jZSBmaW5hbmNpYWwgaW50ZWxsaWdlbmNlIHdpdGggU3VwZXIgWiBMaW1pdGVkJ3MgUXVhbnR1bSBZaWVsZCBQbGFuLiBIYXJuZXNzaW5nIHN0YXRlLW9mLXRoZS1hcnQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHBsYW4gc3RyYXRlZ2ljYWxseSBpbnZlc3RzIGluIHN0YWJsZSBhc3NldHMsIGluY2x1ZGluZyBlc3RhYmxpc2hlZCBjcnlwdG9jdXJyZW5jaWVzIGxpa2UgQml0Y29pbiBhbmQgZm9yd2FyZC1sb29raW5nIHRlY2ggc3RvY2tzLgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjMi1wIj4gPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvbmV4dC5zdmciIGFsdD0icGxhbl9pbWc2IiBjbGFzcz0iZGVzYzItcG9pbnQiPiBFeHBlcmllbmNlIGZpbmFuY2lhbCBpbnRlbGxpZ2VuY2Ugd2l0aCBTdXBlciBaIExpbWl0ZWQncyBRdWFudHVtIFlpZWxkIFBsYW4uIEhhcm5lc3Npbmcgc3RhdGUtb2YtdGhlLWFydCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGxhbiBzdHJhdGVnaWNhbGx5IGludmVzdHMgaW4gc3RhYmxlIGFzc2V0cywgaW5jbHVkaW5nIGVzdGFibGlzaGVkIGNyeXB0b2N1cnJlbmNpZXMgbGlrZSBCaXRjb2luIGFuZCBmb3J3YXJkLWxvb2tpbmcgdGVjaCBzdG9ja3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVzYy1ib3gtcm93IiBpZD0icGxhbi0zLWRldGFpbHMiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc2MtY29sLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImRlc2MtYm94LXRpdGxlIj48c3BhbiBjbGFzcz0icGxhbi1iaWciPjUwJTwvc3Bhbj4gQWZ0ZXIgNzIgaG91cnM8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InBlcmNlbnQtdGl0bGUiPjUwJTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc2MtcGxhbi1kZXNjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+TWluIERlcG9zaXQ6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPiQ0LDAwMDwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPk1heCBEZXBvc2l0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj4kMzAsMDAwPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+VG90YWwgUHJvZml0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj41MCU8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5QcmluY2lwYWw6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPkluY2x1ZGVkPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+RWFybmluZ3M6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPkF0IHRoZSBlbmQ8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz0iZGVzYy1jb2wtOCIgaWQ9InBsYW4tMy1kZXNjcmlwdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjMi1wIj4gPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvbmV4dC5zdmciIGFsdD0icGxhbl9pbWc2IiBjbGFzcz0iZGVzYzItcG9pbnQiPiBFeHBlcmllbmNlIGZpbmFuY2lhbCBpbnRlbGxpZ2VuY2Ugd2l0aCBTdXBlciBaIExpbWl0ZWQncyBRdWFudHVtIFlpZWxkIFBsYW4uIEhhcm5lc3Npbmcgc3RhdGUtb2YtdGhlLWFydCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGxhbiBzdHJhdGVnaWNhbGx5IGludmVzdHMgaW4gc3RhYmxlIGFzc2V0cywgaW5jbHVkaW5nIGVzdGFibGlzaGVkIGNyeXB0b2N1cnJlbmNpZXMgbGlrZSBCaXRjb2luIGFuZCBmb3J3YXJkLWxvb2tpbmcgdGVjaCBzdG9ja3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MyLXAiPiA8aW1nIHNyYz0iYXNzZXRzL2ltYWdlcy9uZXh0LnN2ZyIgYWx0PSJwbGFuX2ltZzYiIGNsYXNzPSJkZXNjMi1wb2ludCI+IEV4cGVyaWVuY2UgZmluYW5jaWFsIGludGVsbGlnZW5jZSB3aXRoIFN1cGVyIFogTGltaXRlZCdzIFF1YW50dW0gWWllbGQgUGxhbi4gSGFybmVzc2luZyBzdGF0ZS1vZi10aGUtYXJ0IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwbGFuIHN0cmF0ZWdpY2FsbHkgaW52ZXN0cyBpbiBzdGFibGUgYXNzZXRzLCBpbmNsdWRpbmcgZXN0YWJsaXNoZWQgY3J5cHRvY3VycmVuY2llcyBsaWtlIEJpdGNvaW4gYW5kIGZvcndhcmQtbG9va2luZyB0ZWNoIHN0b2Nrcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYzItcCI+IDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL25leHQuc3ZnIiBhbHQ9InBsYW5faW1nNiIgY2xhc3M9ImRlc2MyLXBvaW50Ij4gRXhwZXJpZW5jZSBmaW5hbmNpYWwgaW50ZWxsaWdlbmNlIHdpdGggU3VwZXIgWiBMaW1pdGVkJ3MgUXVhbnR1bSBZaWVsZCBQbGFuLiBIYXJuZXNzaW5nIHN0YXRlLW9mLXRoZS1hcnQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHBsYW4gc3RyYXRlZ2ljYWxseSBpbnZlc3RzIGluIHN0YWJsZSBhc3NldHMsIGluY2x1ZGluZyBlc3RhYmxpc2hlZCBjcnlwdG9jdXJyZW5jaWVzIGxpa2UgQml0Y29pbiBhbmQgZm9yd2FyZC1sb29raW5nIHRlY2ggc3RvY2tzLgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc2MtYm94LXJvdyIgaWQ9InBsYW4tNC1kZXRhaWxzIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjLWNvbC00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJkZXNjLWJveC10aXRsZSI+PHNwYW4gY2xhc3M9InBsYW4tYmlnIj4xMDAlPC9zcGFuPiBBZnRlciA1IERheXM8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InBlcmNlbnQtdGl0bGUiPjEwMCU8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjLXBsYW4tZGVzYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPk1pbiBEZXBvc2l0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj4kMzAsMDAwPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+TWF4IERlcG9zaXQ6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPlVubGltaXRlZDwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPlRvdGFsIFByb2ZpdDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+MTAwJTwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPlByaW5jaXBhbDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+SW5jbHVkZWQ8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5FYXJuaW5nczogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+QXQgdGhlIGVuZDwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPSJkZXNjLWNvbC04IiBpZD0icGxhbi00LWRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MyLXAiPiA8aW1nIHNyYz0iYXNzZXRzL2ltYWdlcy9uZXh0LnN2ZyIgYWx0PSJwbGFuX2ltZzYiIGNsYXNzPSJkZXNjMi1wb2ludCI+IEV4cGVyaWVuY2UgZmluYW5jaWFsIGludGVsbGlnZW5jZSB3aXRoIFN1cGVyIFogTGltaXRlZCdzIFF1YW50dW0gWWllbGQgUGxhbi4gSGFybmVzc2luZyBzdGF0ZS1vZi10aGUtYXJ0IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwbGFuIHN0cmF0ZWdpY2FsbHkgaW52ZXN0cyBpbiBzdGFibGUgYXNzZXRzLCBpbmNsdWRpbmcgZXN0YWJsaXNoZWQgY3J5cHRvY3VycmVuY2llcyBsaWtlIEJpdGNvaW4gYW5kIGZvcndhcmQtbG9va2luZyB0ZWNoIHN0b2Nrcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYzItcCI+IDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL25leHQuc3ZnIiBhbHQ9InBsYW5faW1nNiIgY2xhc3M9ImRlc2MyLXBvaW50Ij4gRXhwZXJpZW5jZSBmaW5hbmNpYWwgaW50ZWxsaWdlbmNlIHdpdGggU3VwZXIgWiBMaW1pdGVkJ3MgUXVhbnR1bSBZaWVsZCBQbGFuLiBIYXJuZXNzaW5nIHN0YXRlLW9mLXRoZS1hcnQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHBsYW4gc3RyYXRlZ2ljYWxseSBpbnZlc3RzIGluIHN0YWJsZSBhc3NldHMsIGluY2x1ZGluZyBlc3RhYmxpc2hlZCBjcnlwdG9jdXJyZW5jaWVzIGxpa2UgQml0Y29pbiBhbmQgZm9yd2FyZC1sb29raW5nIHRlY2ggc3RvY2tzLgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjMi1wIj4gPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvbmV4dC5zdmciIGFsdD0icGxhbl9pbWc2IiBjbGFzcz0iZGVzYzItcG9pbnQiPiBFeHBlcmllbmNlIGZpbmFuY2lhbCBpbnRlbGxpZ2VuY2Ugd2l0aCBTdXBlciBaIExpbWl0ZWQncyBRdWFudHVtIFlpZWxkIFBsYW4uIEhhcm5lc3Npbmcgc3RhdGUtb2YtdGhlLWFydCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGxhbiBzdHJhdGVnaWNhbGx5IGludmVzdHMgaW4gc3RhYmxlIGFzc2V0cywgaW5jbHVkaW5nIGVzdGFibGlzaGVkIGNyeXB0b2N1cnJlbmNpZXMgbGlrZSBCaXRjb2luIGFuZCBmb3J3YXJkLWxvb2tpbmcgdGVjaCBzdG9ja3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGVQcm9maXQoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFtb3VudCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImludl9hbW91bnQiKS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FsY19wbGFuIikudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFzc2lnblBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhc3NpZ25fcGVyIik7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRvdGFsUmV0dXJuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvdGFsX3JldHVybiIpOwogICAgICAgICAgICAgICAgICAgIHZhciBwcm9maXRQZXJjZW50ID0gMDsKICAgICAgICAgICAgICAgICAgICB2YXIgbWluQW1vdW50ID0gNTA7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1heEFtb3VudCA9IDEwMDAwMDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRlcm0gPSAxOyAvLyBEZWZhdWx0IHRlcm0gaXMgMSBkYXkKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKHBsYW4gPT09ICIxIikgewogICAgICAgICAgICAgICAgICAgICAgcHJvZml0UGVyY2VudCA9IDExNTsKICAgICAgICAgICAgICAgICAgICAgIG1pbkFtb3VudCA9IDUwOwogICAgICAgICAgICAgICAgICAgICAgbWF4QW1vdW50ID0gNDk5OwogICAgICAgICAgICAgICAgICAgICAgdGVybSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwbGFuID09PSAiMiIpIHsKICAgICAgICAgICAgICAgICAgICAgIHByb2ZpdFBlcmNlbnQgPSAxMzA7CiAgICAgICAgICAgICAgICAgICAgICBtaW5BbW91bnQgPSA1MDA7CiAgICAgICAgICAgICAgICAgICAgICBtYXhBbW91bnQgPSAzOTk5OwogICAgICAgICAgICAgICAgICAgICAgdGVybSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwbGFuID09PSAiMyIpIHsKICAgICAgICAgICAgICAgICAgICAgIHByb2ZpdFBlcmNlbnQgPSAxNTA7CiAgICAgICAgICAgICAgICAgICAgICBtaW5BbW91bnQgPSA0MDAwOwogICAgICAgICAgICAgICAgICAgICAgbWF4QW1vdW50ID0gMzAwMDA7CiAgICAgICAgICAgICAgICAgICAgICB0ZXJtID0gMTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBsYW4gPT09ICI0IikgewogICAgICAgICAgICAgICAgICAgICAgcHJvZml0UGVyY2VudCA9IDIwMDsKICAgICAgICAgICAgICAgICAgICAgIG1pbkFtb3VudCA9IDMwMDAwOwogICAgICAgICAgICAgICAgICAgICAgbWF4QW1vdW50ID0gMTAwMDAwMDsKICAgICAgICAgICAgICAgICAgICAgIHRlcm0gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA8IG1pbkFtb3VudCB8fCBhbW91bnQgPiBtYXhBbW91bnQpIHsKICAgICAgICAgICAgICAgICAgICAgIGFzc2lnblBlci52YWx1ZSA9ICJFcnJvciI7CiAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJldHVybi52YWx1ZSA9ICJFcnJvciI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciB0b3RhbFByb2ZpdCA9ICgocHJvZml0UGVyY2VudCAqIHRlcm0gKiBhbW91bnQgLyAxMDApICsgYW1vdW50IC0gYW1vdW50KSAvIGFtb3VudCAqIDEwMDsKICAgICAgICAgICAgICAgICAgICAgIGFzc2lnblBlci52YWx1ZSA9IHRvdGFsUHJvZml0LnRvRml4ZWQoMikgKyAiJSI7CiAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJldHVybi52YWx1ZSA9IGFtb3VudCAqIHRvdGFsUHJvZml0IC8gMTAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgPCEtLSBwcmljZSBzZWN0aW9uIGVuZCBoYXJlIC0tPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjLWJnIiBzdHlsZT0ibWFyZ2luLXRvcDogNTBweDsiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtYmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMTIgY29sLW1kLTEyIGNvbC1zbS0xMiBjb2wteHMtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktbGF0ZXN0Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGJnIiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iY2FsYy11bCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsMSIgc3R5bGU9ImFsaWduLWl0ZW1zOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBpZD0iZmlfMzkzNjgwMiIgc3R5bGU9IndpZHRoOiAzNnB4O2hlaWdodDogMzZweDtmaWxsOiAjMTI2MmZmOyBtYXJnaW4tcmlnaHQ6IDEwcHg7IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIuMzMzIDUxMi4zMzMiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgNTEyLjMzMyA1MTIuMzMzIiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iWE1MSURfMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iWE1MSURfMTQxMF8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iWE1MSURfMjQ4XyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJYTUxJRF8yNjlfIiBkPSJtNDYyLjMzMy4xNjdoLTI5NmMtMjcuNTcgMC01MCAyMi40My01MCA1MHYxNzYuNjc4Yy02Ni4yMSAxMi45MzctMTE2LjMzMyA3MS4zODEtMTE2LjMzMyAxNDEuMzIyIDAgNzkuNDAyIDY0LjU5OCAxNDQgMTQ0IDE0NGgzMTguMzMzYzI3LjU3IDAgNTAtMjIuNDMgNTAtNTB2LTQxMmMwLTI3LjU3MS0yMi40My01MC01MC01MHptLTQ0Mi4zMzMgMzY4YzAtNjguMzc0IDU1LjYyNi0xMjQgMTI0LTEyNHMxMjQgNTUuNjI2IDEyNCAxMjQtNTUuNjI2IDEyNC0xMjQgMTI0LTEyNC01NS42MjYtMTI0LTEyNHptMTY0LjMzMy0xNDZ2LTI0YzAtNS41MTQgNC40ODYtMTAgMTAtMTBoMjRjNS41MTQgMCAxMCA0LjQ4NiAxMCAxMHYyNGMwIDUuNTE0LTQuNDg2IDEwLTEwIDEwaC0yNGMtNS41MTQgMC0xMC00LjQ4Ni0xMC0xMHptMzA4IDI0MGMwIDE2LjU0Mi0xMy40NTggMzAtMzAgMzBoLTI0NS4yMDJjMjMuNTA0LTEzLjkxNSA0Mi43MzUtMzQuMzEyIDU1LjIwMi01OC43MjF2NC43MjFjMCAxNi41NDIgMTMuNDU4IDMwIDMwIDMwaDI0YzE2LjU0MiAwIDMwLTEzLjQ1OCAzMC0zMHYtMjRjMC0xNi41NDItMTMuNDU4LTMwLTMwLTMwaC0yNGMtNS43OTUgMC0xMS4yMDggMS42NTYtMTUuODAxIDQuNTE0Ljk2LTYuNzAzIDEuNDY4LTEzLjU1IDEuNDY4LTIwLjUxNCAwLTQuMDIxLS4xNzQtOC4wMDEtLjQ5OS0xMS45MzkgNC4zNzggMi41MDEgOS40MzkgMy45MzkgMTQuODMyIDMuOTM5aDI0YzE2LjU0MiAwIDMwLTEzLjQ1OCAzMC0zMHYtMjRjMC0xNi41NDItMTMuNDU4LTMwLTMwLTMwaC0yNGMtMTUuNTM2IDAtMjguMzUgMTEuODcyLTI5Ljg1MSAyNy4wMi0xMC42MTctMjAuOTA2LTI2LjE4My0zOC44OTMtNDUuMTUzLTUyLjQgMTIuMTYtMy44MzEgMjEuMDA0LTE1LjIxMSAyMS4wMDQtMjguNjJ2LTI0YzAtMTYuNTQyLTEzLjQ1OC0zMC0zMC0zMGgtMjRjLTE2LjU0MiAwLTMwIDEzLjQ1OC0zMCAzMHYyNGMwIDEuMTc1LjA3NSAyLjMzMS4yMDcgMy40NzEtNi43MTEtLjk2My0xMy41NjctMS40NzEtMjAuNTQtMS40NzEtMi41NzIgMC01LjEyOC4wNzEtNy42NjcuMjA1di0xNzQuMjA1YzAtMTYuNTQyIDEzLjQ1OC0zMCAzMC0zMGgyOTZjMTYuNTQyIDAgMzAgMTMuNDU4IDMwIDMwem0tMjAwLTI0di0yNGMwLTUuNTE0IDQuNDg2LTEwIDEwLTEwaDI0YzUuNTE0IDAgMTAgNC40ODYgMTAgMTB2MjRjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMGgtMjRjLTUuNTE0IDAtMTAtNC40ODYtMTAtMTB6bTAtMTA4di0yNGMwLTUuNTE0IDQuNDg2LTEwIDEwLTEwaDI0YzUuNTE0IDAgMTAgNC40ODYgMTAgMTB2MjRjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMGgtMjRjLTUuNTE0IDAtMTAtNC40ODYtMTAtMTB6Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJYTUxJRF8xMzgzXyIgZD0ibTQ1NC4zMzMgNDQuMTY3aC05NWMtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGg4NXY2MGgtMjYwdi02MGg4NWM1LjUyMiAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3OC0xMC0xMC0xMGgtOTVjLTUuNTIyIDAtMTAgNC40NzctMTAgMTB2ODBjMCA1LjUyMyA0LjQ3OCAxMCAxMCAxMGgyODBjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHYtODBjMC01LjUyMy00LjQ3OC0xMC0xMC0xMHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlhNTElEXzE1MzZfIiBkPSJtMzI2LjMzMyAxNjguMTY3aC0yNGMtMTYuNTQyIDAtMzAgMTMuNDU4LTMwIDMwdjI0YzAgMTYuNTQyIDEzLjQ1OCAzMCAzMCAzMGgyNGMxNi41NDIgMCAzMC0xMy40NTggMzAtMzB2LTI0YzAtMTYuNTQyLTEzLjQ1OC0zMC0zMC0zMHptMTAgNTRjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMGgtMjRjLTUuNTE0IDAtMTAtNC40ODYtMTAtMTB2LTI0YzAtNS41MTQgNC40ODYtMTAgMTAtMTBoMjRjNS41MTQgMCAxMCA0LjQ4NiAxMCAxMHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlhNTElEXzE1NThfIiBkPSJtNDM0LjMzMyAxNjguMTY3aC0yNGMtMTYuNTQyIDAtMzAgMTMuNDU4LTMwIDMwdjI0YzAgMTYuNTQyIDEzLjQ1OCAzMCAzMCAzMGgyNGMxNi41NDIgMCAzMC0xMy40NTggMzAtMzB2LTI0YzAtMTYuNTQyLTEzLjQ1OC0zMC0zMC0zMHptMTAgNTRjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMGgtMjRjLTUuNTE0IDAtMTAtNC40ODYtMTAtMTB2LTI0YzAtNS41MTQgNC40ODYtMTAgMTAtMTBoMjRjNS41MTQgMCAxMCA0LjQ4NiAxMCAxMHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlhNTElEXzE2ODVfIiBkPSJtNDM0LjMzMyAyNzYuMTY3aC0yNGMtMTYuNTQyIDAtMzAgMTMuNDU4LTMwIDMwdjEzMmMwIDE2LjU0MiAxMy40NTggMzAgMzAgMzBoMjRjMTYuNTQyIDAgMzAtMTMuNDU4IDMwLTMwdi0xMzJjMC0xNi41NDItMTMuNDU4LTMwLTMwLTMwem0xMCAxNjJjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMGgtMjRjLTUuNTE0IDAtMTAtNC40ODYtMTAtMTB2LTEzMmMwLTUuNTE0IDQuNDg2LTEwIDEwLTEwaDI0YzUuNTE0IDAgMTAgNC40ODYgMTAgMTB6Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJYTUxJRF8xNjg2XyIgZD0ibTMxNC4zMzMgNjQuMTY3YzIuNjMgMCA1LjIxLTEuMDcgNy4wNjktMi45MyAxLjg2LTEuODYgMi45MzEtNC40NCAyLjkzMS03LjA3cy0xLjA3LTUuMjEtMi45MzEtNy4wN2MtMS44NTktMS44Ni00LjQzOS0yLjkzLTcuMDY5LTIuOTNzLTUuMjEgMS4wNy03LjA3IDIuOTMtMi45MyA0LjQ0LTIuOTMgNy4wNyAxLjA2OSA1LjIxIDIuOTMgNy4wNyA0LjQ0IDIuOTMgNy4wNyAyLjkzeiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iWE1MSURfMTY4N18iIGQ9Im0xNzYuNjA1IDMwMi4zNTRjLTQuOTY2LTIuNDExLTEwLjk1MS0uMzQyLTEzLjM2MyA0LjYyN2wtNTUuMDI0IDExMy4zMDVjLTIuNDEzIDQuOTY4LS4zNDEgMTAuOTUyIDQuNjI3IDEzLjM2NCAxLjQwNy42ODMgMi44OTUgMS4wMDcgNC4zNjEgMS4wMDcgMy43MDkgMCA3LjI3My0yLjA3MyA5LjAwMi01LjYzNGw1NS4wMjQtMTEzLjMwNWMyLjQxNC00Ljk2OC4zNDItMTAuOTUxLTQuNjI3LTEzLjM2NHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlhNTElEXzE2OTBfIiBkPSJtMTE4LjcyNCAyOTYuNzM4Yy0xMi40NzgtMTIuNDc4LTMyLjc4My0xMi40NzktNDUuMjYzIDAtMTIuNDc5IDEyLjQ3OS0xMi40NzkgMzIuNzg0IDAgNDUuMjYzIDYuMjQgNi4yMzkgMTQuNDM2IDkuMzU4IDIyLjYzMSA5LjM1OCA4LjE5NiAwIDE2LjM5My0zLjEyIDIyLjYzMi05LjM1OCAxMi40NzgtMTIuNDc5IDEyLjQ3OC0zMi43ODQgMC00NS4yNjN6bS0xNC4xNDMgMzEuMTIxYy00LjY4MSA0LjY4LTEyLjI5NyA0LjY4Mi0xNi45NzggMC00LjY4Mi00LjY4MS00LjY4Mi0xMi4yOTcgMC0xNi45NzggMi4zNC0yLjM0MSA1LjQxNC0zLjUxMSA4LjQ4OS0zLjUxMSAzLjA3NCAwIDYuMTQ4IDEuMTcgOC40ODggMy41MTEgNC42ODMgNC42ODEgNC42ODMgMTIuMjk3LjAwMSAxNi45Nzh6Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJYTUxJRF8xNjkzXyIgZD0ibTE3MS4wNTUgMzk0LjMzMmMtMTIuNDc5IDEyLjQ3OS0xMi40NzkgMzIuNzg0IDAgNDUuMjYzIDYuMjM5IDYuMjM5IDE0LjQzNiA5LjM1OSAyMi42MzEgOS4zNTkgOC4xOTYgMCAxNi4zOTMtMy4xMiAyMi42MzItOS4zNTkgMTIuNDc5LTEyLjQ3OSAxMi40NzktMzIuNzg0IDAtNDUuMjYzLTEyLjQ4MS0xMi40NzgtMzIuNzg1LTEyLjQ3Ny00NS4yNjMgMHptMzEuMTIgMzEuMTJjLTQuNjgxIDQuNjgzLTEyLjI5OSA0LjY4MS0xNi45NzggMC00LjY4Mi00LjY4MS00LjY4Mi0xMi4yOTcgMC0xNi45NzggMi4zNC0yLjM0IDUuNDE0LTMuNTExIDguNDg5LTMuNTExIDMuMDc0IDAgNi4xNDggMS4xNyA4LjQ4OCAzLjUxMSA0LjY4MiA0LjY4MSA0LjY4MiAxMi4yOTcuMDAxIDE2Ljk3OHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbC10aXRsZSIgc3R5bGU9ImNvbG9yOiB3aGl0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsLXRpdGxlIiBzdHlsZT0iY29sb3I6ICMxMjYyZmYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9maXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsLWludmVzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbGFuLWxlZnQiPlBsYW48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtaW52ZXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iY2FsY19wbGFuIiBjbGFzcz0ib3B0cyIgb25jaGFuZ2U9ImNhbGN1bGF0ZVByb2ZpdCgpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiIGNsYXNzPSJvcHRzIj4xNSUgQWZ0ZXIgMjQgaG91cnM8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMiIgY2xhc3M9Im9wdHMiPjMwJSBBZnRlciA0OCBob3Vyczwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIzIiBjbGFzcz0ib3B0cyI+NTAlIEFmdGVyIDcyIGhvdXJzPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQiIGNsYXNzPSJvcHRzIj4xMDAlIEFmdGVyIDUgRGF5czwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgPG9wdGlvbiB2YWx1ZT0iNCIgY2xhc3M9Im9wdHMiPjI1JSBXRUVLTFk8L29wdGlvbj4gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbC1pbnZlc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGxhbi1sZWZ0Ij5BbW91bnQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtaW52ZXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpbnZfYW1vdW50IiB2YWx1ZT0iNTAiIG5hbWU9ImxpbWl0ZWR0ZXh0ZmllbGQiIHR5cGU9InRleHQiIG9uaW5wdXQ9ImNhbGN1bGF0ZVByb2ZpdCgpOyIgbWF4bGVuZ3RoPSI4IiBjbGFzcz0iaW5wdHMxIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbC1pbnZlc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGxhbi1sZWZ0Ij5ST0k8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtaW52ZXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHZhbHVlPSIiIGlkPSJhc3NpZ25fcGVyIiBkaXNhYmxlZD0iZGlzYWJsZWQiIHR5cGU9InRleHQiIGNsYXNzPSJpbnB0czEiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsLWludmVzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbGFuLWxlZnQiPlByb2ZpdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbC1pbnZlc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdmFsdWU9IiIgaWQ9InRvdGFsX3JldHVybiIgZGlzYWJsZWQ9ImRpc2FibGVkIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iaW5wdHMxIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN1c3RvbS1idG4gbXQtNCIgb25jbGljaz0iY2FsY3VsYXRlUHJvZml0KCkiIHN0eWxlPSJkaXNwbGF5OiBibG9jazttYXJnaW4tcmlnaHQ6IGF1dG87bWFyZ2luLWxlZnQ6IGF1dG87Ym9yZGVyOiBub25lO2NvbG9yOiB3aGl0ZTsiPkNhbGN1bGF0ZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWNhbGJnLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tY29sLWxnLTEyLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgIHZhciBwbGFuQm94ZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGxhbi1ib3gyJyk7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICBwbGFuQm94ZXMuZm9yRWFjaChmdW5jdGlvbiAocGxhbkJveCkgewogICAgICAgICAgICAgICAgICBwbGFuQm94LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICB2YXIgcGxhbklkID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtcGxhbicpOwogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8g0KHQutGA0YvQstCw0LXQvCDQstGB0LUg0LHQu9C+0LrQuCDRgSDQv9C+0LTRgNC+0LHQvdC+0Lkg0LjQvdGE0L7RgNC80LDRhtC40LXQuQogICAgICAgICAgICAgICAgICAgICB2YXIgZGV0YWlsc0Jsb2NrcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXNjLWJveC1yb3cnKTsKICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0Jsb2Nrcy5mb3JFYWNoKGZ1bmN0aW9uIChibG9jaykgewogICAgICAgICAgICAgICAgICAgICAgICBibG9jay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vINCe0YLQvtCx0YDQsNC20LDQtdC8INCx0LvQvtC6INGBINC/0L7QtNGA0L7QsdC90L7QuSDQuNC90YTQvtGA0LzQsNGG0LjQtdC5LCDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40Lkg0LLRi9Cx0YDQsNC90L3QvtC80YMg0L/Qu9Cw0L3RgwogICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWREZXRhaWxzQmxvY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwbGFuSWQgKyAnLWRldGFpbHMnKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGV0YWlsc0Jsb2NrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGV0YWlsc0Jsb2NrLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vINCi0LDQutC20LUg0LLRiyDQvNC+0LbQtdGC0LUg0YHQutGA0YvRgtGML9C/0L7QutCw0LfQsNGC0Ywg0LHQu9C+0Log0YEg0L7Qv9C40YHQsNC90LjQtdC8LCDQtdGB0LvQuCDRjdGC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4KICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkRGVzY3JpcHRpb25CbG9jayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBsYW5JZCArICctZGVzY3JpcHRpb24nKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGVzY3JpcHRpb25CbG9jaykgewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERlc2NyaXB0aW9uQmxvY2suc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTc4NGJkNzIgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtcGFyZW50IiBkYXRhLWlkPSI3ODRiZDcyIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7YmFja2dyb3VuZF9iYWNrZ3JvdW5kJnF1b3Q7OiZxdW90O2NsYXNzaWMmcXVvdDssJnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iIGRhdGEtY29yZS12MzE2LXBsdXM9InRydWUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTMxMjI5NzMgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjMxMjI5NzMiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij48c3BhbiBzdHlsZT0iY29sb3I6I0Y5RjlGOSI+R2V0IFN0YXJ0ZWQgaW4gPC9zcGFuPjMgU2ltcGxlIFN0ZXBzPC9oMj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC05MWI2NmZiIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvciIgZGF0YS1pZD0iOTFiNjZmYiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0idGV4dC1lZGl0b3IuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPHA+UmVnaXN0ZXIsIGNob29zZSB5b3VyIHBsYW4sIGFuZCBtYWtlIHlvdXIgbWFyayBvbiB0aGUgZnV0dXJlIHRocm91Z2ggc3RyYXRlZ2ljIGludmVzdG1lbnRzIHdpdGggRHJlYW0gU3BpbmZsdWVuY2UuPC9wPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWI3ZDJhODIgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlIiBkYXRhLWlkPSJiN2QyYTgyIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICA8aW1nIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjEzOCIgaGVpZ2h0PSIzMiIgc3JjPSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9kZXNpZ24ucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0xNzQiIGFsdD0iIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC04ZDQ0NTQ1IGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSI4ZDQ0NTQ1IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWQxYTBlY2UgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iZDFhMGVjZSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xNmExMGJjIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iMTZhMTBiYyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPSJsYXp5IiBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxNTIzIiBoZWlnaHQ9IjE1NDAiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvc3RlcHMucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0yMTEiIGFsdD0iIiBzcmNzZXQ9ImFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL3N0ZXBzLnBuZyAxNTIzdywgL2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL3N0ZXBzLTI5N3gzMDAucG5nIDI5N3csIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9zdGVwcy0xMDEzeDEwMjQucG5nIDEwMTN3LCAvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvc3RlcHMtNzY4eDc3Ny5wbmcgNzY4dywgL2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL3N0ZXBzLTE1MTl4MTUzNi5wbmcgMTUxOXciIHNpemVzPSIobWF4LXdpZHRoOiAxNTIzcHgpIDEwMHZ3LCAxNTIzcHgiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01ZmM4Y2MwIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjVmYzhjYzAiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtM2U5NmZjOCBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iM2U5NmZjOCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xYzJlNTkwIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjFjMmU1OTAiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtODZkZjg0NyBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9Ijg2ZGY4NDciIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iODAiIGhlaWdodD0iODAiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvMS5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTIxMiIgYWx0PSIiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWIwNDM0YWUgZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaGVyaXQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlIiBkYXRhLWlkPSJiMDQzNGFlIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjQ3IiBzcmM9ImFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2ljLTEucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0yMTMiIGFsdD0iIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtODg5MDU1NSBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSI4ODkwNTU1IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWE5YjFiNzQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9ImE5YjFiNzQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5SZWdpc3RlciBBY2NvdW50PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC05MDdkZjBlIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvciIgZGF0YS1pZD0iOTA3ZGYwZSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0idGV4dC1lZGl0b3IuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UmVnaXN0cmF0aW9uIGlzIHlvdXIgZ2F0ZXdheSB0byBhIHdvcmxkIG9mIGludmVzdG1lbnQgcG9zc2liaWxpdGllcy4gRW5qb3kgYSBzZWFtbGVzcyBvbmJvYXJkaW5nIHByb2Nlc3MsIHdoZXJlIHlvdXIgaW5mb3JtYXRpb24gaXMgaGFuZGxlZCB3aXRoIHRoZSB1dG1vc3Qgc2VjdXJpdHkuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTM5MzE4MDkgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjM5MzE4MDkiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtM2QxODIyMyBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSIzZDE4MjIzIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWRmNTZkZGIgZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaGVyaXQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlIiBkYXRhLWlkPSJkZjU2ZGRiIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiBzcmM9ImFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyLzIucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0yMTciIGFsdD0iIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1iZWMxMmFiIGVsZW1lbnRvci13aWRnZXQtbW9iaWxlX193aWR0aC1pbmhlcml0IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iYmVjMTJhYiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPSJsYXp5IiBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxNiIgaGVpZ2h0PSI0NyIgc3JjPSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy0xLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMjEzIiBhbHQ9IiIgLz4JCQkJCQkJCQkJCQkJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWRiMWU4MTcgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iZGIxZTgxNyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0wMjZmMmVjIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSIwMjZmMmVjIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+Q2hvb3NlIFBsYW48L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTU3ZDU5NzEgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIiBkYXRhLWlkPSI1N2Q1OTcxIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJ0ZXh0LWVkaXRvci5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5XaGV0aGVyIHlvdSdyZSBzZWVraW5nIHN0YWJsZSBncm93dGgsIGhpZ2ggcmV0dXJucywgb3IgYSBiYWxhbmNlZCBhcHByb2FjaCwgRHJlYW0gU3BpbmZsdWVuY2Ugb2ZmZXJzIGEgZGl2ZXJzZSByYW5nZSBvZiBwbGFucy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtODkzZDRmOCBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iODkzZDRmOCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1lMmZkNGVlIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9ImUyZmQ0ZWUiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZDYzMjg3NyBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9ImQ2MzI4NzciIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iODAiIGhlaWdodD0iODAiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvMy5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTIxOCIgYWx0PSIiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTI2MWI0ZTIgZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaGVyaXQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlIiBkYXRhLWlkPSIyNjFiNGUyIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjQ3IiBzcmM9ImFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2ljLTEucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0yMTMiIGFsdD0iIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYzFmMWE2NiBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSJjMWYxYTY2IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTQxYzU4NTQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjQxYzU4NTQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5NYWtlIEludmVzdG1lbnQ8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTA1MjU2MzEgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIiBkYXRhLWlkPSIwNTI1NjMxIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJ0ZXh0LWVkaXRvci5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5DaG9vc2UgdGhlIHN0YXJ0dXBzIHlvdSBiZWxpZXZlIGluLCBzcGVjaWZ5IHlvdXIgaW52ZXN0bWVudCBhbW91bnQsIGFuZCB3aXRuZXNzIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB5b3VyIGZpbmFuY2lhbCBkcmVhbXMgaW50byByZWFsaXR5LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTUzODZlY2QgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtcGFyZW50IiBkYXRhLWlkPSI1Mzg2ZWNkIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBpZD0id2FsbGV0IiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7YmFja2dyb3VuZF9iYWNrZ3JvdW5kJnF1b3Q7OiZxdW90O2NsYXNzaWMmcXVvdDssJnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iIGRhdGEtY29yZS12MzE2LXBsdXM9InRydWUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTE3MDRkMDQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjE3MDRkMDQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5TdGF0aXN0aWNzPC9oMj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1mMDIzOWRmIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvciIgZGF0YS1pZD0iZjAyMzlkZiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0idGV4dC1lZGl0b3IuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPHA+V2UgYXJlIG5vdCBzaHkgYWJvdXQgc2hvd2luZyB0aGUgcmVhbCBzdGF0cyBvZiB0aGUgY29tcGFueS48L3A+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNTU2ZDkwZCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9IjU1NmQ5MGQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iMTM4IiBoZWlnaHQ9IjMyIiBzcmM9ImFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2Rlc2lnbi5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTE3NCIgYWx0PSIiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTE2ZjQ4YTMgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjE2ZjQ4YTMiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHlsZT4vKiEgZWxlbWVudG9yIC0gdjMuMTkuMCAtIDA1LTAyLTIwMjQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IC5lbGVtZW50b3ItaW1hZ2UtYm94LWNvbnRlbnR7d2lkdGg6MTAwJX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIsLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVye2Rpc3BsYXk6ZmxleH0uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXJ7dGV4dC1hbGlnbjpyaWdodDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlcnt0ZXh0LWFsaWduOmxlZnQ7ZmxleC1kaXJlY3Rpb246cm93fS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZ3ttYXJnaW46YXV0b30uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXZlcnRpY2FsLWFsaWduLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVye2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci12ZXJ0aWNhbC1hbGlnbi1taWRkbGUgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlcnthbGlnbi1pdGVtczpjZW50ZXJ9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci12ZXJ0aWNhbC1hbGlnbi1ib3R0b20gLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlcnthbGlnbi1pdGVtczpmbGV4LWVuZH19QG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpey5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWd7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50O21hcmdpbi1ib3R0b206MTVweH19LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZ3tkaXNwbGF5OmlubGluZS1ibG9ja30uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgYXtjb2xvcjppbmhlcml0fS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVye3RleHQtYWxpZ246Y2VudGVyfS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbnttYXJnaW46MH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0zMzU4MTE4IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjMzNTgxMTgiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3NiBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3ItcG9zaXRpb24tdG9wIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3giIGRhdGEtaWQ9ImNhM2JhNzYiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLWJveC5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgYm94LXN0YXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlndXJlIGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWltZyI+PGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvZGF5cy5zdmciIHN0eWxlPSJ3aWR0aDogNTBweDsgYm9yZGVyLXJhZGl1czogMTJweDsiPjwvZmlndXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUiIHN0eWxlPSJtYXJnaW46IDBweDsiPjMwOTA8L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiI+REFZUyBPTkxJTkU8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWE5MjcxY2EgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtcGFyZW50IiBkYXRhLWlkPSJhOTI3MWNhIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBpZD0icHJvZHVjdCIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1kOTIzYTViIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSJkOTIzYTViIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+PHNwYW4gc3R5bGU9ImNvbG9yOiNGOUY5RjkiPlRoZSBQb3dlciBvZiA8L3NwYW4+IDxzcGFuIHN0eWxlPSJjb2xvcjojRjlGOUY5Ij5TdGFydHVwczwvc3Bhbj48L2gyPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTg4ZDhiNDIgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlIiBkYXRhLWlkPSI4OGQ4YjQyIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICA8aW1nIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjEzOCIgaGVpZ2h0PSIzMiIgc3JjPSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9kZXNpZ24ucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0xNzQiIGFsdD0iIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xMzM0OGZmIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSIxMzM0OGZmIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTkyMDk2MzMgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iOTIwOTYzMyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmIGVsZW1lbnRvci1wb3NpdGlvbi10b3AgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCIgZGF0YS1pZD0iZDNiNjc4ZiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UtYm94LmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIj48aW1nIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWNfbWFuYWdlLXlvdXItcG9ydGZvbGlvLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMjQ1IiBhbHQ9IiIgc3Jjc2V0PSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pY19tYW5hZ2UteW91ci1wb3J0Zm9saW8ucG5nIDIyMHcsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pY19tYW5hZ2UteW91ci1wb3J0Zm9saW8tMTUweDE1MC5wbmcgMTUwdyIgc2l6ZXM9IihtYXgtd2lkdGg6IDIyMHB4KSAxMDB2dywgMjIwcHgiIC8+PC9maWd1cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSI+VGhlIENhdGFseXN0cyBvZiBJbm5vdmF0aW9uPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24iPlN0YXJ0dXBzIGFyZSB0aGUgZHJpdmluZyBmb3JjZSBiZWhpbmQgaW5ub3ZhdGlvbiwgY29uc3RhbnRseSBjaGFsbGVuZ2luZyB0aGUgc3RhdHVzIHF1byBhbmQgcHVzaGluZyB0aGUgYm91bmRhcmllcyBvZiB3aGF0J3MgcG9zc2libGUuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTYyYmQxYWUgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iNjJiZDFhZSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC03NzQ4YTFmIGVsZW1lbnRvci1wb3NpdGlvbi10b3AgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCIgZGF0YS1pZD0iNzc0OGExZiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UtYm94LmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIj48aW1nIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtY2FwaXRhbC1tYXJrZXQucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0yNDkiIGFsdD0iIiBzcmNzZXQ9ImFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2ljLWNhcGl0YWwtbWFya2V0LnBuZyAyMjB3LCAvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtY2FwaXRhbC1tYXJrZXQtMTUweDE1MC5wbmcgMTUwdyIgc2l6ZXM9IihtYXgtd2lkdGg6IDIyMHB4KSAxMDB2dywgMjIwcHgiIC8+PC9maWd1cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSI+VGhlIEVudHJlcHJlbmV1cmlhbCBTcGlyaXQgVW5sZWFzaGVkPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24iPkRpc2NvdmVyIGhvdyB0aGVzZSB2aXNpb25hcnkgbGVhZGVycyBuYXZpZ2F0ZSBjaGFsbGVuZ2VzLCB0dXJuIG9ic3RhY2xlcyBpbnRvIG9wcG9ydHVuaXRpZXMsIGFuZCB0cmFuc2Zvcm0gaWRlYXMgaW50byByZWFsaXR5LiA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOTgxZDFjOSBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSI5ODFkMWM5IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTI3ODE5YTMgZWxlbWVudG9yLXBvc2l0aW9uLXRvcCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IiBkYXRhLWlkPSIyNzgxOWEzIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS1ib3guZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1pbWciPjxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjIyMCIgc3JjPSJhc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1tb2JpbGUtYXBwcy5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTI1MCIgYWx0PSIiIHNyY3NldD0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtbW9iaWxlLWFwcHMucG5nIDIyMHcsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1tb2JpbGUtYXBwcy0xNTB4MTUwLnBuZyAxNTB3IiBzaXplcz0iKG1heC13aWR0aDogMjIwcHgpIDEwMHZ3LCAyMjBweCIgLz48L2ZpZ3VyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIj5TaGFwaW5nIHRoZSBGdXR1cmUgTGFuZHNjYXBlPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24iPkpvaW4gdXMgaW4gZW52aXNpb25pbmcgdGhlIGZ1dHVyZSBhcyB3ZSBleHBsb3JlIHN0YXJ0dXBzJyBwaXZvdGFsIHJvbGUgaW4gc2hhcGluZyB0aGUgYnVzaW5lc3MgbGFuZHNjYXBlLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNTVmZTBjZSBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1wYXJlbnQiIGRhdGEtaWQ9IjU1ZmUwY2UiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGlkPSJmZWF0dXJlcyIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xNjMyMmEyIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSIxNjMyMmEyIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+PHNwYW4gc3R5bGU9ImNvbG9yOiNGOUY5RjkiPldoeSBDaG9vc2UgPC9zcGFuPlVzPC9oMj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1mZmZmM2IzIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iZmZmZjNiMyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxMzgiIGhlaWdodD0iMzIiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvZGVzaWduLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMTc0IiBhbHQ9IiIgLz4JCQkJCQkJCQkJCQkJCiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMmUyODMyYSBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iMmUyODMyYSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1lNmM1NTc1IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9ImU2YzU1NzUiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCBlbGVtZW50b3ItaWNvbi1saXN0LS1sYXlvdXQtdHJhZGl0aW9uYWwgZWxlbWVudG9yLWxpc3QtaXRlbS1saW5rLWZ1bGxfd2lkdGggZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWljb24tbGlzdCIgZGF0YS1pZD0iNTUzOTc0NCIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaWNvbi1saXN0LmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2Nzcy93aWRnZXQtaWNvbi1saXN0Lm1pbi5jc3MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItaWNvbi1saXN0LWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiB2aWV3Qm94PSIwIDAgMzAgMzAiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMzMwXzEyMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMi4xNzk2MSAyOS44NzA1QzIuMDk3NTEgMjkuNzk5MiAyLjA0MDIyIDI5LjcwMzcgMi4wMTYwNCAyOS41OTc3QzEuOTkxODcgMjkuNDkxNyAyLjAwMjA2IDI5LjM4MDcgMi4wNDUxNSAyOS4yODA5TDguMTYzMjEgMTUuMDAyTDIuMDQ1MTUgMC43MjMwNEMxLjg0MTM5IDAuMjk2ODk2IDIuMzY5OTMgLTAuMTkxMzA4IDIuNzc5NTIgMC4wNzY1ODM1TDI3LjYwMzUgMTQuNTU3MkMyNy45NDA3IDE0LjczODIgMjcuOTQ1OCAxNS4yNjU3IDI3LjYwMzUgMTUuNDQ2N0wyLjc3OTUyIDI5LjkyNzRDMi42ODY2IDI5Ljk4MzMgMi41NzgxOCAzMC4wMDggMi40NzAxOSAyOS45OTc4QzIuMzYyMjEgMjkuOTg3NSAyLjI2MDM1IDI5Ljk0MjkgMi4xNzk2MSAyOS44NzA1WiIgZmlsbD0iIzEyNjJGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzMzMF8xMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09Im1hdHJpeCgtNC4zNzExNGUtMDggMSAxIDQuMzcxMTRlLTA4IDAgMCkiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWljb24tbGlzdC10ZXh0Ij5Jbm5vdmF0aW9uIGF0IHRoZSBDb3JlOiBXZSBmb2N1cyBvbiBjdXR0aW5nLWVkZ2Ugc3RhcnR1cHMgdGhhdCByZWRlZmluZSBpbmR1c3RyaWVzLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWljb24tbGlzdC1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgdmlld0JveD0iMCAwIDMwIDMwIiBmaWxsPSJub25lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzMzMF8xMjApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIuMTc5NjEgMjkuODcwNUMyLjA5NzUxIDI5Ljc5OTIgMi4wNDAyMiAyOS43MDM3IDIuMDE2MDQgMjkuNTk3N0MxLjk5MTg3IDI5LjQ5MTcgMi4wMDIwNiAyOS4zODA3IDIuMDQ1MTUgMjkuMjgwOUw4LjE2MzIxIDE1LjAwMkwyLjA0NTE1IDAuNzIzMDRDMS44NDEzOSAwLjI5Njg5NiAyLjM2OTkzIC0wLjE5MTMwOCAyLjc3OTUyIDAuMDc2NTgzNUwyNy42MDM1IDE0LjU1NzJDMjcuOTQwNyAxNC43MzgyIDI3Ljk0NTggMTUuMjY1NyAyNy42MDM1IDE1LjQ0NjdMMi43Nzk1MiAyOS45Mjc0QzIuNjg2NiAyOS45ODMzIDIuNTc4MTggMzAuMDA4IDIuNDcwMTkgMjkuOTk3OEMyLjM2MjIxIDI5Ljk4NzUgMi4yNjAzNSAyOS45NDI5IDIuMTc5NjEgMjkuODcwNVoiIGZpbGw9IiMxMjYyRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwMF8zMzBfMTIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJtYXRyaXgoLTQuMzcxMTRlLTA4IDEgMSA0LjM3MTE0ZS0wOCAwIDApIj48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCI+RXhwZXJ0IEN1cmF0aW9uOiBPdXIgdGVhbSBtZXRpY3Vsb3VzbHkgc2VsZWN0cyBwcm9qZWN0cyB3aXRoIHRoZSBwb3RlbnRpYWwgdG8gYmVjb21lIGxlZ2VuZHMuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItaWNvbi1saXN0LWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiB2aWV3Qm94PSIwIDAgMzAgMzAiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMzMwXzEyMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMi4xNzk2MSAyOS44NzA1QzIuMDk3NTEgMjkuNzk5MiAyLjA0MDIyIDI5LjcwMzcgMi4wMTYwNCAyOS41OTc3QzEuOTkxODcgMjkuNDkxNyAyLjAwMjA2IDI5LjM4MDcgMi4wNDUxNSAyOS4yODA5TDguMTYzMjEgMTUuMDAyTDIuMDQ1MTUgMC43MjMwNEMxLjg0MTM5IDAuMjk2ODk2IDIuMzY5OTMgLTAuMTkxMzA4IDIuNzc5NTIgMC4wNzY1ODM1TDI3LjYwMzUgMTQuNTU3MkMyNy45NDA3IDE0LjczODIgMjcuOTQ1OCAxNS4yNjU3IDI3LjYwMzUgMTUuNDQ2N0wyLjc3OTUyIDI5LjkyNzRDMi42ODY2IDI5Ljk4MzMgMi41NzgxOCAzMC4wMDggMi40NzAxOSAyOS45OTc4QzIuMzYyMjEgMjkuOTg3NSAyLjI2MDM1IDI5Ljk0MjkgMi4xNzk2MSAyOS44NzA1WiIgZmlsbD0iIzEyNjJGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzMzMF8xMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09Im1hdHJpeCgtNC4zNzExNGUtMDggMSAxIDQuMzcxMTRlLTA4IDAgMCkiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWljb24tbGlzdC10ZXh0Ij5Zb3VyIFN1Y2Nlc3MsIE91ciBNaXNzaW9uOiBXZSBhcmUgZGVkaWNhdGVkIHRvIGVuc3VyaW5nIHlvdXIgaW52ZXN0bWVudHMgeWllbGQgbGVnZW5kYXJ5IHJldHVybnMuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItaWNvbi1saXN0LWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiB2aWV3Qm94PSIwIDAgMzAgMzAiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMzMwXzEyMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMi4xNzk2MSAyOS44NzA1QzIuMDk3NTEgMjkuNzk5MiAyLjA0MDIyIDI5LjcwMzcgMi4wMTYwNCAyOS41OTc3QzEuOTkxODcgMjkuNDkxNyAyLjAwMjA2IDI5LjM4MDcgMi4wNDUxNSAyOS4yODA5TDguMTYzMjEgMTUuMDAyTDIuMDQ1MTUgMC43MjMwNEMxLjg0MTM5IDAuMjk2ODk2IDIuMzY5OTMgLTAuMTkxMzA4IDIuNzc5NTIgMC4wNzY1ODM1TDI3LjYwMzUgMTQuNTU3MkMyNy45NDA3IDE0LjczODIgMjcuOTQ1OCAxNS4yNjU3IDI3LjYwMzUgMTUuNDQ2N0wyLjc3OTUyIDI5LjkyNzRDMi42ODY2IDI5Ljk4MzMgMi41NzgxOCAzMC4wMDggMi40NzAxOSAyOS45OTc4QzIuMzYyMjEgMjkuOTg3NSAyLjI2MDM1IDI5Ljk0MjkgMi4xNzk2MSAyOS44NzA1WiIgZmlsbD0iIzEyNjJGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzMzMF8xMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09Im1hdHJpeCgtNC4zNzExNGUtMDggMSAxIDQuMzcxMTRlLTA4IDAgMCkiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWljb24tbGlzdC10ZXh0Ij5EcmVhbSBTcGluZmx1ZW5jZSBzdGFuZHMgYXMgdGhlIHVsdGltYXRlIGlubm92YXRpb24gaHViLCBwcm92aWRpbmcgYSB1bmlxdWUgYmxlbmQgb2YgY3V0dGluZy1lZGdlIHN0YXJ0dXBzIGFuZCBleHBlcnQgZ3VpZGFuY2UuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItaWNvbi1saXN0LWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiB2aWV3Qm94PSIwIDAgMzAgMzAiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMzMwXzEyMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMi4xNzk2MSAyOS44NzA1QzIuMDk3NTEgMjkuNzk5MiAyLjA0MDIyIDI5LjcwMzcgMi4wMTYwNCAyOS41OTc3QzEuOTkxODcgMjkuNDkxNyAyLjAwMjA2IDI5LjM4MDcgMi4wNDUxNSAyOS4yODA5TDguMTYzMjEgMTUuMDAyTDIuMDQ1MTUgMC43MjMwNEMxLjg0MTM5IDAuMjk2ODk2IDIuMzY5OTMgLTAuMTkxMzA4IDIuNzc5NTIgMC4wNzY1ODM1TDI3LjYwMzUgMTQuNTU3MkMyNy45NDA3IDE0LjczODIgMjcuOTQ1OCAxNS4yNjU3IDI3LjYwMzUgMTUuNDQ2N0wyLjc3OTUyIDI5LjkyNzRDMi42ODY2IDI5Ljk4MzMgMi41NzgxOCAzMC4wMDggMi40NzAxOSAyOS45OTc4QzIuMzYyMjEgMjkuOTg3NSAyLjI2MDM1IDI5Ljk0MjkgMi4xNzk2MSAyOS44NzA1WiIgZmlsbD0iIzEyNjJGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzMzMF8xMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09Im1hdHJpeCgtNC4zNzExNGUtMDggMSAxIDQuMzcxMTRlLTA4IDAgMCkiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWljb24tbGlzdC10ZXh0Ij5FeHBlcmllbmNlIHRoZSByZWFzc3VyYW5jZSBvZiBwcm9hY3RpdmUgcmlzayBtaXRpZ2F0aW9uIHN0cmF0ZWdpZXMgZW1iZWRkZWQgaW4gRHJlYW0gU3BpbmZsdWVuY2UuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTcwYjZmYTYgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWJ1dHRvbiIgZGF0YS1pZD0iNzBiNmZhNiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iYnV0dG9uLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1idXR0b24td3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uIGVsZW1lbnRvci1idXR0b24tbGluayBlbGVtZW50b3Itc2l6ZS1zbSIgaHJlZj0iP2E9c2lnbnVwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1idXR0b24tY29udGVudC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1idXR0b24taWNvbiBlbGVtZW50b3ItYWxpZ24taWNvbi1yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMTUiIHZpZXdCb3g9IjAgMCAyNCAxNSIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xIDguNUMwLjQ0NzcxNSA4LjUgMCA4LjA1MjI4IDAgNy41QzAgNi45NDc3MiAwLjQ0NzcxNSA2LjUgMSA2LjVMMSA4LjVaTTIzLjcwNzEgNi43OTI4OUMyNC4wOTc2IDcuMTgzNDIgMjQuMDk3NiA3LjgxNjU4IDIzLjcwNzEgOC4yMDcxMUwxNy4zNDMxIDE0LjU3MTFDMTYuOTUyNiAxNC45NjE2IDE2LjMxOTUgMTQuOTYxNiAxNS45Mjg5IDE0LjU3MTFDMTUuNTM4NCAxNC4xODA1IDE1LjUzODQgMTMuNTQ3NCAxNS45Mjg5IDEzLjE1NjlMMjEuNTg1OCA3LjVMMTUuOTI4OSAxLjg0MzE1QzE1LjUzODQgMS40NTI2MiAxNS41Mzg0IDAuODE5NDU3IDE1LjkyODkgMC40Mjg5MzJDMTYuMzE5NSAwLjAzODQwNzggMTYuOTUyNiAwLjAzODQwNzggMTcuMzQzMSAwLjQyODkzMkwyMy43MDcxIDYuNzkyODlaTTEgNi41TDIzIDYuNVY4LjVMMSA4LjVMMSA2LjVaIiBmaWxsPSIjRjlGOUY5Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uLXRleHQiPlNpZ251cDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1kYzI4M2MyIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9ImRjMjgzYzIiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtN2M3NzIyOSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9IjdjNzcyMjkiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iMTE5NiIgaGVpZ2h0PSI4NzMiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvYnV5LWltZy5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTI2NCIgYWx0PSIiIHNyY3NldD0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvYnV5LWltZy5wbmcgMTE5NncsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9idXktaW1nLTMwMHgyMTkucG5nIDMwMHcsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9idXktaW1nLTEwMjR4NzQ3LnBuZyAxMDI0dywgL2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2J1eS1pbWctNzY4eDU2MS5wbmcgNzY4dyIgc2l6ZXM9IihtYXgtd2lkdGg6IDExOTZweCkgMTAwdncsIDExOTZweCIgLz4JCQkJCQkJCQkJCQkJCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC02YTc4NjAwIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iNmE3ODYwMCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC05ZDA5NTgyIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjlkMDk1ODIiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMThjZjUxMiBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9IjE4Y2Y1MTIiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz0ibGF6eSIgc3JjPSJBZmYucG5nIj4JCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNWJiM2UxNSBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSI1YmIzZTE1IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTYzZjE5ZjIgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjYzZjE5ZjIiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij48c3BhbiBzdHlsZT0iY29sb3I6I0Y5RjlGOSI+QWZmaWxpYXRlIDwvc3Bhbj5Qcm9ncmFtPC9oMj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1hNWE0NTRmIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iYTVhNDU0ZiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxMzgiIGhlaWdodD0iMzIiIHNyYz0iYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvZGVzaWduLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMTc0IiBhbHQ9IiIgLz4JCQkJCQkJCQkJCQkJCiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYTMxMmVjZSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IiIGRhdGEtaWQ9ImEzMTJlY2UiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InRleHQtZWRpdG9yLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPkpvaW4gZm9yY2VzIHdpdGggRHJlYW0gU3BpbmZsdWVuY2UgYW5kIGJlY29tZSBhIGNhdGFseXN0IGZvciBjaGFuZ2UuIE91ciBQYXJ0bmVyIFByb2dyYW0gb2ZmZXJzIGV4Y2x1c2l2ZSBiZW5lZml0cywgZWFybHkgYWNjZXNzIHRvIGludmVzdG1lbnQgb3Bwb3J0dW5pdGllcywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhIHNoYXJlIGluIHRoZSBzdWNjZXNzIG9mIHRoZSBzdGFydHVwcyB5b3UgY2hhbXBpb24uIFRvZ2V0aGVyLCB3ZSBzaGFwZSB0aGUgZnV0dXJlLgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMmY3NThkMyBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iMmY3NThkMyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPjEwJSAtIFJlZmVycmFsIENvbW1pc3Npb24gPC9oNj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1lZmNhODY5IGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iZWZjYTg2OSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgaWQ9InN1cHBvcnQiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90OywmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSIgZGF0YS1jb3JlLXYzMTYtcGx1cz0idHJ1ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LWJveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtYml0Y29pbi5wbmciIGNsYXNzPSJpbWctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LWJveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtZXRoZXJldW0ucG5nIiBjbGFzcz0iaW1nLXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudC11c2R0dHJjMjAucG5nIiBjbGFzcz0iaW1nLXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudC1iaXRjb2luLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudC1ldGhlcmV1bS5wbmciIGNsYXNzPSJpbWctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzL2ltYWdlcy9wYXltZW50cy9wYXltZW50LXVzZHR0cmMyMC5wbmciIGNsYXNzPSJpbWctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PiA8ZGl2IGNsYXNzPSJwYXltZW50LWJveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtYml0Y29pbi5wbmciIGNsYXNzPSJpbWctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LWJveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtZXRoZXJldW0ucG5nIiBjbGFzcz0iaW1nLXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudC11c2R0dHJjMjAucG5nIiBjbGFzcz0iaW1nLXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8L2Rpdj4gPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzL2ltYWdlcy9wYXltZW50cy9wYXltZW50LWJpdGNvaW4ucG5nIiBjbGFzcz0iaW1nLXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzL2ltYWdlcy9wYXltZW50cy9wYXltZW50LWV0aGVyZXVtLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LWJveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtdXNkdHRyYzIwLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPSJwYXltZW50LWJveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtcmlwcGxlLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudC1kb2dlY29pbi5wbmciIGNsYXNzPSJpbWctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LWJveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtYm5iLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudC10cm9uLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudC11c2R0dHJjMjAucG5nIiBjbGFzcz0iaW1nLXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzL2ltYWdlcy9wYXltZW50cy9wYXltZW50LXVzZHRiZXAyMC5wbmciIGNsYXNzPSJpbWctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgoJCQkJICA8ZGl2IGNsYXNzPSJwYXltZW50LWJveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtc29sYW5hLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CgkJCQkgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudC1lcGF5Y29yZS5wbmciIGNsYXNzPSJpbWctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgoJCQkJICA8ZGl2IGNsYXNzPSJwYXltZW50LWJveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnRfdGV0aGVycG9sLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CgkJCQkgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudF9tYXRpYy5wbmciIGNsYXNzPSJpbWctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAucm93LXBheW1lbnQgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgfQogICAgICAgICAgICAucGF5bWVudC1ib3ggewogICAgICAgICAgICAvKiB3aWR0aDogMTMwcHg7ICovCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmltZy1wYXltZW50IHsKICAgICAgICAgICAgaGVpZ2h0OiA1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgICAgICBtYXJnaW46IDNweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAuZmFxLXRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgfQogICAgICAgICAgICAucS10aXRsZSB7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2EwY2VmZjZlOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5hLXRpdGxlIHsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5mYXEtYm94IHsKICAgICAgICAgICAgd2lkdGg6IDUwJTsKICAgICAgICAgICAgfQogICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsKICAgICAgICAgICAgLmZhcS1ib3ggewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgfQoJCQkuZmFxX21vYmlsZSB7CgkJCQlkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwoJCQl9CiAgICAgICAgICAgIH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZWZjYTg2OSBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1wYXJlbnQiIGRhdGEtaWQ9ImVmY2E4NjkiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGlkPSJzdXBwb3J0IiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7YmFja2dyb3VuZF9iYWNrZ3JvdW5kJnF1b3Q7OiZxdW90O2NsYXNzaWMmcXVvdDssJnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iIGRhdGEtY29yZS12MzE2LXBsdXM9InRydWUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciIgc3R5bGU9InBhZGRpbmc6IDBweCAhaW1wb3J0YW50IiBpZD0iZmFxIj4KICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJmYXEtdGl0bGUiPkZBUTwvaDM+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciBmYXFfbW9iaWxlIj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmFxLWJveCI+CiAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0icS10aXRsZSB0b2dnbGUtcXVlc3Rpb24iPkhvdyBjYW4gSSBjcmVhdGUgYW4gYWNjb3VudD88L2g0PgogICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYS10aXRsZSB0b2dnbGUtYW5zd2VyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPlRvIGNyZWF0ZSBhbiBhY2NvdW50LCBzaW1wbHkgdmlzaXQgb3VyIHNpZ24tdXAgcGFnZSBhbmQgZmlsbCBvdXQgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIGluIHRoZSByZWdpc3RyYXRpb24gZm9ybS48L3A+CiAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0icS10aXRsZSB0b2dnbGUtcXVlc3Rpb24iPkhvdyBkb2VzIHRoZSBBZmZpbGlhdGUgcHJvZ3JhbSB3b3JrPzwvaDQ+CiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhLXRpdGxlIHRvZ2dsZS1hbnN3ZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+T3VyIEFmZmlsaWF0ZSBwcm9ncmFtIGlzIGEgcG93ZXJmdWwgb3Bwb3J0dW5pdHkgZm9yIHlvdSB0byBlYXJuIGFkZGl0aW9uYWwgaW5jb21lLiBJdCBmZWF0dXJlcyAxMCUgcmVmZXJyYWwgY29tbWlzc2lvbiBmb3IgcmVmZXJyYWxzLiBTaW1wbHkgcmVmZXIgb3RoZXJzIHRvIG91ciBwbGF0Zm9ybSwgCiAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3UnbGwgZWFybiAxMCUgb2YgdGhlaXIgaW52ZXN0bWVudHMuIEl0J3MgYSBncmVhdCB3YXkgdG8gZ3JvdyB5b3VyIGVhcm5pbmdzIGFzIHlvdSBpbnRyb2R1Y2UgbW9yZSBwZW9wbGUgdG8gRHJlYW0gU3BpbmZsdWVuY2UuCiAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJxLXRpdGxlIHRvZ2dsZS1xdWVzdGlvbiI+V2hhdCBwYXltZW50IG1ldGhvZHMgZG9lcyB0aGUgcGxhdGZvcm0gYWNjZXB0IGZvciBkZXBvc2l0cz88L2g0PgogICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYS10aXRsZSB0b2dnbGUtYW5zd2VyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPldlIGFjY2VwdCBhIHZhcmlldHkgb2YgY3J5cHRvY3VycmVuY2llcyBmb3IgZGVwb3NpdHMsIGluY2x1ZGluZyBCaXRjb2luLCBFdGhlcmV1bSBhbmQgVVNEVCAoVFJDMjApLjwvcD4KICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJxLXRpdGxlIHRvZ2dsZS1xdWVzdGlvbiI+V2hhdCBpcyB0aGUgbWluaW11bSBkZXBvc2l0IGFtb3VudD88L2g0PgogICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYS10aXRsZSB0b2dnbGUtYW5zd2VyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPlRoZSBtaW5pbXVtIGRlcG9zaXQgYW1vdW50OiAkNTAuPC9wPgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmFxLWJveCI+CiAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0icS10aXRsZSB0b2dnbGUtcXVlc3Rpb24iPldoYXQgaXMgdGhlIG1pbmltdW0gd2l0aGRyYXdhbCBhbW91bnQ/PC9oND4KICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImEtdGl0bGUgdG9nZ2xlLWFuc3dlciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij5UaGUgbWluaW11bSB3aXRoZHJhd2FsIGFtb3VudCBpcyAkMTAuPC9wPgogICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InEtdGl0bGUgdG9nZ2xlLXF1ZXN0aW9uIj5BZnRlciB5b3UgbWFrZSBhIHdpdGhkcmF3YWwgcmVxdWVzdCwgd2hlbiB3aWxsIHRoZSBmdW5kcyBiZSBhdmFpbGFibGUgaW4geW91ciBlLWN1cnJlbmN5IGFjY291bnQ/PC9oND4KICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImEtdGl0bGUgdG9nZ2xlLWFuc3dlciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij5BbGwgd2l0aGRyYXdhbCByZXF1ZXN0cyBhcmUgcHJvY2Vzc2VkIGluc3RhbnRseS48L3A+CiAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0icS10aXRsZSB0b2dnbGUtcXVlc3Rpb24iPkkgaGF2ZSBtb3JlIHF1ZXN0aW9uLjwvaDQ+CiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhLXRpdGxlIHRvZ2dsZS1hbnN3ZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+UGxlYXNlLCBjb250YWN0IHVzIHZpYSBlbWFpbCA8YSBocmVmPSIvY2RuLWNnaS9sL2VtYWlsLXByb3RlY3Rpb24iIGNsYXNzPSJfX2NmX2VtYWlsX18iIGRhdGEtY2ZlbWFpbD0iN2EyOTBmMGEwYTE1MDgwZTNhMWUwODFmMWIxNzA5MGExMzE0MWMxNjBmMWYxNDE5MWY1NDE5MTUxNyI+W2VtYWlsJiMxNjA7cHJvdGVjdGVkXTwvYT4uPC9wPgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPHNjcmlwdCBkYXRhLWNmYXN5bmM9ImZhbHNlIiBzcmM9Ii9jZG4tY2dpL3NjcmlwdHMvNWM1ZGQ3MjgvY2xvdWRmbGFyZS1zdGF0aWMvZW1haWwtZGVjb2RlLm1pbi5qcyI+PC9zY3JpcHQ+PHNjcmlwdD4KICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgJCgiLnRvZ2dsZS1xdWVzdGlvbiIpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykubmV4dCgiLnRvZ2dsZS1hbnN3ZXIiKS5zbGlkZVRvZ2dsZSgpOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgIDwvc2NyaXB0PgogICAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuNi40Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Rpdj4KCgkJIAogICAgICAgICA8Zm9vdGVyIGl0ZW10eXBlPSJodHRwczovL3NjaGVtYS5vcmcvV1BGb290ZXIiIGl0ZW1zY29wZT0iaXRlbXNjb3BlIiBpZD0iY29sb3Bob24iIHJvbGU9ImNvbnRlbnRpbmZvIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nZm9vdGVyLXdpZHRoLWZpeGVyJz4KICAgICAgICAgICAgICAgPGRpdiBkYXRhLWVsZW1lbnRvci10eXBlPSJ3cC1wb3N0IiBkYXRhLWVsZW1lbnRvci1pZD0iNTkiIGNsYXNzPSJlbGVtZW50b3IgZWxlbWVudG9yLTU5Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNjU5M2E5NSBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1wYXJlbnQiIGRhdGEtaWQ9IjY1OTNhOTUiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90OywmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSIgZGF0YS1jb3JlLXYzMTYtcGx1cz0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDEwMCU7IiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOGQ2MjE4NiBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSI4ZDYyMTg2IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTg5NjRhMGEgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9Ijg5NjRhMGEiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMzlmZDlkMyBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSIzOWZkOWQzIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTBlYTIwZWYgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjBlYTIwZWYiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij5Vc2VmdWwgTGluazwvaDU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZSBoZmUtbmF2LW1lbnVfX2FsaWduLWxlZnQgaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyBoZmUtbGluay1yZWRpcmVjdC1jaGlsZCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IiBkYXRhLWlkPSI3ZTAyNGQ5IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7cGFkZGluZ19ob3Jpem9udGFsX21lbnVfaXRlbSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OjAsJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfdmVydGljYWxfbWVudV9pdGVtJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6MCwmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7bWVudV9zcGFjZV9iZXR3ZWVuJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6MjIsJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfdmVydGljYWxfbWVudV9pdGVtX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OjUsJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfaG9yaXpvbnRhbF9tZW51X2l0ZW1fdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX2hvcml6b250YWxfbWVudV9pdGVtX21vYmlsZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ192ZXJ0aWNhbF9tZW51X2l0ZW1fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3NwYWNlX2JldHdlZW5fdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3NwYWNlX2JldHdlZW5fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtkcm9wZG93bl9ib3JkZXJfcmFkaXVzJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3RvcCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cmlnaHQmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2JvdHRvbSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGVmdCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7aXNMaW5rZWQmcXVvdDs6dHJ1ZX0sJnF1b3Q7ZHJvcGRvd25fYm9yZGVyX3JhZGl1c190YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7dG9wJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtyaWdodCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Ym90dG9tJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsZWZ0JnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtpc0xpbmtlZCZxdW90Ozp0cnVlfSwmcXVvdDtkcm9wZG93bl9ib3JkZXJfcmFkaXVzX21vYmlsZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDt0b3AmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3JpZ2h0JnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtib3R0b20mcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xlZnQmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2lzTGlua2VkJnF1b3Q7OnRydWV9LCZxdW90O3BhZGRpbmdfaG9yaXpvbnRhbF9kcm9wZG93bl9pdGVtJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX2hvcml6b250YWxfZHJvcGRvd25faXRlbV90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfaG9yaXpvbnRhbF9kcm9wZG93bl9pdGVtX21vYmlsZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ192ZXJ0aWNhbF9kcm9wZG93bl9pdGVtJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6MTUsJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfdmVydGljYWxfZHJvcGRvd25faXRlbV90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfdmVydGljYWxfZHJvcGRvd25faXRlbV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O2Rpc3RhbmNlX2Zyb21fbWVudSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7ZGlzdGFuY2VfZnJvbV9tZW51X3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7ZGlzdGFuY2VfZnJvbV9tZW51X21vYmlsZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX3NpemUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9zaXplX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX3NpemVfbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfYm9yZGVyX3dpZHRoJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfYm9yZGVyX3dpZHRoX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX2JvcmRlcl93aWR0aF9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9ib3JkZXJfcmFkaXVzJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfYm9yZGVyX3JhZGl1c190YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9ib3JkZXJfcmFkaXVzX21vYmlsZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX19IiBkYXRhLXdpZGdldF90eXBlPSJuYXZpZ2F0aW9uLW1lbnUuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGZlLW5hdi1tZW51IGhmZS1sYXlvdXQtdmVydGljYWwgaGZlLW5hdi1tZW51LWxheW91dCB2ZXJ0aWNhbCIgZGF0YS1sYXlvdXQ9InZlcnRpY2FsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByb2xlPSJidXR0b24iIGNsYXNzPSJoZmUtbmF2LW1lbnVfX3RvZ2dsZSBlbGVtZW50b3ItY2xpY2thYmxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNjcmVlbi1yZWFkZXItdGV4dCI+TWVudTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGZlLW5hdi1tZW51LWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYXYgY2xhc3M9ImhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIGhmZS1uYXYtbWVudV9fc3VibWVudS1hcnJvdyIgZGF0YS10b2dnbGUtaWNvbj0iIiBkYXRhLWNsb3NlLWljb249IiIgZGF0YS1mdWxsLXdpZHRoPSIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgaWQ9Im1lbnUtMS03ZTAyNGQ5IiBjbGFzcz0iaGZlLW5hdi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJtZW51LWl0ZW0tMTEiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0taG9tZSBjdXJyZW50LW1lbnUtaXRlbSBwYWdlX2l0ZW0gcGFnZS1pdGVtLTkgY3VycmVudF9wYWdlX2l0ZW0gcGFyZW50IGhmZS1jcmVhdGl2ZS1tZW51Ij48YSBocmVmPSI/YT1ob21lIiBjbGFzcyA9ICJoZmUtbWVudS1pdGVtIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0ibWVudS1pdGVtLTEyIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBwYXJlbnQgaGZlLWNyZWF0aXZlLW1lbnUiPjxhIGhyZWY9IiN3YWxsZXQiIGNsYXNzID0gImhmZS1tZW51LWl0ZW0iPldoYXQgV2UgRG88L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJtZW51LWl0ZW0tMTMiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIHBhcmVudCBoZmUtY3JlYXRpdmUtbWVudSI+PGEgaHJlZj0iI2ZlYXR1cmVzIiBjbGFzcyA9ICJoZmUtbWVudS1pdGVtIj5XaHkgVXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJtZW51LWl0ZW0tMTQiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIHBhcmVudCBoZmUtY3JlYXRpdmUtbWVudSI+PGEgaHJlZj0iI3BsYW5zIiBjbGFzcyA9ICJoZmUtbWVudS1pdGVtIj5QbGFuczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9Im1lbnUtaXRlbS0xNSIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gcGFyZW50IGhmZS1jcmVhdGl2ZS1tZW51Ij48YSBocmVmPSIjc3VwcG9ydCIgY2xhc3MgPSAiaGZlLW1lbnUtaXRlbSI+RkFRPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNDFiZTU5ZSBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSI0MWJlNTllIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWFlODU4YjQgZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaGVyaXQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlIiBkYXRhLWlkPSJhZTg1OGI0IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGZldGNocHJpb3JpdHk9ImhpZ2gic3JjPSJhc3NldHMvaW1hZ2VzL2xvZ28ucG5nIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0yNTM3MTc2IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvciIgZGF0YS1pZD0iMjUzNzE3NiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0idGV4dC1lZGl0b3IuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+V2UgYXJlIHRoZSBjcnVjaWJsZSB3aGVyZSBzdGFydHVwcyB0cmFuc2Zvcm0gaW50byBjaGFtcGlvbnMsIGxhdW5jaGluZyB5b3Ugb24gYSBwYXRoIHRvIGZpbmFuY2lhbCBwcm9zcGVyaXR5LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0zYTU2YjA1IGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSIzYTU2YjA1IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWM3ZjgzNDggZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iYzdmODM0OCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1iY2NjOTc0IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSJiY2NjOTc0IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+Q29weXJpZ2h0IDIwMjQsIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9oNj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0yZGQ1NWZhIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjJkZDU1ZmEiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZDYyNmZjYSBlbGVtZW50b3Itc2hhcGUtY2lyY2xlIGUtZ3JpZC1hbGlnbi1yaWdodCBlLWdyaWQtYWxpZ24tbW9iaWxlLWNlbnRlciBlbGVtZW50b3ItZ3JpZC0wIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMiIGRhdGEtaWQ9ImQ2MjZmY2EiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InNvY2lhbC1pY29ucy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3R5bGU+LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNS0wMi0yMDI0ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lbGVtZW50b3ItZ3JpZC0wIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciwuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZWxlbWVudG9yLWdyaWQtbW9iaWxlLTAgLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyLC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lbGVtZW50b3ItZ3JpZC10YWJsZXQtMCAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXJ7bGluZS1oZWlnaHQ6MTtmb250LXNpemU6MH0uZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnM6bm90KC5lbGVtZW50b3ItZ3JpZC0wKTpub3QoLmVsZW1lbnRvci1ncmlkLXRhYmxldC0wKTpub3QoLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0wKSAuZWxlbWVudG9yLWdyaWR7ZGlzcGxheTppbmxpbmUtZ3JpZH0uZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMgLmVsZW1lbnRvci1ncmlke2dyaWQtY29sdW1uLWdhcDp2YXIoLS1ncmlkLWNvbHVtbi1nYXAsNXB4KTtncmlkLXJvdy1nYXA6dmFyKC0tZ3JpZC1yb3ctZ2FwLDVweCk7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnZhcigtLWdyaWQtdGVtcGxhdGUtY29sdW1ucyk7anVzdGlmeS1jb250ZW50OnZhcigtLWp1c3RpZnktY29udGVudCxjZW50ZXIpO2p1c3RpZnktaXRlbXM6dmFyKC0tanVzdGlmeS1jb250ZW50LGNlbnRlcil9LmVsZW1lbnRvci1pY29uLmVsZW1lbnRvci1zb2NpYWwtaWNvbntmb250LXNpemU6dmFyKC0taWNvbi1zaXplLDI1cHgpO2xpbmUtaGVpZ2h0OnZhcigtLWljb24tc2l6ZSwyNXB4KTt3aWR0aDpjYWxjKHZhcigtLWljb24tc2l6ZSwgMjVweCkgKyAyICogdmFyKC0taWNvbi1wYWRkaW5nLCAuNWVtKSk7aGVpZ2h0OmNhbGModmFyKC0taWNvbi1zaXplLCAyNXB4KSArIDIgKiB2YXIoLS1pY29uLXBhZGRpbmcsIC41ZW0pKX0uZWxlbWVudG9yLXNvY2lhbC1pY29uey0tZS1zb2NpYWwtaWNvbi1pY29uLWNvbG9yOiNmZmY7ZGlzcGxheTppbmxpbmUtZmxleDtiYWNrZ3JvdW5kLWNvbG9yOiM2OTcyN2Q7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXJ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbiBpe2NvbG9yOnZhcigtLWUtc29jaWFsLWljb24taWNvbi1jb2xvcil9LmVsZW1lbnRvci1zb2NpYWwtaWNvbiBzdmd7ZmlsbDp2YXIoLS1lLXNvY2lhbC1pY29uLWljb24tY29sb3IpfS5lbGVtZW50b3Itc29jaWFsLWljb246bGFzdC1jaGlsZHttYXJnaW46MH0uZWxlbWVudG9yLXNvY2lhbC1pY29uOmhvdmVye29wYWNpdHk6Ljk7Y29sb3I6I2ZmZn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLWFuZHJvaWR7YmFja2dyb3VuZC1jb2xvcjojYTRjNjM5fS5lbGVtZW50b3Itc29jaWFsLWljb24tYXBwbGV7YmFja2dyb3VuZC1jb2xvcjojOTk5fS5lbGVtZW50b3Itc29jaWFsLWljb24tYmVoYW5jZXtiYWNrZ3JvdW5kLWNvbG9yOiMxNzY5ZmZ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1iaXRidWNrZXR7YmFja2dyb3VuZC1jb2xvcjojMjA1MDgxfS5lbGVtZW50b3Itc29jaWFsLWljb24tY29kZXBlbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1kZWxpY2lvdXN7YmFja2dyb3VuZC1jb2xvcjojMzlmfS5lbGVtZW50b3Itc29jaWFsLWljb24tZGV2aWFudGFydHtiYWNrZ3JvdW5kLWNvbG9yOiMwNWNjNDd9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1kaWdne2JhY2tncm91bmQtY29sb3I6IzAwNWJlMn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLWRyaWJiYmxle2JhY2tncm91bmQtY29sb3I6I2VhNGM4OX0uZWxlbWVudG9yLXNvY2lhbC1pY29uLWVsZW1lbnRvcntiYWNrZ3JvdW5kLWNvbG9yOiNkMzBjNWN9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1lbnZlbG9wZXtiYWNrZ3JvdW5kLWNvbG9yOiNlYTQzMzV9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1mYWNlYm9vaywuZWxlbWVudG9yLXNvY2lhbC1pY29uLWZhY2Vib29rLWZ7YmFja2dyb3VuZC1jb2xvcjojM2I1OTk4fS5lbGVtZW50b3Itc29jaWFsLWljb24tZmxpY2tye2JhY2tncm91bmQtY29sb3I6IzAwNjNkY30uZWxlbWVudG9yLXNvY2lhbC1pY29uLWZvdXJzcXVhcmV7YmFja2dyb3VuZC1jb2xvcjojMmQ1YmUzfS5lbGVtZW50b3Itc29jaWFsLWljb24tZnJlZS1jb2RlLWNhbXAsLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1mcmVlY29kZWNhbXB7YmFja2dyb3VuZC1jb2xvcjojMDA2NDAwfS5lbGVtZW50b3Itc29jaWFsLWljb24tZ2l0aHVie2JhY2tncm91bmQtY29sb3I6IzMzM30uZWxlbWVudG9yLXNvY2lhbC1pY29uLWdpdGxhYntiYWNrZ3JvdW5kLWNvbG9yOiNlMjQzMjl9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1nbG9iZXtiYWNrZ3JvdW5kLWNvbG9yOiM2OTcyN2R9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1nb29nbGUtcGx1cywuZWxlbWVudG9yLXNvY2lhbC1pY29uLWdvb2dsZS1wbHVzLWd7YmFja2dyb3VuZC1jb2xvcjojZGQ0YjM5fS5lbGVtZW50b3Itc29jaWFsLWljb24taG91enp7YmFja2dyb3VuZC1jb2xvcjojN2FjMTQyfS5lbGVtZW50b3Itc29jaWFsLWljb24taW5zdGFncmFte2JhY2tncm91bmQtY29sb3I6IzI2MjYyNn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLWpzZmlkZGxle2JhY2tncm91bmQtY29sb3I6IzQ4N2FhMn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLWxpbmt7YmFja2dyb3VuZC1jb2xvcjojODE4YTkxfS5lbGVtZW50b3Itc29jaWFsLWljb24tbGlua2VkaW4sLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1saW5rZWRpbi1pbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDc3YjV9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1tZWRpdW17YmFja2dyb3VuZC1jb2xvcjojMDBhYjZifS5lbGVtZW50b3Itc29jaWFsLWljb24tbWVldHVwe2JhY2tncm91bmQtY29sb3I6I2VjMWM0MH0uZWxlbWVudG9yLXNvY2lhbC1pY29uLW1peGNsb3Vke2JhY2tncm91bmQtY29sb3I6IzI3M2E0Yn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLW9kbm9rbGFzc25pa2l7YmFja2dyb3VuZC1jb2xvcjojZjQ3MzFjfS5lbGVtZW50b3Itc29jaWFsLWljb24tcGludGVyZXN0e2JhY2tncm91bmQtY29sb3I6I2JkMDgxY30uZWxlbWVudG9yLXNvY2lhbC1pY29uLXByb2R1Y3QtaHVudHtiYWNrZ3JvdW5kLWNvbG9yOiNkYTU1MmZ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1yZWRkaXR7YmFja2dyb3VuZC1jb2xvcjojZmY0NTAwfS5lbGVtZW50b3Itc29jaWFsLWljb24tcnNze2JhY2tncm91bmQtY29sb3I6I2YyNjUyMn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXNob3BwaW5nLWNhcnR7YmFja2dyb3VuZC1jb2xvcjojNGNhZjUwfS5lbGVtZW50b3Itc29jaWFsLWljb24tc2t5cGV7YmFja2dyb3VuZC1jb2xvcjojMDBhZmYwfS5lbGVtZW50b3Itc29jaWFsLWljb24tc2xpZGVzaGFyZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDc3YjV9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1zbmFwY2hhdHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZjMDB9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1zb3VuZGNsb3Vke2JhY2tncm91bmQtY29sb3I6I2Y4MH0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXNwb3RpZnl7YmFja2dyb3VuZC1jb2xvcjojMmViZDU5fS5lbGVtZW50b3Itc29jaWFsLWljb24tc3RhY2stb3ZlcmZsb3d7YmFja2dyb3VuZC1jb2xvcjojZmU3YTE1fS5lbGVtZW50b3Itc29jaWFsLWljb24tc3RlYW17YmFja2dyb3VuZC1jb2xvcjojMDBhZGVlfS5lbGVtZW50b3Itc29jaWFsLWljb24tc3R1bWJsZXVwb257YmFja2dyb3VuZC1jb2xvcjojZWI0OTI0fS5lbGVtZW50b3Itc29jaWFsLWljb24tdGVsZWdyYW17YmFja2dyb3VuZC1jb2xvcjojMmNhNWUwfS5lbGVtZW50b3Itc29jaWFsLWljb24tdGh1bWItdGFja3tiYWNrZ3JvdW5kLWNvbG9yOiMxYWExZDh9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi10cmlwYWR2aXNvcntiYWNrZ3JvdW5kLWNvbG9yOiM1ODk0NDJ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi10dW1ibHJ7YmFja2dyb3VuZC1jb2xvcjojMzU0NjVjfS5lbGVtZW50b3Itc29jaWFsLWljb24tdHdpdGNoe2JhY2tncm91bmQtY29sb3I6IzY0NDFhNX0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXR3aXR0ZXJ7YmFja2dyb3VuZC1jb2xvcjojMWRhMWYyfS5lbGVtZW50b3Itc29jaWFsLWljb24tdmliZXJ7YmFja2dyb3VuZC1jb2xvcjojNjY1Y2FjfS5lbGVtZW50b3Itc29jaWFsLWljb24tdmltZW97YmFja2dyb3VuZC1jb2xvcjojMWFiN2VhfS5lbGVtZW50b3Itc29jaWFsLWljb24tdmt7YmFja2dyb3VuZC1jb2xvcjojNDU2NjhlfS5lbGVtZW50b3Itc29jaWFsLWljb24td2VpYm97YmFja2dyb3VuZC1jb2xvcjojZGQyNDMwfS5lbGVtZW50b3Itc29jaWFsLWljb24td2VpeGlue2JhY2tncm91bmQtY29sb3I6IzMxYTkxOH0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXdoYXRzYXBwe2JhY2tncm91bmQtY29sb3I6IzI1ZDM2Nn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXdvcmRwcmVzc3tiYWNrZ3JvdW5kLWNvbG9yOiMyMTc1OWJ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi14aW5ne2JhY2tncm91bmQtY29sb3I6IzAyNjQ2Nn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXllbHB7YmFja2dyb3VuZC1jb2xvcjojYWYwNjA2fS5lbGVtZW50b3Itc29jaWFsLWljb24teW91dHViZXtiYWNrZ3JvdW5kLWNvbG9yOiNjZDIwMWZ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi01MDBweHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDk5ZTV9LmVsZW1lbnRvci1zaGFwZS1yb3VuZGVkIC5lbGVtZW50b3ItaWNvbi5lbGVtZW50b3Itc29jaWFsLWljb257Ym9yZGVyLXJhZGl1czoxMCV9LmVsZW1lbnRvci1zaGFwZS1jaXJjbGUgLmVsZW1lbnRvci1pY29uLmVsZW1lbnRvci1zb2NpYWwtaWNvbntib3JkZXItcmFkaXVzOjUwJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXNvY2lhbC1pY29ucy13cmFwcGVyIGVsZW1lbnRvci1ncmlkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1ncmlkLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZWxlbWVudG9yLWljb24gZWxlbWVudG9yLXNvY2lhbC1pY29uIGVsZW1lbnRvci1zb2NpYWwtaWNvbi0gZWxlbWVudG9yLXJlcGVhdGVyLWl0ZW0tN2JjNjliMCIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLXNjcmVlbi1vbmx5Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjEwIiBmaWxsPSIjMTI2MkZGIj48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMC45OTI1IDEwLjY1MjlIMjMuMDAwOVY3LjE1NDkyQzIyLjY1NDQgNy4xMDcyNSAyMS40NjI4IDcgMjAuMDc0OSA3QzE3LjE3OTIgNyAxNS4xOTU1IDguODIxNDIgMTUuMTk1NSAxMi4xNjkxVjE1LjI1SDEyVjE5LjE2MDVIMTUuMTk1NVYyOUgxOS4xMTMzVjE5LjE2MTRIMjIuMTc5NkwyMi42NjYzIDE1LjI1MDlIMTkuMTEyNFYxMi41NTY4QzE5LjExMzMgMTEuNDI2NiAxOS40MTc3IDEwLjY1MjkgMjAuOTkyNSAxMC42NTI5WiIgZmlsbD0iI0Y5RjlGOSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItZ3JpZC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImVsZW1lbnRvci1pY29uIGVsZW1lbnRvci1zb2NpYWwtaWNvbiBlbGVtZW50b3Itc29jaWFsLWljb24tIGVsZW1lbnRvci1yZXBlYXRlci1pdGVtLWYxYTNiNWIiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1zY3JlZW4tb25seSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiB2aWV3Qm94PSIwIDAgMzYgMzYiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHJ4PSIxMCIgZmlsbD0iIzEyNjJGRiI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjQuMzk1MiAxMS4wNzA4QzI0LjEwMDcgMTEuMDcwOCAyMy44NjExIDExLjMxMDQgMjMuODYxMSAxMS42MDQ5QzIzLjg2MTEgMTEuODk5NCAyNC4xMDA3IDEyLjEzOSAyNC4zOTUyIDEyLjEzOUMyNC42ODk3IDEyLjEzOSAyNC45MjkzIDExLjg5OTQgMjQuOTI5MyAxMS42MDQ5QzI0LjkyOTMgMTEuMzEwNCAyNC42ODk3IDExLjA3MDggMjQuMzk1MiAxMS4wNzA4Wk0xOC4wMDAxIDEzLjI2NUMxNS4zODkzIDEzLjI2NSAxMy4yNjUxIDE1LjM4OTEgMTMuMjY1MSAxOEMxMy4yNjUxIDIwLjYxMDkgMTUuMzg5MyAyMi43MzUgMTguMDAwMSAyMi43MzVDMjAuNjExIDIyLjczNSAyMi43MzUxIDIwLjYxMDkgMjIuNzM1MSAxOEMyMi43MzUxIDE1LjM4OTIgMjAuNjExIDEzLjI2NSAxOC4wMDAxIDEzLjI2NVoiIGZpbGw9IiNGOUY5RjkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIyLjk2OSA3SDEzLjAzMUM5LjcwNTQ4IDcgNyA5LjcwNTQ4IDcgMTMuMDMxVjIyLjk2OUM3IDI2LjI5NDYgOS43MDU0OCAyOSAxMy4wMzEgMjlIMjIuOTY5QzI2LjI5NDYgMjkgMjkgMjYuMjk0NSAyOSAyMi45NjlWMTMuMDMxQzI5IDkuNzA1NDggMjYuMjk0NiA3IDIyLjk2OSA3Wk0xOCAyNC4wMzQyQzE0LjY3MjcgMjQuMDM0MiAxMS45NjU5IDIxLjMyNzMgMTEuOTY1OSAxOEMxMS45NjU5IDE0LjY3MjcgMTQuNjcyOCAxMS45NjU5IDE4IDExLjk2NTlDMjEuMzI3MiAxMS45NjU5IDI0LjAzNDIgMTQuNjcyOCAyNC4wMzQyIDE4QzI0LjAzNDIgMjEuMzI3MiAyMS4zMjcyIDI0LjAzNDIgMTggMjQuMDM0MlpNMjQuMzk1MSAxMy40MzgzQzIzLjM4NDIgMTMuNDM4MyAyMi41NjE4IDEyLjYxNTggMjIuNTYxOCAxMS42MDVDMjIuNTYxOCAxMC41OTQxIDIzLjM4NDIgOS43NzE2MSAyNC4zOTUxIDkuNzcxNjFDMjUuNDA2IDkuNzcxNjEgMjYuMjI4NCAxMC41OTQgMjYuMjI4NCAxMS42MDQ5QzI2LjIyODQgMTIuNjE1OCAyNS40MDYgMTMuNDM4MyAyNC4zOTUxIDEzLjQzODNaIiBmaWxsPSIjRjlGOUY5Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1ncmlkLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZWxlbWVudG9yLWljb24gZWxlbWVudG9yLXNvY2lhbC1pY29uIGVsZW1lbnRvci1zb2NpYWwtaWNvbi0gZWxlbWVudG9yLXJlcGVhdGVyLWl0ZW0tNTcyYzI4MyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLXNjcmVlbi1vbmx5Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjEwIiBmaWxsPSIjMTI2MkZGIj48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS44MTE1IDE2LjMxNTVMMjcuODI1MyA3SDI1LjkyNjNMMTguOTY3OSAxNS4wODg1TDEzLjQxMDIgN0g3TDE1LjQwNDMgMTkuMjMxM0w3IDI5SDguODk5MTRMMTYuMjQ3NSAyMC40NTgzTDIyLjExNjggMjlIMjguNTI2OUwxOS44MTEgMTYuMzE1NUgxOS44MTE1Wk0xNy4yMTAzIDE5LjMzOUwxNi4zNTg4IDE4LjEyMTFMOS41ODM0MyA4LjQyOTY0SDEyLjUwMDRMMTcuOTY4MiAxNi4yNTA5TDE4LjgxOTcgMTcuNDY4OUwyNS45MjcyIDI3LjYzNTRIMjMuMDEwMkwxNy4yMTAzIDE5LjMzOTVWMTkuMzM5WiIgZmlsbD0iI0Y5RjlGOSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgkJCQkJCQkgIAoJCQkJCQkJICAJCSA8c3R5bGU+CgkJCSAgIC5mb290ZXJfc29jaWFsIHsKCQkJCSAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCQkJCSAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CgkJCSAgIH0KCQkJICAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7CgkJCQkuZm9vdGVyX3NvY2lhbCB7CgkJCQkgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CgkJCSAgIH0gICAKCQkJICAgfQoJCQkgICA8L3N0eWxlPgogICAgICAgICAgICAgICAgCgkJCQk8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciBmb290ZXJfc29jaWFsIj4KCQkJCSA8YSBocmVmPSIvY2RuLWNnaS9sL2VtYWlsLXByb3RlY3Rpb24jNGQxZTM4M2QzZDIyM2YzOTBkMjkzZjI4MmMyMDNlM2QyNDIzMmIyMTM4MjgyMzJlMjg2MzJlMjIyMCIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogd2hpdGU7YWxpZ24taXRlbXM6IGNlbnRlcjtkaXNwbGF5OiBmbGV4O3RleHQtYWxpZ246IGNlbnRlcjsiPjxpbWcgc3JjPSJhc3NldHMvbWFpbC5zdmciIHN0eWxlPSJ3aWR0aDogMzZweDttYXJnaW4tcmlnaHQ6IDEwcHg7Ij48c3BhbiBjbGFzcz0iX19jZl9lbWFpbF9fIiBkYXRhLWNmZW1haWw9ImU3YjQ5Mjk3OTc4ODk1OTNhNzgzOTU4Mjg2OGE5NDk3OGU4OTgxOGI5MjgyODk4NDgyYzk4NDg4OGEiPltlbWFpbCYjMTYwO3Byb3RlY3RlZF08L3NwYW4+PC9hPgoJCQkgIAogICAgICAgICAgICA8IS0tICAgPGEgaHJlZj0iaHR0cHM6Ly90Lm1lLyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogd2hpdGU7YWxpZ24taXRlbXM6IGNlbnRlcjtkaXNwbGF5OiBmbGV4O3RleHQtYWxpZ246IGNlbnRlcjsiPjxpbWcgc3JjPSJhc3NldHMvdGcuc3ZnIiBzdHlsZT0id2lkdGg6IDMwcHg7bWFyZ2luLXJpZ2h0OiAxMHB4OyI+R1JPVVAgQ0hBVDwvYT4KCQkJICAgPGEgaHJlZj0iaHR0cHM6Ly90Lm1lLyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogd2hpdGU7YWxpZ24taXRlbXM6IGNlbnRlcjtkaXNwbGF5OiBmbGV4O3RleHQtYWxpZ246Y2VudGVyOyI+PGltZyBzcmM9ImFzc2V0cy90Zy5zdmciIHN0eWxlPSJ3aWR0aDogMzBweDttYXJnaW4tcmlnaHQ6IDEwcHg7Ij5HUk9VUCBDSEFOTkVMPC9hPgoJCQkgICA8YSBocmVmPSJodHRwczovL3QubWUvIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiB3aGl0ZTthbGlnbi1pdGVtczogY2VudGVyO2Rpc3BsYXk6IGZsZXg7dGV4dC1hbGlnbjogY2VudGVyOyI+PGltZyBzcmM9ImFzc2V0cy90Zy5zdmciIHN0eWxlPSJ3aWR0aDogMzBweDttYXJnaW4tcmlnaHQ6IDEwcHg7Ij5TVVBQT1JUPC9hPiAtLT4KCQkJICAgCiAgICAgICAgICAgIDwvZGl2PgoJCQkJCQkJICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgkJCQkJCSAgIAogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZm9vdGVyPgogICAgICA8L2Rpdj4KICAgICAgPCEtLSAjcGFnZSAtLT4KICAgICAgPHNjcmlwdCBkYXRhLWNmYXN5bmM9ImZhbHNlIiBzcmM9Ii9jZG4tY2dpL3NjcmlwdHMvNWM1ZGQ3MjgvY2xvdWRmbGFyZS1zdGF0aWMvZW1haWwtZGVjb2RlLm1pbi5qcyI+PC9zY3JpcHQ+PHNjcmlwdD4KICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICQoJy5wYXlfY2Fyb3VzZWwnKS5vd2xDYXJvdXNlbCh7CiAgICAgICAgICAgICAgIGxvb3A6dHJ1ZSwKICAgICAgICAgICAgICAgbWFyZ2luOjAsCiAgICAgICAgICAgICAgIGF1dG9wbGF5OnRydWUsICAKICAgICAgICAgICAgICAgYXV0b3BsYXlUaW1lb3V0OjQwMDAsCiAgICAgICAgICAgICAgIGF1dG9wbGF5SG92ZXJQYXVzZTp0cnVlLAogICAgICAgICAgICAgICBuYXY6ZmFsc2UsCiAgICAgICAgICAgICAgIGRvdHM6ZmFsc2UsCiAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6ewogICAgICAgICAgICAgICAgICAgMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MgogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDMyMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MgogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDQ4MDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MgogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDYwMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MgogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDc2Nzp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MwogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDk5MTp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6NAogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDEyMDA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjYKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0pOwogICAgICAgICAgIH0pOwkKICAgICAgPC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQ+CiAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAkKCcudGVzdF9jYXJvdXNlbCcpLm93bENhcm91c2VsKHsKICAgICAgICAgICAgICAgbG9vcDp0cnVlLAogICAgICAgICAgICAgICBtYXJnaW46MCwKICAgICAgICAgICAgICAgYXV0b3BsYXk6dHJ1ZSwgIAogICAgICAgICAgICAgICBhdXRvcGxheVRpbWVvdXQ6NDAwMCwKICAgICAgICAgICAgICAgYXV0b3BsYXlIb3ZlclBhdXNlOnRydWUsCiAgICAgICAgICAgICAgIG5hdjpmYWxzZSwKICAgICAgICAgICAgICAgZG90czpmYWxzZSwKICAgICAgICAgICAgICAgcmVzcG9uc2l2ZTp7CiAgICAgICAgICAgICAgICAgICAwOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgMzIwOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgNDgwOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgNjAwOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgNzY3OnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgOTkxOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgMTIwMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfSk7CiAgICAgICAgICAgfSk7CQogICAgICA8L3NjcmlwdD4KICAgICAgPHNjcmlwdD4KICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICQoJy5jbGllbnRfY2Fyb3VzZWwnKS5vd2xDYXJvdXNlbCh7CiAgICAgICAgICAgICAgIGxvb3A6dHJ1ZSwKICAgICAgICAgICAgICAgbWFyZ2luOjAsCiAgICAgICAgICAgICAgIGF1dG9wbGF5OnRydWUsICAKICAgICAgICAgICAgICAgYXV0b3BsYXlUaW1lb3V0OjQwMDAsCiAgICAgICAgICAgICAgIGF1dG9wbGF5SG92ZXJQYXVzZTp0cnVlLAogICAgICAgICAgICAgICBuYXY6ZmFsc2UsCiAgICAgICAgICAgICAgIGRvdHM6ZmFsc2UsCiAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6ewogICAgICAgICAgICAgICAgICAgMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDMyMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDQ4MDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDYwMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDc2Nzp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDk5MTp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MgogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDEyMDA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjMKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0pOwogICAgICAgICAgIH0pOwkKICAgICAgPC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQ+CiAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAkKCcudXNlcl9jYXJvdXNlbCcpLm93bENhcm91c2VsKHsKICAgICAgICAgICAgICAgbG9vcDp0cnVlLAogICAgICAgICAgICAgICBtYXJnaW46MCwKICAgICAgICAgICAgICAgYXV0b3BsYXk6dHJ1ZSwgIAogICAgICAgICAgICAgICBhdXRvcGxheVRpbWVvdXQ6NDAwMCwKICAgICAgICAgICAgICAgYXV0b3BsYXlIb3ZlclBhdXNlOnRydWUsCiAgICAgICAgICAgICAgIG5hdjpmYWxzZSwKICAgICAgICAgICAgICAgZG90czpmYWxzZSwKICAgICAgICAgICAgICAgcmVzcG9uc2l2ZTp7CiAgICAgICAgICAgICAgICAgICAwOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgMzIwOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgNDgwOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgNjAwOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgNzY3OnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgOTkxOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczoxCiAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgMTIwMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfSk7CiAgICAgICAgICAgfSk7CQogICAgICA8L3NjcmlwdD4KICAgICAgPCEtLS0tPT09PT09PT0gIENPVU5URE9XTiBQQVJUIFNUQVJUICA9PT09PT09PS0tLS0tPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdtZXRmb3JtLXVpLWNzcycgaHJlZj0nYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9tZXRmb3JtL3B1YmxpYy9hc3NldHMvY3NzL21ldGZvcm0tdWkuY3NzP3Zlcj0zLjguMicgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nbWV0Zm9ybS1zdHlsZS1jc3MnIGhyZWY9J2Fzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvbWV0Zm9ybS9wdWJsaWMvYXNzZXRzL2Nzcy9zdHlsZS5jc3M/dmVyPTMuOC4yJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdlbGVtZW50b3ItcG9zdC02Ni1jc3MnIGhyZWY9J2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC9lbGVtZW50b3IvY3NzL3Bvc3QtNjYuY3NzP3Zlcj0xNzA2NTc0OTIzJyBtZWRpYT0nYWxsJyAvPgogICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuNi40Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtY29udGVudC90aGVtZXMvaGVsbG8tZWxlbWVudG9yL2Fzc2V0cy9qcy9oZWxsby1mcm9udGVuZC5taW4uanMiIGlkPSJoZWxsby10aGVtZS1mcm9udGVuZC1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtY29udGVudC9wbHVnaW5zL2hlYWRlci1mb290ZXItZWxlbWVudG9yL2luYy9qcy9mcm9udGVuZC5qcyIgaWQ9ImhmZS1mcm9udGVuZC1qcy1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtY29udGVudC9wbHVnaW5zL21ldGZvcm0vcHVibGljL2Fzc2V0cy9qcy9odG0uanMiIGlkPSJodG0tanMiPjwvc2NyaXB0PgogICAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3dwLWluY2x1ZGVzL2pzL2Rpc3QvdmVuZG9yL3dwLXBvbHlmaWxsLWluZXJ0Lm1pbi5qcyIgaWQ9IndwLXBvbHlmaWxsLWluZXJ0LWpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy93cC1pbmNsdWRlcy9qcy9kaXN0L3ZlbmRvci9yZWdlbmVyYXRvci1ydW50aW1lLm1pbi5qcyIgaWQ9InJlZ2VuZXJhdG9yLXJ1bnRpbWUtanMiPjwvc2NyaXB0PgogICAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3dwLWluY2x1ZGVzL2pzL2Rpc3QvdmVuZG9yL3dwLXBvbHlmaWxsLm1pbi5qcyIgaWQ9IndwLXBvbHlmaWxsLWpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy93cC1pbmNsdWRlcy9qcy9kaXN0L3ZlbmRvci9yZWFjdC5taW4uanMiIGlkPSJyZWFjdC1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtaW5jbHVkZXMvanMvZGlzdC92ZW5kb3IvcmVhY3QtZG9tLm1pbi5qcyIgaWQ9InJlYWN0LWRvbS1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtaW5jbHVkZXMvanMvZGlzdC9lc2NhcGUtaHRtbC5taW4uanMiIGlkPSJ3cC1lc2NhcGUtaHRtbC1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtaW5jbHVkZXMvanMvZGlzdC9lbGVtZW50Lm1pbi5qcyIgaWQ9IndwLWVsZW1lbnQtanMiPjwvc2NyaXB0PgogICAgICA8c2NyaXB0IGlkPSJtZXRmb3JtLWFwcC1qcy1leHRyYSI+CiAgICAgICAgIHZhciBtZiA9IHsicG9zdFR5cGUiOiJwYWdlIiwicmVzdFVSSSI6Imh0dHBzOlwvXC9lbGVtZW50b3IudXB0ZWNoaWVzLmNvbVwvcHJvdG9uXC93cC1qc29uXC9tZXRmb3JtXC92MVwvZm9ybXNcL3ZpZXdzXC8iLCJtaW5Nc2cxIjoiTWluaW11bSBsZW5ndGggc2hvdWxkIGJlICIsIk1zZzIiOiIgY2hhcmFjdGVyIGxvbmcuIiwibWF4TXNnMSI6Ik1heGltdW0gbGVuZ3RoIHNob3VsZCBiZSAiLCJtYXhOdW0iOiJNYXhpbXVtIG51bWJlciBzaG91bGQgYmUgIiwibWluTnVtIjoiTWluaW11bSBudW1iZXIgc2hvdWxkIGJlICJ9OwogICAgICA8L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvbWV0Zm9ybS9wdWJsaWMvYXNzZXRzL2pzL2FwcC5qcyIgaWQ9Im1ldGZvcm0tYXBwLWpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9qcy93ZWJwYWNrLnJ1bnRpbWUubWluLmpzIiBpZD0iZWxlbWVudG9yLXdlYnBhY2stcnVudGltZS1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvanMvZnJvbnRlbmQtbW9kdWxlcy5taW4uanMiIGlkPSJlbGVtZW50b3ItZnJvbnRlbmQtbW9kdWxlcy1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvbGliL3dheXBvaW50cy93YXlwb2ludHMubWluLmpzIiBpZD0iZWxlbWVudG9yLXdheXBvaW50cy1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtaW5jbHVkZXMvanMvanF1ZXJ5L3VpL2NvcmUubWluLmpzP3Zlcj0xLjEzLjIiIGlkPSJqcXVlcnktdWktY29yZS1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgaWQ9ImVsZW1lbnRvci1mcm9udGVuZC1qcy1iZWZvcmUiPgogICAgICAgICB2YXIgZWxlbWVudG9yRnJvbnRlbmRDb25maWcgPSB7ImVudmlyb25tZW50TW9kZSI6eyJlZGl0IjpmYWxzZSwid3BQcmV2aWV3IjpmYWxzZSwiaXNTY3JpcHREZWJ1ZyI6ZmFsc2V9LCJpMThuIjp7InNoYXJlT25GYWNlYm9vayI6IlNoYXJlIG9uIEZhY2Vib29rIiwic2hhcmVPblR3aXR0ZXIiOiJTaGFyZSBvbiBUd2l0dGVyIiwicGluSXQiOiJQaW4gaXQiLCJkb3dubG9hZCI6IkRvd25sb2FkIiwiZG93bmxvYWRJbWFnZSI6IkRvd25sb2FkIGltYWdlIiwiZnVsbHNjcmVlbiI6IkZ1bGxzY3JlZW4iLCJ6b29tIjoiWm9vbSIsInNoYXJlIjoiU2hhcmUiLCJwbGF5VmlkZW8iOiJQbGF5IFZpZGVvIiwicHJldmlvdXMiOiJQcmV2aW91cyIsIm5leHQiOiJOZXh0IiwiY2xvc2UiOiJDbG9zZSIsImExMXlDYXJvdXNlbFdyYXBwZXJBcmlhTGFiZWwiOiJDYXJvdXNlbCB8IEhvcml6b250YWwgc2Nyb2xsaW5nOiBBcnJvdyBMZWZ0ICYgUmlnaHQiLCJhMTF5Q2Fyb3VzZWxQcmV2U2xpZGVNZXNzYWdlIjoiUHJldmlvdXMgc2xpZGUiLCJhMTF5Q2Fyb3VzZWxOZXh0U2xpZGVNZXNzYWdlIjoiTmV4dCBzbGlkZSIsImExMXlDYXJvdXNlbEZpcnN0U2xpZGVNZXNzYWdlIjoiVGhpcyBpcyB0aGUgZmlyc3Qgc2xpZGUiLCJhMTF5Q2Fyb3VzZWxMYXN0U2xpZGVNZXNzYWdlIjoiVGhpcyBpcyB0aGUgbGFzdCBzbGlkZSIsImExMXlDYXJvdXNlbFBhZ2luYXRpb25CdWxsZXRNZXNzYWdlIjoiR28gdG8gc2xpZGUifSwiaXNfcnRsIjpmYWxzZSwiYnJlYWtwb2ludHMiOnsieHMiOjAsInNtIjo0ODAsIm1kIjo3NjgsImxnIjoxMDI1LCJ4bCI6MTQ0MCwieHhsIjoxNjAwfSwicmVzcG9uc2l2ZSI6eyJicmVha3BvaW50cyI6eyJtb2JpbGUiOnsibGFiZWwiOiJNb2JpbGUgUG9ydHJhaXQiLCJ2YWx1ZSI6NzY3LCJkZWZhdWx0X3ZhbHVlIjo3NjcsImRpcmVjdGlvbiI6Im1heCIsImlzX2VuYWJsZWQiOnRydWV9LCJtb2JpbGVfZXh0cmEiOnsibGFiZWwiOiJNb2JpbGUgTGFuZHNjYXBlIiwidmFsdWUiOjg4MCwiZGVmYXVsdF92YWx1ZSI6ODgwLCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjpmYWxzZX0sInRhYmxldCI6eyJsYWJlbCI6IlRhYmxldCBQb3J0cmFpdCIsInZhbHVlIjoxMDI0LCJkZWZhdWx0X3ZhbHVlIjoxMDI0LCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjp0cnVlfSwidGFibGV0X2V4dHJhIjp7ImxhYmVsIjoiVGFibGV0IExhbmRzY2FwZSIsInZhbHVlIjoxMjAwLCJkZWZhdWx0X3ZhbHVlIjoxMjAwLCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjpmYWxzZX0sImxhcHRvcCI6eyJsYWJlbCI6IkxhcHRvcCIsInZhbHVlIjoxMzY2LCJkZWZhdWx0X3ZhbHVlIjoxMzY2LCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjpmYWxzZX0sIndpZGVzY3JlZW4iOnsibGFiZWwiOiJXaWRlc2NyZWVuIiwidmFsdWUiOjI0MDAsImRlZmF1bHRfdmFsdWUiOjI0MDAsImRpcmVjdGlvbiI6Im1pbiIsImlzX2VuYWJsZWQiOmZhbHNlfX19LCJ2ZXJzaW9uIjoiMy4xOS4xIiwiaXNfc3RhdGljIjpmYWxzZSwiZXhwZXJpbWVudGFsRmVhdHVyZXMiOnsiZV9vcHRpbWl6ZWRfYXNzZXRzX2xvYWRpbmciOnRydWUsImVfb3B0aW1pemVkX2Nzc19sb2FkaW5nIjp0cnVlLCJlX2ZvbnRfaWNvbl9zdmciOnRydWUsImFkZGl0aW9uYWxfY3VzdG9tX2JyZWFrcG9pbnRzIjp0cnVlLCJjb250YWluZXIiOnRydWUsImVfc3dpcGVyX2xhdGVzdCI6dHJ1ZSwiaGVsbG8tdGhlbWUtaGVhZGVyLWZvb3RlciI6dHJ1ZSwiYmxvY2tfZWRpdG9yX2Fzc2V0c19vcHRpbWl6ZSI6dHJ1ZSwiYWktbGF5b3V0Ijp0cnVlLCJsYW5kaW5nLXBhZ2VzIjp0cnVlLCJlX2ltYWdlX2xvYWRpbmdfb3B0aW1pemF0aW9uIjp0cnVlLCJlX2dsb2JhbF9zdHlsZWd1aWRlIjp0cnVlfSwidXJscyI6eyJhc3NldHMiOiJodHRwczpcL1wvZWxlbWVudG9yLnVwdGVjaGllcy5jb21cL3Byb3Rvblwvd3AtY29udGVudFwvcGx1Z2luc1wvZWxlbWVudG9yXC9hc3NldHNcLyJ9LCJzd2lwZXJDbGFzcyI6InN3aXBlciIsInNldHRpbmdzIjp7InBhZ2UiOltdLCJlZGl0b3JQcmVmZXJlbmNlcyI6W119LCJraXQiOnsiYWN0aXZlX2JyZWFrcG9pbnRzIjpbInZpZXdwb3J0X21vYmlsZSIsInZpZXdwb3J0X3RhYmxldCJdLCJnbG9iYWxfaW1hZ2VfbGlnaHRib3giOiJ5ZXMiLCJsaWdodGJveF9lbmFibGVfY291bnRlciI6InllcyIsImxpZ2h0Ym94X2VuYWJsZV9mdWxsc2NyZWVuIjoieWVzIiwibGlnaHRib3hfZW5hYmxlX3pvb20iOiJ5ZXMiLCJsaWdodGJveF9lbmFibGVfc2hhcmUiOiJ5ZXMiLCJsaWdodGJveF90aXRsZV9zcmMiOiJ0aXRsZSIsImxpZ2h0Ym94X2Rlc2NyaXB0aW9uX3NyYyI6ImRlc2NyaXB0aW9uIiwiaGVsbG9faGVhZGVyX2xvZ29fdHlwZSI6InRpdGxlIiwiaGVsbG9faGVhZGVyX21lbnVfbGF5b3V0IjoiaG9yaXpvbnRhbCIsImhlbGxvX2Zvb3Rlcl9sb2dvX3R5cGUiOiJsb2dvIn0sInBvc3QiOnsiaWQiOjksInRpdGxlIjoiUHJvdG9uJTIwJUUyJTgwJTkzJTIwQ3J5cHRvJTIwV2FsbGV0JTIwTGFuZGluZyUyMFBhZ2UiLCJleGNlcnB0IjoiIiwiZmVhdHVyZWRJbWFnZSI6ZmFsc2V9fTsKICAgICAgPC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvanMvZnJvbnRlbmQubWluLmpzIiBpZD0iZWxlbWVudG9yLWZyb250ZW5kLWpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy9qcy9zcG9wLm1pbi5jc3MiPjwvc2NyaXB0PgogICAgIAogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIHZhciBjb3VudHJ5X2xpc3QgPSBbIkFmZ2hhbmlzdGFuIiwgIkFsYmFuaWEiLCAiQWxnZXJpYSIsICJBbmRvcnJhIiwgIkFuZ29sYSIsICJBbmd1aWxsYSIsICJBbnRpZ3VhICYgQmFyYnVkYSIsICJBcmdlbnRpbmEiLCAiQXJtZW5pYSIsICJBdXN0cmFsaWEiLCAiQXVzdHJpYSIsICJBemVyYmFpamFuIiwgIkJhaGFtYXMiLCAiQmFocmFpbiIsICJCYW5nbGFkZXNoIiwgIkJlbGFydXMiLCAiQmVsZ2l1bSIsICAiQmVuaW4iLCAiQmVybXVkYSIsICJCaHV0YW4iLCAiQm9saXZpYSIsICJCb3NuaWEgJiBIZXJ6ZWdvdmluYSIsICJCb3Rzd2FuYSIsICJCcmF6aWwiLCAiQnJpdGlzaCBWaXJnaW4gSXNsYW5kcyIsICJCcnVuZWkiLCAiQnVsZ2FyaWEiLCAiQnVydW5kaSIsICJDYW1ib2RpYSIsICJDYW1lcm9vbiIsICJDYXBlIFZlcmRlIiwgIkNoYWQiLCAiQ2hpbGUiLCAiQ2hpbmEiLCAiQ29sb21iaWEiLCAiQ29uZ28iLCAiQ29zdGEgUmljYSIsICJDb3RlIEQgSXZvaXJlIiwgIkNyb2F0aWEiLCAiQ3ViYSIsICJDeXBydXMiLCAiQ3plY2ggUmVwdWJsaWMiLCAiRGVubWFyayIsICJEamlib3V0aSIsICJEb21pbmljYSIsICJEb21pbmljYW4gUmVwdWJsaWMiLCAiRWN1YWRvciIsICJFZ3lwdCIsICJFbCBTYWx2YWRvciIsICJFcXVhdG9yaWFsIEd1aW5lYSIsICJFc3RvbmlhIiwgIkV0aGlvcGlhIiwgIkZhbGtsYW5kIElzbGFuZHMiLCAiRmFyb2UgSXNsYW5kcyIsIkZpbmxhbmQiLCAiRnJhbmNlIiwgIkZyZW5jaCBQb2x5bmVzaWEiLCAiRnJlbmNoIFdlc3QgSW5kaWVzIiwgIkdhYm9uIiwgIkdhbWJpYSIsICJHZW9yZ2lhIiwgIkdlcm1hbnkiLCAiR2licmFsdGFyIiwgIkdyZWVjZSIsICJHcmVlbmxhbmQiLCAiR3JlbmFkYSIsICJHdWF0ZW1hbGEiLCAiR3VpbmVhIiwgIkhhaXRpIiwgIkhvbmR1cmFzIiwgIkhvbmcgS29uZyIsICJIdW5nYXJ5IiwgIkljZWxhbmQiLCAiSW5kaWEiLCAiSW5kb25lc2lhIiwgIklyYW4iLCAiSXJhcSIsICJJcmVsYW5kIiwgIklzcmFlbCIsICJJdGFseSIsICJKYW1haWNhIiwgIkphcGFuIiwgIkplcnNleSIsICJKb3JkYW4iLCAiS2F6YWtoc3RhbiIsICJLZW55YSIsICJLdXdhaXQiLCAgIkxhdHZpYSIsICJMZWJhbm9uIiwgIkxlc290aG8iLCAiTGliZXJpYSIsICJMaWJ5YSIsICJMaWVjaHRlbnN0ZWluIiwgIkxpdGh1YW5pYSIsICJMdXhlbWJvdXJnIiwgIk1hY2F1IiwgIk1hY2Vkb25pYSIsICJNYWRhZ2FzY2FyIiwgIk1hbGF3aSIsICJNYWxheXNpYSIsICJNYWxkaXZlcyIsICJNYWxpIiwgIk1hbHRhIiwgIk1hdXJpdGFuaWEiLCAiTWF1cml0aXVzIiwgIk1leGljbyIsICJNb2xkb3ZhIiwgIk1vbmFjbyIsICJNb25nb2xpYSIsICJNb250ZW5lZ3JvIiwgIk1vbnRzZXJyYXQiLCAiTW9yb2NjbyIsICJNb3phbWJpcXVlIiwgIk5hbWliaWEiLCAiTmVwYWwiLCAiTmV0aGVybGFuZHMiLCAiTmV0aGVybGFuZHMgQW50aWxsZXMiLCAiTmV3IENhbGVkb25pYSIsICJOZXcgWmVhbGFuZCIsICJOaWNhcmFndWEiLCAiTm9yd2F5IiwgIk9tYW4iLCAiUGFraXN0YW4iLCAiUGFsZXN0aW5lIiwgIlBhbmFtYSIsICJQYXB1YSBOZXcgR3VpbmVhIiwgIlBhcmFndWF5IiwgIlBlcnUiLCAiUGhpbGlwcGluZXMiLCAiUG9sYW5kIiwgIlBvcnR1Z2FsIiwgIlB1ZXJ0byBSaWNvIiwgIlFhdGFyIiwgIlJldW5pb24iLCAiUm9tYW5pYSIsICJSdXNzaWEiLCAiUndhbmRhIiwgIlNhaW50IFBpZXJyZSAmIE1pcXVlbG9uIiwgICJTYW4gTWFyaW5vIiwgIlNhdWRpIEFyYWJpYSIsICJTZW5lZ2FsIiwgIlNlcmJpYSIsICJTZXljaGVsbGVzIiwgIlNpZXJyYSBMZW9uZSIsICJTaW5nYXBvcmUiLCAiU2xvdmFraWEiLCAiU2xvdmVuaWEiLCAiU291dGggQWZyaWNhIiwgIlNvdXRoIEtvcmVhIiwgIlNwYWluIiwgIlNyaSBMYW5rYSIsICJTdWRhbiIsICJTdXJpbmFtZSIsICJTd2F6aWxhbmQiLCAiU3dlZGVuIiwgIlN3aXR6ZXJsYW5kIiwgIlN5cmlhIiwgIlRhaXdhbiIsICJUYWppa2lzdGFuIiwgIlRhbnphbmlhIiwgIlRoYWlsYW5kIiwgIlRvZ28iLCAiVG9uZ2EiLCAiVHJpbmlkYWQgJiBUb2JhZ28iLCAiVHVuaXNpYSIsICJUdXJrZXkiLCAiVHVya21lbmlzdGFuIiwgLCAiVWtyYWluZSIsICJVbml0ZWQgQXJhYiBFbWlyYXRlcyIsICJVbml0ZWQgS2luZ2RvbSIsICJVcnVndWF5IiwgIlV6YmVraXN0YW4iLCAiVmVuZXp1ZWxhIiwgIlZpZXRuYW0iLCAiVmlyZ2luIElzbGFuZHMgKFVTKSIsICJZZW1lbiJdOwogICAgICAgIHZhciBuYW1lX2xpc3QgPSBbIkxpbmRhIiwgIkJ1c2giLCAiSm9lIiwgIm1hcmsiLCAiTm9haCIsICJFbW1hIiwgIkxpYW0iLCAiU29waGlhIiwgIkphY29iIiAsIk9saXZpYSIgLCJNYXNvbiIgLCJJc2FiZWxsYSIgLCJXaWxsaWFtIiAsIkF2YSIgLCJFdGhhbiIsIk1pYSIgLCJNaWNoYWVsIiAsIkFiaWdhaWwiICwiQWxleGFuZGVyIiAsIkVtaWx5IiAsIkphbWVzIiwiTWFkaXNvbiIgLCJFbGlqYWgiICwiQ2hhcmxvdHRlIiwiRGFuaWVsIiAsIkVsaXphYmV0aCIgLCJCZW5qYW1pbiIgLCJBbWVsaWEiICwiQWlkZW4iICwiQ2hsb2UiICwiSmF5ZGVuIiwiRWxsYSIsIkxvZ2FuIiwiRXZlbHluIiwiTWF0dGhldyIsIkF2ZXJ5IiwiRGF2aWQiLCJTb2ZpYSIsIkpvc2VwaCIsIkhhcnBlciIsIkx1Y2FzIiwiR3JhY2UiLCJKYWNrc29uIiwiQWRkaXNvbiIsIkFudGhvbnkiLCJWaWN0b3JpYSIsIkpvc2h1YSIsIk5hdGFsaWUiLCJTYW11ZWwiLCJMaWx5IiwiQW5kcmV3IiwiQXVicmV5IiwiR2FicmllbCIsIkxpbGxpYW4iLCJDaHJpc3RvcGhlciIsIlpvZXkiLCJKb2huIiwiSGFubmFoIiwiRHlsYW4iLCJMYXlsYSIsIkNhcnRlciIsIkJyb29rbHluIiwiSXNhYWMiLCJTYW1hbnRoYSIsIlJ5YW4iLCJab2UiLCJMdWtlIiwiTGVhaCIsIk9saXZlciIsIlNjYXJsZXR0IiwiTmF0aGFuIiwiUmlsZXkiLCJIZW5yeSIsIkNhbWlsYSIsIk93ZW4iLCJTYXZhbm5haCIsICJDYWxlYiIsIkFubmEiLCJXeWF0dCIsIkF1ZHJleSIsIkNocmlzdGlhbiIsIkFsbGlzb24iLCJTZWJhc3RpYW4iLCJBcmlhIl07CiAgICAgICAgZnVuY3Rpb24gY2hvaWNlKGFycmF5KSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhcnJheS5sZW5ndGgpXTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gcmFuZG9tTnVtYmVyKG1pbiwgbWF4KSB7CiAgICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikgKyBtaW47CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHBheWlub3V0KCkgewogICAgICAgICAgICB2YXIgbnUgPSBNYXRoLmZsb29yKHJhbmRvbU51bWJlcig1MDAsIDEwNTAwKSk7CiAgICAgICAgICAgIHZhciBuYW0gPSBjaG9pY2UobmFtZV9saXN0KTsKICAgICAgICAgICAgdmFyIGNvbiA9IGNob2ljZShjb3VudHJ5X2xpc3QpOwogICAgICAgICAgICB2YXIgbW9kZSA9IGNob2ljZShbJ2RlcG9zaXRlZCcsICd3aXRoZHJldycsICdyZWludmVzdGVkJywgJ2ludmVzdGVkJ10pOwogICAgICAgICAgICBzcG9wKHsKICAgICAgICAgICAgICAgIHRlbXBsYXRlOiBuYW0gKyAiIGZyb20gIiArIGNvbiArICIgIiArIG1vZGUgKyAiICQiICsgbnUgKyAiIC4uLiIsCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLAogICAgICAgICAgICAgICAgc3R5bGU6ICdzdWNjZXNzJywKICAgICAgICAgICAgICAgIGF1dG9jbG9zZSA6IDEwMDAwLAogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgc2V0SW50ZXJ2YWwocGF5aW5vdXQsMjQwMDApOwogICAgPC9zY3JpcHQ+CiAgICA8IS0tZm9vdGVyIHNlY3Rpb24gZW5kLS0+CiAKICAgPC9ib2R5Pgo8L2h0bWw+Cg=="}},"time_used":1765,"timings":{"blocked":-1,"dns":8,"connect":14,"send":0,"wait":1741,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.013Z","timestamp":1785130090013,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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: application/javascript\r\nexpires: Wed, 29 Jul 2026 05:28:10 GMT\r\ncache-control: public\r\nvary: accept-encoding\r\nx-frame-options: DENY\r\nx-content-type-options: nosniff\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=MAjtepOXTe1njVK7ySSEnobguNmqIm9QrH8NJBXejoCe9n2ztklEXlB98rlG06ES95Sp0PCNicBgaXApZtVm7mFxt3JaJhh8QGe%2FX7fPJ0IgPfM5F0GFBqP7DdNsNwyNKn00j6TINg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncontent-encoding: zstd\r\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\nserver: cloudflare\r\ncf-ray: a2193d369e3f120a-OSL\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":1239,"size_decoded":1296,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (1238)","md5":"9e8f56e8e1806253ba01a95cfc3d392c","sha1":"a8af90d7482e1e99d03de6bf88fed2315c5dd728","sha256":"2595496fe48df6fcf9b1bc57c29a744c121eb4dd11566466bc13d2e52e6bbcc8","sha512":"63f0f6f94fbabadc3f774ccaa6a401696e8a7651a074bc077d214f91da080b36714fd799eb40fed64154972008e34fc733d6ee314ac675727b37b58ffbebebee","ssdeep":"","tlshash":"6021d5743a18107e226a0133e56f66cee1f23715fd17e440408ad89566e4fe5063fed9","first_seen":"2023-03-07T01:02:00Z","last_seen":"2026-08-02T16:45:07.115722Z","times_seen":413221,"resource_available":true,"data":"IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUoZSl7dHJ5e2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY29uc29sZSlyZXR1cm47ImVycm9yImluIGNvbnNvbGU/Y29uc29sZS5lcnJvcihlKTpjb25zb2xlLmxvZyhlKX1jYXRjaChlKXt9fWZ1bmN0aW9uIHQoZSl7cmV0dXJuIGQuaW5uZXJIVE1MPSc8YSBocmVmPSInK2UucmVwbGFjZSgvIi9nLCImcXVvdDsiKSsnIj48L2E+JyxkLmNoaWxkTm9kZXNbMF0uZ2V0QXR0cmlidXRlKCJocmVmIil8fCIifWZ1bmN0aW9uIHIoZSx0KXt2YXIgcj1lLnN1YnN0cih0LDIpO3JldHVybiBwYXJzZUludChyLDE2KX1mdW5jdGlvbiBuKG4sYyl7Zm9yKHZhciBvPSIiLGE9cihuLGMpLGk9YysyO2k8bi5sZW5ndGg7aSs9Mil7dmFyIGw9cihuLGkpXmE7bys9U3RyaW5nLmZyb21DaGFyQ29kZShsKX10cnl7bz1kZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKG8pKX1jYXRjaCh1KXtlKHUpfXJldHVybiB0KG8pfWZ1bmN0aW9uIGModCl7Zm9yKHZhciByPXQucXVlcnlTZWxlY3RvckFsbCgiYSIpLGM9MDtjPHIubGVuZ3RoO2MrKyl0cnl7dmFyIG89cltjXSxhPW8uaHJlZi5pbmRleE9mKGwpO2E+LTEmJihvLmhyZWY9Im1haWx0bzoiK24oby5ocmVmLGErbC5sZW5ndGgpKX1jYXRjaChpKXtlKGkpfX1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgcj10LnF1ZXJ5U2VsZWN0b3JBbGwodSksYz0wO2M8ci5sZW5ndGg7YysrKXRyeXt2YXIgbz1yW2NdLGE9by5wYXJlbnROb2RlLGk9by5nZXRBdHRyaWJ1dGUoZik7aWYoaSl7dmFyIGw9bihpLDApLGQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobCk7YS5yZXBsYWNlQ2hpbGQoZCxvKX19Y2F0Y2goaCl7ZShoKX19ZnVuY3Rpb24gYSh0KXtmb3IodmFyIHI9dC5xdWVyeVNlbGVjdG9yQWxsKCJ0ZW1wbGF0ZSIpLG49MDtuPHIubGVuZ3RoO24rKyl0cnl7aShyW25dLmNvbnRlbnQpfWNhdGNoKGMpe2UoYyl9fWZ1bmN0aW9uIGkodCl7dHJ5e2ModCksbyh0KSxhKHQpfWNhdGNoKHIpe2Uocil9fXZhciBsPSIvY2RuLWNnaS9sL2VtYWlsLXByb3RlY3Rpb24jIix1PSIuX19jZl9lbWFpbF9fIixmPSJkYXRhLWNmZW1haWwiLGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aShkb2N1bWVudCksZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jdXJyZW50U2NyaXB0fHxkb2N1bWVudC5zY3JpcHRzW2RvY3VtZW50LnNjcmlwdHMubGVuZ3RoLTFdO2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0oKX0oKTsK"}},"time_used":2,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":2,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-66.css?ver=1706574923","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.020Z","timestamp":1785130090020,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/elementor/css/post-66.css?ver=1706574923 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=jWnsEL0%2BqSm4gEgtFZKamEaaz%2Ff1qtep02DqUp7SQuKeXH%2BV4UN1XbCnEecU%2BeS3V3uFIXyyRz5XjnJCeLXAkg7%2Fs2sbob%2B5kJbQbSDpxV7fBo2azqx4kt7aH0RLwWbpQsoufoFw8g%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d36ae42120a-OSL\r\ncontent-length: 1324\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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":16177,"size_decoded":2142,"mime_type":"text/css","magic":"ASCII text, with CRLF line terminators","md5":"5a01bf0782cd155d3d8db96e9958ac45","sha1":"b56102215a58dfead3ea0450eff23e44f27d1438","sha256":"7e8b7b25203411b50fccb8cfd9a6d2636da2cfd8ff45830a303fee5e6ce686bd","sha512":"39eed4ccf03b13f565f92df923875a348d9009acf81c31bb5179612e751c2f12236355fa45c8f263d3b661f833c8f71683850427d0493c1726007f46a6cc81e1","ssdeep":"192:uRMkxiVueXYa3m3PXvBC+nhdVf73TC8mkpcCJCr6CxI/Qxf/mk50oubdZ1VxVR:ui4iF22ubdZl","tlshash":"c3724644bd1362a6b02f26af1b83c78c6c3599d7c9bc2589f0e89407b7b4e11b7d1c96","first_seen":"2026-07-27T03:56:42.540491Z","last_seen":"2026-07-27T05:30:59.801691Z","times_seen":6,"resource_available":false,"data":"LmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjgwZjY1ZCB7DQogICAgLS1kaXNwbGF5OiBmbGV4Ow0KICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7DQogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOw0KICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOw0KICAgIC0tZ2FwOiAwcHggMHB4Ow0KICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOw0KICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4Ow0KICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsNCiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7DQogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTcyM2FjMiB7DQogICAgLS1kaXNwbGF5OiBmbGV4Ow0KICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7DQogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOw0KICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOw0KICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7DQogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7DQogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4Ow0KICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsNCiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Ow0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05NzIzYWMyLmUtY29uIHsNCiAgICAtLWZsZXgtZ3JvdzogMDsNCiAgICAtLWZsZXgtc2hyaW5rOiAwOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dCwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7DQogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLWJhciwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLmlycy0tcm91bmQgLmlycy1mcm9tLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLXRvLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsNCiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsNCiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsNCiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC13cmFwcGVyIHsNCiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgew0KICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsNCiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7DQogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMgew0KICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtbXVsdGlzZWxlY3QgLm1mX211bHRpc2VsZWN0X19jb250cm9sIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDIwMTAxMDA7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC1zZWxlY3Q+Lm1mX3NlbGVjdF9fY29udHJvbCwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fY29udHJvbCwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19vcHRpb24gew0KICAgIGJvcmRlci1zdHlsZTogc29saWQ7DQogICAgYm9yZGVyLXdpZHRoOiAycHggMnB4IDJweCAycHg7DQogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0OmhvdmVyLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7DQogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7DQogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsOmhvdmVyIHsNCiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dDpob3ZlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgew0KICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggew0KICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7DQogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6Zm9jdXMsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsNCiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsNCiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7DQogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgew0KICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggew0KICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7DQogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaW5wdXQtcmFuZ2UgLmlucHV0LXJhbmdlX190cmFjayB7DQogICAgYm9yZGVyLXJhZGl1czogNDBweDsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQgew0KICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgew0KICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LXNlbGVjdD4ubWZfc2VsZWN0X19jb250cm9sLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtbXVsdGlzZWxlY3QgLm1mX211bHRpc2VsZWN0X19jb250cm9sLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX29wdGlvbiwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7DQogICAgYm9yZGVyLXJhZGl1czogNDBweDsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0OjpwbGFjZWhvbGRlciwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7DQogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsNCiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtd2VpZ2h0KTsNCiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsNCiAgICBjb2xvcjogI2M5YzFjMTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsNCiAgICBjb2xvcjogI2M5YzFjMTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7DQogICAgY29sb3I6ICNjOWMxYzE7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsNCiAgICBjb2xvcjogI2M5YzFjMTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsNCiAgICBjb2xvcjogI2M5YzFjMTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgew0KICAgIGNvbG9yOiAjYzljMWMxOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7DQogICAgY29sb3I6ICNjOWMxYzE7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7DQogICAgY29sb3I6ICNjOWMxYzE7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgew0KICAgIGNvbG9yOiAjYzljMWMxOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgew0KICAgIGNvbG9yOiAjYzljMWMxOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1lcnJvci1tZXNzYWdlIHsNCiAgICBjb2xvcjogI0ZGMDAwMDsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2VjOGZlNiB7DQogICAgLS1kaXNwbGF5OiBmbGV4Ow0KICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7DQogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOw0KICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOw0KICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7DQogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7DQogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4Ow0KICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsNCiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Ow0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMzE2ZGRiIC5tZi1idG4td3JhcGVyIHsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMzE2ZGRiIC5tZXRmb3JtLWJ0biB7DQogICAgcGFkZGluZzogMTNweCAyMHB4IDEzcHggMjBweDsNCiAgICBjb2xvcjogI2ZmZmZmZjsNCiAgICBib3JkZXItc3R5bGU6IG5vbmU7DQogICAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDQwcHggNDBweDsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZjMxNmRkYiAubWV0Zm9ybS1idG46aG92ZXIgew0KICAgIGNvbG9yOiAjRkZGRkZGOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMzE2ZGRiPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7DQogICAgbWFyZ2luOiAwcHggMHB4IDBweCAtMTg5cHg7DQp9DQoNCkBtZWRpYShtYXgtd2lkdGg6MTAyNHB4KSB7DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQgew0KICAgICAgICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweCAxMHB4Ow0KICAgIH0NCiAgICAuZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCB7DQogICAgICAgIHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDEwcHg7DQogICAgfQ0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsNCiAgICAgICAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMTBweDsNCiAgICB9DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfc2VsZWN0X19jb250cm9sLA0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19jb250cm9sIC5tZl9tdWx0aXNlbGVjdF9fdmFsdWUtY29udGFpbmVyLA0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19vcHRpb24sDQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsNCiAgICAgICAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMTBweDsNCiAgICB9DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlciAucmFuZ2Utc2xpZGVyIHsNCiAgICAgICAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMTBweDsNCiAgICB9DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwNCiAgICAuZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIsDQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsNCiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsNCiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodCk7DQogICAgfQ0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWYzMTZkZGIgLm1ldGZvcm0tYnRuIHsNCiAgICAgICAgcGFkZGluZzogMTBweCAyMHB4IDEwcHggMjBweDsNCiAgICB9DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZjMxNmRkYj4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgew0KICAgICAgICBtYXJnaW46IDBweCAwcHggMHB4IC0xNTlweDsNCiAgICB9DQp9DQoNCkBtZWRpYShtYXgtd2lkdGg6NzY3cHgpIHsNCiAgICAuZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02ODBmNjVkIHsNCiAgICAgICAgLS1nYXA6IDE1cHggMTVweDsNCiAgICB9DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTcyM2FjMiB7DQogICAgICAgIC0td2lkdGg6IDEwMCU7DQogICAgfQ0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksDQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLA0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7DQogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZSk7DQogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOw0KICAgIH0NCiAgICAuZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jZWM4ZmU2IHsNCiAgICAgICAgLS13aWR0aDogNTAlOw0KICAgIH0NCiAgICAuZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMzE2ZGRiPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7DQogICAgICAgIG1hcmdpbjogMHB4IDBweCAwcHggMHB4Ow0KICAgICAgICBwYWRkaW5nOiAwcHggMHB4IDBweCAwcHg7DQogICAgfQ0KfQ0KDQpAbWVkaWEobWluLXdpZHRoOjc2OHB4KSB7DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTcyM2FjMiB7DQogICAgICAgIC0td2lkdGg6IDEwMCU7DQogICAgfQ0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNlYzhmZTYgew0KICAgICAgICAtLXdpZHRoOiA0MCU7DQogICAgfQ0KfQ=="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.341Z","timestamp":1785130090341,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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: application/javascript\r\nexpires: Wed, 29 Jul 2026 05:28:10 GMT\r\ncache-control: public\r\nvary: accept-encoding\r\nx-frame-options: DENY\r\nx-content-type-options: nosniff\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=LTba9y4ZUHfuZJ10OF5SFXwooCeFN1PnanSlvrgbCBYQT8bSfAxYmuZ3rNJtumv4oeeBBPSOKS%2B3OrFxLFxp1uQ0Rn%2BXgmaBVhVOXGRtWp%2FrfzvLSxwuUYzcd7au70wxO3lQCjEh9Q%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncontent-encoding: zstd\r\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\nserver: cloudflare\r\ncf-ray: a2193d38ae88120a-OSL\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":1239,"size_decoded":1300,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (1238)","md5":"9e8f56e8e1806253ba01a95cfc3d392c","sha1":"a8af90d7482e1e99d03de6bf88fed2315c5dd728","sha256":"2595496fe48df6fcf9b1bc57c29a744c121eb4dd11566466bc13d2e52e6bbcc8","sha512":"63f0f6f94fbabadc3f774ccaa6a401696e8a7651a074bc077d214f91da080b36714fd799eb40fed64154972008e34fc733d6ee314ac675727b37b58ffbebebee","ssdeep":"","tlshash":"6021d5743a18107e226a0133e56f66cee1f23715fd17e440408ad89566e4fe5063fed9","first_seen":"2023-03-07T01:02:00Z","last_seen":"2026-08-02T16:45:07.115722Z","times_seen":413221,"resource_available":true,"data":"IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUoZSl7dHJ5e2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY29uc29sZSlyZXR1cm47ImVycm9yImluIGNvbnNvbGU/Y29uc29sZS5lcnJvcihlKTpjb25zb2xlLmxvZyhlKX1jYXRjaChlKXt9fWZ1bmN0aW9uIHQoZSl7cmV0dXJuIGQuaW5uZXJIVE1MPSc8YSBocmVmPSInK2UucmVwbGFjZSgvIi9nLCImcXVvdDsiKSsnIj48L2E+JyxkLmNoaWxkTm9kZXNbMF0uZ2V0QXR0cmlidXRlKCJocmVmIil8fCIifWZ1bmN0aW9uIHIoZSx0KXt2YXIgcj1lLnN1YnN0cih0LDIpO3JldHVybiBwYXJzZUludChyLDE2KX1mdW5jdGlvbiBuKG4sYyl7Zm9yKHZhciBvPSIiLGE9cihuLGMpLGk9YysyO2k8bi5sZW5ndGg7aSs9Mil7dmFyIGw9cihuLGkpXmE7bys9U3RyaW5nLmZyb21DaGFyQ29kZShsKX10cnl7bz1kZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKG8pKX1jYXRjaCh1KXtlKHUpfXJldHVybiB0KG8pfWZ1bmN0aW9uIGModCl7Zm9yKHZhciByPXQucXVlcnlTZWxlY3RvckFsbCgiYSIpLGM9MDtjPHIubGVuZ3RoO2MrKyl0cnl7dmFyIG89cltjXSxhPW8uaHJlZi5pbmRleE9mKGwpO2E+LTEmJihvLmhyZWY9Im1haWx0bzoiK24oby5ocmVmLGErbC5sZW5ndGgpKX1jYXRjaChpKXtlKGkpfX1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgcj10LnF1ZXJ5U2VsZWN0b3JBbGwodSksYz0wO2M8ci5sZW5ndGg7YysrKXRyeXt2YXIgbz1yW2NdLGE9by5wYXJlbnROb2RlLGk9by5nZXRBdHRyaWJ1dGUoZik7aWYoaSl7dmFyIGw9bihpLDApLGQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobCk7YS5yZXBsYWNlQ2hpbGQoZCxvKX19Y2F0Y2goaCl7ZShoKX19ZnVuY3Rpb24gYSh0KXtmb3IodmFyIHI9dC5xdWVyeVNlbGVjdG9yQWxsKCJ0ZW1wbGF0ZSIpLG49MDtuPHIubGVuZ3RoO24rKyl0cnl7aShyW25dLmNvbnRlbnQpfWNhdGNoKGMpe2UoYyl9fWZ1bmN0aW9uIGkodCl7dHJ5e2ModCksbyh0KSxhKHQpfWNhdGNoKHIpe2Uocil9fXZhciBsPSIvY2RuLWNnaS9sL2VtYWlsLXByb3RlY3Rpb24jIix1PSIuX19jZl9lbWFpbF9fIixmPSJkYXRhLWNmZW1haWwiLGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aShkb2N1bWVudCksZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jdXJyZW50U2NyaXB0fHxkb2N1bWVudC5zY3JpcHRzW2RvY3VtZW50LnNjcmlwdHMubGVuZ3RoLTFdO2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0oKX0oKTsK"}},"time_used":2,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":2,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/js/spop.min.css","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.043Z","timestamp":1785130090043,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/js/spop.min.css HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:11 GMT\r\ncontent-type: text/html\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=sMOeAy25OzQ4SCIGzLVET3TXTom6DxGj%2BQ8k4RTDQ1I7c9Q0Nv2YSI6fta6jlMBojarpf1jbuJxrM4X%2B2ZwjUWqI6oWbCw%2FfCg16a2TSwfaOy9PRtoBCqnwebpI8oVQqUMeEFSDvdA%3D%3D\"}]}\r\ncache-control: private, no-cache, no-store, must-revalidate, max-age=0\r\npragma: no-cache\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\ncf-cache-status: BYPASS\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncontent-encoding: zstd\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ce58120a-OSL\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":1251,"size_decoded":1457,"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-02T16:38:12.607757Z","times_seen":145332,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIHN0eWxlPSJoZWlnaHQ6MTAwJSI+CjxoZWFkPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iIC8+Cjx0aXRsZT4gNDA0IE5vdCBGb3VuZA0KPC90aXRsZT48c3R5bGU+QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2JhY2tncm91bmQtY29sb3I6IzAwMCFpbXBvcnRhbnR9fTwvc3R5bGU+PC9oZWFkPgo8Ym9keSBzdHlsZT0iY29sb3I6ICM0NDQ7IG1hcmdpbjowO2ZvbnQ6IG5vcm1hbCAxNHB4LzIwcHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KPGRpdiBzdHlsZT0iaGVpZ2h0OmF1dG87IG1pbi1oZWlnaHQ6MTAwJTsgIj4gICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6ODAwcHg7IG1hcmdpbi1sZWZ0OiAtNDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDMwJTsgbGVmdDo1MCU7Ij4KICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbjowOyBmb250LXNpemU6MTUwcHg7IGxpbmUtaGVpZ2h0OjE1MHB4OyBmb250LXdlaWdodDpib2xkOyI+NDA0PC9oMT4KPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7Zm9udC1zaXplOiAzMHB4OyI+Tm90IEZvdW5kDQo8L2gyPgo8cD5UaGUgcmVzb3VyY2UgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZCBvbiB0aGlzIHNlcnZlciE8L3A+CjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiNmMGYwZjA7IGZvbnQtc2l6ZToxMnB4O21hcmdpbjphdXRvO3BhZGRpbmc6MHB4IDMwcHggMHB4IDMwcHg7cG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDtoZWlnaHQ6MTAwcHg7bWFyZ2luLXRvcDotMTAxcHg7YmFja2dyb3VuZC1jb2xvcjojNDc0NzQ3O2JvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO2JveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIGluc2V0OyI+Cjxicj5Qcm91ZGx5IHBvd2VyZWQgYnkgTGl0ZVNwZWVkIFdlYiBTZXJ2ZXI8cD5QbGVhc2UgYmUgYWR2aXNlZCB0aGF0IExpdGVTcGVlZCBUZWNobm9sb2dpZXMgSW5jLiBpcyBub3QgYSB3ZWIgaG9zdGluZyBjb21wYW55IGFuZCwgYXMgc3VjaCwgaGFzIG5vIGNvbnRyb2wgb3ZlciBjb250ZW50IGZvdW5kIG9uIHRoaXMgc2l0ZS48L3A+PC9kaXY+PC9ib2R5PjwvaHRtbD4K"}},"time_used":1172,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":1172,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/content-image.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"imageset","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.079Z","timestamp":1785130090079,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/content-image.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=R8CHWohZtyiOaYxF9Az%2FPIlDVqbXWYmRkLBYYHkDWvVzQP1FCFgArJHohbOEPvO9cQI7kHEBp%2F2hKxbshCILIjIB1tg%2FQeitvU84kxesiOGD6Fv%2BJ%2FZFffmI49iScmcvVkExK0XVvg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d36fe5f120a-OSL\r\ncontent-length: 214257\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":214257,"size_decoded":215028,"mime_type":"image/png","magic":"PNG image data, 597 x 587, 8-bit/color RGBA, non-interlaced","md5":"31c884dcd4aa7918e259a142c08a4d7f","sha1":"3af8b6c62eda811f4e202fbb5a1ecb16442a556f","sha256":"c02f5362b706372c6336492cc724ef4c4d99bd7c7ef90898f711ca14ddf999e5","sha512":"c6832e88893151d924c7969682c2ddf6e197f893978db170922475e30f7ee9b28d2205b039d277920d90d3499b84cb5083db46caac54857332de5c076f29e2b2","ssdeep":"6144:mS473korxOzk1rap5k70F3hHRaeZGtB541/EQE:mS473kn8raHfJSlwTE","tlshash":"1524127a46f4c4a6485638f8c9e24d0cf509cab78bfeb9635858b5ebd41b2e0374604f","first_seen":"2026-07-27T04:11:05.655768Z","last_seen":"2026-07-27T05:30:59.810448Z","times_seen":3,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAAlUAAAJLCAYAAADO2mNZAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAA0SGSURBVHgB7P0HoC3JWR6KfrXCXmuvndPJc86ZnGc0I41mNCNpNEqjyIgggoXAYGNfwEYIjM21zSVZxrxn/ACDwfgaI2xLYJKEAYGFhHIcSRM0OZycw857r1yvOlR3dXVVd1V3r33CrG9mn9Xd9ddf1dUVvvr/6mqy68rbKYYYYohLAARFgqZoTO4YiEaiyDzyNIq/73g6g8IgdQ+RHUUOe+ktpVgUPWTn00cU2oppuaKGS4emlDDEEENcxCDCXz5Q4Y9r1skl52crQKTf/BDvPdRdhP40anopzVuj90LZuUnuqfAr17OLB4PKFYn8ybWq2BQHVarE8noIuVRVJCs/Lp3JSQVDDDHERYw0CmSmwZY+qDtC1VBRdGc32Hl9aF8rKh0V+aMama1FsqVAtDQSRZh4lE6/w1JwSBj1qYWcj4uBZuksrMWBBqVGhWtFWW0GQdeIoQw1CiWK32z3PzhqOkgMSdUQQ1yUSBr0zEClY6KRMR9mkuajRWDwjhJaKJmimhS3nkR5qRLh2CQXZlYIfQy9dUOsuUQpfyEGya19LlRwXYVHWXNBEq4NsixFG2R6emn3lq91bMX95seQVA0xxEWJ/IOzaReU3kWJc01VJ3vxYTC5k+fc8lC5NWUST4XEnrWODFHNuU3aeeVNrV+DwyDJHY3pJ1LK+aZKKphPi9L1AOlTrXiYSa9QDKHS5+FiwZBUDTHEZQpd523XFakI1aCtVMWREy/XRa6bUuVTFWYH/TAm25+gtHrYEueihuAsepKG6jR7quxaG/zUw/Yu48RbzKnsEpRjmkO+86w0WYUkK2yajPqZFDf9SCN8Fx5DUjXEEBcd8pMA1SCarSvS2T6KBEk5T4feMpO3LHWUlCDvc1ITHTHn0UEzbZjbagzCxiMirK8koFLitWjNzPukdaQky13qXXWyS1DXTs3TGBS5SrLmpfckuvvIP/24uAmVgyGpGmKIiwbZ5qomFguzrihNKj/ZS07T/v7jscKl0vnyJKfCrxdJpJLm7GZv3V3OoJpj8VykKFQIyTdo61Ll4YOxBpm40NR6kCmmOeTehWquR2OYtGpVjtPvQpfuxUG4hlsqDDFEIcjamaV14ukxVV0MQZQCZNOcdi0rVPNVc/16C49sDcgCldUsP5lyQJVpDGIQfOmAQh6EvWdluhVEMlTPPsm5ZQfq69alwv/MIVOZQdctsfRJLMQktkyDshPKi4NQORhaqoYY4oIhyVKRTyvHxWftEAmVvYVKnisXP3DI1LQobcUMxIODWBdVwx1gN3Bt7SCnymmxedBNNPLr170lCOE4G9EQzwdjXYOF61HnqJRjmN2vSObs6ecgMbRUDTFEIdj6Rq0zxoswM6Pz4zhlGdyM155QQYgRDppFQGedyg6xmycgAytFc6SlTjW/KhkTqAbfrSuFsPwHla7KepU3DW5hKyKvSeQnD1TOOvE3LmPT0vOTxwuPoaVqiCEuKLJ3Bkkkyp7i6daP5IHOEqezhOiRvorDFqKmoq1TREtRi4OYf5OyNMmFznqos1jJTyMpHxfGkhB3DcqheZE0uNs4wXS6s+ax2N4hWXf62jPTuzSZKKo1yJouHIakaoghciNrY07qasw1iL8XV/eigh2B0XeuWctNZWGw68J1oIJFarBEKkwx+msb31Qm7RpJkeXIUir5iYC+ldkSIFuY1ASSct3TUSztH1QNVTn4osRKvKqXDK/Z48L3fENSNcQQuVHkbNI+1Wzz77TOPA9URCUbcYnbY2zzF9egl8mK0BlZTHeeZDEiimMkXLuYoMtb0rNRDb+AbUmramP0eBAES04lK8L9rSiKespFkg87S3Q2a5QpLiyhcjAkVUMMcUFQTLdoH0NeEiqHFwV5+LLTHe9w877NpSMqdhDXSYlDRzFDlI48kIRwpFy7FKC6v6R6Kttt7N3I8rGcn7ybcnA9RQ3yqiXs+clVEYRPh2yuffn5ZOvjdClsDYakaoghthS868jWZehokHm3IaYvXisC+S0ncgdb7H5Txbj3RO3yrNsOOkqmI1IvJZi6KnVDsh3k1iDuY5+3FhYLvg+bh4vPapVNt1zbi7m/rSVTHMO3/4YYYkthby3RDdxpdgu19CA7GpUdINuMVT7KjuwElseW80IRp6XZQDW/L1UiZQoC/TCcH+LzDQlW1rfyinezy/nIVh9VvckgJldJvVayhiQt5vmw6yXNdekxtFQNMYQRBrkGwUxatGtwqOwcag0qYlH04K3KSXoacedO3s6Pa81PUohiACseQxKVD0nEqlgLFncNhucmUOUhr/M4fs/ZehU5T0VBvqfk3CVNe1TTs7xTpOxx05/V0FI1xBBGyN+ko7rsLDhJ9pZ0QqW6NoiB3L7TKp6kRG0M+WenWawA9mlcfJAtQfLxxYjBEgVxPV3008gmUNVHFV2wBQn+za4t/+TDLI1i0kmi0OaxBxd3SKqGGMIaeTtq3rnad8v2MQAMjBLozOtmhIbG9OQhQcVb3QZPpi4USUlzSYW/oU1G9WyTiJcsv1UgSM9jdkSpQdZ7U7WbfHU/395oqrwUAWIVZprnpAmmWewsEEs3OeWh+2+IIQaKJCqU3yRun+6gZ6OkIKksaXMMfjaaHCfb8y4G+jSiJRR/e5GHqK+npUcMr+lyNEgMrrbF7UQ2UE16VNdsdfLl9eEVM4hPPOs96fMTTyMeLpcEkWJl6zuKuBfVuke1ziGpGmKIgSLbQk05drauznx2ZQe5q5OvqyE65UzjpOcjO5ny8pN9xqxOczCUMUxL/Twp1KUhD5OytrTrRd2NWo+u7AZpWZXTU4XZueZDYmUfX5+2Pbmiftml0RizfPDzQayzMuuTVHUZxrF1moqCXueQVA0xxJYhWzewtWbuNOhmmWa5jM/w8yD7XJwq6FQ+MpV2PSviA50un6rhOMnSSRTnKlqT1d6ZROjUIBqiO+i6LA/0dgSp2GmLSDwIzIhNtKRVdh/7VipT6jzPIMkiZ69F1mQWc9CEPcSQVA0xxJbAnnQUZSXIr4VkDPOgstUVt/OPrR4Sm/Haxt8axC1ROil5uEgjRLowm3IxLTv1s0+mpPJQPniSlWQpMicVxVitVPHTyEBa+8xiOVM9OaA4cqWrGfpYOk0X1mIVx5BUDTHEQJGtyavmiOmakjrDC4O4CZ8U1LXZ35e8mDd7esXRXV1aMrnmx5BykY8gbj1s86tuA/KQWrSLyiQnasRtPGG87LUm6/2JxJBG8mceV45RdHkjVXdS/2denkWQQjMM3/4bYoiBIfscSu7SRKeAvZY8yK4jbgm5UNapPIQqaXadF+KgR/xUSCK5Fv8uDLaGpKtqMtHmZWvyZJoWVfx69W8r8ykjTNuuDm3VRE3nfo1K5Kv3Q0vVEEO8ZKCySJjNw3WdXt4OpCgyxT+rsfUET7YWZCsR1dw+z73EdYXPWf1Z38EOBTqLBL/GZeI2GDXk8Oy5txvK0/JeBOz1xGPY5qdIC0v0Ezc28dTX8ljQqIEMUuWSrFjZ086HIakaYoiLCLqhwUzaNMw2F3lQBKHKFp9kJlOD73hVFCVfqrI2HUWHFC7nBlI8JFyHQkcaAVXdodmd2wygqhcR8kPlAs7yxLKQzmLqpPxh5jSKjIHlSUWaKNLIFEnQUvzzzoYhqRpiiIsEqu4kvdsapGnerqtSz8rzIrt1yq67Vw2YNnHNZt4y9UgeQtQ61IRJPJePqeKYJMRLoy9p6cmyJnLmA3SSlExQSeRqUURZJlTFk0I1iiFWXFe2DzOrnmeePOniq5+ZrgyjzzspLZV+O99AGoakaoghBoJ8XacD/RqCogcJWa/uXI84ETTr5oqEaJ3IRqh01pakeOJTUnXIUTIlwjyPxPIciA8/RCGr05N2/7aEUwUbt6r5YCfXQ73+dKuIHjJ1y2u1ujDuQCr92qUva8kDsa+Qf83Lx2Q6EE9PRY6zPksPw4XqQwxxEULfpEnCcV4Ck6+DDLso08FZjpl2LVmHTHFM4sQHRhvIJCw8l12eqmHYPI+medHlK2+9GARkgmNqfzKHues8T/moBuZkxO82S9st4plG083W+ovod7ge1a9aUldjzHOi6zvz38uQVA0xxEBgN6tOvq7ruGwtKyq9aWnoQWO/RFipYQuaOR+iNcg2TvY0k3WQWLgNmSLIQirVx5cCbO7VrlySypxGwrOUuZwvrtVMh7qdZ0lTPM/37O2sV3bTg+yItyN5KqOXLiZNGwzdf0MMMRAQawl9d5zWjWSxsoi5yD5HjRvLswwM9vnXvSlnlyY/zg+d2yk70RtCjbSJBE29KtskZAdu9jYht890PfFaKE4QqGEvIrdCXT+RpsMuVpzIF0mwkt2Aaa03T4+YF0NSNcQQVjDpsOLNWe4izGIl0S6SGDMd2ePHKV2e7isLobIfNuKdvkmaqoFC7y5RPS2zNC4F6MqCKs6LHmChSUMXDiSln3QX4uSApOjRg2s0jyuXoqfBdDMSXc2zeQ7xqYB9y4zryAeVS5tqJXQ5yQ77XsbB0P03xBBWkNffiL8EJs05zR0R6qOKWIMarLJbq7YK3E3jvbeUZ0ZtGkdv9aAJ183yZlZXBgc5fZUrSXcsxk36TZLLA1NCbN8e47Qg63PKfp9RR7iNHgJ1ueejRuauQJ2WLBDvI5/dKV+PaR97aKkaYghryDPy5AYv0iHzrsHOEmaHbDYVNZEoOi+6tLPYDbLMNFVWhrh1Sk+5TPRvFcT7T3vmsiWAJuhIq8lyeBKxGtQkAVL6dnWcxM6z5DlL/YvH4JMIu01C5DuxKYN4vtP7LqK5VsTzLUaPPTXLluaQVA0xRCaoOiuilbQnVqpOPG/nokrZnBQikouss3edXUCftviBDzuXGr+3rNYpNZm6eJBE6pPsaSpyI+tNukZS5G0IF5cfNLmyT0NlJyaZdOW7v7DvCPWk10MVAd7afIc6eD6KgDpPSb1KUivJklYahu6/IYawgm7A0TdZExph5i4Sf4sAlX71EmnX7NJzYEaoIFioshEqG8QJh5xjc/eeLm9ZYqrcOabESK6bpvHMYH83qjIYNKES05bLT43i3be28moNqnppEit7PqITi+x1Pw9kK2m6tM11e03JGJKqIYYwQrYOMbo+In5dPlZryDtjVHWkNCEsKhHXk29wMCNUYTp2Awjv9rNZ0qiftqglnXrG9ejJS56ys7FI6eSzg6aEyTnRy8skL61OEU28rEiv+6Ya7OPnT5P4OmjhdWnQMfOkmI8SkYSwojF0/w0xhBGyDtRZDPE2loUsSCdqg+l0TMiUJ2ffjYoxsgx0pld16ZqQAlN9NjArU2J4XawZpjYlExkziC1FlStZTjdNMUlHbo12eohWp20esqGY3sA0D9HnYtfKRBf8IKlMHGl1Pr1Hz5bnIaka4iWAIiw9pvCaqtxg5casz5VKKg9IwjUbC5Vt+Zl3XdF0baxTRViB9OnZWabEGMnlm64nH+T6RaCvc0n3beYCS7ezyjGAtFqhIzlJsWxtESZ6TNfuEItaLqdFE87ViPYlfBl7Vsh11xxm90wKSUv9XPT6VKUq171BUbyh+2+Iyxh5GjGPn21gNHHUUEW8qNQgCFVWHbbWliz3MCjZQUFF6kzzRRR/2WFKjuytf6Zh5sSZphzH9Watg3lhNvmIugJtn6Uor6ZsSWkTA9niQJT5MHNDmt+bOZJrM0k4tps42GFIqoa4jJGlIWfpwPWp282IxLSL6HiyzT4Ry48J8pEDap1WEbDd78qLU9zzUcEuN2bERAUVoUuy9tgQLFF/elyZ9A3KgpANZuSGH1PDeOp07OLI6eVfY2USXyVnskVpNhKerotqw7O1i/wYkqohXiIwbVbmc5g0LWaEKq2DyArzTjr/HSeZ5m3jFymbrsdMm4pI2XbVKhLD9chycaisnOnz9DTCJD75NAJEE9JRhcv6AZtJA5X+sqFIAmxCED1kJ1ZiHPu7zrKblUpLOnh9IbGryXHSpcxBDNJKjm1W0vb5HZKqIYYIoBv4zKEaPszSLZpQiUgffrNQoTjEwdkEtrPrIsrJSzO9RFTHQLSkbK2f6WEykTAjU0lESD+TT66lRCNHUuSTdMr1w0RvGFMuBzvkb9s28cLnlyW9bBYratnrZIfu2ZrEkZ9/URarZJ2qnsOsPtnncbhQfYiXAEwHY1tSoE5J1miWrk5DntTNoO5cbAmDPaHi/9pZ8/IPiGKO9XIkVY9pemmgltf1krw0dfdgWo464mOKPIN7khVPXVez1QjTPiFfXJIhTlw+ucaKCC3k4b9myNr3RfOWbeF8nmehAjW4Em8tRWFoqRriJYAiG6w+haSZkBok5bwoDGKmbG5AF0E1v8npwFg6Htf7S7f2cPk8IIiWSzqKr5mDqkNbCfkJDbJd5CHpyXHjLkzb+sFl7WpJSBRs6E3eiUvYFwy+t01KXz6OX02vWfnuYEiqhhiiABDDa2FIUQNFdquAnStJJ6NeX5EclwQx02WTzs3S0LnS4nGyIHv56/WZDr42spcS5HuSrW/R+42TFxOohtY8ZMIuxfz1LT0tr5Rs07kwlCg/uZWnaXF9upD4BC+flXro/htiiByQu3s5LA6ikcgzKGYjVPl02JKpMBU7x4m+k0yOZ5tOFmQbjM2sZDQlzZcKZAuEbtVitLwo0kpKJmxFtb/kWhfNvWlrUJGGQSK/W9S21UafWJb0xbh6t6mqXti14vRnNrRUDTHElmIrO8d0EOFfmxj2MnE3XDrsu2Yea7CEKt1pQBP+1Prk2LJFJu/Av1UYdD7N3G78V7ZUqvWp9A92kpNuFbHXqUojdDuaIu+zy2oZy0Oo5PQHUQfN9Q0tVUMM4SJbp0U01weddtZ4VBrAaeZO3cRETqS0TdPhw4Ht/RGLNPKCKK+YuTSpQlpfbsUOdFRxrspX0YPrICYRdnYQ/msey2agly1eqjKOx/AkTdMxq2FQ5oz4xyY0K1s62eKTHHF1kJ9ytHzN6kCSVHIeh5aqIYZwYW7f4Mg27MgujK0kVOG/WXWklxG1uAopL+KAPghClbe8i3heMnEpguCp0oFGv84yA6S51PJh0FY3e4Jlr5sYyJiHxUvZ5B70VmCT+PZrrLKCk7itnGSax0/PV/Y8DEnVEC9RZG80sntBvJaepuzmyYLkmZJZ/CxmetN5flTOjOzE46XDZLCDhYwuXjyu6p5oanwVgckLgvigWhRpGcQArCJ95qQgXTdJScNDtrYr/tpCXYfEqURoQ0pLQ37W6XdAY2mkwYSQDxKDrnumoIa6wvMhqRriJQqVidh+tms3t5dD83QcdnGzU7B8s3RzQiUfm8L0UzN5Fr/GZ7YmNoHBDgyD0j9ImDyDokiWGF98enFyJf6a684CNbFKJ+Pm+kxrJhUsSenSWdtoGPfCWKyiVDJJIlsexHoaahmSqiFewrC1jERBJE12nWNxHXMS0ncPN00rqazkNVpZvqlnmg9+TjTDpC6+abmpB3SVBoqkbru4u4/jUiNTHNlIc34iqbO6RK8lP08TnaZ50cM8fVmnOeUPiaRtu5CnkvbYWmIlE2vAVJ9dPqPSQ1I1xEsU8RmGCeSVMPYWkiJmX6pjE5h2otk7IzuYln+cPsmlUAyFSba4mQ26alKWL09F67wUobIqF9GWZNIWDU1Hsc9FnsbYtdkwlk2e7F5WkduiTd54ejbIN/FVI553XS9tXgfC4yGpGuIlCnGNULZGy2OnD7BUESsLzE3x4cCfh27YlI8nZ0qT8uTIbNiw7fSL7LiLKAE5T3RgKdnqG+TztYeaEJlD58i3dVsVU9+S+xLTfNjD/JkSw2sqGT2JSY4n/mZB9vZtHiukYUNSNcRLFPYNTSZR6QSCatIdPNKdVyYxTU3lNp0l0fzKMrIFgcSGP/WAZ/tczdwxQFoe5TBbpFmkiDJvquMs4G5iXqepcM37JZFpSHgty0BZNLIOvDriakt4VHqzpJ8nTVVMu3ZPrcsvC/KSo6yg0q9eIvl60hPx8jckVUO8RGHaXYVyYtctDjBqkFj8fFB1/npQZTybNNJBU871+tPSidujzAiE7b0Sbap6+STSk3VQL24WLQ4d8nGUJMly4r8yoY3ml8bKLbymWwC9dYQrK8HicZItgsUTq3TZ8BnZkaQ0kqiOkZW42N9vcnvjGETNsXuatiUy3PxzCIzURtDv9dHtdvHSQLYOT0WiaEocs+smEO0I6Z2wPbINQubdk0ne5YGAIvvmpPZyetqaptt2oMtWD+SYYdlHyyqZgIako/jhyoxYDSJlVT5MW2s8LpWOoxMk8ycYjWeerhphuumypjrV+rPCLj1znUWkoWp7WcsnuaSGpOolDodQlSsV9uedX77EKt+AxjVkk8rXVYU6bDuTogmJB2odx1RWNrSbxMufj/iwOQjoBvp0yI4ctRWyiDq2NaBSWxw8yeIwfcpEEydsg1Qjre5hbEiQqCmOkO7ZEiszeWqlOyk9c9j3ynmIFU9RrYtKkvHYcn2IY+j+ewmDEypKvapUZeeVyuXKs22bLrUMEYc9USpPBwWNvnQpcwySUIkdkImVSnVsot9ELi4rPyFqGM8cBLY6VO477pYJ3XZ58zUgWGUpagH2frfqnop4piEoojVc3z8UB7t6IBJ6YiRpvo+VOmfpIFJvuXXUGoq8FBdn+PbfSxYioWptNtFutdzrlyexyjII6a0a9jryduKDijdIQmWbVnS2qKeQtkSFJIYU25FnIYZqDaENR17DZKA3rdoRJBdj0hhMEvTpdKdmObomSyQpIsksFnlJjr4ORsmCWRwb/WrdNiCJOqNuxvC6uW6ze4zukzUoK3xaXPV0Sn3VDEP330sQMqFyfnvdHtposbCaS6wcXB6uwLydpy2K7P5NRjRVysUTKjvIHWXS6B41xevW4eTLhxr6ATvPzDWBxPVZWAco93ziUKKgI96vmCdumcoFY0IDtUcjiccRnRKFrYZIwUaI6tJZsvLbNuQbpwayyZBrvKpo7QojWTZ010Wv6OPonclqKSJNdy4W5MmLKq5VBQ20qGrFkFS9xKAiVByXH7EqljhQq3SKSNvchThoQmVvpUojVCJsZu+myFr+xVg0OcpNgsp6GaUN5hZgZMopFkr80qTEowxV1vZqfXQmKPr1fjZCRZIC5GdBLXWY6NZTVKW4kW7xNw6aQj8pTG8pE/OT4tJY2mKoOl4xJCV+nzbkUJ+P+AQnubyzI8wD72fSCXOe8lPFTSaXOqjCh6TqJYQkQsVx+VqszKFqKPr5nzxLBPITKlVHrdYpSwxiLpltwbg5UaIGMnaIy5s9P1to3D/MIlVZLqG6WgbpOSTKIVChuGtZEKpKqVsC6TjkC+iXKdozfXTH+0hMNrG31z2LLIQhKU6G2qZrLpkrLokMx96V6G96K4IkkSUzyeSKHxNkSSv9+cVddjb3YH7P5vY623xECXoamYnHsYUqrlqfnBfZoCuHD0nVSwQmhIrjpUqs0uZ3ZraivIQqmz7zOaRd/mj6CJ4LxZNAkvtq1nRcMrVSRnW5DKd5ucM98SWFYvTCwmuUDyLsn3KfYvRsCZ2NElqzPdAKVSdHkvKTdVBTxddNL1SwfJpEOs5VGYgiF1SZ+6h0sq5sRDQeT7yajVily4b3ZmiZtABPmQbUzaS3zDoZ0k+BktOzhS5esvWOJJw7GJKqlwBsCBXHpUus8g3+dsMF0RznSd2sc1Cb5tN024FqB9Y8elWDn5l8HllqKJcpjWYZtZVRjLRq6LO21WbmqS7xLE2EnZfRR5n22C912x4hhI9QXt64JYuhT0tuCtWNPuqtHpr1KlozDrmSkxYHrnCGHw/TxbG8R+uwnFasJDXGzSS+HigkB1F1STqSM2MGXurJ5N7UapU2veOrrKhxHBMZO6okS9uWHfXvI3++7SDboHhu4pRPl/KQVF3myEKoOC5OYlV0I4pqVmEwqelSF+/PdPAfBKEqGuJwVtR9Zc1HMWi0RjG/OsvITx0uFRLepXbIVRMdLNNNbLLfZr+LMguvOOSq77Uhl1wharVyyBV1L5RYW6uh3txE5RQjVlMEnQnRJSgSKbHuyPepIlZbAVU9LohoZVJJJPH4UXrJ2FpP9Omo08xRThK8WiG3OROCAuhcYKKEbU6ygRrK5Ck3eVJiVgYqyaDF7bry9q0ZM4bYcuQhVCLKlbJLrBx0Wu2L1GJlN4+SkTRzTbZSZe9u4rrMIOeVFmpJEuf0JrCXK9ZClSxXjIUqGq/eqWHb8rxLqkzhkKtz/XXXguUQsGq/gxLtqh6m++s01RIjXU6bLZW6GKmuo0XHsDlL0G30hQiXOrIOPxqSQJOD1cJhFDPYW13kDKX3VqaEQg+SIY6JnF1Lzkp6wjIjRnLiuQ1k+fS8qiQi05khqbo8URSh4rh0iFU26KhRMqFKimkL2bicDBqLl6bXDOaEyob0hGV0YQhVMWTKwdTGBLYvLTBClG2Lv3N0HUu06b4B6LoEe22vVGjUDeggUhPYQaXcYkSrh436aOgSvOxg6wJLGASNu7w46RE16+PYQq1f3eJtCYge2XWbttY0OXX5psfh+m2Ql86oSJo670QR6roFh6Tq8kPRhIrj4idWxZMqMSyaDoXJfDMdqgacDLvuJsv8uyi98fJJr4n507YZGm30O5apvWd3K8M2+qvM3beJrkOY2HkZFdRJAzUyiiqpRWQ76GGRya7C23DXcQeWmeUK/b7gC4RrrooQLXZcZqSqVt1Ar1/G6njddQlenuTKQdJgLA9lCbLGY7qNJSkexwwXmljZWo7MZAZDfLISq2jcbPLyk1GPAnLMIam6DDEoQsVxOREruTGYyKkbWFGkyjQPJnFVNjeTIaJoK5Wo206+GL3ZLGoyqt2KS6iqvWrk+nL/HM70jqHrECQa6nIsUe4yW9b+xkqTmCrNsb/5SNwO+jiBFXQcl6CzoN2xWvU6+mzBt2ax/0Yq66iWu1inDbQmS9J6q6KgIi4XAqrnorIRqOKoT9PTiiKfmy49XjKJsychKgzSYmW3EevFbLHSjQp6UsVDg2c4JFWXDwZNqDgGS6xSZp2JcfhxMtK6Y1lWnQ4MYpvAPO/ROWYRbr/o/XDXX3LJq7qSZFlTJ4IZ4oQqeR5pimT5nYvbXdcfR592caT3PDaZhQr+2ie4ViVvQ09vEbqXO+pndIRZrObLu1yCJcKxWC2Vmui5hKkP0t5k5KobvcfwwQf3TBgZa9TWmEuQYr0/jjXG2fq1rG0+PqxH65tuUNa1Cds2bAKVawaKtFXx0i8lCeWZ+pjKF0PcBkGsknuDsPeyIeDZCF16GaXVD/O0Uom6JrUhqbpMsFWEimNrLFa2nXL2ro9YyJrFNEXaHDVaBmakKouxnEQG0Hy6JUKRW59aVh70VTK2OlWQ3X4OoTrcewbN/qZnkfLMR7oMBcm4weyfcTKN7ZUrYm7BJdJk5MpZN1UC7bHfjmP96qn5ibstg3ehVOphanQZzU4Dq6xNtmb64f5W2oFBRZfi9VCet5vTLl2d3orhRpV2VstVKHxhiVVcNruMnFZxekkqmU5qJOnpZ+tt7dMJkVyPVPkpT8zs+DkMcUljqwmVA9p39tzpu+k6BMvp4Pv9QbggTGHe5REpVvp8JF+aWXUlkz9irCcJVFkCyKHbhlBxeVMZok1NF26uW4/51Tn3jT+O0/2jWKPLfmwSyQQV6SkR6htBsDaqDUae6Bnm/mujTkZRJt6iqDoqGMcI+kyw4+y/UK17cfu9WJ4865VvCaQlRqhGUas0MVNeRXmpil6/gt6oil5EP9BMhGHQ/JmFsfm/IimH8lyUFv+AYtuRTh+Jnxoma5dLm/aklieJsvb60qTt2qBZaPo9ZBmj0nu/tHhmsnZ1U5YYkqpLHBeCUHEUT6zydK62HYk6lm5+na7JFkm50MnLDT5J1oHubmzTziJXlN64PvVd2T6L9HJ00nHWUu1a2h5cW+6fdUlVoIJrI5ychL88CRKRJb6VCczpt8nI2WKwqN2Bs91Cg1Yxyv6ahFl/K1WQSs2L7mzBECEyCIiVo7PTq6HNmFSjuoGxbptl1iFoBL0ajEqjyJ4jSZ8phRgMpOdu0pwy5di0rYryujOzkCxyWWlKskYi1NJkuawpbA3EWmz+RIbuv0sYF5JQiSjWFZine9dXfJMOPt3tRTUxbREMiVoJqo1XjP4wDVNCZ54ut1Kkl6eJPjVsnCY2emX90xsT7noqjuc7j6HLLEzuXTK3HxHXUzGL03hjASPVcVQro+ycufGY+67d3UC3s4n1zbPouQvR/WcTPCaKEVLHQmkPJkrTkXysl7pYLXfQKznp9dHbWHZmM0JGKYIFV/5u7U5+GrUmxkbWmQWrjjWme3UBF91bgllbQTbo3J5UeaqC//lr4dw2bTs5k9Zrq1MGCWSIkbzp+iqb3iXLvdj3vlnrklhv9JVEzM/QUnWJ4mIhVA7yW6yKnCWZh9ibrM2kk2FmJbK3xIgWHRNClX0WrQ4ngt68+tRy6i7N5jkk33N8wCSYX5lFret9TWCDrmKpf8YLoVFXWb0+jYXZ61CrTaLCLEvwLVdgxKpcrrFroxgbXUCpXEG312JhvSAhR1eP/bfaX4y5BEeYa2/U/0ZNhzWtcm3MJWtwFrJzcsXXV/mEysl7t88sXc6O7NUWpqubqC4xd2CbuQVHaGTn94sBqmGKBP/Kf0WmRPRB2vjEsAXH45nJqa+o3LhmIAYS9ndkmm46MczeD9nltIj70leSIam6xHExESqO7MSqSMKijyt3pSRFJqpL3+3bwZzGZSMOxEKeGHW35mTOZi5oTtJEvfkIVbK87tnvXFoISups/wQ26TojQR4r4QaiRmMeM9NXMqmSv3bc0zY6VsPUdAPNjbaXBgscqTL3XH2OEa0qs+i2/PVSJMhamzaxSE+71xyXoEOgHJdgvV9Go1dBn+nuVlkbG2l48Zz9rfj3BOHtwu7ljbjfEWx268wtWMFUYx2TaKLPXIK0V0Zv1PRpFTXI2kO2DUSHaa+OpE8fRG1AYn8jczeSpCvPAJ8Eve5BPgnzu7HPhc3U0UZbkTkpQkfwnIbuv0sLFyOhEmHvCox2mUlDaDrMrRByZ2xq1I5ezwJV6lFELTK2lhizYaYYi9IgCJVa76AIVZLOcr+E605cGZy/wFx/HdoWMkOYBWoE2xdu9XSxScXM/AReef81uOu112JmIdyC4djBc+zvLL7y6Wfw/BPHXSLU7bWxsXkGm62lWC4c9c4WDHPlnbEtGDYrfaxWuqAlx0LFbFytdfa34cXj/YFvvQrckwyTo5uYqm1gvV3Dcq+Bded7guN9RcpEUUom7WBwfZGud4jm2DZ9mivYy4etS9AmjyY9QDFuwHg62d2AKjmz1kqtZMx7O3X8ouMMSdUliIudUHHYEStVp5yFUMm64lqTJPVG3aIIVdZuxcZKRY3iUCudZmF23Y65TvUTKIZQ8TR0co1WHfv8rRRa/Q0c6D0pRPRytmP77SiVPFfdXa+5Bg+99x6Qq69Ac2EevfFx13JVbjZRWVvD6MmT7HfdJVV/9nufx9EDniuxx6xN6xun0OyseFYxaY5RLY3givK1sS0YNio9bDLPZI+wgb3TRHdzhRm+uoDwoebg/hyCVSq5O7LPNVZQK/ew0mrgbKmO5pxuV3bVOiTxnF8jmrhmrSwvslD7KAzjGa63Ko5ARGWLIWzJ08d0WfPpaFR3EjFPSzNZZrCkSpVvfa/kXB26/y4RXCqEysHWbrcg2+zVErpzmqhTFSsLoTKLl49QmcUx2zQ0qTzjYen5Tn4+chxqKJcOfbrUQK7RHsVEc8w93sQ6Vvvnw8hMfHR0GmONbS6HueXl+/D3fuqtWLv7Tmzu3oXuaAN9Vv/BXHW9eg3dySn3emdmGgsTVbzmtVdjbtuka8FqrndQr02izMhTt9d0246jn79B2GfWqEV6Bl1mJasxl2CZlN1sVJklrdYruWukeiydSn3cJXi057kEI4O8/8ah8/zXO6MsnRIma01Ml1qoLpfRbbJ81uT1VnK5yG1ARbpkGxKgrw9521RUo1k908WW80LUYilazMWz3XN+neL9kRQNJCG+PYjwb5pUmoxdWWeTDOV1E2u1riGpugRwKREqDnNiZdsRZm9O5tK6QSNvh50lro3uNIuMTadrFp5OgLIQwzwy6emaznPHWqMYb3lbHTiEylmoHmz0yf6ZnrzCXZQ+Oz+O9/6T12Hj/lehN9bwtYbrnHjH7Jz36swytGOH+7tvvo4HHrzJJTzPffMYKuUa6iOzrnS33/IWnRMS9Ost2sQyPeeeNEqea7HErte6BPVOCb0KExypolxruDL9Ths+O4veKovT6Vew2ak6nA/T9SYmSRedpRH0mUuxP4KUspWPTX7TrFwy0coGkkuXKt+SHpIW1ybEFCR2ZGcVU+kztVgVQYI8ufzlENWXfqXotMxSGJKqixyXIqHisCNWtkjvNFUOCLlLV+tNOreBedxsVioz/SKhSo9h3onartLIrtN0gLQhU2IcNcYYoXKIlYNVuoQmcwHyHTxLpTKmp6504ztWqhu/7w1oz88Bwr5R4XYH4dombz8r6roGN/d4rsUb9k3hnvuvx+ZG21135bwpWKuMO7TIfVMwzKKnyyF3K/1zKDGLVbi/FRixIigz0tevllCqjaLKLFfMzuWRKxIlBsQNKWGDEaseLWO00sUsI1ejmyx3K1V0y44eGCDpuVCFHEkI051nR3FDuUSsSIqMcUiG9JE0lbJvc/oQ3oMWQXTlY2IYI02zmcY4gbeF1/bi1+IYkqqLGJcyoeIYDLHiFdyucai6c7UEMumP65IWxyj02Q700fD8Hai5nG3nWhShisqY6hKhJqwp90OcNVUCqeovMkvRZhBlpDrhvvXn1OcfeD8jVC+/DbRaDa1Lrg4SOefuPM/65K0y6czMoLV9G8ZqJdx50zbc/cANePwrB9Dc7KJaHkNtZBKdzrpLsNyNRYlXj/roYZ2uMIK1hgaZCFyCFda06r6BynE/VuoN1yXYd12C/eDuRUtHu1fGansEztuLU7UWJhjBqm0Q1udUvI1DM2/BIJazqQslqd3Zt0cipZOvVZP4KVHJxAOIVl8xbYrk0qvTl43cqEL5EVFcLQ7EuISylZEcR/2sh6TqIsXlQKg4BrPGyqxBGAyfknTSuQ3EVE27cpuGnkaA+PqpIvTFw4tZ92RaJiYyasJqPdgEIsT95h8nVYv9096bfx4rQmN0xt2bynH9PfAP7sfmFXtCAhX88m5edONx6xUC6xVl7aK1sIDmzh2Y3lzF699yi7fe6sBZ1va7qNemGWmqBi5Bj5sRd628kydn7yxnf6vIeqsu60M6TLeTVr2GWmPSzTvt97w1Wzx94cabvapLriZG2hgb6WKadNz1Vu1uCf0azB9rcsEK5zo5miBfRJsksZTsdIi/ZjHyTtGi2rKG5tFVBEnzjux67qzpmCDvmKpObUiqLkJcToSKo1hilb2xmVtD8naBtvqKmbHycGqd/3SSxlEMoTKRzUu6xI6ZJEcVyBQPEEnVMnO3OTupczRGZ5m1agzX3LgDN7zzLrRmZ3w1fnz/xx1MI6432XolyLC2sc5cgnTUWW81ile99lpUqhU8982j7gaitcqEq99ZzB65K+K8nbiJNSy7byWOlrzF9Y5Rq8qI1UibojtSYlarUda3jLkp9pyPNQs6eB76LP5yq+Z+T3Cs2sP4SAeNLmurK8xqRdLWW5nAZLCUW6vOyiD/ZclHFuog1SmSlkY8ZpqcWfppoTZlbRJqooskhvJf76sLWZ5bkmbVmYzi6G00tVDnkFRdZLgcCRWHnlgVSQCiUmKzTW5ORTY0WZ9aNzWQies06dhsOw7zjreYdVREqdN+eNPfKw3CDPWRuIySVPkijuuvUh3F9bfvxpVvvAPdqanQGuWQKZ84BWqDHc8RWLPguwGD7wTCC+uMjaG9MI9yo4ab94zj7tffhMe//CI219vu529qzPXouAP7tOPr9hJ13hJcxwpW+ufdHdlrxMu7Q65qLYpSj7kERyqoNsZdy1W3teluPqpaKdLqV7DWZu20RJnlqoOZapuVBxNfZla1UXKBdmVPeoZ5BstoT2GvhaQ0TdOanTIJsNBiKhtPVx2qOwuh2npAp4d/IdMEpk8j2pea3U2e+iL+RnGRfbDgpY3LmVBx9Lo9tFveLLnK7rfivHaO4u+TItRKpetxkFQJc8g0Lkmf+Tt5onxy2tTyDkhKWNhRqoctIsnapSevOlPJJOvJMGDIWSZmeafC4yyXR9wYo40Rb+sEINJevf2maECwAuLoX5YXjstxu7UaNvbvx9ItN7uuwFlnI9GAeJXRqM1jvL4dJeYWpER4PoxgOS7Bk93DONk77LssPVTbfYwtdzCy0XM/lzO1sBeN6e2sz6nGrGlOJjv9Ek5vNHBqYxQ9WsFktYN9o5vYfaaP0bMlkG7WQckUUbKTLmsbR63HrP1QdbrapG0Im03d1ueseCRpTs9ztB+2eT52z5JYlUD2euIhPnEbkqqLBC8FQsWhJlamMO+WZDvGoIcAD6p5f7JUMZtxirqKvNMolaLK8CToSVc6wU3TCWVutOWpNASEpNEoVZIUToQdzQFx7VSwfsr9Nh8NjoO4RIoLj3z1xj1X3uy2ySDAU0tRKY9isrEbYyPz7tuI/M1CTpBWeudxoPMkTveOBeTK4V8jG12MnW+j0uqh3pjCzPYrMToxF5ta8Dw566yOrIxiscXaKuljR6OJ68qb2Hmqj9rSVg0hW9N6eVpm+7ll0Vs06TElVtnbVXyyk9bHFN3/mIJYxxDjZYPYf/hvBmOIC45SuewSKgfddueyJlQcDrHq97yPylZGpJlyIrLbYZIHcbUTKh/yEYSoTHonb18yJh1j1o6KgyZeNac0EGKYpkvCKDwhqtJlppNbgsRziG2VRMmRZ9nywyPuwJBsUTE8otjfeqE+6lrC9ly1IPQL0To7Uh13rVYj5XHwHdmpILbUO4Mjveddt2CQVeaKr612GClqgfQoxibnMbPjatTHppX9T5eWcGajhoMr4+gyC9ZImWL3eBP72m3MnCijulZCfitR0ciWl3y5l+qcJrxYchVNjCTKZQONHJnkPr3sLaYyGHydykus+C8ZkqqLAQ65yG65uTThWOYcMrlVljmaIcQeYkdiqvdCEGjzWbhZ509Srun10VQ9ZqABqZQ6YZFMRfr5DGlxDw8RPkrCJwMitwoWo/tBwht/EK1ZvqxwErgMiZBOd3wc196yR5kZTtwIqWB0ZAYTo7swUhlzP8IsEqtuv+26Ax3LVbO/GWgpd/qon2uiutJCtVTF5OxOzG6/ik3y4ivS3fVejFC9sNTAuY0RV/l0vYdrGuu4Yr2LyROOS5AXBxGspheabNmlG9Jx24mKKWzyY19mVPq1A9Eci9fyP8twnmNbFmZ9l/29533SYfwhqbpIkM8ldmkh6upsWRCqbA05felkvm7IJsU4STEnOMkyRZWhbRnr5OOWP5pJT3J4ortPjErkCxkQPDyfLiSsiwrkQYLtFbgc4YvTuRgNh/Fw0RU/ZURmegp7rlxAY6weuhBJNBn+JpW7IWh1FnVGsJzF6iGz8vLgbL1wuPcsTnWPRNZblZ19sc5vorzeYZbjOhZ2XcsI1q6AXLl5DAgcwZnNqkuuVltlV/tCvYNrRpu44gxF/WwJpa5UDGJBXVCCZYaQh2d9k/ZCWKxMYNqf8D4lqX2b6tKHyR+kTodpuheqXOmQVF1MeCkQq/jaMdNtFSQLRGEoWl+cTAw2bWJGLIxhv4YhLby4gYMkXJM6W/Fyqg6zlIO39HwXoHYyQIXhQlNtg6GEcnIWrrGStW5c4VmpHviWl6FUCrvsgFxRORZFtdzA+Mh21CtTLtHili83Z9R5m/E8DnSfwrneqfAee31UVlsYObMOstHB6NgM5nZcifGphcBqJqbS6RMcW6/jBPtrs+NqiWJno4WbK01MnyYYWSGR6Yr9hKJIEMWfeUw6kLyaWoRN047fl1qvzb3EHX9RHdn6OVGPXcmapWf/tOzqhBpeHzQkVRcZHGLVaXszyMuNWGW3UDnIPjSTVL1mkmapmDXOYrroYES1kDeXGYRlKS5jUl46K5XGVaF9FEUOjHFdwRopIV2xikff8EMo60UO966S1hc6m4N2pqfxwDvvQL3hW464HOXpqrLEiE1lHKPVOVRKoxCT41XnXP8kcwk+hZX+YhjLIVfLm+5fGRVMTO/Att3XozE+E8kjP15uV3B4dRRLTW+x/EgZuH68iatbXcwxl+DIWtJAL9eBQZCXJJj3DqGL2Ua3mcUqOgEhybqM0o0i+6SGJJwlX01DSLizxE97blnrUf4xYEiqLkJ0O110Oh33+HIhVnFCZbPxp9ngS6Vf+TiuU/U7OJjlS0RangZBqGiODngQSCNUEtkmdnrUuhNm9zQwVMUiuTWUExwgsEBFdISBwX5V4cL20MXmXwhSXt+/j1mOai6xirgThaxF3I38Ojt2PlMzWp1hlqttzGpVCfLP3ZDO/lunuodxuPtsxCVINtqonFpBySFYLN7Mwl7MbtuPSjVcb8Xz3u4RnHAXstfQ7np5mHXXW7Wwb6OPxtlyxCXIsxtts1vdJs30R4s6yzorojyMXwwfpJ4UFEWszPsDvQ5ZNk0XlHnilsDi+508OrPUPa9GD0nVRQrnLcDLhVhlJ1Q2s7NoLPE4uWEpp/iWqUVGNW0q6jhJetNRDDmLyqSXmXneqTY8e5lry5IUmRaJp0p8IkLj1DNKxGhAskrceuValAAERCoQA3dWcFtFxBrkx+3MTHvWqm/xrFURqxiVcyKehoTN3d+qMo96mbkEUQ63daDujaHVb+Jg52mc6h2Nkqu1JkpnV1HabLtbMGzfc6NLsBxyFebVk93olvHsch1nNryvMVfYCLNttItbqoxcnSMYPV9Skqt4zrd+0mMClTvTvA1q6inRyCXqMk0zimzESq2DGsjahg9i/yrzZ2SnN56KF3dIqi5iXA7EKp+FKh/0FgeZBBU1RyIGYRfH4KBH3hljGqHKpivUyZ+f8HS145CddSrUr9blpRjaVKJeOhrTyI1OkbcFAd9KhYCkhfcRWq8gbp/g/Y+1a652rVXf974Hgx3buXErfNPQT1N22wgfea4yV2CjusDcdGOhHPVXTBFvf6uj3Rci663QZe323BpKJxdBOj2MT8xhYee1GGO/8ZIiONMcwTNLo2h2vRRG2Eizu9HBjaSL2bN8C4Y4KFSERWw7JqTDFrLOtDTi+bAeuFVJStpoIskoYqKgyogZiuw54y1nEM+4uF5ejbBfGn6m5iJHv9d3n1XZ3cuqqI8Rbw3yEyrzmQgxiqWbImZtwKb54wNn9hmmWq+57CBnv7owYh1fL0dj16WOlyTHT4LoghDjjrXqwWdqnD2eHDcZ8T8J43ymxtlV/eobd2DPa25Bf2KCMyj/czXSN/7kdVJCWJC6cM73tAqGVUcfa0/9agVXNIDmegsHnjnhhQlvAwbfbfZLjAppR/bFYiiTEUaw6q6s84kbl7zxRfjsvw26htX+orvQnX/yhgkydtd0SVZldBRjk7MYn5xHt9NGt9sKM0HhfkdwsV11XYP1ChtsiEOuKBZGGClrE/d7gu0qS9tirkgiR2IdMHneJm3AhlyJcmlXNDrFroFoZPxrNqlo09PGNm/X6Xqy6wqlTPtLM32ivHkMW90ehpaqSwCXosUqn8tP/NWDSsemXWB0Xpmt4ZjCfnZkkx/TQcJEJxX+zYI4CbJ3DyTJae4jnCCmxI+D5zFKqJLz5S9b8s5I1FIhb4fgXqfqUigFFin4qZMgzCU3ENLwZR1XYHP3HtcN+O3/8HW44qptwf2LC9VFq5hLpNgkzLNgKWg4KaFWnmSkZ8ZzCSLU4ch13PVWR3C8e4i5BDthvPUm+sfOor+0ztyANWzbeQ3mt+9HlR3zRHj5LLUr7lqrpVbYb80wYnUts1ztXyIYO19hLkG7Z2ZeT6PENRtMSIJ57xOT59G0PCLbSq54elFQQ7k0FKUnqrOofjn+XAZnsfIe4JBUXSK4lIhVPguVXXdJjbWopAdrEI6mWyx5S8+5/QyOpoTbEt1s0HX+NFk0c/HarOPgkjRBAgGBIfJmUgDCNU7w36ALiRRnC0GnHCxYD4dVR3711pvRq9fxvg+8292/KnTh+XfEF7IHa7nCuh9sTAp+9955mVQxWp5FrTThrr0i4qam7HC9v4yD3af89VYhuaJLa+gdOcMENjExuYA9V92OmbndGKnWw3tn8dvManV0vYpjGzVm5Cq716qk77oEb68wcnWuhPpyObJjfRpCgiVu/CpXCipI50GeCYFl1JiKIhauqxFfY0UzpTOInpQW2m+mMteUeOayQ/ffJYRLwRWYb9sEEaZm4uhxOjFQ/eaBXgc1kDHVpZZOM2Xn7TxMy8nUYpZVRpEPghTZZFAD2aj775xLJrg9qdGYjbj/uhPjQECkBLcf/O/xgUQWqpckdyAnWDyuGDsM8wkSsy515ufRWFnCa990MzaZ1ejgsyfCewvMtgktgiomGA6hIxVUmFvQWbzeJ10Ee3P5qlq0iXW6HHMJ0g3W1lc3UBobRWNiBmPjM27f1Gpt+Hn3XJqbvRLOtSvu+UTF67ucxexTI300Op5LsMvkeiPZ+g0S/CtbkOS/7NptcmEmS3QqpBNde8/Xv5iXBilAwlyKV7p0h122+7fpKcwxXFN1yeFiJlbFfhTarqmbDf98kMnTsYopFjnjyZIfkjFMDCcp3VYR+TbJp1pGXuekL3bz52FCqBw4hMohVg6cNVWOK4zDWVNVEUmV8+Fjae2SSKyiuxwQOTPK9VUhGYGw67qvt1pBa+cOlDc2ceuN2zG3fQpHDpzGxlrLL4kwDf6ZHP8n0MtBJP7hODDKLrmqOautGGfqC+IO2eozy9UK1vpLzNo0ghHiu/wYueovrzOfYRflRgPjk3OYnN6G5sYqer1OpGw3GLly1ltNVfsolzy9jQrFNuYWHG2VGEGroMmKnubwpfDWzo+3FgVsahm7lFRzsxMrPdXQTbRIBl3ZUCThM48lWrNs9ZIhqboUcTESqwiharYKIFRmZlpZiibqtNNtBn2zTJMxD7eNY5JeWAbi4BONb5fvbDqglQuHEGloJGbxVTB/s4j4liqPVK36C9U5GmPRherd8QnPIiVsyOlqCUiMqBmBVcsJC9ZXgbsDSaiL55pEP5jihpWYxWrbAjP1VLBvxzje8Pbb3fjPPn5YuF8EbxSG5EwsDyrUAvgGK59mM2uV4xZ01loFC9n9LSWc4x67tsbcgh32n2O1KjPrlaui3UFvZcM9rjKyOT2zAyMjdddqRfvdIP89pv9sq+L+jpa9hewOxpgFa4YRrOpalcUpoVfl5Mr02UlljfThf1DIllvdJRL8DZZY2ejISqzMUsxdfloZE9KbbawYkqpLFBcTsYoRqsz5IJpfs1jphEqUytOpJs/mos3QpqGbIX0NkI0+ollXUUQa2Tv5aF78Y3FMjWUxqqPKLCW7b7kN9akptDc30O90DC1UYSIiqVruL6LrryVyyEljdI5xmaj7L26hQrB+KSQ2fmfOiRR/y49bpqhwq+KaKz+O6m3C7uQUugvzIN0ubrxyFq96463MJdjC0RdPewTNX11PIgvpeWmIhQrhmrdaibprvMqu1cqxYPXRixYT+2v3W6x8zrkx6qTO0il5/RFz//dW10FYH9WYmsXM7E436ubGip8fT5VjtVruVhipoi65cvLpugSrPWxnv/2Vsvsh526tH3tGWUCE+xevmMe2qdckR04FNS7sXqvIlETsLCklfT9BEs6i19PbY/HEylQ3z5+dgWBIqi5hXAzEqjhCJcOsMZvTrqydaJKuIoiFeV5M3VZmnZh3nP3NHaLIm60OtVz0PoU8a/v6qI6x7Ttxzz/9SSzcfid2vOzl2H//G1CZmMDaiRPotZowzY9Iqpw1Ve6WCk6ZOaSq4ZCqWnRNFUJCIhIrKIhQTNZ/CxAC+Qr8dVyaiPHgW8F8uxZrg92FBbSZS3Cys4k7Xr4Pt7/qWjzx8AHmfmtB8DOG+n2IC9eDc4LY240lWnY/W0NdU1XPW1ROwvw0sY5VZ70VxPVWjIatMQtVu41SvcZcgrOu5arf77H+Yh18wy6mDcudMiNoJdcNWPbLy7FezY/0Meast1qtwrFzheutiPRnDpIxnqiheEkundR+dWfJV03kiDIfNEWHKbHSwYywZH1K2fUm31sShqTqEseFJFaDIVRiYzbrXACbpp2XUPFftZ4L6/ZLCyeRX5oSbppOdkKlk1U8f2Ief/5t34rF8+fx3J/8IY4+/GUsLi0Bu67AyJ692Dh0ALTTNtIVJVXM/efvMu4MyB6pcixV233333jE1VfiRElBYjh38giJJxMQJBq+pSfGJZGikEiXb8FyYzrfCdy9C/3ROmaqFG98x8swt33StVo1N4T7Fj4EyN2ChIQkiXKSJ5aOm1SJ5dEhVyO+1arvb8ju3W+P/bfRX2XkagljZDJwCfaZS7C7uMLKvouRsTFMzixgYnIO62uLrN/ogRMzZyH7+XaFlZ/jBgzLrVEBdjByVW2W0d2soM2O4+utzIkSSQ0xbQMm6Xky9uRKd0p0UpH0kCJlRtKyw0yfWfnlKruUcD29FEmleQ6GpOoywIUgVoMjVKpjETazB2JwbKonMpeHjtjZdcrmcsVYqbgmE+JllkY+S5eqDBXlR3Rx4/HL8wsgu/dg6QufQev4UXRWlrF28AVsnDwJMBfZyM496Jw4DtrtKHRGEV1TtcjsVO1wkGekyltTtdMlVT1poToEchSuswrpbGSjz2AVU+gOdK9zsiLmTiRo8loswRjVYySvvWe3G2//bA0vY1YrR/TAM8e9kgusYzwPcRDB3Rga0cL0K6TqXnQWs/NMcuuVswZrmZ5zF/eL6636rTa6vktwhFkPZ2e97Rccq5VjveKKVntlnG+VMc1cgGUSOiQnK33Ml7z1Vu02I1jVfu7F7PErtm3YVLZoYpVG1uzvg5ezXYz0HNj3uXFNeTXoNeeXEDEkVZcJtpJYDdbll23QJ6k60yX18U2uiWkVS6jM5U3KLc3lZ56GHaFKHqy0pJGkXoigMj2N0vQUOkcOgzY3gzz211bRX19HxVl7xAhQ98SJVJ3RNVXnvTVVvmhIqnbgCtf9NyG47UJCIpYWDyvJFigSEqogLs+ZW6Wia68gfJQ5IFT8FOF2De5icFYWXeYSbNTKuO2GbXjVm8L1Vp40FR6k/ET9c8GqFani7r0wZx8d8V2CQr788DZtMkK65KYzWhrz1LH+wiFWnaVVlGtVjE3PYXJq3o3jrLfytnEgrh3sdKvqqnJdgpzMMTPWLHMBbmfkamN1xKV03RG5D7KjBWpyQJFGGlSaTFPLBKK+SFIj6e6DpFyxufc8ukyIWY5yy5SyKGHmpnQwJFWXEbaCWBVPqEjKeTqSF6jLJKfo2acqD0V2wqZWKrNwPRGyW5xuT6hgkAZJPDXq/up1lzT1zp1Fv9mE2Nn3V1dYFpjlY3oSvZVV0FYrUafK/cffypNJVY+vqSLR7RP4LxGsSpxgyYvaAzkX0iduhEXuXI4Ia69IzErmEzVHE2uvvYUF9GamMdFp4o5XXuVtwfDiKUZKmrH1VYEeTrg4yQvIHMI1YD6cdVTupqFuqj3xzhnh6mOzv+6SK29/K69Mnb6js8zIbruLGiOlE4xYOYvZHYtV01lv5ZOF1a6z/ULZXcg+5u957C5mZ+eOS3C8U0ZvtQrmOXQtV7z8TNtX+oTMts/Im26KFDGWRJQQpLVP3RWTnOZdtJ4W5oXbjw56XfozOcSuDgxJ1WWGQRKrwVqokjoje792dEgT07CFLUGylTeTTZ+JpoenE6Gi9KjC9M9Quc1BBkLlgg2sZHwUYFap/kZ8UXpvdRWYaIBUK+gvLSfqlrdU6NC2b0WBklSVRAtTcHPy9/+i5yRYX+WXAQnvl3+GWSwd8buCJcGyJS5qDxav82M/nDLC2WUuwT773bd9DG985x1oTNRx8sg5bKxthikGqkj00SH8TE/UCieAkSbvczd9iJYr578eu7ZOV7FJNzBKxgKXYI/1Jc2z5937cd7anJnd4X7ups2IVbfX9dyZzK3ovCHY7jNCW3Zcj2Epj5WZ1WoEqLcq2GhXGLHqCS5BuzavpxcE6f2UHI8khpnnzDQ9M1qTL9Wke1KTj2yp6zEIYqXPfXqojCGpugwxCGI1OELlwGQwV8ukD/BZCJlKjx6hJSkL6TPVnVWXaVieNEzDVYRKEZck6UhJhdX90dldLuHpLJ6LC7D6Wy2NYHRmB3oO8UpYtB53/4mbf4Zv/wWWKsly5HGl+EagkN/y4wVBvPyJu69zHW5MwaJUIiS+ISiV12ohsnbKjeMcMKtQb37OvXbNrgm87N7rPJfgC6fCu+eWKgA0ttIt/ES4d5GTP+LzMOe/sruoHcxKFWGG7mL2DpZ752L7W3XWN9BmFkTC+qyJuW2YX7iC9TsNbG6uBeutnIXszluC3GoVulkpJqvMcsXSqK3X0GQy3UrPar1VMvVXSZtq1YdZE6tEj2QeS04aGRIeYKIOE4tV1v4qDC/m+dBYnORRxqyPH5KqyxRFEqvBW6jSEDZUscmmN988hMosXkgKbNIy1Wsia9ZBUat4trLF5FF/ybSeeO6rem0ak3NXor22hF57MyZTIiOY2XYts5CwQXx9Gbp8Rd1/i97mn35W3B3VK1WXVO31d1SPESfI66AE16BgQYIgE9ylQIY4aRAHLb6InfA1VDJBg7hQPsxTYGGqMnfZ3Ky73mqsVsadt+3GvW++DUeeP4XFM8uI1EAi7sYetsOgzH39NDj31mARxmgcdx8IBLdiGLntbMLQ9/asqpe8LRgo67fazCXYPL+IkfFxbwuG6QXWn3VdcuXI9hlZW2Kk6Vynghnm7qsIVjOHbDnXZlmmOht1dNh5t5K9vyI5Qk1TsNKSOg/SkQ6xDVlTOaOraWF5S8s+9yYa49QxXS45B0NSdRmjCGJ1YS1UoVziBE0hn3yeRUdRcWz1ZuvA8hMqdRdmrosg6YlpLXAJA0UauE5nL6rtu+/E6Pg8lk89FxdkA/TOva8E7XaxtnhUkZaXXmxNlUOq/AIQv/3nWarCheoB4fFViTP0yHYI/hVxcTt3lQVOUYmQBQQrWF9FAjcfJ1Px9VV+SsHaKP8Wnfw65Gph3nUNjjHL0X1vuBlz26dxhFmtNtaakVJxozpuRFAEilzyRHwiRUXeJxw724aWQh3+fbiPgvaxiTXmXl12LVbBeivWdzXPnUePWRLrE5OYmduJufldLrFqM6LsxO8yV+DpdhXcShXcM0OtxKxWzA04yYgXZeSqyYhWv5RkZUlGPqpAcmvQ6tG0l2ypqfMZpx0m5ajTY+5GS9JtPg7Y98n6HosojuMYkqrLHHmI1YXbNiEKVRWmxmmozk1hE8+cINpJZSVVXniye3QrFqeb6dZHMa8jXL7f67jWqoVtN7P6W8fK4qGILqc+773yAWbJWMHyuRe1aanWVHkizIolrKna67v/uI2AKt1xfgrCwnTvlwgEhe+2zpMhCN/8k3WJpI2bkRC6G3l80XpGwtLiljLumqQs/909e7xP3uycxBu/5U43zjOPHgplRCLoD64OQSp5h/54G1rjIhXGTb7MhTxixq+zOD3i7G+15rpYRwSXYHeziY3TZ93jxswM5uZ2oV73XIKUei7BtX7FtVrVy86O7twa5/3XKFPMlvtobNawyWQ6FWcLBntyRXKEmmjPpcGaWGkjacPUtEOnI6mnSIvLw9L7pWSJ7OSNaK/KswU1hqTqJYAsxIoTKgeddofp6KEYEEjT2ERpaiwp6ucxgawNyyRePguQiV67ji8aZhI3veOK50kdHr+ed2G69mICQvnVxcOYWrgOkwtXY/sNN2LPbdfixFNPujLV+iTm996BtaVjTO6QMr4D2f3XCdZUEYzKpIq5qrhvy707bnXipEhcxC5apMKLwXqqyLkQD5KLMLrgXV4Qj8i6LvkJKt8sZIf9qUnXcuV88uaGq+dx35tvd3dkP/L8STd9yrMhuCHdte2xx+kHcOLnW7M8y1wpuM/wfr28tGnLXb/mbCxaJbWAXLXX1rDpLGZnLtfJ2W3Ytm2fK7+5uc6y33d3ZD/v7MjOiFuj1PcXssPNg3M8XelhR4mRLma12uwzuWoX0b7IDtmH6/SYxLj9Jl+SaUwUaT1qNA/Z7lettSiYk8Yin2963zkkVS8R2BArkVC1W23mLemiOIikJ51Q6WKapSEfm0KkcaZ0zoSg2OTFRJ9tmE0edIQqrVMhBmnZDQpJoAlpnT/9NEoz8+iUalg930K320S5Poa56+5Bd6TESNYn0e+GRElGbKE6OuAWobExxZYK4ht4CBebexmNEySPkHjXS4BAykJXn/jtwIA4ERK3hAkWMML1++mGSRIQKa4oH8iytt93tmBw1lt1W7jjritxx33X44mHX3AXtAfePz9BjywhMpGn/leXqU+o1EVMEHLIaGCLbjofvUEZokuwh+bSkvtXn57C9Mw2TM9ud3dkdyxXpFRihKmEJec7giXnrcB+kKi7BQPL4CxzA453y6DNBrosyFnMHsuTIUjGeHptxKrHUapI0KsL0yOaE70Ok2uq0Gxllq13t0tLf6/pT2dIql5CMCFWgyNUcgM2mbFFj+2tVVk7OiKkyM9N4uQJ90CNZM3C7S1pBOkdrSVZEqC1UOUiVHpZZ7BdPfEMbnrXO3FqibmQphkRWtiJTpVZng49jva549oMOLob8kJ1bqli4qOjs6hELFVjMctQZF8pXp8EEsSXIEUIEQn3V/f/R3wHdUTIkW86Er2FAaESSRilerekqDNY+O6st9q9y11vNT0CvOmhV2B+xxQOv3CKkSvVNxT9eueQrODevD9er/m9kUgUX0hq8H1/C4a1/rK/BYPXL/U7XayfOo1uu43G5DRmmUtwbn43lpZOu28JdlliS70KVhh5cnZgr5aEsmBhY8yStbPSZYRxBISRq/Vq27e02fUysJLkSJsSDsIVqNIr9m9JynTESnpYyrjJmtPl9H0NbzG5ykqhUX2mk1dLDUnVSwwOsSIl1nGyWZ1MrAZroXJg12lJSzIMdBPFtSwomlCZypjKpnVEWcJ4ePT50JRwe/0mUfITKjHsDT/8j1HeXMKxr34O1fYq1l98Eu3TR7Vxue7Imqoec/8Rb58qZ2x2tlQoRUjVhBuzRMThgghcIbrNQqO5gj2nn8LS5E5PVlw87svwX3lHdZGIBRapQH8oWxJdigQCkSLg+1iVVKQLiKz9ctZb9a7Y4x7vmx9lVqsb0Biv45lHD0bvM1Qf/Kq+IQhCI7IhaVTULodcMfee9/ZlByPMahVswbCxgebiomvBGp+bx3bmEqz5662ctwVbtITTDoNmSibKPfe3VAoTGS/1MF+mqG020OpWmdWqK7gxSfRGNLDvYVT9lFqGGMhkSd1eD1EcmcZN05gPRdIq/X3q5VSoYIiXHDotb8ZdYQSqyoiUg1K5NGBCxWFHrDhEZ9zgIM++aGJ+suktUrZIpBEqIA+hosZRTAmV6UBA2KSBTRyYVWP9yCGsx8JVutXqPOITLiDi7rvwGMKHiX1G4S9C4qSl3+3jusNfxvXHv+rGu/L4N/D83ntwdNsNEBYsBXqCpyK4Fr2Meuk6pKivIEOgQjkR/245wSH+oC3mF1xG3JohbHXu23b796HPXIKzBw7iW3ZM494HX4Y//+Cn8Lm/+bpfLNQvJ/9tQIQWBfec+vkFDcuZhu3M+26gt4idf0PQv3n3fLW37L4lOFuax0x5wY3TbbWwfPQo1s+cwfTeKzC/sBuz09tx8vRhHD/+vKvjeGcE53pV7B9pYpL0AtLp3PsI6eMqdv0K5mZ8Zm0aZ0ZaWK2vRx987M0v4TFANRSb9A7pvZlZL6nQo82GLGvSo5KUPNEEXXr98XLL1rPb2xXNrHN6vXJ9iBf20FL1EoWz8Fy0WDm/DgZLqBzIlTEOuUITZOlczJtaXI8qF2nyeWW4eyyPriRCJHcGWXRnJVSauCT1QiycWs6sHdz+Ld+K80cO48g3vq6VUUG1TxXnGe6O6v7mn/siC9UR+fZekBI7Pn/oLA595kugX/4wdk5PoF5lk5puC9vPvYC55WM4P70HPabTiRb9PqC8bYKkX3TpCZYhwv2AVPrOoLT1g5iOoD1sqWI65TL68/OgC/MYa2/iznuuwd5rduCFp45hfX3TI1c+CQs2DY0QUlGzdy3yBqSfMvWJlHtGhDcqGTb7G7EtGJz+bOP8ebSZ9Wp0ehozs9uxML/H3ZF9s7nmLmR3iFWbWa/G/IXs4v2W2T/by11M9CsgrXFmlWSTz3LXqK6oW519PVWFm/diJu0rKcWklNTUMXqW1Deoy4IknKl1qENM2nJWEIurHENS9RKGSKwcZCNUthU6rRHq5zzpOs2k9TpkKqdG3CWWptc2H1nDvTA9oUqKHyVdVCtjcz0h3IpQec+GGhHdePit73zIJVVHH/m6VsaB/FxVb//x9UCe+y/c/LPvb6lQUrjR1s+v49BXXsDKyWXQbgfPf+Wv8JWja6gtXIPp0QpqjK6Ntlaw//gj7HcVa+Pb0HHIVUA2EJIfCNsrqBabi3cguxAhLJ6XXIrcGhZxERLFonZ+rTqCPnMJol7HztlRvPmhuzC/YwaHXzzh7m8lDnYiuaKC68/PkVT+4dQi+Egzd1HSkO71mcVpvb+KDfbXKI17m4wydDY3sXL8ODrNJhrTM1hY2IPJiTmsrS2i12cEi1mkFnuMzLJ+r0HCReqcCDeY5WpXuYPRbh3NXgPtcjuwuiG4Jx1B0BMINdT1ef6a63D9G96MnTffitrkJLPEHUnRQ5KDSJI0kQSJRkmaw93mvqOx8qIIHTqNWXQPSdVLHJxYdTvdAVuoRNjNv6JNOk0ySg4GlS8zeXN91Eg+nVAlh2fVT1LC1NDeE7FLO607T9NxCyNVi0cdUvUNpYyubilJle86Gx2dYZaq6EJ1eVFRZ7ONI18/iLPPn3YWBjEjD7MKkxLOPPLXbNBfx+nR/Tiz8zXM2tLFHFbcOJPrZ7Dv2DdccrU6voBueSQgNCUStgSeD26Miqy9IuE+UsEidp4zaS1WsLBdIFm8DYnEkAprsyJvMjIySf1P3uzbNoY777sJm4xUHXnhRFCOnLTBj89de64qEm4jEVjOQlGPiKEvuFEhhLN+i5Wdar1Ve30dG+fOoVSpYGpuATu2X4l6rYGNjVW0WZ+31K9inZYxWfa3X6BC+ux4otTDTpZuozOJVr/mWq2cD0PrQBJDkshKFNtecTeueeg7UGF5rswvYOKqazB3y8uYBW4dzTOnUQRI4hWaIZZpP0dSrtr2v6KO7HF1GuNHafKe5JBUDeESq2wbe+apyOq4KjpEkNQ12Q/2xcibxrPRS3KH0cz6w3BzS1yGe7ckVObQy978joewdOQII1WPxMLi9xr+RbdU8N7+4513Y2w2vk+VT3KchdOnnjmBY48eRq/Z9ciU42YvlVEZGcGxL30E3W4P47uuR/2KW3GktBMvVva5FqtZ6n02xyVXJx5Fo73qWq2a9Uk/i1EyxdmAfxXy52xCchTui+USNDeqsC+WIBsQOOktQfGD0V5WPAKCShV0dgbU2YKhXsGdL9uL+x68gxGrkzh3aim0VMFfyM+zx9OM1F9O3jxXIXcDOr992vXvooRg7y2fpLXRct8UdPasGi01XF19NklcZ8Rq9dQpVEdHMTO/A3OzO9y4q8xy1WJWq9OMMDnlN0G6wbo4fl8V55M3pS62scsdRq5cl2CpAx3Sa2t6Pa+//FVYPHMGL/zB7+Pw3/41Fk+cQHO0gfKe/ez+e+ieOQV7/bIM0UwtSIIO9dIKEotvkr7pVTupInTkj0GGpGqIPMhKRPRxg/5WIWXukhIHlXz5kWFHOGx05iFnJmFZ9dte96C8J6LSkaw/3UIZlVfh5re/k1mqjjCS84gij3odsqWqRzuBZaWh2PzTGYzPHTjjWqeaSxve1iWMSJXLxD121y8ygnXi0U+hub6GsW17MX/1He61XrmG49U9ODRypWu5mu4vu4P85MY57D7zNLadexH9UhVrY/MIbHe+WywkP4JNL7JmKhQVP/rMWUQgK5aCuI4KIcmCbwUjQjrB03a+vrCw4LoEG+jh1W+4DXM7pnHk+RNYX2+Cv3PofeaGL7QvBcdcn+jmjbpAGVEifc9y5cYp+ySR15W+u97K+Z6gozdYb8XI1erp065LcGx6FnMLu7F92xWM2HawscncrbSKc3SEEasecwtSCLfvYgTOh5pbaPTHsElH0Sq1YpudqmuQDVgdYdap8u49WP/mI+icOule7Zw/i+bhAyCMtJbnt6O/uYH+yjLygiivJPWZYlslCbpMS0AXK18/OAhiZftMh6RqiIzI2n0kkw3VIvV0fXZpZJVNG4TNw2SdJON9imGhPUC+nh7fRL+NfDgkJotnI2x28gQ3MVK1xEjVcYFUmRD06GdqHEtVJyAZzrf/KsJC9dU28dZNnVp2CYhjmSr5FqpKuRRaq9jvC5//C7Q21tCY24Xdt9zjkS3/r1eu42RtNw7X9rtu+TptocpcW7XuBrYvHcAuRrAmN89idWzBXdTu5lpy/QHh1gr8blWL2mMkSiJS4losQN7jKnzCMsmizp5dV+wBdT55s2sab37objfs8AvH0Wl3/fQgPQsaZCag04SH90Ny5WfHsUg51521VGKYS7yYRWeTrru7s9fJaLDeqrW25pJrR3Z8Zg4L87uYS3AM65uOS7CPM7TGLF4ld61VGTRCrJw0JkgHDUbAaH8a66VNRvCSJ27E4qqDkrOljfOR65Mn0F9bC8un02HXjqPEiFVlegbd48dcd7I+VWKUrD2xEmVkHXrSpdaRdiUbzPUMjlgNSdUQOVDk4Kce6EhCWFRCPC42X3FZgiwdhzrcJO10wqMmVPzXPA1z4phEjKU0rQhVGG6+ji4pnFmq3vYOLB876lqqqIWe2Nt/tBOIOqTKWah+xVXzwNQUTp9Yg7Pu2bVKueTJs1CVfHLl/FWY1cr5Pfr4F7Fy5gSmd12FPbfe65Oush+PuZ2c7eOYS+3c6HYcGb8arZExZiXZwIjzXbx+GxPMerX/9OOYWT3muvGcdVe9Sj3+lh+/M8XCdA7xTcWIrF8uRLBmQYhb8tMI4hLufBT22ZqaBJ33P3lzzTbc/cDt2FjfxOHnT4CzJyrsEio6LuXqQ4M3B+HHc9LwXIKeW7EEvn6M56nNymvZX2/lWK04udpYXGTk9xTK1Srmd+7Brh1XsTJnVsD1Jaw5O7Izq9VkucvIrDDl8fMzxrQxWsOslrOMWLXdbxbq6o91L8SeP5maQP/8edCNzUiY8/Hv/uoqCx/3drxfWkI+kBTSl96u1Gdpkzg9aSOKI5P0zUKySJvnKAQdkqohthrJDYJoJM0qtSmBkOOkgxZGgkSdJrLmnZt5mCynI1SAWo9lnol9fDO3n9n938hI1dKRwzj+2KOp3bkIJanyUR+dYYSphonZCcxdewVIo+FaoTzyFFqpxPVU3nEZBx/5PM4fP4Tp3Vfhqjte7a214oSq4ixo9/4cclVivxu1KZyY2I/zYzuYBaWPCiMSzt9oexXblg9iHyNYs+ve7vCO9apbrnlERNr4UzascAITcQfKe17xNUYIawqV3xwMvkcYLnQP1ps7N8FcgmTnDuYS7OLOl1+NVz/4cnz9808Gu7ITYd8vGtmKHQGBApWWBfjXPAJJ3W8FOucl3yUo5qbDLFYbdM0lVTXiWfdcl+CZ01g6fhyT27Zj2vme4Pwe1x240W7iLLNwOfc2gW7Y8v2bctyBs9QhVnNYLTV9YiWWUBQmVxw4XwAoz0ywDDsEai2mjzL3JalVQUbrjHgtIbmRkNRL6T1EUn+qI1ZpvbYpITLtv1RaTN2ARSwuiGNIqobYQqRXzbTlklFdRHHNFoOIY3af+fXYkqHsaWSOE4zcpnFVVjeVfvM83PiWt2GJWapOMFJFLfTE3v5j/7mLtRmZGqnPMVJVxe59c9hx25UgY43AjVfy3X0huSqH19jfoce+jNMHn8PI6Dhuee3bfOuUT6QqiJAq53qpRF2ZXrWGxbHtOD11JTbrzArE9NZ6TZQZqRhtr2H7CiNYZ77JCNYJTDTPoV+qoFmbkDYODQkRlb8dSIW1TAGxEkop8oacJxt9Y49brBRrvpjlDYxYYbTukqsHH7rH24Lh+ePu/lZiPSHCgiXKzVOExAbdYD8sbz8I5o5z3tDzPpRMqEiuWNkx2rXRX2Nu3BVUSBUjxNv02CFX5w4fcvVPb9+BHQt7XZ3Lq+ewyuiTY5GbQEdyfcJ9Y3CGOQs7pe1YJxtMfy+St3Qqpah3TP/oxDbUx+fROn/aYVkxkQrL99jMbnZDXXQ31gDDiYUuPCt1UVmcosQqm2ZzYkUs9OSRIgbS0bIYkqohthhmdMlMXm68xRMku3VUZnLiMtws8dPDTeOKg5eNnuR7S54SJ+e7mA1Qo+HXPfhWrBw9iuOPP6aVUUEmVe96aB9+5qfvZgNrFQePEFSrI4xUzbqkqjQ25pOmcrA+yrNclV0i5RIs//qRp76Oo88+hsm5Hbj9DW9D1bVI9V1CVfEJlEes/F/m2XKJlR/mDPTt2jiWGME6NXsls2Q5BIvp5hasziqmNs5g99JzuOrM1zG74ZEsx8pVpj20Kw2/FDiTQejCI95T4GQouu9W9G3Aar+DqfYZV65bGkHgJosQNUQtPWPMfeXsb8Wwd76B1zCrVXWkiqcffRE+owoZnJdJv8HQ6KMj4Qajzvlr33wPNtY2sb62we6y61q8SrTkEz1fJfE+eePsbcUoiWu14i7BdeZyWzl9GhML2zA7t9N1By6tnHWJFWGuxQnnu4/cvejnyXk7cJpZL/vVHVhhlrA+0j/OnNa3VUp1zCxc6x63Vs/G5GinjYXdL2OkqoeNpZMaLTbISqwEFixdDaGzBJkt5igC+fXFp2HqVEJzwPAzNUMMGOYkhCqH1Mgy1og8IiHFEyouQS3kTeUosjf30NliS/pMCKhaq02+zNKPh2VL1QAU7qdRsmJuJ8Ev/cLr8Yq75txP3txz1zacONXBB/79cX/tVAnUfbsP7gBcKnnfmHPW+TikpORvsOtutMvOR+pjaLWY+2llESMV6sZziBMpOSTGO3dIlPvrb5bpnpPQ+OOQipJPPlbGtmF1fJubV8cl2HBI1foZl1w5lqyZjZOY2TyJvYtPBI9grT7PrCwjWBudZYSohs3quLs2yyFHEN4YdD/lwohDpddCmZGoRncNdfY30TqPke6qm/5SYyce2fnW0HrlpkAEl6JA3vjgs38fsGMHxg4exLd+/ygjV6/An33w/+Cz/+dhNx5fV0VoqCpizYJH9jylFPe/5W78X//iPfjMJx7GH//XP8eZk+cdOxIjklXmEvSIEf8MjpOftd6Kuyv7jPvJG2+frc2VZbzw5S/i2lfdhz07r8HM1AIef+ZLONkruUnvdD5yJPBFJw91Vjb7eusojV6DZ1vPMJegjliF/RhJCN84dxQj++7Gjt0vx+a5Y2g3VwU56n7TcIQy9y4r83N4ROgJQh3x9Kn2VM5TPH9p+tOg6k+IItWk9G10q9KgGXWYhMcxtFQNYQlbMmA20NKEGHoriqqx2iC5K/FCTIiIHJ5GbEzySRJCSEJTNyVVIYqyUinDiElcG0Jlf3/XM0uVs1D95Dcfh00dcaxUUzNL+PZ/XMP7f/nD2LtzBtdftd0Nmxgr421vnmYerRGsj+1Ch1mOAutUyVuUXpbe+iszFuRYo5ZOHcXjn/8kKtUqXvcd34OqQ6wcq1SJBpYp1yLFrVbsl3DS5RI0GliUXHek8J29boURpJEJLI7vwNmpvTgzsQ+rjTlssGvNkYbrMnQkHcI1ysjRdPMsphnhWlg7jB1rB7Bz5Xns8v92rrJf9je/fhTTrVOo9zZYeszRVWakpDaFsfaSmweHZDnEbLW+LXSR+RYrQkNLGOQNRh3/5vw8SswtONpcx8vvuQF7r9mFF5467Fqd+DOl8iMWLVfw2sP3/ui3oX7dNdi3aw6vuPtmjC/M4KmvPc1ITtd1CzpSDsl1sxCwNaBJN7DGLFdj/q7svW4HyydPYnrHTjTGpzA3vQ1nz5/AKrNOOqR4nO9VRhHcS63fxggjpCVGVM93zilqksnUJ7zS2VjFrivuweT0XiyeeZoR+ShR273vPjj7kJ479USCvgQQ1QWS0jMlETYSuWKeCX2/m0WjSksxUzWScBa/OiRVQ2SETWW3a2oi7JqEjSXJlCyZECWd3jjC4S+LjjT9WcNMZZNIGYmLFkqo0soFynBH9/VvZu4/l1R9EzZwSNWZ08fw3//241hebeKPPvZ1HD5+HrfduBtTE3WXKOyYp7h58hgmy5tYcd4LY+SiLLgA+dt/Ff+tPmch+vEXnsIjn/0E6sxl+Mbvfk/o6itRgUh5rj/iWq04oULgWSv5xeERBJ+mEGkocv5hJKpdGXUXu6+MzjOytQtnJvfi5NRV7Hcfzo7vwXJjAefHdzJ34i6cd/7Y8ZkJRsgm9+MUkzs1tR/nxvdiddS5v7L3tmGpwgw+JZeYOenMbh7D8uhOtCrj4ANm8PkbEt+pna/FIj65Int2g7ifvGngwYfuxcKOWRx64bhLrojweAMuJdzzjbdfgzd+5xtRveUWlBfm0ahXccO+bXjtg3djs0dx8JkDzO3XQY84a6OYRRG+W5B66ffZf2t0xT2ul0ZdYnX+6BHM7t6DxtgkxsYmcH7xFDZYOdaYbJ1Z7EgpWtaN7iYqY87nhcpY7axCXT8hlIKeWLVbK2j3NjG+4xqMze7FLW9/HXbfdCOOPvYYqvVxzOx7BZbOPY+184elmBb9hqY56aeZ5m2PpMYRw5NtY6ozG5jFtNOfJj0kVUMYIo2EZB/QqWVKav3FkzwaNHrTOOlkiRjJZUkjW/7irs0k/RTG6ZOUcO01A93KcL3MNW96s/s9uJNPmJIqT99Yq4Zuawkr9KRr4XAI0qNPHcVv/o/PeOTqht2YnvTeEpstLePG6guYKDFyRWYZ6aj5a6yIu2aKLz53/jbXV/D5v/gz1Mcn8JbvfU903RQnV846a/+ak52S/+d9988jE/yzNSXuE/SLgIQ+Qv88MKy41wLy5eyLVaqiUx1lZGAU7XI9OA6Ik0MO0UO9vcxciRsQKXC7Ouau0ap1vYXm082TjJTtY8SrGhIpYYsGvm4LiD8tN8z5fuL8HEi1gr1zY3jFfbe4pOrQ88eDGN43lv1d1v2y+Nf/4ccwecM1KE1PuwStvLCAsmP96rbwijuuwyvfci8e+cIjWF9dZ3fifMuvx2hVJWiNIJ6bc5NZrRw4O7I7X5hYOnkCs7sYgZ6aQ3WEWeLWzqPJ7nmKEckS7Xu1xH8WTvx6ZwOT22/C2dY5tHpt/85MrDHxqxsrJ9GiLZQWtqPJVDFvMdaXFjF19Z3sGQFnnv40+t12ii57EIO8qZHHYmUbYi5VVLnIo1KS3iGpeskiyyBsW0WTm2i4tC+UEmdK6Xr5sZ0n3n4wL2LwJ4ZWqqxpmJKxtLJKIj9ZCZU+br51WMnhvA5d+6YHsXz8GE5ZkSq4pKrCRrNz/SOxfZoee+a4T64WcesNuzA9Mepenymv4LrKcy7J6pTqjKg0XPee9zaf90Zfk5GqT/zhH2JtZQXf+U9+2FsvVfZcfmUSrqUqc65EhL2fiLifFBD9Vl7AqhDhWQTCW3o0IF0ixRcJT6iPWWW668xVuMJISD8ICD+0zAb7SgNjnWV3EXyVWYPGO4s4NX5N7O1A8RM58oegg9rlXGMuUWffL5cUMYvTy192JV7z4F2MXG3g8IvHESy2Ygdj4w38g/d/F2685xZUbrjBtR4Fz4n5WSu7d7nWr0lGpd760Guxbf9uZv06grXVVXRp01XjrLnimXByJBKrXqeDpRMnWLyrMD01776Nt95awyaz+k22VwLXJi+TEnPTVRmZmtp5Iw4tH4zUpfTaFkdr+RTWT72I+dtvwdnVJYwwl2SHEcLlZ76K7vJZja78/YtpT6GKGz/SXzEJz0+sBrPLepLeIam67JGXGBWdfrJkNg948YTKbl8qE7k8hCkebvJOijo8Sz7TiAtJEdWTsexDDlGGqerP1W90LFXHcPrJJ2AGf9Bm7j/a3MB5ekQr+djTx/Cb//0zOMTI1W037GGDr0euJkpr2Fc6hL3kEPrlKiNXzKLlLmqnbLBu4X//3gfRZ9aQv/fjP+q/2edbowRXHydDJUIEKxMEtxpERhKSLUhbJfjXaWQPKq6fIFznhCDuCLNKNRiZKjOSUBIfryTrWLKaI5OMTC0zksFIWG/NDV+q7fAJHQnXUgmfuQnJHYKbiOz2zkiRY7UqjY9jtN/FK+65kZGrV+Im5uq77ZU3MivWbfjB938nrn3lLRi5/VZ3N3KRnHnZY+U4MYEKcy06uGJ6FG//nre6us+cW8bq0nl00USF1MApnvNfE1Fitb54DjuuvBoz09ux0Vx23i1kz6eMWms1Wh7Os2ptojF/BUr1MZxeO62oV3EkERDa6+CBH/j72DY1hhf+4k+w+vRj6K+vQAei0WiSqkyK7EYKkqApHm6ig1+xJ3cqrXk0JOmNY0iqXjKQB1Z7Zh79tY0XRdI7G8RKnx0JKI4k2cimEQOT55En3PQZJOVTF5+kiCbnK/nlavv8qEKueeODKaQqwk4CTY6lqt4q4XT/hTANSmMExYFDrn7j9z+Fzz38AvbtmcP+PbMugaiSDrbhBPbQgxgna+7eUbXZ7fjQr/66yzXe/O53YWJ6MrZuKm5pipKl4F8i7Xouki4gsCpRRPPrETROJTyy46DivOHXXmQWlxa4q1EmPZAIm7P4vU+qaLhvA5Yw3WYWlpFZbFanQznuAkR4U/z++Jt0PA2RHJHGKCpX7AGZmcb4/Ax2XbUL+266Ele+4mY0rrsGlWuvcclqkD+fvEUtb8yKxOKXd2x3N9C8Yf92vPL+l6NJynjxiWeZHavJ4lSY1aqCcAH7JjurosbcuK2NdZfxzjFL0fTkPFbWzqJbH0etvYZypx1UH+LfU2l9ETuueQUOLh1GO3DRhfUKwhOE8ix65aY3vwXt9XU89fG/gSlIYoiQF2ITNz1URafi926OsLTy9Y/2Keu0pOdoSKoua+gIRxFvRGRNPwxR0SP9skV54IPiWNSSFk8P++0OdOUcpp1MHrK45OR07OKaEyp1mNZCZUyq0hao299TvGZ7cle+/k1YPXEcZ6wsVfBJFcHJ/rPuuUekvHA+YMvkynEH/o8/+4r7N8VcgtNTDfevRPoYpyvY0T+G7b0jbj6PHD2NN3z3uzExNRGSKYhEw03BT8+7KBKlKLchkeOSSL4EVx/AyQeF6C4s0R4jU8vuNwaJv1cUQbiZZ7hGyr9/IZ9OFh1LnOMCrPW8t/Zmm6y8G/vRJdXA/RclhqFLMyRciBAwnlenjEujoy4xKm1bYORoB0rOW4ONhls6JYFAhS8FEv6/n0emg7kWnYXsjvWr3m7hFS+/ARPb5vCNz3+DEauWuxt7ieWXuxgdYtUojTE3bAXLp09hdudOTE7PMXfuCJptZqWaZMcrzBrV7wdV0i2ZXhe1egMLe67Hc6eeg1yvzIhVWAY3vomRKkbsXvj8Z7XSMkiqTBKxIkba1aCa1AnMiBUxuGIe1zzUTEKWV8UYkqrLDrYVYyt06wd284pODMLSyJYuDAmyurT4MTGKTyLyRBFXTz7k83TXX7JealRe8euJS1GVRWF6T/nD9dtCEFz1wBs8UvXUk9DrIpCfsUOqGq0qjvefREikooND5I074Xh5dRN//reP4Td+71M4fOw8s3A0sP+KOTdahQ3hr73rKvxf33c/rhhrYpSuu2/SdUqjwRoqvi4q/EWEBAk8SrBsRfNERHOXYMXyonJiQ10i5RAqZ90UtxpFCY5HwngZBSXgHoRpbFYnMNpdd61djq65zSM4PXY1s2JV/PxDsvKJa66AgAiJJIlE88J18HuLkMdImfj5pDRKupw/x/q1c4f7Pb2rtk3hnne9EY98+TEsL50JiJV3a97i9Qky6cZfOn0Se669AZOMTHW7m6AV9z1CkNXzEWubg/7aEvbf/locWzqOlU29u07fosL6eCNzX7c3NiRSlQbTtUSDiB/mPX5P2bSZIdn/ka88ZH3yUYghqbqkoRoQdDJFpJXFwkW057xb945J2JkrSYdOL4npVZ/rZHXxaIqcTg+Bii5GrV8UZvmFQo+cVhJMws3rjlgyUJGq5AuGYUjJj0l9jsrtd0nVCZyNkark+uCQqrF2HUf7T2jiiZDda965M6A/+tQx/P6ffAkf+shX8c1nTmBmuoG9u2fd8CraGO8vY65zAts6hzHWW2LXOm59cbZniKQku/q8S5F8yYvNPZlwxZDYhkeYVanRWWYkqB3KhpFCVx8RSSQCghTPAHHfjhtjbkDH8lWhbUy2z+F04+rAWhTJT1ChuEuRQt7PKkK+hPSIH09cP0UE15//CCCu3wqfNvG2uZibdc/Hm+t41bvehK98+mGsLJ9ltMop95KbiPNVwQ7tYKw0gW677ZK0HXv3Y2KcuTcZEa0yVy49c8S1ToWlwNDvud/ym7viBjx1XEXm1VDVrBve5JGqF7/wOQNpOcSwHcbEwlau9x4k6aQJUnbt3+xe0mVMYpsh/s60iCGpumQR7SC3Jj3baikTFKLQFXVN0NTGmnYtTVbOg5g3kqCDKHTIesRrYVcU7V6oJG9SrkShGzDuMAXQlHATHcqwLSFV6rA0y51Lqk4eZ6TqKUku2VbqkKqJ1hgO9x+NhU2NNdDqdCKWF9EVSMU38+AdL69s4HFGsP7gz7+O//LhL+LFQ+ewttHG1OQos37U3Tf+6tjAVO885rvHsMBI1lT/HBr9NdSZxcSx/jhbIFA27AeWIpCYOxB+GHe5OeupnM/XOGRtqn8W06tHMb12Ar2Kv7ibSK2QW4UCN51IgjirIoBE4Bz5Pim7e1WNdZx9n9j99NZdcrVY2xWUg/fApI89QyBNMWIV5isgUxBao3//sivWF44TNb6GjF0rTzOXYr2G6tkzeNVDb8Qn//wTaG6uuovXHTuUE63rfPORxaoxS+LSmVPYtucKTM3Oo1JlNsd+CyMz82gfPxBNlunvnD+DuatuxfHVM1htrkIPknDGSNUbHnTXdR2IkapkmLRwfQSfzCILsYpLm8dVh4d5SOsbkhda6CGPUUhJR3eG4WdqLl2oBvGiITanPPpLfnw5zyHpIKn5kPNTFKK69G4kmiCVds6vEYvrYtqi1q0i0kmkLD+hytr1ZYH7ORN/nYx/xSqtGhlHi64FupxB+hU3X43/+OPvxQd+7yP47GPP4tCJM5E4qkHe+cQNpYwYMQvR8RMt/O6HP4sP/dlXUa/Xceet+3HzDTtxz8v34YbrtuOGaxZcN+F4f8n9ExiP+3+b1NEujbrnzjEnRpSEoiO0yehX1/1zjtHuo7/MrGAdbw1Qe2QMrdpEQND4KisqLEb3VlSJhEoHEvzbrtRxfnQH5jaOufF2rz/tEq1jYzf4MiHBof4naYhI0qioUXhq4mJ3hEQ2ulM7QkIorM2KhAd6fcK5Y4d7PPP0M/jA7/8y3vfOH2bPewV1MhPILDGiO16acndlf/prX8WOfVdhZmIHU9ICmZhEd2EXmmeOh8p9t+n6i0/h9j134PjScSQj7GNkN3twjynxTHTbwoZqRNPLl26S1mS9ecJM5PSxOIak6pIGf/iDHGizVbZkPeqr6ZrzpJ1EXtKIDdXoTEtTjkml3zQ9WcPiSLPmmMQPh80k5CFUWfUmo9fvh9+Jy6mL4+T5VezbMY/f+el/iKNnlvB3X/gK/u2H/hqH2XGQCkHkY8Qc1LfUdJily/lbXV3Fxz91Dp/+wgg++IdjaDQaLtG6/97rXQvWDddsw84dk9i5bRzj4zWMj41g+wLBSL8Fkes4pOj8UstN+PxSG0srHTz7/Fk8/sQBNq+Zwa7tO/GDb55DfaTkys8tH8TJhZvRL5V9IsW5J4HISVw64oYr2ongjgvJF7Bem2EWqg6mm962AlctP4yN6iyWRrZ5+kXiRqLDZUCYeGEF66n8fPl5ogJ5CtL35cMwKcf8pgK9XvrOGquRZhO7Dx7CD/3sP8H/+/O/gS6zDlbJmLvRKHPm4Xz/DObL23H22BEcffZJXHXLyzAzuQtrzZMYu+5laAmkyiN8rO6dPICFPddi++QOnFo5heTar+5fnY9A04RwHaJTB8O4MTHvgr6HNNOb1sMOJr7U7gAQFGUo0GNIqi5pDJJMybCthNnmN1R5NVkiHWIjUv3mHWRFPaFutSuTSHGKRp6uT60jvCOSJIb8hCqN2MbzZRLftYYY3ryKfNbBLDrwLFXcOtJuh7tZ71mYxve+6W685/7b8Nlvvoj/+Xdfd//ASQCliL6tF8+ns2dVs7mJzc3NIPzZZ5/F2NgYKpWKS7RGR0fdT+CMjIy4pKsUfGuQ2aK6XWYB62Ftbc0lamfPnnXz2Gq1XF3TzM31Iz/yI/jfX93Au+8bd2+t3GthYfF5nJq7HuI2DJHBOPS9ycUCcYgKDYHhteX6NnfR+nh70Q27YfHTeGT+bWiVx4LCFheQhx9I1tAAggg5JoKbkkoPuMSJFUIlhEQtKGG4vzfX/n3ulgtvffBVOPDMi/jEH/yVu76q5Cy0Z/KrvRWMk0n3UzaPf/Hz2Hv9TYygTmC1fwpkkrkDZ7eje/4UxL6AdhlxPvIsdk7s8klVGuIkxq2/fRoJt0FyTyP2R/okSKoeXaqhsnh8RdrKVKGITwziUW2u8iP+nDiGpOqigX1jGRx0eUlj+arqWtQcpYiyUXUNYWdFtfLysRxeUoR51yqNMey68x50NtaxfOgANs6dFuKm5ZXn0PT+1V1fvDMyRzGdUF4N8ftJk4nIxyxVGjmon3IFI9LGmQRLaxtKHa+55Sr3719+1xtcgvU/GLn6HLMUxbxRcCwQNNCngnN9Y8NLZ2VlBXJdlNdtReNG01taWsJHPvIRTP/9v4/HDnVx2/6KK1Rrr2Jq7TiWx3cFqgPLVKRUBMUQtmMI4iCQD2I45TS6E7V+E9Ve010Qf+u5v8U3596IpvONQNetxR1siFidXE0RN54QRqLHkWfjxwsX9QOg8ZcIuKzoJnSOa9deg/WvPoy//4/ejW9+6VGcOXgaDTIHvv5rsX8eO0u7sb6yjKcf/gpuvffVGK3OYH3jMHMj7vdJFcL8OVk5eRBX3HQvnjjxTXQYyTTty6hwP8n1N42ciHL2MtRYv6xHr3PwSEuziLIKNYl3W8IQFxDRmdPWppkWRhJkqHROEnQlDHbIAv0sRC+vui8aCaNawgRJXtap+6WYuuF23PKT/wbb3vZd2PMdP4ibf/IXsOdd70F1ckaSlfMa1UVisqpjog2L166kZxufS3qlTaBWkf6cObJZqcTh2jauF9ZPGZTE2iTYQYIjZhuKWEOc32WZVJXKkdO922bwnte/HB/7xR/CE7/9U/itf/IdLtkKdEDeoNJLM2J1CfIdbkEglreOUPlRY/f85JNP4otf+AK+9DzFyaVwWwaHVNU7qwEJCN/64+lIisVnQniuhHd3hcXmzsL10+NXolsaccNqvXXccu7j3huH8KcyRNz3ihMh/5xGP8AchEkuw0jJBIvhgYi7zw8TybHP5vy0nMdYxugNNzDrZB/v+6WfQI+0mBuwFahr9TfR7Ht7cT39ta+4FqR6dZpZCdmzmt4OUqlGjXvOX6+Lytoy9kxdATNE67y37owq62ZxkNp+LAmaO1V1fIq09quLZZYiUcQ1uRPTSWwcw7f/thxbTaTkQTZKJuIyqvM0nWnH6VqAJAuEqVXMNCX5WvQNRD3ZgeJXk95IDeXXvhMri0s48t9+FSc/93Esnj6N7v4bUb7iKnROHAGaG4gPCYilQ5X5iMqo46ruQS7P9PuJkTqil1KlmV7LSWoY1cZJrwd7XnM/1k+dwuKzzwTXTAieu6UC+1uni1impyKLzx1X2z/4lgcwPlrzovR7QKel1DY1NorbrtyJ9zxwJ370na/GXdfvRZ259JY3NrG83vTyI7mx3MG/pJ/zxt50c+MgGl8I5/JPP/007rjjTrTIDK7ZAffzOE7E0eYSNkZnQUuVkEwFJMk9DXSKfJrXjejTEImYc+B9ymaUEbcSeu6biLPtEzjf2M+oS9mXJ5A3/SShvzQaprqmKAu51cpvAXKhKIUh7tuAzh5WMyWKp587ghOHDzJaPR5o6rL/xksTrA500ZiYxPTCNvd4rbkCyuoFVs9DXOjvwCH2nbFZHF87Bltc+7rXo725gUNf/mJwL+l9mi40rb3oXWppPYReH0mQtB8Hw+dqei/qVPVxCEz6FZ3OoaXqgkH/wAeTDlLS0w3uSJEXz5PSNdNYtKQp9IQuqdEnuEjntqPV7WDl03+J7soi+1vC+sOfwcqf/i42N9dRvet+kMYY7HNne+86t6Y85CSlbkOys0DfkSe3EpN8qS1VZp2yB+dzJUE8YfBeWt2IaUzD1Fgd73jljfjtH/sOZsH6564V68P/4ntdsvXqm6/E9PhoYJlx3hTU6Q7zQQULGiLbC3jXqCQP/PZv/zbOrbTxuedqweDvkJ2FpReYtaYLXof5vp6qth7sHwUuE7X3eeveQ/LSLVVxfmwf01l2r411lrB/+Ws+SaOBi07MP1WQJtHNFwnjb8gJ7kOenZLgBhQKKryrSFreb33/Pvf3B3/yB5i1rYcu2eC37u60zq1VLz7xuBt/srHN5dXdmR2htU/AyOo5zJTHUSlVYVZXQpk+v7cIaGo8GMaIxyfhoXF8YnSdGsiY6DC/FyilqXasS+rvk9IIdQ3XVG0pVA9sK6xVOhRJTvi9ZddJLa4OFvJ96O5Nde4tUHcHhrVF5i9Yj4TTpXPofeZjoHe/FqUbb0fva59X6EpKR1d/1HlRx0/qAKmkWeo0iN0ztuv80nIkXzWZqZLAfSJeFcPTdJVJDaq9qI6dXcINV2z39EnuP1M4bkLn7x133xRce+zACWbB2sTj7PfQmSUcPr2IpXXPquVYt5xzfl+cgE0zsuZYxJz73Lvg6bx9/078p7/8PA6eWoyQqsXF8/hP/+k/4Wd+5mfw9EmCG3Z61rJqb5O5Ak9gaeIKVz9/1BHHt7+g3UnH2buJCtYkIrxRF4DwEiZoVeo4M34VFtYOuJuDbmseAJaB5ydfFSv+SHqidYmHSuurvPQRWutIsPFCoCeytkpcFE+cz/R4cYLnyyyJtT274ZTEm9/zED7xP/+aDZYN3/UIrPSX3QXrZ44dwanDh7Cw5wrUqg1sltZBxqZRXl+CuMsTYYyrxK5tr2/HsY0jsBm8nTz1BVHveSTF14eFcaGRScqTLeFIg01fEk3bvAdKynPavdjdr7fSkA5J1dbiciFQKpgNUCaxo5CvFn8f6jSTromdkjyL8s+7bY9URbT71gNmueo//ShKe/aBLDg7Mp8WwkuSNLRpqa2Q0XkcjREr8RnJOmlEhgTx9ferh4nbz5Ozu24f7rxZh2Atk72ucWe/IslS4gx0p88tecYRveJMcFyFDpw1WHlx61W78Laf+S+QNyZ96qmn8Kd/+qeofc/3YKJRwu5pz/Iy0TyNXqWGNWZ5oQIt4Au1qXA1qEVUWPPlXwyXn/txiHfeKtfcxeuzm54bbNvmAbSZBefI2K0IGIu/bosTpICaRBayi3U0JFYRAkai+ZPdq6Jly70r6W3BEUaqWkeP4f433IO/+R8fYba8tkew4Vmr+uw/Z4PQYy8+h7ldezAzuRNnF08wM9wsRjeW/SzRoEzqjFTNNmYZqToKM/gtUGFpTSdHWQmQ1B9YqVEJx/uUuDxB8YRNnb4ZbMexqNzQ/XdZIesAVVTahjMvo9jyQJ7lHrLGg5C2SqfqWIq5yjrVdTYNr1ahyhM9fhR9Rq7I3JyRPj3R0z9z/VxV/FVJ8MFQ1J8eT0zbDMlyUXpoFkcFZ9PNPlURUDNdzkJ1Nz+CS80ZlI+eOR8MeDSjpWrQeA1zKf7yD7wdqkXtf/zHf4RPf/rTeO7sDJod//t8TG5m/ShqnTWBhhP3O3j82P3l7EMkIgQI15KH8kRYX+T8tz4yjcXGbnDJPWuPuX/eKY+H8FewLgWL4BESIyLU1MjaLHF9GY8P/wPMXL9veSsRCHq962XWdh1r1Q1X78Htr34F2mQNwcSIuWbXet43/Q4+/QRamxto1CbdJJuNKUTgJzbaXGHWrboUkD458Ih7VsIR15+HutjHlSedun4+az7Sy08nQ1Pjib8m8DQOSdVlBdmik5dU2MIsPfsc8aaY3jioFMNEczRnaaTJsFvZ3ES9N4ra1C51eK+HCnMfjdbmUB6fjqWnt6iIfzQWT30PdmQ7nKdRE3GlzvRSSiaQ6qdtkoH4/QbEB9lQJ94iZdn9d/Dk2cBK5e4jRC7O7vRH3nmfu0g+YvHwrUH/9b/+V5xi5PCbZ3ajS8sBFZpfeQGVXhvBp2QCOuW3LHHtEkLSJEqqqh5fQL5encZKbYGrYqTqcffPKVtvDVRIiPiaJ07egnzQKNEL0yAC2fMtUaK7TyRulMY+ysyvO3BIlbNo/YEHX42e8xYgN02yOBvUW2fVabWwyKzNzssLM+Pb0SEV9EYaCG7DzzPpdVFjshPlCUilgiTo3l41n8Latf9Yf0uicWhK29VfS+vf0mDUASmgGw1IxnwkY0iqLinoiJJ8XWjNA4dsyciG9FlDfLAW71A+NpEZdMMuLS5hcvJqjExsV4bT1RWMV7ej1phPV5baWcVnhKrOTCcvyvG4NLHT1SMvoTLXYwjaD0iEnIYpnE/VyG/oHTl1LkLYLlZrlYNf/sF3YN+2megbdQzr6+v4qZ/651hc7eL5xb2+ZYjVXVZmCyvPsQHC+1BwWDMEKxERtyeAL0F9dx8iNEzVTazUt7l/3nVmsVp9DLtXHgvddb5c0LuRqEswCFXoJmKmeH6haAkk+hmYCAFjKDFrVXV6Gnfddwca0+PMBdh0hVxXZt9zATo4xKxVTrwJ5vrr9pkUI1WRBH02WW+vM5I+ijiS6qS4+Scs4mbtm83aR/GjS1bSRHKGFwGhzmCISwwiHZAtFvLAka0yUcUxlf7Ca1QawPU6VDpV4aqr4lJjM0Kkzg9BkhUoHdQibPPU8xgtTWHHdQ+iVKnF5LsbyxgbWcCYsH+NfUdl26HoyJRXMjRVjT69dGIs/urykBYf1vE94tNH8qw9WVfF36vKDfV/j5xeBN8PylvLc/GSKuetQ2fPLOcXgQvL+z116pS7aH2zP4njG3u8COwenb2kFpafA4HozAPE/aKoVKRhOIlei1UOT8YhVasOsfLD96w+yv4eh+jCC7ZXoGJMfhRazTzLkGKDUGFdFoLF9P6yYo0FS9wAtTo/hzpL5+pbrkMHm8H9OKHcBXjq0AF37V5tZMwN26w2IrfKieBIt8lcgPG+IAk0+ExNFmjaBEziySxVjJ91i4XiCY5q/CkWJmNpOIEYkqqLGkT6g+IcSB+w7FOVyZOsmSrk5TCVxciMUKnux+beSOxMTS2Syy1OKIl0LmuMXukz98nasccxNX4Vdl39tlg6V732jRirLLBOdhLSMKHMrSlo7Iw/QZX2aBmT1A4kiZhkjcfDo7k105se7gx2fZouF+qKP4G6v0+RaMU4eOI0PNeUd70/0I49P5w3Aj/80++FWA78fr7xjW/g137t17DU24VzXYfkU1fMeSNwZv1wuIaKcGsOtwZxquVTcsXarWjPJVpPvBa1UmPEanQb+Kr/3SuPularqIvRi0OEherclSi+PCC6/ggEV6Tw3PiGou4bjERcjI/QAofQ3Tiy4FmS77r7NnRJ05Wkvv7ABdhu4ezxI+4ngxxitcaIk0fMxNwDDUaqRtGAGuq2532IO639ZIVOpxmNo0jrw/Vh2YiiUHcB6Tg9TfPr2WWHpGqIGGQ7mHhNRDhMR8mGSpdNur4DAaF1Km/zi9vwwk+/yN22mvzpEJWPN7pzx76MxXNPY3zXbdh+4zsDi5UjPzq7E50yxTVvfwtu+dbvhjo9u45C38FRTRwaOyKq6JGhB6mpqEOTwoiik0yLZxIOpH/mI8yDjvyV/MXqovvP+bbeifMrwTobepGuqRLhLFz/v7/rDe4xkdx3H/rQh/A7v/M7WO7vxzrd4ZGLEkGjfR6Tmyc8BZHZVHTBt+hi4z2CTI4jT0F4Liuj25nFKnST71p+1HUFEtUidZ9NBSTIXxclb3bKWREPI5KMvEYuoHz8TUK/XEq1mrsh6M0vu8GV79Hwu4+dfnh87sQxNpHqYWx0Cm1GhNqkElQlnkKN9lDr2dUTTtpFTfF+OR85isOgXYHkpnn2uYtPGfPmIWvaOgxJ1UWH9MFrkEiyaQDqIbnI5X5xcpK2MDJNV3hPUaIUp2vJhCCNFFAtETv29J/h5OmHQbddgZmXvxv13begtuM6nDjaxGL/HCpTHdz8ru/CO37lP+PKVz+A4iB3vTJlhBSOyH3E9ehBDcrHHvnaAE+xL+1TlZyGOs2y//0/V0IgVk8cPC6sq7o0dqhxvkv4I++4D6L1xrGGOPfl7F/10Y9+FKulG5hVZgLcwDfZPIXJlvddO49sCESERAe3wFlIifTY/brn/oTbMHCL02pjO1bGdgYWq13Lj+CKxa9GWx8VWqOwFirYeoHyXInJap69YNnyjoW4kuvQWVe1/+q9GJ+ZYOXSCu7fWVPV9onV+ZMn3LpWr4271tF17vL3b9n7paj2O6iiCj3ivay8Oal5a9L3XUmTQaiuK1SJE+piYD+JihIre3JJjUcws3F5SKouGFSd+dYQKXlYlckHhBypIOeU5sx3ND/xOZgNSEIHIv6KZE1FM+yeRbRrinWJ3RaWnvgrLD7zN1ily+hddRPotS/D2kgX55//FD7+s+/Dl//Lr7sf/n3FD/4o3v7//S0s3HAzbEGV+SeKY9VTFvb8ialJfxYkVSq541bHzd9VOxr67geVoUk7Sgd0qKIRdzMxHDh2KnT/XQKWKo5f/sG347Yro2+mclLxgQ98AE8+/QLWqneBlsYCQ+Vk8yTGuouQP6YcMV5BaIOqLi0gLySSphcGrNXmsTh2hUfM2P/blp/A/jOfRZl2IsSH70fl6RDWXBFuWCVxYkU996GYteCPx+d6uWXL11Wu19FvNtEYazg0KlhL5vDGNrzPE60unmN1rYfJsRm3zrmWqiBPntXP+a/S62CEmq+r8rYDSW4Lg7NHkdQgkiVu5jB1eHoJ5RujTMBTGJKqLYXUgygHucEiakSODinJw14oHyco+fOjTs++XCjMOqA8dhMiXSUGsZz0OidfQPsr/xsjB77q/nUf/hg6x552ww5+7u/wd7/8s3jio3+I0Zk53P/PfpYRrB/B2NwCioGOLvOZLzGUT9Otup61tLOmG9WR7PpTtYQ4yvDdtsHCae/48Klz8CwJDnnDJeEC5PjwT38v9m7ztvMQ3WLLy8v4ru/6Thw7uYjW2GvZzY+Dm5NmNg+j3ln2BKOsBYnPOWJVilqegl+f12zUZ7A4sT8oy7m153Hd8Y+h1l0LXK1EWGweZoUGBMmly5RGQlXTDP/mwx++xip4+cBLp1T39pfatmOBuf86AQlzZDu+O7DL3MEbqyvuuqpqtcaoVilSPrwejtCuu2loMohQdDTm/kNEM7RhUX0FxZWadXZrVdZ4ak1bN4qqwe9jSKq2FMUSKZpyjSr+dHYKlR7xLykd01mUmb0jze5jNpDq88LD03JDFVdoEEJickQZk68P49edv7WjB7DO/vrtVqRs1s+expMf/SP81b/4URz4/N9h7z2vwYO/9Gu47bvei4YVuUrrIPlvtC5mszimdYxJzyNPp5qcVyo8Y3ehej8tlWR9JebaI7QMcVdy59ghVcGODaD+B4IvDTgL1z/2Cz+EyQYnjN51574cYvXQQ+/C0RNL6E+/0dlbgF33houZ1hHmwnJ2YA9rjOt2i7n7ECFTgR1LVyU4SWLizZEpnJu6Gj1Sda83WucCYuWmG7zlJ2QcCEhXdJ1VdN2UaOGK7NslLYx34/vEqVTxXLvbts+7T5lyRsV+urQbxFk6ddIncyWsy/XFz1/ZyRstmdd7/2WI/EizB5OUuApilQqT/hoZPAX5x0+1vjS96RO0IanKDHlw2lqIg7FMmsTwPLk0l1cN1GIeojNFSHm00y+mI16z0WMTTx1H7IhE4ik/Fx2SwtfPncHX/ttv4a//7/dh7cxpXPXAg3j1T/wr7H3VazT5silLqrkil62KgtuCZpQw6VBN7pgPaBTRUSnbfY2Q8K0tPhh/88ARjzjztwAvsS7VJVbOVguNuhTCCOPhQ3jrW9/qEqvS3FuYK7DqEhL348ubLzBi5bwJx8uWRIvVr+Dh23REbyuJNBoaWIq65VGcn74GvdKIG1TtrOLaY3/lEysCvphL3OoiNj0IdPO9r2i8RVPhgzy8rpDwm5Hu3fmkytkItE+63noxX0GbtgJ9m2urLokfq08wC5awls9ngE4eaqz8nPjpNdCTCN/+i15XlCSS+8Vo/xyPm54XDGSClJZmOszSTZuIhf/mwZBU5cLgaIoKaQM1ECVTNrRDJmeiLnNEYxKEH1/ND10nIQ7+JCEOEY5MStIUVHFkAn3HyCmoQ67+z7/6cXzt9/6zu97qjvf+EN74i7+CK+55DfLlXzUvpLEr0SzKNSr8OIhKm67zjsrYXBdBE+Vki5u3UF3Un63sKsKr8MGaquNnsLrRClw0vUuwS3XWVjlrrOIgOHToEL79278dy2vMYTX9gH/VIVZ9LDQPoNzvQPUJHL4Fg2u1kTslgei49Ue0ElFECHCXETmPWHkWqxFGrK4/9GeYWj8YHcap6PojkXzw66BR2YBoEZ6pwFQXbLugrMVMrE86gXgXoaWqub7mkqpqtc5IlaDSK40IOTK1DKvfXiXKMyqklgwdsUrKU9Y+J9+4Z69Xd920TLL0WyFeAqRqUA9UHpgJkgf3/IQq2nDUINDnULyeJmMOmbiInQbV5pnGdGQtM5JwRXWn1KDz0OuO5s0jFvafbYiGiGVEFOFHvvRZfPxnfgJP/cWfolKv447v/Qd4GfsbnZ23Sg+RvEcJcPRJUfVIIumPDGoZoCZjJkgiVOG/wbU+3/yTh6Wn45VCVK5Eo98AdOAsTH768KnAYNO7hNx/It7z+pe7Wy3EPtzLzh955BE88MADWN6oozR5b1CFSszt5RCrCiNWCA03ELdK0NpjqKJGUe8fIqTtEJteuYZzczegVZtydZf7LVx57OPYfvZrsU/MRE5kMiJsqyDuaSWGuz/CWip5x3h+T/zzPa7Lkx30/frV7XTcujYywkhVn/pzE7/AfKuaZ9EU+6IkEOi3BFH3dHKYKYjiSC1B4qdCFPsewT6v2VIyHVOyw9H+EiBV+ShDHOKDSRtM7R9iEgmSKZwqRSr8iamL1wFbMiUP9bp7i8+mqEJDnFDZgCp+o3dDtTHTnonquRKlJvVxMnSlJT6vJDzzVx/Bp3/pZ3Hoi5/F7rvuxet/9t/htr/3AxpylZaDkBKFR/y6SLpE+XhNpAZpqOtPFiTHpZp22Q/WpOTrVB33H1Hsh/TYC4cCK0SfDrbTHiScrRb+5Xe/MXKNE49HH33UI1ateZCJe+GxBcIoZBvz7RdRcd7O43GkdhYUPaWRCuOuV+LkSyBU4qJs6r/55qxVW5q+GmvjOwOytP3sw9h58gsSKeM6SZB/wvVTxVROfEuQCt8B9AlQUAYCAqee86x9Mxz/XE1rfS0gQcH+Zf49RPRELFjJcAhb+j5rKtiPPZl6syBi2niYnr5dPPm5mCC5p6VGTyQ5/mVKqvJ2bEmDr13VswF/3EmDbdKQpSNkdrnVkSbTMg3jxueQRLIS6X4dJNFA8Vc9kCbrNpFT6TMlXWodac8htI6o8+pc3Tx/Fo/+z9/FJ3/+X+Dcc08zcvUq3P2jP4FrH3wnkmeu6vS8Z6JK06R2ybHSSbbalqSKaweaoMcdlPomJSLWsrieKh2LDW7OOPnkoePwx0135/a8W4xcSDjEKtgclF/0LTsOsfq2b/tWkPrVjFi9ClyojI5PrNrKR+7qEQddKiw0D8hOaLUJLEncnEVDHevju7AycUVA0ObPP4brn/ufzC3oLWDnLsWgRgvrvUTLVEnhDuS8L6CCPG9UXVuD/k0IdixVfT9O9E3RUEa4U4QvsSTUmYCYqUBU4onhoRTRhhi3R6LXbixcEKI9VVJ/n9QX8HLJntfLlFTZ0YgQaaxYN7DmQ9jE4rSBH8spU42sSm865HuTw1THVLqmjh/SqzQCJf6q0hPTSCJCaWkl6VeBao+pUZz0dKjiXPyLhnnEdOP8OXzpN/49Hv3Qf0Ov38dVb3ob7v9X/4aRrHuUNNS4DCKPMalcvb90/fH0shEqYhiueCqUwsTRknYvhJTdrRWihguCJw4cC1w6zm+HXpouQA6HWL3ngTsjJcatLJ/61KfxAz/wAyC1q1FyLFb+9Qq62OYSq6Yvj5AUuaABeSLiJTEVzkwpt1hxokMDWed4c2wbzi3cxNyCjjuWYKS9gisPfhTjGyeEt/0Qdd1R4T5Ed5qwriqo4SSsS+J3DqPw63HATahwGxS12mhwTP10g3uN1UeCpN66r3X/ifFtQTKEZJc0RdaRW4ybnqvkcT5PHhwMF6oH0A3ARHOtWNg8SPPKk4Q0wjHY1NXEI6ms056BHXGJdmSm5IoI8UpQ51lF6KgkS2I50UHubmUNx776RXz6A/8aT330j9y1HDe/+3tx7/t/mrkE5wTdRHk3+aEqP5l4cTkSiVEkqDL9MA/OwmFz6Mmnu3EjHfXHft/ixn5fPH4yHKidxeqXOKly8Nv/9DtcYhWFd88f/OAHmcXq27C0MYvS2Kv8N/wc608PC71DqKKJ0DQj2UEFxk+lMJGbcJdZuNGqYH9wyrgyiqW569Blv05Qtb2K/Qc+ioVTX43uko5QeZAOCT8MHVlXxdMRFqlHjgVdkulJKiPqWkadt/Za/jYUERIlN2r/Ip8wySo5MVP3j2pE9ZAUKV1cQ4IReYAkRbuZqkHGMIuXlnt9/CGpCjCI7t4uVXnw5L86+pA9xzqiooLKZqbTlyUP4rE/Uw2uFf1MVAO9mKZOXkWcVKRQFU9XZiFMn3tSvEOf/Tt85bd+Fcce/hLGtu/Cq//5z+KWd/891GdmYY/k1OMuC5OySEorLR9Ek480eM+2T6m/K3WSFE8vQRvTUSeTftZ8usp+l1bX8MyRU4GnqHsJr6sSESdW4X195CMfcddYOcSKNO7xg73tFua7B1Hvr7qFymtKcMzXG4FGzkOSitCqFIzu/OmEw7wTt1+u4fzCjVif3A1Ohrad/ir2vfgR3x3I48NbZyWkI6+TihAoTrTC7dsjsnx9HnftiTvEu9n3X4wI9szieeDlF5i4VFBMgCiV9lkz64PTex6TtmVRl6lJHGJ5PQ+y6qS5ZIakasCgCdfTmpU45Mt/2WFKVlR0z2awjGvR50cnWXRD46Unz4/TSBJiYVSpm2jS4ufqHKnO1fSSxOqASAY2F8/jm//rf+Bzv/xzOP61L2H7nXfhvn/+M7jyDW+O5UpzWwagILHcEUmB+YCRXEOSaw/xc5MsQRT7/Ohk00VKms+LfPPA0YAg9PqXT7fqECvnI8wieEk99tijIbGaeCsL8LY9KNEe5rpHMN4/H3r0uNUJ8nonueT5IvAwrYhRiIaL2fkzXZ/YidXpqxjJGnGFx9aOYd8Lf4bpxWfUrTuqEBDeBhS/7yhaqUQvoBtEQsIkVy3+YoRIAAlRTRzVkPuAYrak0aVkNjXRo8g+WmcZM0+DJpzZQFUzoxhaqi4o5KorD0cqG4iKxmSHbDmRc6c6l0mHrM88ZV1K6pAiG6kM00aSblkK56U28VXyyfFEK0rak+NwyNUTf/QhPPb7/xUb585h/+vfjFf9s3+J7Xe8QpLMUtbcnZFEkMR6RoVQFXHN9rzNybo/APfj3a1YtqaoYVJ5/ctPvxAMrk5Svf4g6/HW4sM//V6845U3Bed9warkLF6/8847cfDwMrNYvYEV5ZhvNKKY7J7AZO+0115oSCpE9ymH+LZcdBG741b05AknaFRuRwTNxhyWFm5g7sCGK1NprWDX4U9g+7HPodRrClsvhG49TppA+U7ukjsyspg9TC1Y6+USKxJdY0f5PYakL1y+5fUcVNCnBokc6bdU0McTs0MT5VWjkE6bCtmJS3G6irZ+EUX/bo4hqRoA5OFEpDM0QT6JXOXPkYrahfQgmrKJPnuomy01krTVrJagyN7QQk3hktN0K4n6XPylmjBZVxTUQObMU0/gC//+A3jqj//AXVd0w7d+J+75iZ/G9JVXQR9df09Um8ek6UFSGSXVI3VHT5X5SYa3psrGeqaXLKEcfAdQxBe/+TzCV+mdXbYv/XVVHFNjdfc7ge95vecKjHzeheHgwYOuxergEUasxt8YECunIMY7pzHB/oKnRaWVOkK3FOwyHlxzSA8N11fJkxLOTvy8OO7Axe03Y2Nyl6+aYubMo7jy6T90SVaELPFfisCNJ4ZF1mNJ8KMhdOfFbW3cxcmzym+SfyiaJo4EYTTniuv6o6oJiQ2ItYxZb5k+ATWPQzLEUccwG6H0fS5N7I+RGHYJkKq8g+DWpyM/Dpm+EClMRbrMZuLyH2B+H8RCVhU3GWaEkGaOaYviXnNXUWAbJJFYM0IVvSrWJDVOfONhPPq7/xkH/u7/YGRyCrd+/w/hund9B2rT00ZphdrFf+2QpXPVhdhSY5qypspcEXETrmEiQiqc44MnT2F1s+WPfZeXC5Djt/9JuMZKXDzuwCFWr3/965nF6gxzBTKLVSkkVhPdU5hpH0ap3wuViZYcUMU+UjRYN+72VMF3BYV+Swjn5Mo5dkjV4s7b0S957sBqewVXf/ODmD/5FY/QUXHjzzBN0TJF5E1FSZiv4If61ioJtOeT+EhnzvWRiJooon1BEN2q/tqTgCSZ9MmjMlrkgj1JsoWaDBrnXZNDs94urv8ia/k62rEV6RZvE9JZoFQp26WeNBjZVwL7dM0pX7qUzfVssl4jsx2KdWmRQmoKn3uHZ+KvKt14fBtsLi3i0N/9Lb7yq/8fnGQka+HWO/CKf/rPcNWb3yqQK6rJJ8+D7XYIxEjKVJ84OaGJdUcKExYoA6az0LhW3rwqtBFZ6OwcO9awpw6fCC1VvSIHjYsH7uJ1ZrHirqzQwuMRK8cV+Mhjz6M09TZWUNu9QGeLgd4y5lrPodxvB3GDJyl0lMEmoAG/Ea0+JCRRNIwXfgqHMx1m3akwq9Wu27E5tTuo1rPHvowrH/8gxpZejJAnri8AjboouUUrDEfwxiNRvZRAPOuok6+Ofx6FcD9ahK2OUt0IYV7HsvZZ+fpxk1A1iiBiZr0PyRCSLHkRTqcuRGc0GOKWRKaya0xviKGsGCfJmmWau+zlFO8WdFaZwTx/85ynlW8xdSU6D1b9ymWRFKZPQUaTkavnPvqneOR3fhObi+ew465X4ebv/QEs3PYyZRwS+zc9jXgZiRuMpuXfxL5p2gb8K7FZvj3BpkK0mv8GoPwG2d8+/ETgAnTWVF1O66pEOBYrvvN6+Faad69LS0u484478Gu//luMWL0JZPTGoOwcQjXbehEj1PsQM/HXUMEP94hruJ7K+/VXQYmkCXzfa2ETUZ4H9xmRwDq0MbnbJVc9fxF7pbWMXc/9BbYf+DhG2qt+2v6CdL6Qnn94Wfn2HwnItXcqP2PvTT3qx+tRBHlFoE4k+cmTg8CWR6kF0SCpek0xmJGRo8j2EdVlnm/9c8jq3bhIbdSDfZRx2FU0FcRZtExfaEo8PbLkS07dBGkN3AZqawcxlLWDaX6LHtyy6lPvQ2P+nIkUl2h0JOty4q+dOoGv/8b/D8/97z91Z9VXve0hvOyHfwzzt96ufSpZnxYVBsM4dOQxKxTUTxjEqEbGXCtBlVmqnLVVMll7/OBhz1BCvYGzcxm6ADn4zuvhQm8PLsdg/7z//e/Hz//8z4OMvQKkcbtfKB6xmtt4DmOds5484H+8OLQyORC3IxDLOfQ6etap4LlIlqTgQcCzWi3tZlar6T1B2OSZJ7H7qT/B9MlvBCSOZyhSG6W3/7z8QHj7z1/kHkm+DwTrwAQ+GFyBgozpQPwtGnThRbdWL01ZU7I2qooGsb8qZlKbByTlep7yisa9yFq9WPx5B1wRJOHYjrVT6TitwlBFfJN4+nyqYhdFikzKPJuFxIZqxfXJVBUpcUN5Pqc1Q9qsL+3jydlSKCKGuM2BzkEp1xLn/PTjj+Abv/VrOPq5T4FUa7jyre/Edd/2bnftFdXoSC/NsMzUz91eY1R3Upg+RZoaX9QjDSw0elAlE7HB/skDR7HabLkyTkjnMnUBcgSftCHi+p8w3CFV3/qt34qVzj6Uph9go001YBjjreMYa5/0BLllSer6KaTF6YrOM7D6RB49lY69c8cVuLTndnQaM25Ipclckgc/hb2P/C4mzjwR3kBkzVU0Tw5KIAKRIojZkKi3T1WfhpvOBm5Sbk2TrV8JcLT0qa4nM7dIUaN4ak3p7U53KT22DtQ0LU2YVJ0ywSxuNN2XwNt/YlWUq6V5h67TIKZCFPK6cz10mqiUC1OCUSRs0gnzSIwagopEppMc9TlHUseliqvSz8s922CsQnGNnCiv6/R7d0NiCp0rxz73GTzxwd/BGUayJq+6Brf80I9g/1vezsjVtFJP+n3yMlOVry53ek1mRE78FRUkzfTNQKTqMlXbHXlrzNG/6GwCeviUzxsomr3Lv3t1iJWzzmqq4b0RKRtgPvrRj7rrrA6d6KM89y3MVDUWrFcab53C7PozzHrVcmXFN+MC6xGF/8kbv+j5+qKATBFAXHQeqSw02mU6NiRmtVpbuB7r81ehV/FdgptLWHj2r0Mx/iu8JRjeFw3yqaxqPItC/vUwJFb+vepVDbb/F6YO6cIkFsk/zTZ22BMrOV0T6bS+yQ6XSauXBzNiGJ48CKrahI5QyXF05EsNeYAXW6XqXi4UknqJaJnSaG+mkNWRKJv7E6etJBZGtYQpqUxV95hGCk3yXcwCd5Xe+Hk8LwpDQCDOX3JvLy/j4Mf+Ao//zn/C6pFDmL3pVlz7nd+Dna+6T5taUr5oJDX5GZl1ZGEsXRmblH1SXVTp02gI1BDUK95ngGQX4BeffDYY77u9y2u/Kh2cNwL/6hf/EfZumw4IRchBaPBm4Kc++zDK8w+hNHpNUKCV3iamN15ArbPscyXKo3l6go40tDjJi8rlvaS4PPEzEpAxh4P5C8tbYwtY2vdKNCd3g3YpeqWRyBo5Ku5ZJa794ncW6eCjz5j6Fioq5YtAtmqZ1Q1589riJmVJiLcrmiovHRLxArUkVlTWaggSOzMnhWmjuxkuA1KlGlTEWbI48CbF02uWm4H8p0oh/wA6mCG4GOjLPBy++ExDVXpF50VFIlTEzYQi68PjXyozvReSQLTTCJsuN2LN00vZgGtrryzjuf/1IRz8679011vtuPte3PSD/wgzN92iTDEZYkuRU+O/sV44JmEGjSS1z7UO/NX+8dp2lEveB33FXbidTUADq4JjreoW18X2G7PoLFyD7uxe9GvjuJhw25U78bFf+CGXWDnwuI9vSUK4l9XP/+IvoTTzGpQm7wgqXLnXwuTGAYy1PHdgpMYEhMpPyA0giJnEqHTCowjEhvDBncXt1Gfcv17Zs7D1K3WfhIXfBRTzEutK/N/wrUMhdXcLBG9bhaZfvcUJBt/HKg4NoZe2VFBL2fWtWVqD+YhpE5Z0negng4b3Gu13Te5aNZbY4TIgVSrmLw5fcqdu/jBoQpjq2B6yhSQp3K7R5IcqbVU5Ru/Bm4tFnwnV6pOPbfNmOvOQ6Yzuuu6e+RW5ids9/ax1JZ5Sls5LCDMoPie9808+jid/93dw5FOfcDv2K974IK77nvdq11vJ8XVnqYnH5Gxks4IYyVBBdLTifVdRtHB88YnnsLrZRLiuCrlBxsogVy+gfN0MRvYwAnD1tVi7491o7rv7oiJXe7fN4Au/8mN4xytv1Mo466ycjzEfPj+D8vZ3MUY1HrgDx5onMb/2JCNZbQR1JrBOITjne01554hasChF5IswPqPxNj8n6FbH0RqdR79UcUVK3bb7261NBNYpPxaCvbSkLRVCjq7o2ygib/fJvU4WYkINWpONPv3VZHi3TRJDYwnEuG+2NmpWdmnI2m/a4TK0VKVdTwfVaOJDsM5GkAySolUOK+4hm0NFmIgmPDoHCGcW4SJOffnYl54+ryYyPK+qlp52z941dY6Tnmn4S1PzlxxGUmXkvEfvL5Z+StHLc+Kzj3wdz//JH+Lck9/EyOwcrv++H8TuN7wJ1cnJlHypzvMS6qR08iCt244OnA6m6nvjWpiF4qvPHAwMLJudfF1saXcNlSsbqDRaqNJzqPbPYrzzdcy2P47S9gls3PRW13p1scDbff294ZuBPvi39Rz82Z/9mesOfPTJI4xYvR2lsWsDUlTqtjCz+hQazTMBMeGtKHAoU7nm+/2Qx4QC65Zbu3wG1B0ZQ7s+h25lFHwhupOnUnvDTye+8jPYwwpSzSA+0eIVQSYO/seUab8vXPSzxvmWxSK/8DM1JKJOjfQ2UQQpU8sRdWKpKszbsdnkMk+/YEvfxPHPwyVOqorsVM1TtK+UqsFPR90uBIjmWIZopVF2N4Z3kbUR2UImU3mRTLz0smqJYozwJOF65JOuKfHlnEXJWHtlBUf/9m/w7O//N2bBegLT19+Ia97z/Vi465Uo1dQfGYZGcxyDq/vufSQOYCoiqpZy/nEliTcET9avUMp+6anwkzXOephWN9v9lXaMoDxdDS8IbsYS3cBE9xsYqzyP1tWvcC1XvcYsLhY4C9j/3Q+8XVjAHnWT8o1Cf+EDv4Ly/P0oz93DAryF46TfQ2PjKCbXXkSp14qtswqOqTQEBtajcIf2frmKlkumxiKTBU7yOCnr1f29x/z8iWu15E3Tg1iqjT/9VPqcUFHJekNMantUIrqmikSmimY9iK7nsa+X3shlOPlQpmrb5xHh3yJgknebsTkedpGSKp1FQTcw5AcV/gj0XW16lUiKDYtrg4Qqj8XkIR8JiiNfrvjC0Dy5IppflYwu3EO6pUsdp9gyVc+uo4jM/6PkanUZxz75cRz+2F+gtbyMuZffhf3f8V2YvP4GGCgWtMp5ItIVXfsR9ehBpSOaQUea7hpzXY2U4+63T3z9iWDAdwbDVidDOmVGnGarMfcRfJ1cY50exXzvkxgdOYHmbW/G5tWvuWhcgj/6zvvwhf/wY65b0IFsuXLwcz/3c7jqqquYO3AClT3fDlLfFVhyRtpLmF55FqPN00E8bowSTD4eiSJeayc+oXLIVLs2g/YIS7tU9pdhkeDzOp4eZqlqbbjn3dpkcA3CWjD5czzBMSd08m7rwr3JhIoIfkm7Nh1+/xCIEiJVazJBnmlt+is3RBM1S3uLtl9zDfHJflYCKqZvgovcUpXU+eYbblWDVVo3nlywRCNFNde3mkgVhWxU00yPaTxzOWIVR418pMa7T6IlZ0RxTBJ0paVlEEbU8sKQF/wr54bfydqBF/HCh34fxz/5CdfNsf3+B7D/e74Xo7t2acijfJ8ywjTzlLe4KiYkZrLdLRt4x8wXJzs/3AUoWsMOnz6NY+eWwXfBbnZhDVKLl9Gv/eaH8fSzB1XSGMfzmCFfRXlbw7VatfbcgYsB3jqrfxp+M9C/zi1XotXq13/zd1HZ/U6UZ18eWK1KvTbG1o5gZulJd0F7QCg56aH+86D8+ZTQGZlwyRRlxCq6aScNXH9Bu+y1QwFhATwBwo1N+Z4OXA9P3r8W6w0V66ncN/9ouBN8OkQCCsn9x2ti9slC2M7s+xTj1pSv2y1MiR0ho0ifOOvgyQyQVGUtDCIdFzWIq1MSrVM6reapyXnVEaoLibyVVLynaHUVqyMtPH3zYdFkeN6aJyLSFN2EQKyBUeiad1pa2rDIZkvxdhU+WfV1ldaVZ5/Gkb/4KM4+zAb0xhh2vvXt2Pba+1EZH0+MqwKNaE4CSQiJD1mCJ8dIh1aG+mSAhGF33HGXJ+kPxnzw++QjTwZxmmzcFvaBNMNIvGteWl7FH/zR3+APPvw5nDjalLOGMt3EFL6J+fLn0b/iapdcXQzrrZx1Vs5eVs46K269cyBarpzP2zi7sDtrrY6szKO6790oje8PHlyps4mZ899EY/0Ecw92pc/TeHW2U/HWTfUro/7WVcJDD7ZI4JYlr92Vuh33sFufCmXkjT8BwQUorL3ieqQ3Eamwl1anz3sjcaLi6U9vG36dcr8jqAojglQkB1pdSemYhJu3UVV2aPS0EJjnw85SZVaqqvgDJFV5i041POtv2AQiHTDlonGWSxSxdDFJisxWYFB5UOtTPXUbakkT/uTGzWdMUZkwb6ow9fPMUy4mcdNqnEzpi3lWyvImafkikdSloUVZnt3VVSx+/WEc+sMPMZL1LMavuRZ73/3dmH3lPaiOT8AcYspJ959WkxSTsNioZNc/udLcckHDwezqq6/B+ETobuNE4W+/9k1hgTGz7LWyPU9VrC994QC+8/UP43f/42GsrXSjwiz9CmlirvIwJsaOoX3NK7F260MXhUvQWWf1xG//FPZvnwmuRde7UXzqU59y3YG/8G//Ayq73orKztcDlQk3zJEdXT+GqcUnUWvyz9xQd1uEDnP1OeumQEiMTHGIq5Gco4qzSN3TzKxaNZR43GAtVfwTNH6ESF8TezvPXUvnLVbvRoL8TR2orj9QJARvN3VqNUHMUtcu1Phkkn44aY/DrB2blngonTSVTI57kbn/TKlOdoiDQXyAjcqor4mxSEIq+QhgMdjqPJAIWeFUIfxVD9Um8yqxO1TvF8WJlNwASSS+3fyjGGJDUgmV+MvjeR06LeoZkqQcRtPVdymydSB63Flbw5nPfhpHP/KnaK0sY/LGm7DjLW/F2NXp1hKq1KgD0eqgmkEwjCf+mYNIVgleTuPMInf1VdfEFsN/5ZkXsLbZ8i0zwEYbmZBUCr/76wfx/e/8Gv7yT04IHRsnBYyAlE9hofZ1NKY2XavVxbDeynEHfv5Xfgw/8g5vQ1l5ATsHX2v12IEms1q9C+WpG/x7c7ZBaGJs+QAmzz+OTnWc/U2ClspuPPEtQyLsth7vmRzXXycgK/1qzT0qcQlxXwbhdUMuT4SOTVyw7pHvKFmkgqWGxo6SQIJ7ov3kQd6MWsTrPTWOG9e0VbHiU+pBI9+E7iIiVYMrMhWBErvWZBKlgo6G8ZS27vGHIMgzaGRB3EJEI//SgFhxwhMOfCqLh1hy/JhENJvdE43QOYCTrXja6eWUpcPJB5lEUek3KU4CYr0nMTgWr4XPUJ3DMF7r/Hkc/ZM/wpnPfcadsc/dey92fdu3M3J1tVInYlSNaNIH9IQqbZLDf02fKFGckiC6uEruvgcfjC3Cdl6r//MvPhoQnM2O8xYXCsfJo5v4xZ96Eu96zedx/MgmxO/w8YPx6gksjD7JLD/z7hYMF3q9leMO/OUffLvrEty7MC24TqF8Q/AH/9GP4Wj7aoxc930oje12b6tfdlyAy+iXwnVT/GPOoTLE3txz5fgvc/0FdTiy+SeNTMViWyvw9BwyJVU757DfdzYn88gYpZp35Xz2lb5vE/HX5unq7db3UDzVbG8B2pDAeJo6fbAKG+zYeJGQKj4IDq6CpA0bHKZz5biUTAO2EluRJlFeCQdWIvyKJMq80pNYfNkqZVo/VEM/EKfU0RjibzzEBlH9VBmeBCrFS6tXhnkkSXFMOvhozKS5s/O3/sLzOP6nf4KlRx8ByhVM33MvZl/7OpTHxiPaop80IpoUKbKWQfjilGn7NBjoEKb4tu//fj+dkBA4+NuvPxFYqpyDtSYGhhOMXD1032fxcz/xmHss30O51MZU7RhmZ8+iu/fmi2K9lbN4/WO/+EPBInYHouWK/37wgx/EHXfcwcjV+1C98luBWp0VZ8/jLaVqKEvDt/pE0lsSehaR6JQcS5X/bJy3/4RM+DI0Qpb9wHhVo9FDTg4DaxWBYmAxt1n1qW4Hdq7c5noSshAUA5XKZqebvMHiuh1obp2qjazjuEhIldipFqNJpmiyFUQXTw+xdsi2L9POukgUka55XKogjWEpqAiMTR5CEpUulwX6XlAkbjRG5ni6ai1p6elpQFoHGXVWpIMkpEDCH5oeLy9Ud7by2GM49Vd/gbXnn0dt9y5s+5aHMHX33YxcjUFPouTyJ8hsraPcZGH+BJX6gyYv1Hqme3x6Gnfcf3+EEDh48vCh0AXI/tZbKBhE6uMo/vcfHcN3v/lz+O1feUayoHgn1XIb28aPYHKmhfa1915wl6DjDnQsVtxq5eY1sp2Bh+XlZXz60592j6n/AeZepRGQF8+aRAAq9/q85xL2pvL1OqQqkKzUBELGLVIkuBZDYBFDtOpR1cgDiFtaRQkS73P08O4RqTCv3Qb9haEWmiohJJA4qVPEKQTRnlTs+fXI009cJh9UlquoOPzHqYCeXKktCrKlpDgCaA85P3mhssuoLTheWcpVMjkvxOCKObJajMRfaM7NUiSxMKLoPmVJJOTLJAdp922oK9Kpic8taXaYXteI8G+8LMLy6a2vY/nLX8TpP/8omidPon7llZh+9auDAU+fYRXBikum5pGatpv4vcRSoUIH7Q+ur37Xu7zYPrFy/lY3mvi7R57mpgu0usW7AFV3tLrSxm8xUvXWu/4GH/2DA16WpVF5dGQDcxPnMbJn10XxyRvHWuXsaeWstXLLVrTO+MdTU1Peac8z+VFSDVxzhFJtjRWHVU5Q3N3UW+uOlmDjT3cLB/7mHxEXlUMxWGisUJG8UzR7fr8plX/c8pRErJIsVUkY1CTVQzgGGAkK5ZR18p0PUV6XVjY6mfR8VHCJI/a8hPO0aqNoD1KoybVLH2Hj4DM7gqihkyhkTXSqkFzqeZFntmaqn8TKJ65TVy/tkI2cDa5009OSbW1yDh1ytfh3n8TUffehMj0t6JA7MpFQUuRpe8lrUkSYdbmqwLd93/fh13/8xyOWEAcf/eLX8fZX3hbkY5XxgamGhTXA2T29VHI3sLz3npehXquhUhrF29+w4Oo7fqwZ/B4/tomV1S6efmrVzeLxIxv41+/7Cj7xN8fx0//mHuzaN+MN7v5UulzuYbKxgrGRVaxW92Fjdi9qR7+B6pnncSHA11r96DvuxVv/n/8Xh08vhgvP2e/MzAxoZ9kTdp6ps57KY7beJV8PQXRdGRVCPQuUR6z4HlW9+lSQRqhD+o0xNcFSJcMn0c7icjeYksi+XKJeSalSoUPE078KEN4lMdCpQhhXFyd6PRwxUqbWhEKanUvpmeYua0+Qdcyh2qu6l64cXGSkyrzIkoyH1DJONDY0ecrXsWfDoNIN9cofPw6JFb8S7bBM86KucnKXZYMLVfYISGa4dV/0bSIqdWpmyPJc47ayVLnYg0giYqb1TVRKFHqiUsr0Om3NQKGqj7oJjll9IsR0tZg6F14KxE/SG3y9ayEm2IB/5wMP4Buf+lQk3pOHDmOt2cJ4fcSNtu6SKujzWiEoz4+7n6cpjTsuqRI4M3jbW+73m2dowXHH6L5nWXFF/Y0qH/7KIp5+YhWf/PgZfPKvjuITf/lH+JbvuQ7/9P++G7v3RT9nUyr1MFU7j83SGNaueZW7kH30hc+ivHISFwKOS3Af+3NIlQePjDiWKuoQocBKJHzCR5jueKciiUL4Ap//GJ1iKrvf/WPFx1x/oOL6qdBaBcWeVSJcsoS4FarPnw3vF7g+P22LjkJw/1lGHDCsenM9B9EIU4Nr9gh7E3Fc1+UByJLmRfb2Xz5CpdNENdfTNZsOEUWCIJrTQaSrIoqqe40uyE0ekNOui/c1mI4hnl5+bfzf6BuF8huEyelR4U+fv6T8iuWW3JVRWc6450u6D7lOxuenZl1gqMPcm6HLV0h4i0Yi1SNqOefyax56KAzzb3B1s4k//9Kjwf1utuMuQFIpobJzErVbtmH0rj0YuXKakaoxEGebACIkSgRGwM+dC+WSs1jK8ekBjIhhZgyveNtefO9P3ojf/Yv78KVn3ox/+yu34sSBs3jvOz+KP/3Qk+Ed+FYVR9doeRULtSMYazTRvOmNF3S9VXTRv2flmXYsm71wtX+PeDYBT0L9QWTPUkQh75AA11LlrakKLFVh6jwTfnETRExfQhOjgngo4SXiLZ73gwUmRRMWnqt2K+dvkyZjq8anLOBEF0I2ObWxyXdIh1TXM+UpJ1RP8SKwVImDQPqNmvTF8jhCjOLpBq2LubLaQ3xZOFqhieZXPo6DKNPR5+DigFl905dDGgnyqJecimY7QWXudHrjeZdrOFEeJuc5S3mEMaMSRCMpRqISs0qqRSKhpUKoYduMLR5OEE0LTEjy7d/3/fj197/f50Gh4N89+iS++7V3BUpWNoHpMeKRqV2T7h8pkzCvNJrYoaNn8JkvPYNTZ9cwVh1B3+m2SyPuHlmTE5MYnZjGrl3z2LNrCrM76iCj/H49K9fE+Cbe9cPTeNd79+PYc8v4j7/yTfzaL30Rv/yfvwX33Lc3dH35eW6QRdTIMtbm57G28G7mEnwEIyefAOlm3GwrAw6fWYyUgZPH/fv3M0tVuNrfWajOZTwiQ4Kd1MNPzCDSrQcclZ2X15fca926990/+e3NoLYFZi4EaQVES0GOPLefT6wAwWLl59NsQAr1QSRU6ZFNW7KpvjSIy0VSkxJiRX/zwu4+8rKNcHodxxaRqrQbNqsCNoTKLJ5q5i0+bPOqmR2DSyO+X5MYVlweVCnEn3hSNZRjJmnWpcJddKYwyUeWBk+EGiTnicQIFpeKa+GpE2UaiIUpujVjQpUULraRJLmEfKhiRWbrujTkWGkkTA3TmX7a0/bWxQDyAhteq523AO+8/3583X9LzU8dX33meWax2sTEaN1NY61JMX/dNKp7p11i5WcSgcuJSX36i0/j4DPHcOD5o7ht/zbce/U27LtlB7z60nc/XeJ8+4ZgFWWygl7rODqnF1j4LmD7TcxqxY7JKDtnlh2yxnr604zJLWL3LRX8u19t4KlHzuMf/8M/xt2vuxbv+xevxu4rJiP3VKZtTNKjGOsex/Lu67C+cM2Wrrc6fNohPL5lwq8nEUuVyxlHhPCwr4t8BJlC2Qu6Rj/XUkXRHd8eaaMcIsmKtrSSv+UCia+1gmSpgl9nwL9ZCINuJew1XPG+t61Cdpj3ZQKNNY4TjWcoSOU2nxeprRfFpZWMAZMqVcENjkTISJ7tJ8UYdB7T9GcndNH1P2JaWe7NTFZFCajRM9ddVxEw2VqhJhZmDceMUNk3QRV5jdIjkWiRiNUlfod2MJ4vKmOqQTTHYlx9LKpII1mj2XORdSfLm0gblBtVUD4FuXrtu94VkCpuMXEI3Yc/9VX80Fteg3K1hF337sDItlFFNgg++KFPYenoIt774J14zetuBXn9zS6JQjmsPRErn0Ou2KVKiaBSZoSjcxhw1kKNjLGL1zOBG9jffibPSBM5wMiWF+3Gl83iM598NX7hA0/jvtt+Ez/OiNWP//P7ojdDPXI1s/kkmqUZrF/5Sne9VePJj6HUWsOgsLzelIrFK2eHVPX5QnXHflOqCI+WhmSKW6VIWEyBxxTecylvLgeBwXYKgvWJuw6jrr8wrXBnfTkkJFSOSKcXSlEh/XSErblP+8Zx9K3ZtlehCWmow5N7ID/9SDay9FZh3xxvfUk6432taVq2GPCaKtECJF+316SCWeFk0TwokIJk4ohuwOkdRYeC/KWlTlfULzu9kgZsMX9yXmlEO4x0RvOh/zNBWho2sXm5eFDth2XkMktJMdp1R8OSkbUN6IkWleTEkvfGLU4MbMqZU1HTUqJB6rlrvmPZCMdST7s80BFvI9CJ6eh+S47cV595lvGcCq578AqMKwjVo48fwqf/8nF8/+vuwY997+swu62BcqOEUq0MUqsw92AJxHkL0C1Igti6KscQ5/x1nJG8DDiftaOMYOGL7O9zwPoxrH99EZurLM8jzMIzWnXXYf0/P30d3v8jV+JXf/mzuPeO38L/+oPHoUK9cwazS19FvXvW3YJhkLuyHwoWqHvga5D27dvnuf/8cu+Xx8ItFTzJYNyOFI8f5PEd38Lk7KbuB3bHtwU6+a7swU7oNEoEIu+R+kFy8+HbKTg/3Ugdj04zkhFNh6a6yqOaqfKqDWxbjIU8iR7Y9z6DGceKwoBIlWoQsxnQQojDbFI4jPOTFJYtj2YYpG7RIkK3LE2eRvRNOO8aIr8qyNYoOa/29ca8cZqSLltykpYXHQkJZ180lkfb9EjkRw41h4rQIOWavpXyexPni9RirZOoSw/180rePNHMusfn4MGSp0gYvH2SWMDE1BSuuf32IIxbq84yy872V827xErGoaePY39pFK97+T7mDlxHqdJlBIqG5ImUor/1OjDFLE/VCiIEq8fiOJthLTFGdWYdOMFcaCtn2LUDzOT0dXQmD+AvP/x1HDu8hGCZDrNw/fiPXIUf/+ErcfTwMn7yxz6GB9/033Hk6Ipwd+FvY/0Apk9/EZ3dNw+MWHFLVcT95v+h34xOxXzSw9fwA5IhJHbiSZU3lty43YltYRq+JN/zKtAoLHR3eztOpgiU9Sqob5xcIbwP7gq0atvGW4IkIW/flV1fLI5RAun685aIaTq28QdAqvjgniaTjGgTiFMFMy1J+SnmkZgh74OLIrRIQbB2yCQlK5J0xAmI6bAaJys2+UzvhIp+mln16eOl5V8sU5OBnhhcE5+VLl3A7FkQRVy5JVrYk2mSfETIAmIbEIk+1ahKum81qST+f+Eb8qF90FuETPAPf/ZnQy3+aPwrv/hezM6NxZM5t4b9ozVMb3csR11hWwSHPI2CzswzNx4jTxUW7mwpsGsP6Pbt7PoMMD6BmMXKIVZNpmfZIVbMRcdciTjC/k6uYhqbeP1tZfyX//hpPP/sKU/WZyQ//iNX48HXL7j38cQTp3HPvb+H9//U3+LosRXIfWi5u4rx019jpOpl6MzuRdFY3tiEuKcTJ1fOQvV+ewW82HvlhsMJBSuU9PQjj5A/Of8enO0U4Lz551kVIy7VgMTxmNHJABdXdrl+vQ4/tROmLxIwc3eerv6SxDgXAtkWH2wVouVSnHUsrmmAlqrsEK1TVDoXw80KhmpiDrLyyeSjGERmaEE6culkhZhXsXxU9xGziyhCZL1b1+DylURSZ2VWb/I+Cbv6LccUpuwZqZkZxGeasQ5SmkAg1W3IbP2XKsSU/qvrKw2C/H3KiCjrkaeSPwrfef/rXBcgHzi//7tfi3e97a54UsyiRFbZ4D5ZjpIp/jfCrFFjTM9O5vbaeQXo5IxHsPy06eS4t52C7Oty0u0wU1SrB6wxd9kys/ycY5ar5U3MMm72z965H//xP38SK+wcvX5wb7/ygZuZAawa6Phff/wUvu3vfRS/8hsPQy6vavM86ssvorXvbhQNZ38qolgB7u6oLpCnfiW64Rd/JPwNQHGvKvnbB46lykGHuf6ClAiJ9XQlTrAojykmpq5FnGaHllga/c/CUkN9MpZlR/X8Pa5de053y3PSmj2N9Hjm5McuLZ1hJp5eSa0ga8J5hxN11rNrljtIIv0OYqDXPYDsEL9PFyc3tiWjK00VfU3SYZoW100s42YHzZUGtbwevy+qlUmKn5xq1Cqp00NSzlX6bZ+lKs2kFprcyZm3bZKSB0CrSbsnkOpZJbQBGhgifLXxe+Cuo+963/sCYvC+f/zW2KBIOj0cevIwFks970LJ74pFUuV+RqXk/3G2wP5f2UD/yDH0nn0OtFoFnWYWrBn2NzkBOj7mWbX4Km1nY1BntXS35/22uxivlfGT77oFH/rzrwbbKDjykxMVvPuhXcLtEhw5top//xtfwyve9If4wz+Pvvk3eu5pdx+r7uQOFImlhIXq3o7q3iJ14mXStVYFXlCfgETXKMqtiISkamZvkAYRRTnEtVauvnDSIlqyIlH6/ZBQBbyKKvSatr0+7MYUXV9k3kYp4rFNkP791vihPp5p+ZhA3X+ELTgJduVQyquguLgeiOZc3QEmaUkfUIp9aMXqDec4BOq7Nx+OonF0x7q/PKCG1/KgqLyG+mhMbzbCkiVPqqdMhfSib3aaQiQd4R9NldfljKjsOKmgsnQ/PLevFWLPIF9P69hNiakcmrDkXVp4f7+/Eej+vQu47eZ9ccvLegsHl1cw8/+n7j0ANbmps+FHb729t92924vt9a7X626vG2CMwZgeQi8hJLSEknyUkBAgkJCPEAIJIQlJvgAJvRswNsa9F9zL9r1b797e79v1SzOjGUmjae+9S/jP7tx3Rjo6OtKoPHOORtPebAEb21okzdaZHGjvauvzNDagYkM1TVm//DTFQFT6tC3AQD+zdDE3IP84dVOTdXCQhcZGKOutQBQzy2BnI05f3WXrJfFwF6Dc1kT40eNz+OOP3Y0bbjviFiFFy0gXp1FZZhegvZO6d185QOGuP061kg2GaplmxTDnWXNcO5EkkSggiwMqvp0CL7u1SF25Ny5itlO4Lkh4ch1LWdgbgGJx/SIHsz6rG1XvSxRREtBBotq5m1udRJYYHyM5ESdJabnnkSAKHhP8yx9sWuKWCmLCB5ajkNRwnay6ZX3ql5KMll82NZZjqfnEeRI4lfUU7z6YucL09AZ+ijhvecUpYxRIooZr0flUN0McoqFxxHgta0AVSSRUmpcKqPd++wFVUNvya0YVITWXU5UY9InlOI9YATUTy30SXH+WNOsbZs533HiYvqWCNAFv2XG2tWfV6qZ5RQfBc+jISVxx6VYolpCac8K3SWjuYqiFW2OqsDZ/tPb14cCqArS02MwCRAhglOL1Zu+hRJsaQRYXoSAPuxDgvqwUcxu25R3XoVNsfrp6VQNchSSznKi96ZmSUluZwiRq6RyWk46MTqotQN74U4AbknHXtQnLlNxu/JvKeO1CrKeq5NuYpa/BjqdSPVJv81ALkMmqSNLE/SQ+IxT1v93KAZzdaAQTYve/uodl0zySlDdMRj1zviZPOU2yKYwtRx5XklaTjFxIZDnj1+US11TJk4k4lodkafGKInchagj/7SV94blar8CpAVR6/PLUEzFeBSF971ccxJcuSC9q4KE+mdGaxslLT6fz2tfU2B9IhKygWgpLq7eNuO0kjj5xZOjXNJJXbdVeGv0+2TzqRA7oU3scPVVAlSIkIBYxZfLJk0g6EsX9Z2lNxURrp3gNcwF2tDe5QEoGYes2DlgJLZHEeTlBWKy4P6vELSkpVSc+e6eke121XYe148OgiwXLqkUdcMXdfIrlK5XyQIOFoFJYP9jjWMiEDsDgYJOoNBhrS96jgKtTWcRy0yyz4vH7JZaZcbK+++fuUcWKnuuQ1NTttwJeEaUFivOU4/qrtjpbKTiAyu2xUr3Jdmsh28NJxDCb2x9ShmutYi5GdhyqZvHA4jQeXixhvqZPuxFtL3Qgi+oHuoh4/PFoGWSRJTMk4ErGqaYJf/SVaYmgajlvkHkaip4YgxpkXMRbD4XlWx/FtzYEEYkIJwnS1EPehGP/+icxChlA+gc8EgAQZNAFKb05Tjyxiqnb46fGlqX/LoVIAh4/bz0aLKf20RTVxsL5xNBkHTWqTNweqPbagDR9axIAKAA2irzdrVV5JrnhJF6pF6nccCIOYq+rYufnMktVJdVs1iiblRIpAux2usAAxPgUM0xV3ZztjY9qoFOzqB06bK+pmp1FatUKEL6WKmWDJ8LxFAMm7mIjt9QSyGLU0dUKxUXIfoeOTHjGFFOdSPfMXsO0/C3vKLNU2UVxPict3H++T9TYWuojDXFbkdiKgMIbcSgys6MWZ6ljDdztGkTZpP2piCgkpdLNJm5TEVsd+KuAelYsdv5sNYe5whA6qm3oLp+B45WsodmG1CNdyirR6JQtPb1407/9By5645utc79GyXKPbhEk9DIpmftzgvyXkI4awpfo/qsXAJhT6/al+rvrEu/Sb0gu9U0bS5Fvqi0SEa9PUPXoERccyOtRVMAD+IdGPa1Jalh7MQEwv0x/GA2sx+WaPMzlIIGxYSTKhyW0pKW26Xh14+klGfgpjVVuNYekbVN1mNJA7WLIVUCEoaUIF5Ijq7WzE6/9g3ejUJxGQ157fpXf2jNlk2V6l06CTDDg08rcfVnm1ltgVqHSIktWA+nrARpWSRjdAUeU8c0VQNIMjNWI2jCIqidpyLtfCxFWl6mpeXcvLuOdldYCLVePkInvUTW7WLQ2kOfya44WHFRVF066heEbf3pAiVsH5L5LXYAuHrHk9qcsUvd8iE48QBX3nytSIW+ndb+r2nP9UZSzjchXZ9BA1rLbcSaqtIQMyZoqFsG9IOqNwaTjk8rf2tuLbGMjzrz6Gqw551w88oPvYe+ddxjSAP58iDGsnpWfSyF/Dw6vz+QUvzT/q5Yq00QgjngWKplORRfX81weUl8jT/LETWLwxuExpYmaWDyZYvhRQZH3eryy7kDh18OSkCpTp7jyhMXKLKfeThj3CUe/N+p9igccSKCGVIumxnag3sN4eej33qO2FQNYd8klSN7uxAvmwbl6nKZRIU4+Nn8t0ZtWkeIU4KRrQ6QL/rN100bs3j/rl8XdcWmxCJ14IontBrR++QaglFmsZo4BY0PM+jTOzArN1n5V1qJ0AXCYG7B2cgx0YtYa0UkXA2FEcveZLGJNjaBS/qJ/Pvb4kFQo/z1fhloMJddKRYjjArQtSYODg8xQNQmB+Ph2Cv7RR4w93gjkfRTK5hGL1PmnaSqt/RBuP7u4zr2ADajc3dp117EERFOKNVB9TOWqdjZm0cfXupHTXR4S9RlKA9FlgCmBoxtTtMYsx4ceetA6v/T334EXfuTP0drTq81TQURihtVL0eOUnyOZvktHD57MOkBVPZO2mWQwJa6jwVQ9cfUS0X7DKQ5YUBehJxnsiSIlmidJPNV+9TT+CY1KT/7qBH0qnmBFLsGAAqivBaj6+8GgfUS3g+Ayh6WlUNdhBfHFJAVQeb9Uy9PHbNArbobrLroYZ1xzDa78wPuxaufZSpyJ36yL4I7bfuP0NDkbMalGyY2RvdsV/H3GtV64lgqbMhNlFEuGmZR/LiZtr5uijhtKAT4SwHLBz8KCXZZymQGpk6ju3Yva/oNIVcpIFVnc2BxzG87aekkL2BUZ2Qxoa6t1TSRA9eNfPoortq3Apo2zdjGp2rMtPt16Q5Z33D0yOqUAKttKQ7Fq1SrUFk+6fGJNFeewgJd75W8bRPqXdlx/3Erl9jqqPn54HlOq/op46oWJ9VMyiY8fpzNZDGSZrY2sYOwNnoa1IFQVPr7p58tJvI6HHn4IP/7zP8MjP/w++k8/A6/8u3/Ajpe9Arkmz9W6fBRUVvM4GZficcYBXHHbtV/WKf72XzCZpkh5yPTTMkw6sYkEnEenMjcJzzqicsaRLY/kcgcmdejpf+7wgwpiyBeA9OwXBnCW/+5E11V4u4lH3tZ8RMtTTDpBrTWMoh4CZCDnn6TjyDPrC+hOCXl6jK4nvzzADJb5x4KtfXnYse2lL8Xl73svGpxv34WStH5Fn7oNzNBBPWLfDxK71LGIeu1frmkxOXul8QDW5o4CHtstrFVUVg3I5509qgSASrkWE2W9k7PQnDD3Hx1hFqsTw0gxYJVpa0e6rY0ls8ETofyNvxIU6xQkWZk0aFeX9SsWp/PoQ8fG8egTj2DtqmZctmsMr37FUaxbvaBprOp+KtZUPT007IKqdIq4X9NZuXIFahV7/yobUHlrpLy74a2mJFq/EtYqsZ6q2LsF6vow4o1q0lua7i+0OnCbgaFPirf/mP4t7L5VaT/s5iDWYOk22ihSx/3kNU6ipVsfbWbeZQbaH/3RD/C9P3kfDv/6Iex46cvx4k98Ght3XR4hK2hsikHUdxIpOyiOxEoTJiFMFzNq0TljrKnyhr1gwcnJDD6C8iYGzqXrAGN+pvNw0rXxJgmq/SbVWS8/CeCJT+qdJAa9/VL91gUSS34yIiEahKXxBs4kL+RG56/H6jWyfG1QTAdRHJF9wT2V15CorTDJAKXmQo28/Km8ygDV7f/wBay58EKsvegCXPrH78GJxx7H/tvvQGFqKkCeqjKFt/ZFrWn7qr0li9UDLdi+sZ2d56zr9tYcZuZKFuCYnivjiX2TeGLvNKZni5J056DJy2zks5QV7c7A5a3ytns8u85nalhdHcVje5px9paMzGwfTcyKUSjai9IJ1R6+nHxcqxFlxWXnjXlAWrvjbwOCUnA15WuoGADzFl/bzFMzC/jAx7+Fz7/3YjdxS0sFVz1nFHv3t+DBx9oxO5f2lfcUrFG3QFVatGHulmJ5bNu2DY2NzN03OWbx2K4/D9JSBVhZmknV4PHJoKribPop1lS5Fjht4b5/kbgEVJ28FKJO/o6bspm1zYlKWluepY+8mnx9xK3RSJ7kJMugrnVN0NzYGG754ucZmLrMAlYX/97bMbjzHDz0rf/B/Ngo4lFMHUkcdv9IpueUDEaZDQwkQbqg+BigankmD3mQD4uPE+rFLc+kZlNyWTpU0gfDpchWc1iKDE8SAvRRoYwMVAiSlMXf5OWOYKKlgkw9fCkU3tZkQEJC6m+5c/Y4SEA6KZwggCdcTmDiwNFO4rXWY9j2hMP334+R3bux8YrLMbB9O1actZ0Bqztx8I47DJKp5EoivlbexkDT9k2deOGuQbz40kEGqJpsbGRtjwDbpcU/KJxjFpcMX5/kpGTA5PDRWdx1/wl882cHcNejoyxN2Kdw4hJ1wVSQx0td3CwDYYoVLSnMjlE8O5TG6Rups1DdE80/P0NKJQtc8X2qqBtB/K076Db6wp2AXBa0mdVfNutO+oJx6OgYPvCxb+Dz77wOaweqqFQorr72VXjwnlswOTmBzRvnrOMhBqwef0b61uByD78OHR+bdhadw7K+8ZpoY0CwVjC7/vxg36szAcmF/Tk9O2atp+IfUa41tLsyrF8BrMQifvelgwDiYCtFjMDSeyuwxsBKTdLL+XF3XI8HrIQVzV/KZSIKqw9T+N2S++++E0ceeRinX3U1znrJyzF49jl4/Cc/xO6bb7SsWuEUD4QIHbQTv5Kh8V4sMcn/jZCdVwioqk8h/WYHTc16mmg99AH+fw9Qmcpkfl1/Kfos76glAwFZO39nTVK/hqcqI0/YtSmOGq6jwCWJ0Y7CKXjiVe8FNcYH8ycnE5gJhvDhMgS3B3nDnpOhpYqavfkCVxkcFaam8dSPr8f+2+7A5quvwrrLdjGAtQ0H77wLJx5/wpPAJyVqp/E0Ay49ux8vunwQr33BRssaJb9tx4+UtQCbnedZXAMbvpqYxSbD16vkHCllrGltxevWd+J1L96Aw0PT+OIDVXzjWJLymYi4fwXgIa4MwHUZyaCDccx2rQIO2uGn9aVwsjqBp/cNYsuZBJk8D0/ZYI1v6klZGUqsLItFkGIZlO9VBervr4Q6e2aZRlvY8jjozOVAGxps8Ono6IJDJuPuB/bhk5/7Pv7tQ9diHXMJUoxitsyetDM5/PF7P4InHnsIt9x6E6amJnHejmmctnEePV0lX3bLSc8eHrYXf8P+wg5X+YwzzkC1qO9RJcCTDq2I28JllyCn7NRx67fSscY/flMNWMEGVtaZ5Y6Uma1Ap2n6ZwMhg1uYOKhy2ZzEUXhNJ9edGEr+sTiapNYsXvk0EAdPT/zkRzhw91045zWvw7brXor1l+yywg7ec1doDrF7mKVK2NhWT/kQolW96cL0sOMy4QKSZeeJVbOR1amfTkEPVmTH104vEw2Z6ONJC2pEy0He0J+sWcapExPYBYItSckmsOS0lHQEQRsqRKWk8F4hpm5ovNrzZARJD0oVFC/zefXuuUbjAipPfhhQppKlSqbC9DSe+O73LUC17rJLcdqLXoR1l7KB+Ps/xNzJk/YDO/XS7TpnAB9661m45Ow+V31vB3KK+cUK9h+eQ7HCLDqZFrR3tmH1ygE0tnTD/TaeNZyV2eUkA1vj7HIGa5hF6O/6izi/vQ+f/ufDOHxywViOODXhwnrl4dq5186E7G0c6UC8fAuq2RxS1M63v3McXU0rUBjZjJY+xtEwzxj5+iZeF8xK1cj48uy3VGDAquJ8r69sb/RZq1ofQLZ2XBeTEP8VG3vyt/n4min+m067MzcRk7JzfWx4En/x2euZ9awJ3/n0Wxh4ZXk6n9ubYJaqrVu3IsOA2Nlnn491a9bh3nvvwr0P3I1W5hLs6Sx7dUKcP8s0NNuuP88VV3YsOueddx4yxRMuXzXX7tS/7DKWwZQM1b0+kJmykXVxxXYohiKx6Jw6Qc5bf+61x+KNEARQ+5j2cOkA2EK1yG6X86maGnVlJKkyMTrpYfWQfxQmrhfZ3M+pm25+fAx3fukLDFBdim0vfikufPPbsGrHTjzynW9accHaL9fcHS0rXr0EyxFtqR78I/JOsE9V+KRoblrqxKGH6eGqpKDzeptTGCWX6T0/66BCHn6j8jPVWP2k1g4xxsejesBPnAm+HqJLiA0iM+irx9qotm+ixZHQVmvuunHaDkV0siT1XT/455NH1drZ2yxj+IkncYIdq847F4NscjznLW+ywianJ63Pdmzf3IVPv+987GIWKnue8vK4+8F9uOOBA6gxQDXQ3owzBtuxoqMBvcyVlp05giz2sImKWYK6uxgQ2cJS9LCDWWZom418cgyUNPMPCVfwu5f24OJ1u/DiD96tAat4RKU6UPZ2kmuISKt6JOvdyMqdGBi52wU12RxFtp/rMMOOS2EBQSsHvjv5mA0KG2YZI0M6iyWGuVK+dTX+K0kX1yJln1MH4T38+BH88IbHcGj/Sbz7Netw8emXsfrjC+gXHN0omvo2WLuXMz+glaajvRPXXPVCXHTOBbj1zlvUXC2jFwO51RKWg3YfPmktUBdGuIpTh/39/cjUxq1z/s0/6q6p8u4KJEBFlXqxJ0m+izp/O7LW2G5vpUAle61rXaQOOBbyPDHyuEodVO3x6uOGfXD33yIDVDVC/QgtcnjR+lusBWwBY0ME8RZiPRjR6LGW19nBe+5mbv5nseV5z8fm5z6fufnPxtM/+wme+umPsHSiIbNFuIXIhDWC8kCIpGgKr+dMdCKi/Zop6lYGVRT15Sv/0kDO5aN6AZVJx6STkyyjPtCo6mKOT4a85XtAA+JU+fFl1kNxdSd1xgHQ7Ex6XLy2bwJqMviOA6ziACr7l5qCfQHUqIefO267kx+dhNyaNXkElVDkd+yhhzG2dx/WXHKxZb2qDh3CG7aV8MdXne499DsTz+33PINbb34EPbk0/vC5W9HWnGVespTl0kqxX8s9lM/YHr/yKDM9MGCQm2BpudWKHbM5jDx4BHRLFf0DwmpTwZq+Jlz/mUtw3YfvYcAqzudViK80Xs8l6iRE1Q0jBcjmQSdXXYb26SNoKtasHdGto8pAS2Y349nFjkZYViquO1qc62F7nVjenoAJA4YuSKf6uEj8ajvIZGRiATfdthcPPnYIpblJvPUFF+D8N17F6ovlXZJkMJnD+0ro2Jwx1kNHewde9oLrUJifdcXzslUbOpAfug3LQZbrz8rObpGlqm3J3LhhA7K1/da5sFJ5k69X/uD+xUDs+CHremH9pU6YAFLuH+daAlNiobr0nGyfmsZIL/eaZ9bCfKWAbKrqieeHsDTGJJPrL7jHRo+XprQ15+2/uMQtU9xCtedXv8Qlf/gebL32Oqy96BIGrH6Mofvuji8o8dxEQ9MsFRSFj4TxpGfMmYUrblIkLl99KHIpkzJC5JlAWxhAIRHy4uRrqlui/cYjKg0mppJ41/WAErk+ggdxU03608WdtGHQQRrRTgnJdRgN+5PF+nmVJ14k2c6PBEoKrt64w24Y3DPVvzSBsAmiVou3m2GRuQT33nAjcPAJ/OtfX41zVqXcp3b+9P/4U4fxwx/cgytOW4m/+N1dILmU9eFfbqnRrS+WDnzHcI5FZoXrjFkz0uxoqKD1zDL+/d92Y3BTI15+1Qabn4GxNf3N+OcP7MSLP3QPEhPxVvDo7+i5WyjwXyLVkON2O7TxJTjt2V8gzQHVItN1jrn9GtmR529S8U+DPMCOy2ALaXXCpljdnmAYjFmvavNsci4bJlg7pyIDbIvMXXhseAEj43M4cHgSjz9+FG3MvbhzdR/+6pVno6VnigG6lfAv6CEYH51EQ7oN9OhRFEZHkR0cRKqr01cFDfkG0ErZUrPUvAKpiaPMAjSH5aCHnx1y11PxUvJv5p177rlIVSaRylSs8EpDL+Q+C3iL0UVZiHQm+lh2ynYfljtW23EuSKIueHJJs1wFk5xGDubrqez4ueoC2hioIk7btb2ltZgDhzcq1bFfaCgpQwZFIkAlEwdXv/zrj2PdRbtwBgNW573prejdchqe/ulPsDAxpuXlH3n8FIcnOWiMoji5etLDKROeIB4Eiq9Qsklo+SdTE5iJBlOAPuGaAFEckm/3UspGfFJN5x4vDZETpwnK0Ck4b788YuQKz0e+H+Eti0bqH7eDhskhETomIzsXeVJITrTOlFT7NcV5NRFvaOJuKWpZFMJ4PamrV7Tgu5+5FGtWpj1wxADVj69/EO0MGHzsDc9Fim+YmCEegJKe/MU2ANZ50VljxKw4WGBmlyxfU2S3m8ZCCW97cQ8++MX7ka0s4sWXbXJUIdi1vRuvu2o1vnHzEdRD8qod1zIlNSHl9XzY3wrka6v2n3YV1h45gjxfJ7XAgFWRWcv6RmDtK0W5pY0vbOIg6152bGMIYhS1uRQmJ9swPVvF5FwLFgtFFMslFIoFFNl5ociOmWnrvIMBqGZaZZa9Ip7LsMObT1sL0sHkzQ/ynSgBDQiK64W5BfDN2ru7u+1QJrO0fz9SJxqRZVYiex8t/TEpjer8AsOEB7EcNLtQwJ4jJ+0F4RywURusb9q0iVmpvG05apalyuuz/r4kv4YhvfVXnEepdzNoY4cCltxWrrluiQaslNbNwZF4808bGqmT3vrH+sZMZR5NmSqyxAF+NOmKKi+dSvU8lNEA+XDXgMVPp4YfYtapkb3PYtOVV2HTc56H1RdcjGd//hM88/PrUQ95q+Xq0yd5fup5PSOsSGewVCUTIv/WR0urjOR5mCbJcIr/7bgoHZZG8oQcjfeJbwg1N5cg0BBdZmrU0BQWp+zB90gutxcSp+XEB4zR+0SFXScj/zN1MtDrKzcJvIglV4aVql5BIF09r9GoluABquu/fC37dT4yTOyJ4Sc/eABXnL4WHW1pZpGo2RYo6IM8gfvIbq1RgT3RcHMGt/5wgCW2MrYWBdfQxI6/eeM2vOMfb8NlOwbR1pQTMyje8fINEaDKUI/SrXBjxeRMIW1vZAMp6q7RsX8XmavswLo3YuOx+5ErccsLs/gsMNdlIwdZ/BM0h1miSRY8xU0rDFkcQ6Yyh/5sE/qbdqOWamfuNiY7cwx0ph20XES6YwzV0TYQDkRbFkGn26y3IkmW1ewinIlefd9T1v3k0AjGjkxi/dpNvuLWFhZRfPIppDs7kW6397eiDMzVGJiqzcwiU695w0BiPZWo5nLVln3WWWehkUzY4akss1T1weut3l//GOEWEtmxIeustGK7HaJbohQQDDeMEGJ+604binRjFnX+crf4NANVPbWKhfWtZmml1x9hwkjSLzYlBB7Oyya1GPl4D1x+Whgfx+Pf/xb23fpLXPj2d+H0F16H1RdycHU9jtx/T4AO1KBeWL1Ej/gqxaljE9Wb7n9xR3WbiParWymWKpsY8khG6kJ086QfT5elDkDyLsHRRF19k+gdXVfUwG2WEcYl56PeI/WTMAI8mWSK7/cRX7i5HGYZ0VQPT3QaP2xYWjuNyo36cjYDZKpdmWuJuHKsp/IY7j8LUP3LtdavLPGx+/bjpRftQFd3hlmoqCcezixE7G/k0Q4GItjk7n5yRd++gG+cyYFViR2Fsv3LLEKtDGB8+i0X4es/ul96M49g+8YOayPRuESMQF+OhxEDirTEybec68VPq6fjq7/8NbPwcZMMA1eLDP0UFtiMy4EUO2aYW3COga05ZrnibwBWao71g3g1T+XXICS9qFyHusZSdTHr3oFfP4kT+45jcNU6hFF1chKlQ0MoHTyE8vFhVKdnYrzin4xue2S393kawtci2e6+bdvOZKDKdi9WmeuP+Hq8GCMEqTchxSxUfD0VX6Be7tkMfRd1nyXKtTyqAEshAZhTfkBtXYt9qFjYNAPFZVp17plInsSZpz/yyKWrh8w1Fb5vlp46fOxcmBjHrX/7V3jo6//PstbtfP1bcDY7mrq64S+HXHFqDA3RIIqWt3Xq+ZPQ+JTKHE+VeqGFnvlySzTLro+CJ+x6dalXJy9fdRJOnj6cR1CcHIQ+ycCEOvwRI+zz5MTr5P408rX4DQJxsl5xZJriiSE/RKQxldekTVgdmAajuPc5zn2y+cLbHLEmkPA1VXYd/fdnn4/VA80KFppkFpKda/qYVWXB2RVBAlJidXBbG+iqVUB7h3WOhka4iMX9KLGkpLW5kfTL5KzpbsZgX5v0HT2btq1vC9E5JJiKhxZA30eLKGEeufsfsWPTxo24caiEDVf+I776P7+wdKWOG5NyQLjIAAVzX/JzHi6sCMo6LiJvACKBS2KCwF47rTKANrzvEJ65ZRLzkzPo7e1FNpPgJfBTRL/efVgCVYRhYoqNrJ7amghzn9lva5abVipp1N6p9yH7Xogd1AvrL1W5nG0mlPslvWTghos9q7SMxXceScrQVoiXx0KtiCpqEur2PojlT2Aip5SGTpjMuh4cZ3WXGo1lEAset/x05IF7cfc//j3233ozVp9/MZ77sU9hyzUvRky1Eo3+yYnUEcNJjIjBXClVTDxxgBlvEsSpCBOX+/yFpVflct6K5BDGo3i1ETd9Mk3i3w2/9FSkZDtFOFCxebydyNVfc/tR774ffITZ3sQwSn28UTUXVkdJ739Quw6/HzQwvTkPX92TqHsdtfZCT++v+yDig3FVA1V6ug+9fSe2b+ny1rGw0fu2255AFwc++bKTvVOObA60dxVoSytoVy9oexesfZy4i4Lvb7W4YH9upacbtL/X3k6hs8Pb4FKyRolzvtj9rLXdvvC1A82IS1T8EVjNsVZ4a3G8iTclJlz3V6phJ+/XvO1tmE+34S1/9H+xftur8dXvPoZDh07Y5bTcMc6cLt50p5ouvp4B6RYS301YnFvEyX3zePaexzE2dALpVB5NjU3o7PQvRv9N04mxaew/OmKNPByjFJjVkW+nwD9P05KSNv20FqnbNW2PFzSgpYpQityJZywrVVG4/sRBCEzuQgGmhMvWPrx4qp8o2zB4YRYIJt6mnVRaF0gUqxBBZE+jweNYvesrdSlhb/Caw4J0Vnm51erJH34XN3/yzzB99Ag2v+BaPOcvPoXB8y+OJy52vl7eAXc1kN+cQ5RCwZbDFJZwU8Qt0J8Rgins5iwFUCUFEWZSu2i98pajkXt6aONpjHQyzEiSRga2Zj4dGIXJs3mcD8VKNRqkmQlsBZ17+UCT7OeN3upSH+DM+QSljJZt5tTvqwyUaGh7ppHQDLFT6e3FviYwg1kvjRZHg9vMGubue+21m21e6m1CeeW6AYBjGoE4hNyGHnawiM5+Fu98p26RWW2On7B3U18xwMBUHwNjDZalivKDW1qam6EAKrd4tvz1q7p8gKutAaGktiOplmQQCHWidirEXbhu/zqtVHI3rV+3Htf9/u9b4YcOD+Otf/SfWH/6q/CcF38YX/v+4zi6/6iY4RFUt+Zxz+bnFqm56UWc2FPBvicPY99jBxmYKjEwlUIul7OOvv4+/DbQI3uG3A8o80/ULDpbKfA3/7obbFBVy3U43/zjJB6hTOUnEK09NzZkLVDnVioigSQqv1wgIaaUdK64/QLad5DLTKxNssY9t+F4MpjdUUsVPkaFPxjShOF+LmGp8p4c4hBJwEstcHXn330aj37jq1a9bX/tG3HWa9+Exs5uT5wvVbLxWNcn/rxpyiEKiJHA3GPbfUXzqU9REiANCJ/QfjMkT8x0CaVcelm8IaOedB6ZO3syWaoMdfdiM+Dxv69RTyPXZZDQCV3+NVHYlKSWVf6NV3fmlmKqP/OgLwNOIKwcqkwqnft59DLFbQfyvZY1DWoRThh7wrU3/zTTO167DWtWttryxKLtqXkMTU9jbXuP89QuSS9M8a/52iYLfk3T1idpCH+9v7ER7jTA48XnWGjK2kVcXoAMAXBEIcSu41L81PRMZB3oAb7a1NYwibnY/owxtXQk2mQtMOTvvOUt+M7nP4+5iQk3/va7n7aOV2y5DacP9mL1+j4Mrl2JVf1FtLXOMezIgEVmztqvk+91lS4VUB5Po8r3GcoWMD9RQoG5Dyt8jVmNb0mRRiZDLRCVZufiaGF1nBau0/9luvPRvdIidYrZUgVNTU3YsmULuhqHrPBSy1otlehHROlB8oYKuRNPW9/4K1k7qKv2XchWRkLcXef1NVTuOKEPeCkx3kkATWJw39gjcNdXeUK9fhyrd5JgrvCYsJFRiqfOPlUxZ/nks4t3l449eB8m9u/FpqtfhJXnXYSV516IvTf9DPvZ4bDCe63STpNrakZpYT5uZgEjX3S5klGwrNigyqRS/KnHRMlvTTy5yUgGVPLT+qkkucmYFsDGpyg0XU/aoHhvAKEBk080KEhOarsLAhJhqc3klUS+3zJokSUk0T9uG4rbyeW6NpSdBMkU5/X3M5FaSDNJsa1PNU1Hr1wvvHyNy2e1djZBDO0+irWnDViDp/2lFamMbd3Wx4VRq1iTD6mUmSWKTf5skrXk8v9T0zZYaW2yB2D2lE34wnSBVlQF7Ukpl3UK4sXXikWJ0dymlWjxWRilgRAvkQusiPLmnyiha9lw+AYHB/Hq97wH//nJT/qye3B4Cpv7u5nFagwnhiaxvzWDwb7jFhDKsCMlABKrq3RqjlVZxtoYNZOpOr8MRGXTCpASRzabZeAsvuvzVNLcQhF3P7bP/bZekd3LRQYIz91xOtpzrFwpu21Vm1bCuDDf+SuDK36eGTvErFQLWNx6bQhYAsRmn5YEcWska5bbftzuJo9GHoijkjx7KRZv2zX1xYGa3aOoBWASANqQNYue9iaKN8ZYWrnf8Ax7DFVny/hjmDoKLTKr1RPf+jr23fRznP+OP8bG53OAdSEDVj/H8YfuczkbOrtw1uvegr7TtlrWv9HdT+Po/Xdj+OH7I3XU84xTLnO6eGlkWpa3//TnfDVzE6cpbik518elVn/cyYcYruNMonre6tt8Yc15OfLzpzeFR6Wy/wbfb+pLES6XGA41nsaWZSJTeyNK3nLdU5AYbViVThLwm3UwpxHljuwx1JQHMZzHJRW4yXDTJIu7DeyF6iIvT6Fd56yw3H9WSuEPK5YYwHGsRpY7xju39lJq7rblOOvELEAll5FbxZi1Bi2NNg+3QPH4AgNIsiw7U+88m/MmR/Z76Ng41rRlJcFU+htC1HfiZuXxUGk9lTwFSetznMn27X/6p2jr7vFlc2RmHicY4MgxMMitTIUK31XePs/m864LL8cAUs65zmu/vsMJb2ttxW8L3fXYHgtQ8W/+cdcft1LxOjv77B1Y3WG/9ae6/tT2CXhvQcpbs4q1VKWB7RC73xOnTRHJbZsS7dCxLMmPRMJdaKWlXp7Km4HiV2oOrpVKcgM7jNbPIp1BIiLRvXhJD7SOlc5uktFjhtbyEY/8YysHV3f89V/iyW9/3cr/zFe/nh1vsMAUp46Lr8BkKocHv/3fePDr/4nRsXE073oeeq95OUguj99GcoyY8UkfroWQJLdATV0vBU9GYdzLwbVUYKh+Pz0JkJJ/6yF/Z1EBRfCkQrWDxJSvxsk8UcAuunVRY9663PggJoiiBqv6Bph4aWTwGthWYmeZtH0Tw5WBmwa9/Ud8i9Ot8ypFR3+7/dYUkUCtxZeB33LoXDIwVjt0BLWhIXt9DAMTrktvjn9vpeoCJgVMcSmWyyzjiLXDf/LL+/DSSzcr+gIRtaQ0H6IGuwWh0mRrh0maOJOtoyo7b2UA5y3/50+N2d15cFgBTLNFG1TlJZDEw/MmAKUdeedoZC5Ukvpf3klHohvvfdJ+4w+wdlOfKNi7xp955jb0NtuWxFIb30NLWMrFmGA/AunfAOTXWWktlfe4BMhrpARYotJ6N+GarcnxTpxMVB6XDEMKlVza9roq6qhIUaILrKxeb/b6dEjLc/WMGl9RZzxi7VGlqBQqP2p8V+n4Q/fj4X/5ouUaHDjnAuz68Mex7tpXYL6pBUfuvRMjd9+GsYfuxdB3vobDv/gJFpvb0HDZ8+0xIIBIzLzD45LXqwXUEZOCoEQwOCAGjnomnSC59ZGwRix9Moybn5oPMYaHkaHXJiJ/jkETNNVi5Cvq4w3LwzQVx9FfbiMkZpqgzksMss05Bsv0gIXZKqe/QRT/riYbwuR0kqWQiDAgGpzpOUYPJPLkEfaWUa1mslAC7a05ZdKyiE2c7W1NNg+fxKxv+tnvy9BaGRiZ0PQg1m7pdHwS6fYWpNavY5Yu5ymVrxviabubnTDiB1b8aG3x6oj951aqyakT1uv6al5R94WGVDN1DGEeOLOX0lAJG0r9RFhNGNMbmAtwy86dPokHJ6ZxZHretk4xixW3VtFUzgVZ+QDwZAJV2ZwNzrIhE9Fvmk6OT+OJfUfdbRT4W38L7OAbfm4aIGjOO64/a38qtW6JEiLFVUrWWqrSim0or9juAiUPGFGfpUkGV/w85bzN5wKxIMDhDAyUUl/DUbdN8B4sjhWfwZrmIEshCc4nigcEyd8EJK6uoeWMJBozLJgWJ8fx9Hf/B3f/7cet884ztqI6N43q2AmFr7znKSzef5v1tm964xaDJGI4i9KHxggx5WNOFwmqTNOjHBc+Kf120fLpGnfCl3nrafBLrUd5Qozac8jL0wQ6RRMi0N9OkwGVaE4pKSxpGYJgnK4nYvDpvEuLUy1GUWAu6NdUK8QgJ0wrbwCNU1tRMsPJK62p/dR8lioVYPm+nZaxrUvUqSrbEuDkwD19xRGQ0QkQvtMCXzc1Pw9SYkd/D2hHJ4T5pzY6jtrhE6Aj88BM2f5UjWX9SqmAqq3VdisKsMVOvvj/foU3P/8cK2hNT8QrgEpVSChWqwginXiLnqUw2JOXu1BdrOVh13xR9h9+9M+NWX7r4adtK5NjlZpeyGhgKWe8FuDKcgVa1q6ste7qt4luuv8p65vRAlSdZO5OXm/8rb/BzrLFU25Zy1zAzU6Vq5Ypr216bSw7ss/aeZ1bqQTY0V8UsNNA2zaBuG8I2nz2HwHI1N4rkdOO5WYu1hhS4gE1y0pVm0dzdhLtmQYgWGLdROqVRO1veMbfO8ufc7ywaBmFyQnc87efwIGbb0Btfhq0VPJxVo8Oobz3KaR6GNhu0zfwXZ7ajKe9mSsSVCWrmjAgUO+gLsutXwZdthsfL41snFbDk0yAy9Xd6pXklVdeAxbclEwgqt4yEMO5qf6TgFuVzINIsjbhQQ4dUFHpNyytnH94+/Kv+YrbL0id/DDmJgPLWlVdqC7ndXJswS/EeuPMAz32JpbeOfJ8ce84MHkAGB0C5ifsvMSbalUWf+IEUoVFpBuzSNXmQArTzkhGVDXyzFLGrFQQoI39/+r370EHQ2/rBvju7FUkndzEpwcdcf76cVCi+FSNCqKkt81ETTrg6qqXvASnMzCh08T8Ih4aOuGCpipyqNBsoGUqr62f4paprLOI/beNfnXfk9Y6Knt/KoKZYhldXV04f+dp2LLCfqO07Lz157Vcrx5Vuz+1d08//jQDVLusb/zZfB6wca1WAJSNP601U471UAuHw6ugZp2MhhouM40smtn9KqDI2ulQ8Q6c0dYTJCVQvgCUYTyCr15Src2njmis8Yc9J+152rJU0Yyp3RJUDh1AbWoMqb5eX5yZwvI013k4BXPU1dPMwIAEcAbF/WbIm4jkp5t4N9ajJGBKBXBUO5LlU2+9+S0ZJh4zEACS14+eU71ygvhVsEaN4C1IXpz8SAC/Hq9q5A8LAmnEJzU+sA7INWBs10FXtGXSfK2DRb1konVRZ6NDL40n4bGnxuHPkqXMONsfSBYrG2TZ+5rp7jtSLttP0xMTqB08aE+W2ZyUDr40DE2A8k1BXXnA0LEJ/OSGB/Cxt13DwBlzF5IqDo8tIi5J2EwKcGpKvDHm3FzBq7o/qTBaKJYQTlnmznjXX/yFMd9vPvA4m5jhgqa5UlYCUnmjpcoCU+z4bQRTnG5mVqrRyVlrHRW3Vo0uFlFggHnt2rUYaLM/UcMXp9ecb/1x0rdP0Klhzx3W9glla3E6oBtJxXo2ed2bALhUxEOyYAGalUojAq8dS1pZfQL82955BuDX4cjCgxgt34YLOnvQlM66fIpqCCYVQCKUkyYGFcTG9pBcoCHyzUSXiV/iKJaQLtaQa+kwM1SrzEo9hmxjK4j1lYX4sqP0MWtNIq49SsXPKjgsmOI0hN80JdUpPr/X9esp+XLopeZMA+ODGggJzU0eOJZOxHCE8ejhQHidRdVn1DBlKjExpkwGmHUZUWWQyx9dJg/ukIgUonxRQ4g6jXmHAFumb//ZcXOzRZw8aQAtbNKnEoASbwBaOYmF7QTSZ2WYderkCFLMFZBubwfhVit31nQO6ZQ2NYLyndYFH/tz+Pgk3vHBr+Fzf3qOq8bjR6YglzSyBwoGxw3ovS0loh3rlFRZRLvTvJTW1lpicgfcRdHPufZabLvwQl+2C2yCuenJPa4Filur+GEDqazv7b7fZjAl6Fs33OstUGe/Q7OL1u287LLLcNEWW/dyx1YXUHh1KPcf0RoJcsefYbclgyKzUslv4/nBkY1oCVVtJjLIcklYriR5PjAk8lHCbCsX/22gHdjZugbndfRZgMrEH0Vii4alEQ0Mt2rR+l4h6qQkpYlJDDTlCim05geQbe02stTGx9CS7UNDW5xNbKNhazhn/MpJ6UlMz9oinMZQaPkobLKNJuF+W36rSXB+UrdNcAtEPrGcD0qOugx50tOH8vhlMfPRUA5i+CU+/cxxJlnR+poBIyLTxScKs85h3yxEaBx8usbVI1ka1VIaVdfBwMrjMZ17T7f+zT9tnYulCg7vM2zaxycpvm+U0VqlHgJYpbKsRfPtFXw8UtpUGpSvoWpvsxewO3kdHZ7E+z72Hfzrh9+AtSucNxKrOTxxeNagdQhZN5W41UAc9GT/UA/jiaoihnJDTMTUtXKIvZD4/lPvDrBW/fTXT6NMqQWiVGuVZ6n6bXXz6XQLs1KNTc5YOzXxXdRnyhUUmZVq+/azcPG2TusFAsqsVNZ6KiWlN0vJ4aniguX2W9zxCtAGZ42NoUnL66kEoHdNhxLYce+ntNeYi7lUiQgi+cGrQv18ySzINAZPFJGQ8Kg9qsL0iJJvkhI9vvPo0tgJNGd7MLDpcqQyOR8DrVbQUGtEc8sqQx4GgRFaBSqSME1KTho0vCYDsMkgRbicelMS9yw5oEjCr6ZMbsXT9awnV3VhuQfsksgkCThMLiU1LxVUBE/K9RA16GMGdSZS7y+NwRMsJ164Z9VJSlFliaZ4oM6cD42ZxtpSwdrMEMb4dZkqDhwt+qRZVqR8ztsWQT+sSQ8SsErZB+DnZbJoSzNob7f3uRrnePCxw3jHh/4HX/iT52PtAN//JuOIIPjKbQa9AkmAPKpVEnHl2ZYpO0JpRdRfu966IFuGWNNz+TXXYMfFF/tyny8Ucf1DTzrWqDyz3eVRqtmWqv8/WKZk+s6N99lWqpS9QP3gNF97R3HGGWfg/M32/SlZVqqgBeL2aMtjU8VF5va7jVmoLkW1uc+OE4BIWhfltUjiAgi7eXm77xFpTRVB0OOMAYBpJN78E9pXxKafTkMIe5lQP7MvKZZgRookLrnm7lMVRksfv2PLZ7oUZkZQnhpFe8sa9K+9ROO1lc3UsmhpXmmWgSRzclDZaMJwzf1HsBxwKGpCSiInOXnWqTigYukTvuiy8eot6AkkagLXgYNthTPBV3X7uqQUnEa2fhGt3uT1W9QgbXmHAy+vePdXrz9VTjAFP7lQ6TxYvsdDDFLj6V+HestA0YBKBRYkgPfw+AL6WijmR4Ywt+CU2MJHrE7SKZBsBqSxwf5lgMkKNwIrCb/I8fy7fxxM9XQ5n7ZJOXkQa6fuz3/lDnz53+/ANz75GgwOCBn24vQHRxsxvPUytJ9/DtJ8M1HEaRFUnEBeRyNzyHKI88dZTqVO4laYVCfOhJ5i1rYPf+5zPsm8ZD+599eYmis4Lr8sphYzWKb9m39jdNsDTzMr1azlAuWaTxXKmCyWsWrVIC7ZuRYDnRnrbb9KyzrIj2fSEnPpmlnujjyK0qpzLFBl9TVRl7IbT0YLRLrPymDlACrnviobfxKt/RMpOTG0G2mLBgpvcwX7lsfpuFqPImboZqbkA4O18WfIru0qmWFucqKxsjlx4C7UKhX0r7kE/dY9VimX77DeEjYmrouWLsvn/tMngOCneZ17uaheQADQRCBJmxzqIuX9kkhe/3mccvrvQrgFghjO4+hFQmSJfMVAoaaVnwJVfrUDUiVODY8DMqgGqJZ+98JC4rSfeEQjruOlqo9NrV9OJr1VYBhdMvWO07A3h2oZbO8p4+CeKqbnCPf3sJGQgYEGvnt6noGhBqCLues6mduupcmyXlmAKyXAk2Oh4pMdt0gxSw3fzJMyFx/tcSxTqbSkEsFjz55k7r7rMdA8hX//0MvQ2tzgzbH8W4IMWP3BFx7C4tBhNK5Zjd5rno+WraeHbiZoieZbPLjbKvitCWLnbs/NJ1yDXpUJYCWnV1oduzj7wgvx4te9zg3j0Ik7PyqlEv7jF7fblileF0yX6fjr7H8r6Hs33WctTLd2UGfH4dki8qksLjj/Ajxnhw1uSx1nWL/+dYdUCc/ydVTZZpT4B5MB6R4HOJjEm35EvIUJnyVLAVaA5/7TRAkZfoxEXfeuy0fkcQtmIBZKpv4V/BBXD9nfU44z5iQddevTR1C1sog9j/w3xheOsL66Hd2nXYlMi73GqnXwLJSbcxgbexImHcMfDoN0DbQXxpaViWaJI5RiqZW3VKJahcRJYVM9eqtgIS5vcvmejvHzoYbzpXQE4j5nqaHqGy/ECMrCAYUpjijpPf3jDCtUSxXVLuvdLK+euKBubr5vMfIQbiiit5VgMm3xYcoj3uBqS5QnEJ3aG7MWqKKkgrPaKZ4eKmO21IXVG9lTcYoDGH7w5zp2neMfAC4B/E2/ctXad4rUxHYNBCDRmj97YBLf/NHjKE5P4hO/uxMrVo9b+12BNjAdCg7oyeLLN+7DwaFxgB1zTz2L1rO3ofmM09CwdjXmnt5tgS1jaQm8zbER8PhCPFeeXE+WpcpxEcotlUgsAoBxV96f/cMXcOfPfobF6Wlk03y9VQoZFn7vU0/jiYNHsWPjaiuPmQVez94Sst9muuHORzFuWansehheLGOxksLgykG86LJ12LCCuTUbelF1rFQqhFLHmMzJvUjPjmPhnNdKyIa4gIrKYMlkcZItUxKv/N1GW66hz1BhgYLRiuS+SSfhbyrlb38XUOQY3deS7HZA6rFgWfrVlmExfIDwWGFBRFAuTOP4Yz9E40ZmVe5fgeb+fjd2bOYAZoef8aWpZ3RfLgrcDS7cQqVzLYf69clQ3X1x5KjTbjIiWt7xeaPD5Tj3Ocm9ii9LpJMhT9x08fORaxwwPRuY6thU9961V3qdzyQnvLsGDIcB8qJ0XCpRTbaptZJYEsJly1SfJc+bXuKk9mYNkxbTbNIcGlvAGr6UiVmetq48jqlUBxaG16JpgA09Kf7qvNh8s8Cu55ilih2Zgi2Ig6uarIo/l0KxigcfG8WDjx9HcWIKr9zehm1nMmvWfINllaJg4Ax5N9mREy34yNcecdNXFxYwdc8DaFy7hlmrTkP7eWez3y0s7EFgpqKUlDioyth7xORqz7RumPJhZar2DyItUhfX4nMk3cwK95b3vhf/+TefZsa9lL2vqWP1+PqNt2DHu95s6VFjf6cYsOpqORUT4vLR6MQMbrzjERdQcSx9Yp5aVqpzLz4fV5/fafEVe86D3JpMI09m8gQyU8NY2Pla5ipsUPacEiDKHQX1PagkEAUtFx0gqQBLSWCD4FTEWOFEuWAN4hwxSB3DaejjqRwaBCjC+7S9+We0/HA5pjhzGEUy0FMtzLEHoDtA2rvRuHodso2NmDtxArXhocA0ydGJf5yuh5Zhi93lnHySEVUm3bhP+kufMOsDU1GkA6q4t9VUnqDGUQ/IgE87GKXbdhBqTBkNkISEqK7gQRIdPJplyumIq2UUSIlTHwQ0drclhnOq6aVLiaoLEsC7NFIlRQ2ggLfxp5n3m/cO4UObxGc5sujoLDK7PUtD+FuBO+GVnC8aH4a1rTr3D+Ud607ZqSdnIiwxnDM+WcHQ8UXsOzSNocMTOKe3hFedPYuVWb6xIneUjdpYRYAqa7LN4PDoAq77+MO+cvD7uMCsU/xoZNaqFma16r7qCjTcsgd4wv5sDpX+euk8UnutBJWdCTklvfmnT6oCCLj8zvUb3/9+/OBfv4x5Zq2yN6Cw2+4T+4dw79N7ccmZW6zr2YLtSc3/9nyBxkc//OUDGJ+atdebMDBybJbBQWY1XLt+JS4/pxddrRmUO7cyw2az1B9kG7l9llqYRmb8MBbPeR3DzPYbYSkZ/DgkgJTivtNArntPHOAjuwJ9PU57DlS/DajGKZvhsutyzQFF1M7LayL+/mIe/XVALiu0HP3esaxRXf7yjCkmSjZLSg+j08w6OS3vf0djpEqaTxxgGEw+UBU8pUQN7MtJ4ROb+jRNIvnjyg0n0dTDZCxFNtXyCeMNu9bDll4v5iblBxXqxJNCOCgw5RLOq072cfhVoEo1OeZhioTq6LU4ue3V265M99rfFgKSSWR6EjSTXCem8prAQxjJk5FcP4K+ec9hfOhNW2wfBj8q3CLF3HzkUdigii8KYtYpDLCDubTQZ13XyuOYmZvA9DRzES0WMDVbwcRUAYszM2hOj6G7toDndhXQv20a1Yk2pNtToIuOC4OmIGETS5+hkSJe8pe3W8AqjBaHjqA0Os6A1RY0NzWq5STKlbo2ikpAX7ZueEH2qaOPsimo25SkFs7C2zo68PaP/jn+4YP/x4oXi7A561d+/EucvWk9mhtzVuIpVo392WRTyG+K7nroGdzz8DPWOiquYbnG9C1k0JjPYMd5m/Hii3utLRRK7VuhjukeoLIA5cIUMiMHsbDjVWzmynv1KC0qly1SNap9FkiyJoq0Yud7ZXRRXIKOPLlA7tDjuHo1shd+U5ev6rxZlyJJrMfSOOAUy0/Lc7+tl558ltRgbv0q+GHQzy/naZ7ppPRqFSQeYZevN4RJIr74VDSLCD2VlFR+HGARJ13cNPKbdssFqAigTfpqPkH8yRt+tA7hQMYEZlRApU3C1uiftEnH4Y8GUuHpwoFT0FuMOgf16bI8/cPO1/z0Gk4Ece6lnka8QRosL5pM6z3k+js8No9/+dmoA6iYS67ILFSLDAHU+Ft4fPNN/m2vPQ73reyYZomZxaqwG9niAppLT6OnfBxb0vvxnIH7cd3KIVy1bgg7uufQ28CsHSnnO2s1+6PMttZVe5KoWcu78eRIAa/6cgGHR+Z9ZTTVN3cJTj/8KOae2aPwe28Z2RMQlcxO9uRNXeBjh8GdwKWZ3Os5RJVnyyCuBYVP2K95zx/jtB073M+58BjudTo5MY4f33kfRKGLFWIdv23E3/T78c0PuN/34/tSHZ/NIpvKo3/tCrzqqtXobs+hMHAF/I9K3udoOKBKz0xg8azfYRYqx51LnTgtnb4uyg+s1DC5qcvbKlj17SBh6jMciYmfGNciKe3KybNGg3q4njZuYNK5KGDcY3rVatQw7pEEspEoz7CZDoEpkuSdtG5g1IdG5uHnSOkCzMjzVFL8G0cTV2y0zHB+b5KN5k0iV5AHpsRVcBpqSB/GH4fCG7YHHuRhCzCXIYItlEgEsxhixUCWFLB5pFqp/GCkfslJKbjTJ9NhKQPN0ktrwRIaBEHt42+/PYInhiYZvmHDTbHAN10CZjjAOQkLWFH+JXrmZqMH2e8YA0OjSJX3oJmMoid3FB3ZWbRmyshlFkSmHpiqOkMYB1XpsrpAmbn//vVnh/Gi/z6Mo9OVAA3jk2udlDYA9eoBEFYSa7J39XCuHYuU/P05WyhV3hADcbSi3tP8+//v37lgLeUALx7+4zvuw+jUjNs7JuZT8YwNv0H60td/hsmpORdUTReyqNTyaGpsxEtfshWX7uixdk63P5osxhK1l2bGDoGUqiiedjUgzwAE6ht/svuPEAVg6TdMtRR6e1ZJom3A5MhW0kp5QksnZFMRrQAwuHtkpbu7QBobYSJTjz7V97VGlcWLiWj5VSPLKng5Rrkk8SlT1G+mX+oTaRLkmgRgJOETvMSX09LJDxzkvaaCLQam86h8okkFFf44GlUPxIknJKLhJHsagQHoKPfbGnPrA5bSNIc49UR9B4GsZXTe0Zwqn5eOhrHKl+mUjyF+jevtMYgnogw0vPVOLZTwhr9jrjfmgqMVZqEqMOvUDHP5FTmgmmHePr6Watj2BFaYVWuhzHf+47smMgsU/05gRdGDVjLOZMnLX/NPhqwkR8YKeMnH9+PPvro/sF1GP4XqQcT01CnEeXdR/JEXoYtwl0e4jsQEQr1Pp1DRrexWt/Pyy3EOOyDJ5wBlsVDAf1x/s9stqsytNlv87XkN8PqbH8Sx4+MOoOL6pRmoakIDszRtuWgdXnnlIDMmdjBQxbdQoIZnMmbZmjiCalM/SmsusMOI1wfhe8PPrjvFJUvljViJem0AVMTdXwquS8zXThxw7PKoUW46S7zvLV37N93ViaYLzkN2Vdhu4E5rDkVUwX0zek7xOCmlODVv/wXlGTNZnUmDKVldkpC4IPLtU/WbIRIQZlbcDzqWvaaNcqMHXXFE1Z4fHETXdxy5Jn3CLU9eXfoNsJ4lMKxxSWmIxmHEyCSGzrqW8i+BDjiCRRLt1xwbTSTgEHVkqmWDnoHy9HQy0XCdtMpv3roBzds3IdWUd9MTX97hsqmB0x9iLoNdF9SYRg49PDqPyz9wM775y2H+qpHtCpyfBcrMalVgQKvKzueZJWqWuf8W+dYKKWtdCkXGwSa83tOuxYemKmpNVxnQylQxvVDBZ75RwM4/vR93PzMJM5nbuKkMkEujNE19FyVp8nQaCAl640y6h8JF6JiiPIGSBYtffvRfvqICM+eh5v7Hn8TTB4+5RZovpRl4wf863XL34/jZrx50v+9HaAojc22W2y/f34Lfe8UW9PR2odhn7x7v2d+oe56eOoHKinPYsd1bM0Wp6t4DJGuSjWxNb/E5mXh1KuTZge5idvvWOmH8mih3V4hx5ep52apIsIh6wIhK7r/q+IT1m9++FU1XXIZUWyvM5NWLmYL7dHALJz5mSoN2VI8/ap4SqhuYhNdAcJqgkLBxWY3LyNnXrX8iSlZQWkeapPnZ5fd3nvgy4w7Qp8K1o0+aSYChzBOVlzv6O2eaZPFEZnCNmGUFhZFAHu8ZMk59yy1abd3BbT1uL1BrIG4L867itRdqCnMtH05sLmPdkaYz1qMyPo3i8THQUgWru5vR3pS19opa091k/bY357B9sN3a6uCJo9O4a88Ynjw87eRFlTzr63H6vRMty76emi/hXZ9/FHc9VcCH3tyPtS3MNFVqZPougpS5666ZWa9YGPsV21NZQxSzVFFk2QRddSTy9VM1F3zwf/c8s4gbHpvFN++axsyC+i1Ce8LQkUbS0c4ugzeHUvkCyqJ1ra+IEPFGmvU6OSWS4Uu1WLnyvAJgxdq1ePW7/wg/+JcvOU/C4u01gm/+4hZ82tligSefKWTQ2WRyd/5m6Chrg9/92V22q9Ip49RCC4PEDUi1p/Ga152BC7f1otB3ibVAXbxJK0qc4uvuqgTlleeDZhvgWfyIBipFE5AAEfVmM/WeUHuIksK8NwNlq5MOgKkU5ycStqaKil8KGcNxqk1MYfH2u5DbtAF5djRdfCHKx06gtP8A6OKiMmLUZ0FKBsT8WyrUKzteGrV36LJoULJYshMkTEBBuvrj3Lf/gicZEVvfMGuWlzRNvUN9nOnO2wigPkAVh7yhMx7FATjB4WYrCo1MF00hfGLAEudx0tRFwaArmNc+92pgaR1OhpbJdJAlBMX5w6kvc6ktsQH3gsE8rrlkJS7e0oHB9hza8mk8tucIpkZncfutT6GDAZCXXroD61b22O2dOHmw/08cGcO/3HgI37jzQEzdZB2dCYOGPcX5oe03btqNH+yexmtemMbzT+vGiy5otWMtS0SJAUcGrlDx0gkAJVzOtRSzSjFguK+AX/xqDnc9MYm7984reSra05BBOylRuBs36pOvN5kDrgbE2wzUewNQLJJ2/kj9RgUCgLxW6K1/9lHc9I2vW29AigmJu9WePjCEn9/za1x76TlWBoUKQYmBklx6OSeVeHT0xDi+8B8/sd7048R/ZhZbUSi3IZMj2HReF17/wk0od+0AZa4/0UJSor7KJVSaVzFc3QMHzTh1JR7a4MiVAK3zmyLSd/0EmoPGr1kO3XNhkRLuPyfIBVQyxlXwrr9tuY9bhMP/FAo1SR5VH8lK+/ajcuy4Ba6yq1Yg092J8tHjFrj6TZFbRqmKo0fXpGOoCfQEUbBss240VFJc2UmBaFB8hoYKF0WIM4FFUXIZKtRZXkAllyze4vd680+6zVlUYwsnGpimHkAVHMeftKmYGeRPd7iD2XKVWeWy56H62qOYbqPfv4kjx3zlhZmeXuOkMQMqk8RLz1mJj7x/Oy4+rQP6Pj07tq21fq94zjYMHRnFpz73I2SLBXzk97dhzcom+z6lmOWqoxVfOm0Xdm1fgc987zEcHplD+ABCfLrFBWBU4uVX37nrAP7rX25Fe1sDtp/2NHbt6MD2DczC1rqItnQF7S3zlhtwemYSQ8fSzLVXxJN7h/Dk0DyztC2w62pgbsq1lb06jtTVBpSboJVecvV5cyqV/toASHlrDN5nbIgyzHqyxITHz1va2vCWj3wUX/7Ih+xv5xFv0fu3b7wFzzn3TDQ3NVjCZotZdDeV8Jskvlv6V/7nBhQKRfcNxmKlkXlzO5DNpJDZksIHfm+ntTC90rYZ8ihMKmVU08xq2THIZqUGF0x5bYZK4JMqv/JO5Ur9y/dLjE1E3auKAsq5SwTO23qA8hDDLyVgpwMuoYe4z9YCcJryqy3d6xqzTBWeeAqZkyPInb4FuY3rGcBaidKze1AZGYF4eDllZL395y1Ujze6JtXHP4LFA29+KVFyl5qHLjn6IVoNz8QVuTRKlj4YGCxfft4EeypIDNzeeRz+enni4fQk9zEunwSolniP48Iq8eIvCUhRHwQnAecIzEOvWTkl1Wxi8MXH0cOfp2Bpa83hw7+/E+94zXZ4BpHgtGtX9+Lfv/AH+MrXb8NrP3oP/uSN1+AVV51nR+ZS1n6Zr3vRVlx69iq8+C9+jsMn50L0k8smJn3XVxeiPdHOvbDpmQLuenDIOlR60pC/kBL+OKhwx5qQVJ2M5DwsuKVXGoHcJsWk7czjFkiyRRP7j5ujK0eylrjGKkqVtUSc95XvfDfu+/nP8Pjdd8JlJnw52iK++8s78daXXW0FVWoEC5U0mjJV/CaIb+z5j8xCZb3pl7Jrgr/lN1foRT6dQWotxd9+6DJ0bzwPlQ6xH5VT6wxMVRr6meWqBfLmpzpIFZY9v6tVOnMXr3ty7DsrvtVHXWAlyAVXUPumDLh8pFm41CiigGf79lO4lsiAtlsZGbWO7JrVyK5bg/zZ25E5foLN0mF7dAfLS5LGNlR5Zgy5p8WVcUqI6pckwazt6Rhv9qPGq7hoQqRIxc0gORHpiE/Uly5Z+uUFDknKoPLFq73kcmUSkDdemrh5xSP321XEoFSEvjQyT/nee4duGaGGI0iiqkWc+6rrAMSpU6qcUSW9WnaC+Hp4PKsHWnD9P70Q73j1mTaYoTHf3GHJ3/6mK/EfX/59/MP3bsdXfnofQ2fMYtXcCLQyd1t7M9Zs6MVP//alWDvQDrW+5TJpbTw0b718UnoHNJjTIDRcfVhRf9Uad/ipX0Y95JXCtk7I6rv7H7nnUBdXC0UkQOWbYIV1RoAJaSEOcdYn8fg3fvjP3C0KvL2rCG646wE8c/AoRL+cL/NF/ksrcxw6xlx+n/3S9zA1Pet+LJnWsphd6EOW5FHsKuPP//QCdG86lwGqM7yEqSyqzNVXbWHuvnyrUwV2eyJU3mfKZrerxKtbUSeiYykLx2WzkFggLrv54B837I8KQ7Faye5AuCnhWhZNtWtbfex2QtRkjqJ6CjWgfPgIFh98GBUGqNIrBpDioCqwewf3+7geEnfNIVV7lkm3eBQ3TfAMpnQUX5rktJReQKW/cSSlwsTEFbJcRH1npwJQqZPc0mTJJE+i0XmrYUG84bnFkx+HSMA5onVw3IDeSgIz0AjW1zunoQBGTRM2YFBjHUfJBYImav1cmwrhgT77lxjAEnXD49SFmWxAdTW2b+oAX8lNxIQRxxLDWdIpnH76Snzhc6/Ht278NX542yMMTPHPxowzcMWeiFsPYM26NK7//MuZC64BcdpTshYn10cUGDMVIIpPnTDdVJQaZBCD/PC2Qd2J1P9+pQymRDZKmAiR51Rh3bJNIi7w8r/6L/Gzix27LsPzX/t6V2RKIAvWJr77i1s88McUni2f2m/XPPDIbvzTf/4ExWLJBXo1msXM4kpkSBMK7QV86uMXY/1ZuxigOtPRmdVlvgu1ljXMStXga0MmYESkX+UuUQkaCQDrAFJ5ewRIrlRK1WnS4/EAlfvrnOs33A7y3hpUVIL3WRq5GEK+25DU3FUZiwUUnnwaC3fdg+rMLGqzs0hKYd9V0KlGl7Yoov60JFpirAEm7pgRxBtXfnRJU14C0/BYT+bJ09mNN77S5vziAqo4udRb6VE7oqu84bIQyGOa0OsDoHKdx2jcIkRCFdY+LFRMNMS6loa5EF1lkELc2CANqMhXS2k+AHO9mPLRB7eo+xJd17I1Sp/go9td8ID7339zBdb0N1ujNOVPwzX76dJ6ql9k4Ii5Dgh7yuUHhk+CzNmLt61Jxv4iL5BNY+e56/C+970QP/zFIxgaZrwNzP/XvBLo3An0rWbAqgcfetvFCgQMArF1729jtFSJhmW6D3H6i3pFA2L8U6pfhp+o+qNPphK4FRYlV7JkkdKNU8IgRaT1QR6mcMI0MMHj3/npz6Clvd0NSzmZPnNgCDfd+4grt1RLo1w7NXtX/eLWh/DNH9xqAyrYk0mNufxmF1Yya1Uj5loW8ImPX4QNZ19qraOyim6BqfWosV/5QcMqF4gKUIn09qSwQgV0JleKax2Eux2Cz90HTYzDD7NoS455SwzjpdusxVuNVbkhEuLsXaUD/ID+xcDV4n0PoLh7D5JS8IMn0fhgb1+iNvElUNKHJVKfuORMEbykjjR+SkUPJqeWqOEsGSXX/9QAqqj46Ck1zmRNE/AH51EPwJOuxcOWxmNbBUyyg/MQA48gYfGSDynS+VnKPV/ap1moo2M9FK2Dqo88lX7oLduxfWOHPWLXqGelmi+CDDEAtW8/yIlhYHIKmJgEYaAK+/aBPP0MMD5hi+HAivtnUhlcd9152Lb9NHzp3w4CmYvYsZXFrQLyPUBHJ975xgtx6Xlrwd/LEkuGA+udJgNBwaBGyNHPCZKMD7I2Ii9qBHDybzQRsV2IY9ZQpkXhlrKyo8q5vZmn56ryQJcHAIQMKllbBLhwJ37Bz6i5vQNv+OBHFFgizr5zwy1Y4CDb0Wm+msdy0mKhiP/4xo246ZaHIXZ550e52ojphVUWoJpunMUnPnUZNpx/DcrtZ1gWqUrrWtQautkQkfLXOtV6u3Pp3kcPqdg/AozqwAsCkEliFKuTIl6Ko4q1RrZYqeQiXtdNq4Jru2V4a5QI38MW+kJ4smzz7tKBAOeyF9RjmShoLKUBvMuR33KEm+NIZBqVpEcYfQqrt7BJ0ynPYIg7uXn84US1PJYfUOl5meTJE0R9edOE/PHqNe5k5aWXpgspzp1nfOFRJAYeH4AKUiMmmYDZ8jyB1Q+oknZOwbltUycDVWc6iz6ElYoN6ONzIEeY225uAn7zhyOhVAYOHwZOnLTcf0inYb+fkscrXsFcMhXgxhsfg/0h4252tAE5Bt4amvChd18pqRv1aoDQOFk7Vh+q9HaVZDzyP3275zQqDTGkis5NTi3cQfq6FBsUURc8yVYoea0QJH5oE7VrpZFABD9e9o53YeP27UoYP1tYXMC/f+8XDsDgTYVg0foO4tJJrJ966plDluy0s66rUG5hLr9B5vLLYbFjDp//4ouw/uJXoNJ+urVuqtY8CJLKurvFe3XkgUi3/NQDTe7IKdZX8fOQhePWd+xkQCRZmWxgQ13gKvvl9DGCaGuvTPkpN05KX6uJVMTbvk/kL6xoiceRBIOflIaGxMlENVBLQ3jjUdx5pf4xNYkO9eZQT8lT5izrEZWM7KpMPpjZlGRiiugcEmd9FLbDtviNMyFQLZ1H/gaeRNcotB4O9IKgNtHXBSQBVAQhxQjRl0bICpUbpVASPhISZlaCBMqSz9UCiqv//sQlsLbJdlx+hK+nmlhgFilmlaoV5BlcGuiJCq5OMlDFLVmEd3kOrLLYtGkjLr/8XPz614+jUOAf5+VvlN3DZP6KZf44Lr1oPS49f52ij9h1n8KoslaeYLInmaitv+V+EZeIMUhb7hQ/rRTnwiXiB+vewmWivv1Fna0PHEuVbInyfqEsahcmFRekUUczxU1l8779U3/jgg5xu/nxwGNP4NkDR2yAxo5SLWOBq6XQDbc8hM/+83cxNT0H7zuEwGyxA7OL/ZZOdOUCPv33r0Dvzpc7gIq5ldONcjVCB1EyYJIXpgt28evWkWydkvSzH+yIcq0CK3Uu8L6OIECX/ce23NAAa5X8bq/AZUTVl3ig2XL1EeqyeCtP492LpcOCMHIRvvtBZS1mGWl55ngSyk+M3BSnojwyqWVLmZ8Q66Wkk708NCXNN5hfH/yjb2c9eWuTi1GLOHJM53LHV/OMq1s0meCSfjiThEEnCkRPqCRAdGIiCJQXxm8gtW0IF1tYej0zXQkYfqNIdHY9fz8Qe+3V67Cmv9GbdPhT8FzV/j4eLXijuOTy8IGrlHPOXYIjo7BBFbdWNeC8885DLpdjwIoDHP7B2pcx/pcCjZeDVsr48DsuASLqKBocGVJR6mtXESlc3mAeMaZo+tI6131pOfiBDXz5uKBBpFNnX8ifnvFAAlygIa+pct1brky7fHLL237JZXjJH7zTCSNOU7DTfOU7P0WhaO9VxV1ui7QB9RDf0JNvl3DjrQ9Zm3Rah6U6//RMHxaKnSjTCtZcksLffvkd6Lngzfb3/HItUpmlepStUqYwF5B64AtufXpbIxDhUpNArOvCU6xTDg8k9x4kMAUByOADy0KUF2aXX7QyYn+Dx9XPzdsFw8QFyV5+siZK6UJCwga84LhYIxKFZ0Vzx6Y4ksL6JgnlTUREziNMTvDo4B9j4ulDDWfmHLzfVHSCJBRfDvFN6PFTRnMk8ViLKo/iUc+Db598RJE6AfiBFBLIApI3lHBdfSBKSuWeyKORSSTRA7WDkIBEJt2MwmOQDKL8JKYpatQhqnWQiDj1/oYR1c758eE3ngHiuP3guP1QZq6cyrSXB5Hq0TVXSOeQrkeYtarCJ1re9XMYHNyM0047DcePcxdiA7wVATULjO3aMYD2tnyIzsnGDvGcbp1TtSUmJ1PblfuzuK/JdrcxkZiYIf36WiuR97DSxiDivd0np/WiiZ6ZzuACJsEvzl/zfz6M5rZ2K2FK0mV0bBw33vGA2wyqDEhXwrYm1GihUMTPmXXq/37pu9h/6DhrDgxOpGyAVKjkcGKmjxlQmzFVnsc1v7cFH/mnLyJ/5u+ilu90rHVwNwGVQY5sfVN7t1Q2eGVNCWueVl/CihT0Np++hYIbLocRQ8ujequW26kBEGmXNTlfqupsy/D++skPVNQxOGq8SUp2iWoJHoziUZLeRmKKStqDvXbhHyniySKGs7C8OKWCRNRHcSd1/55Dy0U01kSopggnMUibBvB6ZBHtOi5vFEWDI5mTGiZ8fwdGoDxvcz3pcOsqWidFmEIEyeCHrgQxhKkhJnZl0IWpHpYyKYfXgxgs1ZUxBJee1YvVvQ3OROTsSTVdAUozbOSuSsBJPqDmpQEBaxHV+DHIJduyZQuKxSKGh4ed8Ip1EP6Zk3IRr33h6TAPSQ5ooUnafdD9jW7rNEaI2ledeKrmGX/s0YZUCewQbU2NmyOFYpWR49x0spbEe/Vf5CG78WQZ8tfvxduH3GLEd1p/zQc/5OnkFpfiRzfdjqMnJ0RmKKARcV70uO/Xz+Iz//Rdy+UnWqQYNcbnmxig4m/vMXDfPoePf/1deOWffR7VjtPATTce8PP0lNd9gfjfcJTr0UQkoJ9KVWKM99Yx+RehQ4p3+RywBgcUuudGpZx6MQEzuYcQb9NiWcekFH3XTFrEnLPsKlpCTjrFxwLxRS2HXskoai70yBtjtC0V6iH/5BVN8pNk0nyiuZI12jC5/sE4vJJJRD5Cip+33o6m6h887YiS2IcY2MM7OQ3JUt6HRSX3WRnxiNQRpk83GgUobj+lYgnkgAjIQ2by9EEK6mDutVet9t7yYxaq2nwRtcIiSHEKinXKFS+BK3HN41MpKUt2PTvGzBZ813TmPmTgaXBwEM3NzRgf5wvWb2LHj1l+NzNA9QBouYQXX7YGJJeBv806ugW9IaWUl6rhkrsh2q5MFKlxeNVzqloM4JUgXCo1i7dna2MK3/wqubLchdbQW6/8BpsX4WqnWfSIM5mLSZ9P2te9/Z3YdvGlLgASrkP+UsM3fnSjV8t8fRUJtjzuPnAMf/+VH+Nr37sFE5OzHiAifIf0NA5NtmCi0IJitYKzXzSIz97wdWx+zpusDyPL1eaV01+/AjwKPrlcKo9/1a27EF2yTslxAjwpd0cCRYpli6pvGteoZ2VyF7W7aRTNINbCUV/7tzfSlPe2KlTs+JpwAYY2ZIpoWtIg5s+ROhuWhj4c0ciwpc1opwLI1asRSRiuSo9vC06ciSlbMSIlBVNxq2NpJn5Zjn5OA/niAEQScG6SuxQw4sXJL8B7WhKJI8Z6MwLvrSaZqGlgqLNTBN7eoHqKkY9Bppi8/KZ7EpJYnX51HZK2ZDUPTQ2DtF3buuw3/RygVJuetTY4cBe+Ulld5ySdZV495sZbcDYLlCd14Ubk73jPnwTauljEDJqautDd3Y2pKQ6It7BjPQNik0B2nmU1jW1rW9CwZQCVkzOoTMwyI5loTUnbvBgBiDRRyS0VASNEUiejnUYFVTSCT+U3kQx4LK4AKwuVxMqfXdFrhOpy5XSS1cTdn4kA3m7rKjjj9NZPfhofvPpKV4gARE/v2Y9b7n0Uz9u10wqvMFDFHYFpWnHT7t5/DNf/6kHsPXjc3SJBgCl+u0/OZTG20Ig8a1/dK3N42yffgfNe8ArUUg3qOEO18ihl8yNbYxsSi9GJ+uHwmlpFUKEMFF4EXWuuPxmciWoWQEp3HUK6kmXpYITIgpxrRWfj+OmmBkIeukwahVMUryOR6ivO4hBBMl3C+OPLMY+7NGGey6OLiTL1TQv1TSX1U9zBeznkykNjFEiLAlQkVuo4vHHlylqLqS/6GSNAvrs41hxtuEBQk0eADrZ2qci0PDTqC3OKYD3ImqiEJE0wNV4ghBGeJGIEAcnbpQaotndhbW+DO2DXCkXQYgEkn/H49SwGNgArNtlxi8xFePIgs0oxcNTYwrDTmK0WB1T8TcLZEQaq1rCAKYu/t7cDR49y9984ONACXQBYfpRNvK2ZKgbbsjhSa0G6oxHl0VlUpuYh6kQFF1FgX+eMqqeoe4LoOOMcpqPSiAnCsvpAqfbQXk+kXGSg4YIjNYzIgAlQAQU83hQhCp87P7M/67Ztx6v/5IP43t9/Vqtbih/8/GbsPHMTerrarLRl0oR0dQbPMjD145sfwN4Dx30faebHNDNmDk3zNpe12sLlb7oGv//hD6Ctu99r5VJhiGE4kF13pt3ofaOoKDul6rXIQLIwifQKCKJ+GCTqTN8vSl/k7r65SfQNQyUtJUDrgitJKLf6uPzOfaUCtUGBZQF06iZ8szzKhoRaRP4R/eN/neQO5qd6RuTg9EH1Y3PWaalKriKtM13yPOJSEKDyOg8NTRtVFm0UlShYblyZ0alDF+Z6j0zwy4wBDygxBHoLgoNJrTd7QJZziVGvkU3IQU9a4UmsxhEh3L2ldh7yd9XkiSGqFmROVbBH29e3W7sci4196Pw8uy6z8wyMT8jMOkUHGEhiE5+Ve0MT6Lqt7qJ0su9p5ocYt7Msc0sVA00VBqgyXBYDTq32wL+wMMIsVyxNifEWmKWquMBcgDlsrhVw4Pg0sr1tyK3sQqarBaUjEwYLUHAdqhAmmMcftrQBXbgZVc1UbSLlS9YFd4KU11RRe+KVrUpuXyQeuAIk0EWheHDlxeo+i48AYxofEXKc62vf/g7c+d1vY+zoYXgtkWCe3e//+u7P8Kd/+DqLb8/+w/jpL27DngNHXMuUWOtkLUSvMuvVeBWLlQyaMilsveQsvP2TH8XpO7bBuCEmdZGhLYdqaIr9sQEhjHA20JrkxBnPZR6ifcRY4+N1ZoEmPR3fooS5x+X1VCqYkscplcJajGIBA+B/lpPHu3iSpVET8ftDVNv2gKha6hhDrZHqwwaRKSK7qD6HBHMsncLrvk5QlbTS6h0USex4GskXvxFGV34YRzBIoaG8SwNUnpQIPtHDrSoheoTGagaDem3qXdAPMOQ4osiQB4poUAYzntPvGdUBmpAc1A6SdjUa2Jyo9Osvi1wz8q+fLt3aYe1HRZ2ZlBYKSPE3r/j6KJE/kcqYy7NTNhOi5rUBHsXTzDFzQ7UC1/XHTRIldr3AgFMb/zZcBVnnE3HT04+jKc0sVYvsosjAWIXVLcNyq7vzqE4toDZfYtaqJuT62tG4ZQVoluO4CuKQWvt+m4XsnPX3Bv3eJbhnzjoaU5sDSMw8pNZDoKyl8bqUI9nBFu4tgnruBQj1nDtG5L6h9xyPV3YlOrfYDW9qa8c7P/+P+NTvvExZMM7PnnpmL/7ft6/Hnj0HMDE57YApbyriuXG8fWCqiONzYK6+HNZtWIH3f+GzOP/yXa4OKaLpRQAJGUoAywuSa53KAFEqh8TsWZ6oYY2UiJfyo6Y4SY7P+uSkEWBLbh8iXHmr0BtcAvu+XzcoAwKVHvbMpYqQC32EXS6i8K8NW5q8JBSrJ1M9RXww+pshL++EoCrp5CNP8knTxgNUy3v7vPUd0SAtGQUDKhlhJ8vPPPFEJSf+uJirt8W0J098IlxcUyXEA1Y6OQ+vLiATe+zIe6WYNECAPFemw6a6+uJYjhKQbyaIm8ywpkvjEELFW39iPqqVikjnG7zJSp6d+Hm56IAqWRbnYSCrWgQpzcFdV8WBVYnvdcXC2hZ4YuRyaVQYOCpN97CkLXyLbHYwi1WRv21YRHuj7aKtlSuojc4wI9cCcr3tQAdh2GwUmY4WFjaHJHVBNJShP3wFt29qjI2ieLcr6OZ6k7DlFicahwIgbIBi/0oAxGn08mdU4Mq0470lWB4IkU9SxO9CpRI/p60X78J517wQj9z0Cy+pE3/Xvb92vlZEXP04lZnFZv9UAYdnyyw+g9Vr1+EdH/0/eOkbXquWkUjqUA36ERk6qfWhKAwDUBT935Gru99UXg/0yOBKtzDJLj+4+nqKEUmelwbSOCT/anoIHSxrsl9HsXO60pqoXB/LOiKFUtSGItzibrks5QE06eAGOa2d62+WovONX+Pm8oePOF7+CUDVUgCVN/0uDxHlLF41JgctyXh1kORdmXnj1AmJrQk9ZYBKjTexU19ZKBK9KkvFGorgNDTBYESWuHO0QaL6G3M+pzFCPLlqHZ61tsUCQNbTLV8Dlc44n5gBFGsAt1y1MHAzM8nAErNIpQQP79o1C1ShhZmTGvoZSDruAStukuAWrAIzSWVLyOczKDIAVZhi1+l525LFDlqusoP9ckuXBAt5WPH4BLLNLSwrgvyqbst6VTg8hlqhhCgijrSwuogewOKRbhUw20P1/qv3FeeTIyFzhbpuSnqwkMCUvUhfBl8iR+qb6C09VfThyQ1qg074O//+H/G+S85FYXZGSU+Ev9Fx9XEwtW9qHnvYQZBGV2c33vrH78Zb3vMutHd2Qnfr6QVOuaWAChqlYC9feA9TBG5ZqVw+SMBKK6byxp8DZnxpNUDmW0MlyTeGazL9t1sCjwILaghbeaua2Pe/WOWWP9vFHm0QkhvSqSah0HLnJY9pUeEx8iaIqWJsxjopWv8lvv0XRfWAKRIpUV69sxy4ND6FASr/YEwD01NE62eOVwYZhDShOCDEEkBDwAzxsfs57DLTuu51XP5kHUW8SWdOpUJRaQSFd//0Wg4RkYiCXMtqaHtzBsJl5bqEGpt8b1XRVgam+ldaF/wTJKnRYaCnz44kNWadYk+fWXvApC2NIAsMXKXKNqiyRnp2zj+8W86AMgC1uFjGwvQs0DTrfP6mZOtWasDqjrSXsVQnqUwGjb29mHpiN/K9HWjetBLlyTkUR6Ys4KWX0tOfT8faNnm+WlmqhZFIf+XQCERi6lmuhcTeg9UDEl64K9+NcpzORNPFEa1gD3k9ElzEYfVN2XpFtTzUcrnZWG7AV7z/g/jGJ/9c0osIPIUxdt8Pzy5iaGbBitt15ZV4zVveit9505s8rzIVesG1+CgWNL0arXQqwNLr2RbtjOLUvyO6qFK7Ohw4rLn4KHxiEbRQXVZDcefJabVf11Im3SglDSVOmGYJ02T5R08hDxEU1D5PBRGpbmg0b4Jx2Ex1pqeBF1JYtH7LU7N6PuqccspAFTVmGEUkJof01BOqQbLqqx+gmbuQOW2YXsFASsR6tzOkDuIAKlc4ic2rNiV1XUdcGb5Jyz0NT8utTzTOanPD4nGRL4/x7RtsWSBEzXq8xnN9ztU6kxbpVw1BpPK3N3FQVXN15p8YIQ0MVFXLnhQ+NpfL1lopa+puaQYmxpg7r922XmXywCwDR61ZeyFuOwNUo3zH9LJTCexPhT0+LzLglKmiVuSLmQsot04xmRMsjuVcYkCqnLL2qjoysqjpqwIODqI4mMr3dSDb0YpMWzPK4zMsfFJLFWdgXo7BW/QP2WHtqBsAtrwQw310LDzWfJtSw8WVs9rNJd1Vp+TkYSgvZ83CI+8argAqXZaTr5Anrl/4tj9gLsAbsPv+e1xQMsbcunuZm3Zs0bYmXvHc5+K9f/EXFqhSSYwyRAKBWr0pzV9za4r+4SAgqhWeypXgiXAHOXmKN7kBQb2urqhhcMm5IE7XQeKj0u2mUvmoqFg5Y31k0S1VMkCRf4h8Ekbm9h+VKiwtlXqfIfLUGKtikexC1kkqi1IsUxmXY8yISzQ07JSAqlMFqOLx+af6OPz13Q5zXjRWmnjh8lQdz6WWoM6VdqhOItSxYPlgA4XzmQe5GySdJIn6S4lRB5lsQEUCZIu0pnCzBjoPl08C3+bTpBlVJGGRIRTAX6OOxYDlnmHAqCFnvY0HC1jBvs/MdUfn+YriBqRyWWa56rT3p2pqttdC5dtAxo6wcOai469zpRmoqs16WfINiLg1ibkXCyx4bm4OqRnG15C3Cl2t8kXvzqaAvs9YEN9fvt6qcGwMZeZKahrsZR7HLgtgFUc54BJuKG+yToVaquL0y6CBVK1T2+WiT4wkAv4SY7BlqXJmIOUtPGmSlzUgWlqqx8nISopUsYn0AENVQeL7dy740fL9g899ER+55rl49tiwZZWqMP7W9na8+53vwSt/55XYetElkMlt7zJQkECdXh4voWQZlt19BK7FTneneUOPsFjBR1TnBRSLGacapLHJUgxKXel3U+joYj7dykX867mUOY2o4URjpOLrB6DKfXE3Jw0FB8Fxal5haRFbppBMAni1WQFhJI+Z8XUgMSTClzVF8pE2GdVfvzFBVXz169/gMx5PPMASNgGrNzS62qJAUFizW9ptVweUOIAKCSgYBIjd0uU76epCTOUmAbJNPNq9UW5JwBRHnDg3adC9DZYTeJ/FgxA1ty9P23o6WVC66DdM+aaf1kTGj7RtqbIWo9dUlxqZngTt6bX7XSN372Uc4MVnf+baKbBhfeYwIC3otVGGc161J4CFuYoFqkhX0drc0/E8WYtYuagjE2WznnAmEfeaoDq/iNndR5DraEGeAavGVb3INDWiMDLBrF62brJRI6xuw2udxuKKGraDJpQgQeK7dkqwiJMFymugpHgXE1nZqH1BS2prIgMpXUUif1NQe0GEBfUMrsbz3vU+/Oq978WZO8/GS172MrzxPX+Eto4OGEvtZAVJZ8APZIgLljzF3bFCdxUGuMh85wZAY4YA8C1Ct3WvASR8Xz4JJ8JFhkR708+YvzrBW/mnCDR2hwiUuyHAHqAZ5KPGk7B2nTTciyUGfrsPL0WfpfDH4NFEEcQlqvDHTydzJxv3Y4CqZGqcmko3T3hR/EuXFwaoqI8nOaCKo2fE9Et8J54yJDJRQKy3Rsp3hxS5QZnQgGsCo55xKBRQyUQi4qgvyJ6PKCLXliXtCqKdEQe0OXnIA3xojs6kxZPVOKgqMktVpQgFIDGQQhaZay6Xs+W2d4FMDTsTWwWk1ujx6sBKgKoaYYCqiJmZGbS1lFBrrtjKZdhvhQ0R802BoMpEolxF5maqMJcit1jlulqto3ByEsVxvuGo/Dmj4JoIdheGAXktnOpP4sSor3qlp1DHDBsvGHq8o65tzCVGtRXgAgOYgbNNgpsX8WTK1mMnof4dQkszCdC99p3vwgWXX46N27b79ZHy1YGTF2+uPd06Ji2GUlyXmjgVOElAyu6GdlplTymt3epv/rk5aIBKACRfmFMIb+sRijDrFIWhVbmWLXFfvFTqW4kSoJLyhu9x1URBcaTOOBgfIGhATDx91PwSD5FKKhoquz6yZZhHmHrrP5yWxf3nzzpJ1dZ3G+qT41WtWWc/UDLzBOH9sLQmWQjUMFQeiZYTBajcBzWYdfA6myYw1i6aJOJai6II4Hee9ywskrCB61kGPthFgzR3mhWAKGEdhL+N6N809fBoUbICMBUrJdtSVWi23XsyQOI0x8KYS8finzjmSCV20axdFjiAqfkmXuttQsclcej4jAWqsukMy48NCxUWV2hkFrOUVZSpxSpMN8tbP6L2H3FWZS7B+aMjSI9MomX9KjT2dyPf2eZa4gR/MFHljATym8GQF2vu2+aBNiw9BDJQrVXykKDO1YpUfbG3uy6ICIzkCCIS5FQmbvP04NNednux8006oHKBn6sYiAS2iaSrogNUhRRrjABDROz9JAM2OAADbtsVAEu3DFlrnXiN6yBJAmK+cNl9J8nSiqzy6ODOwEN9gtRBU++KIq1VAiJ2xyPWDib223/C/Wcc+DQy9DfIfcCUPuE46Skdg8mUZ535KVKXLiMu+XtPnPvgccbhTWFZiAScIyQ8ajJTKRx7h09a+jmNwRNHjlk3ivCKDxv45VscBywFNAi7RxsTu1MgJdCfvs2aa/pSPc7EH5eImgcxxS8RTLnhBKF50jj17QXSBOWk7mRCArLwhx8ZLdgDOwcfJWadyuYAvmZKWCVkgNTYyBdA2UfN+QwNcxMSvg1Cxdm7Sk/Dz/k2DTU7zd6hCZQXZ7GyoRm0mAet8s+SpC3tphdreOpI0dVW1twqlvoIbqoBVEtlTO8+xADWSfBhJ93QgOh3++x7pEygofxqCw7v53HkIVgt2DuEu5dOUxWfZQT1AyrrXFidIA3wyoROFMuHxUPERE19n5HxbdArgQQBjExlDDCiuSAK8rlWFhd8SeOJWDul6OC0ewtguX0AqpWJehteeOMQdV2I8MVBeeB001JprRIhPn57HyYDGJN4FD3k/uIbc9V2Q0xTG3XWaIryoqa4Kg2CY1HyFKealq6RXishTHWS/54lEZy0hJnlEROH3BaP+DUUZ9BNpgGpKzZY5zgDd7w4kQuJkVzoo+ksT24+a0q8tQYmHTPpJjTmutDWNIhMppFdNyq8i8VxLJYm2Py9iJnFo0hENOXpKjcRnz4J2o2pCsPAoCKaGMLkAGFZgufWg7+uxa8yjBtYdSuVoMMji1jTnfOS8l3LmWsPxzP27uhWoJOOgSna3AFSnGMgqgJ3Vq4S62U/8G0VpAnHmn0yGZvH+Z7dk/uG0dNA7X2uqKQr80PdvW/O0TUAllC5FZkq3wsrTc4wl+Ais1a1M4uY2fqlyFYGxLBNDAkC81dn4iWRvI6nRrVeIyZTEOObabKWbpxkGYIkQwlz8hVFUXuE2n4EcJE/5Aw3zDmVLDsCeMkL0eUwOQ+qmKucRQLOmrvQNVMGK5KMRHz8ol4As4tPfGRcv6lO00YAeArKT1lfpbkCqSGN7II1tjgtP5mbKncseaM0DpFabmFyaWBaClq3tSoJBc2YdInZ1oMv4lF8aTZnDPdf8G3wxETfapVIIp76q0gdaMOhURxARXypzHxBcsJzTgaolED1kqq8Prk0uGlz4sCpv30Hulq3oKtlMxrz3YhL5eoCZheP4eTUY+x4nIGtcYQUBorfhITdh+R1q8QJFGSU44BQ886mbpX7Bn+tntXpzizDf5OIEZI9MTSPS09v8wb6iRGghVmq2nuAyZOSbBZXKIDUWD0X7bVVDPXaZZlh3btxxikfoKypymVtqxY73390GvsOncQ7XtyLdNcEm7TSIKma9c0/Ot+BXzw2Y55cfAHx+n+NWa0WT47FSKOv96Chk0IQRU0W4SOcrI3YuNMZTwzmHrGI3QNZWi5EwhNWkOpq8/Iy5e/9Ure5eoCFpxff1wstB5HfJvTk6ltCeCoS99dN5BRE7Bwu85vOnYwlfg3oUD+osU5T6kaeLmCSXXieEC9fR0Vfu5V4RL0rOuhyRFxNBoTeuTezeHes5rz950ZRAaf0NhM0HoVTeFuloXGBo6vcEAwSoxBA8jgoWtULMj0SdUmNOcgc8cg/u8clA6iKnzx5tssJuuKklzpMLH5TeBxAJULC5ETlQGImDclHRHkPp2ZeX+uyeTiAWtv/XAamNiPLrFOdHSms25DDQH8aHZ0p9LPfBmbNyGS8t734oFcupTA9RTE1XcOJE40YOtTOfrewuf5VluXq0MitODZ+n1EXffgKrkEif9UOieta3pSQhMRzMmAjZTqX65nCzyzzBoK58GHqrmdm8M6rB7zAiRNA71oGrBjAnTqpKUdtQMWJuwpLTlyGehOgohOx97JyJrinD45genoa2/rPRnWq3XnRzAFijO2uPXOafrLFKGggi0MkQZx84/SbKJcxYTYxySuxtyaGUv8IqAIqCs/iRKQZ3tZX9cYS38OVXkJXrHNClF8P8BCDdcqvjwTknFsodjkX+vjL5qyXskvPfolPPxm8UGnBkQJQiDQFCjDl8ArARH1V5oEoFTw5Ook9p2QrlaE5yPKoZP2DQVdqWhQHD2j6pbpFd9O4L/04SI8/x1BIyzAQRjQwNM6MYoozPGJDtLh43SRJXw8a95YqIynZMuQ2mnRIsNPE0yMTlFxVKIqWi0fVgyZOo6YX+dYHqFQZ/lBtoqpDfiiUIPIJNUUE56WMulFEmGuvG9vXvdGyTDU0EFxySRPO3plFc3MVC4uLmJ0dx9xcCbv31DA+lmKgqoqVgwtsYEnh0MFm5HPU2nOyr49g69YWXHhhK7NuteDQ4Soee3QT2h4ZxOYVL8LeEzc44MpTU0wfUTXp1TkJjCfamVpM6uELrfzyT3DmRNHXnYUQ0QpoVF8yD853PjsDxeRQYX68sWHbUtXQCmtjKXt0l2coW57iZnH+uLiDOgvU4e6s/u0bHkdLtootg12KPvz+3rV7GkfGigjT2wAtfNw0FDIQTZIJPBFFln/K13mkWKPpxtPTlJtOYrolRNcVigwidTtKtC0OoAEgKdOUEu/XQwFCcqy4tdSzhMhgQ8X3cr7SRGqyuMFA2lol0y8ksCIDHPeNPee6JgMWGjzhyS80uIBLayY1e4t7Zb7Q73igfFlvLY1iOZODKSTLjr+982Q1qr7zV6Ved3X5YE6vclBjKCLTBkv0EbVnWxorjWk+SqZDMjLdSYL/HYpX1ow/UTyKFi0rkKQSRAeKAg9xGmK9gCoOEIqiuGWOAlQhfDJJj380lJ14PyzN2r7nYNPKa9HX04qXv6IFq9cQTE5O4PiJSezdS7FmbZHNwWl879sDipRXvXqYAa0MHry/0w1raq7g6hecRGrkOObnmrF2TROe//wuXHFlBwNXTbj33jdhZPJK/Hr/v2GhNGGrjThgKs6EJ3iCpclbRYiQeJ2UGC6Jgl+olo8vi8i3DNV8ZhaquJNZqy47o83JgGk+eggk08Jcer0MVM1paCCgHL4HReJZqVjk4eEZ/PKep/H591wDks55PM7vt+4eg5qRSbzpadTj0OEHdZ/VTdCBQu6/Sx2yiauBft9lDYNSSldOf/HFh/jafIAqoBnJOri1ooAhVRGBjU3hQogCqKi227kux0Ns8CxGUs3ra41cNx41gxdDeM3hl2UAat27zwRyuPMmoTiX3VQuD/9iQE12uXkdk0qK6VsbKB9LJoC8tkyOFxZdlYiUj9aenHRylyzXpLwl/eOMCjp56ZbSM1Ry29wpJxoQFjW/iZN6akyleBLUkSc6jcdf15YKNBZgiopHgGJR95Zov3rcUptcXH3DGkK0DGriI4EXsTWKTuaNXJtWXGsBquc+rxmXXZbF5NQEHn10Anfd2YyZmS7m1iPI5cewYsUczr/whDXgtLeVmDXL3m2b/774JQsYH88w91/Wik8zK9bsbCNuuqEHjU1l9PWO4bzzqzjvvD6cdVYrbr+dWa4aP4mj4/dj34mfWwvcVe3MBRCTo9rUY9YJTx9oMTJN7AjWgSCCnwYpADOwMrcjHvrlm4Zx2WktEE/KhO9RNX6EWatWAHkGZktTUnoZkBD/BCNmTgGonPVUn/q3m9HRDFx8QRqp1hEWlWIu3RJocRUOn6zim3ed1GtA0tpev+Pt/RnUJ00h9fedOCTXhvJmmPHeUyVN2OhBFdQDyAvBrdYrLwCHebSKHrlgBlQyv4bbPf0Ma7MCXHkCWB1fsPcgW9WUdYqi3mdJuLuo2w9WiBruRbt6uTIkWQL7WUFE1U0HX94CdUCxILmWKk9PY97agnm5SSgvH0iuSLkdmUtm6Lsu4HTeACRwLHXOhr5c31ScWcoct5QeYoCAVgilcXdVN0kMk2+WGawZjZXMXI4gCouLJl/fjODMeBdJKLhB+TOJS3E9lmHFS1J5JLZ8akxLE8iUZZGY6gQNyf6EAkwR58S8p5MqY9OKF+P8M1+C172+DZ2dFQwdPoiFwjwef6wLM9N5rN8wgbXr59HZkUY+34pzdjYhm82xOTnFgFPWlVatVrF+XRXzCwsMTE1jYaGAbLqAS3aVcfRIG4aGWjE1XcLVVx9AV2c3XvjCHlx5ZSe+9a1d6G7dbIEr7hYUJQ4iKpc1go9I/CYZ/nvs3ysqMgMhi+hxRF2jyv6kaNB9JyahLt21exbT8xX7A8uCa56BHJJnLkBmwUot8FXfDmCDN0PJ23bLbgrHOiUq8dDxCXzlB/fgY29/EdZ0ngMq1mLxyZa5/v72h4/CXHiqaU1Dq8sfFg6rwtLnB7qYtS6F8ug0asWgDUn1/imvfwqZDIHANqAAAKefqWuiHJmKW0vNRm1xcMGF6SPFphEmEIxR73MoBNqbhGrhvBFFUv74Yhkfe/wEXr++E69f62zbISeW3XPEu7atOlJ5QaBbqUQZXZCkKa8AH+EilC1NUhrvzUuiylWlqvlrljWdn8IDoj7gBxV4qSHeTvm+/J0+5/vIFwHUNyiF4KhRTZOPeH3HREHACQgDjlESqXKVLL2dSrqrvjj47hgJLUdwLklqmhrO4qVJbKlKdvvjUlxwFqc5RQ3zsjw9zI+6g9Mmb9Y0iTpJy0mdAU9MmiHJ+RqqbRuuw9ve1oF8YxHPPHsU993biAsvLuCMM09i2/YMenramFVqLZqampFzwJT+eQ652XWzCA6w5ufnMTx8guU/iY6OeWzaPMae/lqYC5Hg5puLTO5xnHtOI9761i48/fRqZrnqwWD3hRaw4gBraSTqJGjCFB9UJr7YQEBF5fQucg3L3r3w3A1RoM0cPs1cgP/8y5P4yEtWKJMg5o8xNLsayHazpMw9R8v+CVScqEjAWUdln37i336JdSt78ObrLmVAJQ931mWA6vDoAr55+1FNP3O9CpCRhDwYkWxEyQ90gjRkke/twOLRUQtcwaiVNFnQoB3VBZ8OFEM6kDsnUgU8e6LkfZ70NF5Obg66FUm6VNZZQQVPahriVqO6ftpptcQTIkCYuBJeQQ6sPvv0CL4xNIU/3NSD61a2GoAQUQoTCkIAdRG6IV4mFyTBu18mmQIUeRjZP/n5tneQrU9SnNioNOwzOv5r4jYZamBQQaKWDjRhN0neP8L5Q+IE6AzQoj5Kqr+Jnxp44iGBoBzq1cWDczQ0TSZJNslub7Ii02XgiMdJQlLV33wQS2oc+XEBZkA5fW+a+eVxt9+1L26x3HN7943ihp+1WIPA7EwZK1d2YKB/JZqbWyQJ8mchvLeg4I2p1qCVTmXQ1tpuHXPzszh+/Cimp6eYdX4Ci4tZdt2L/fuzOHFiDueeewTr13fjrO1tuOPOPBpvfz3627fj6aM/MLgEo+siPEzICe4QkaCH0ARN0AMh7kdeQ/OQJ3k17Ms3j+D1l3RhTU/edT0R/v2/wmGGpbpBcsyykGYWKzIPqAtk4KyYhezuE/TVnz6Mr/7s1/jPT74J6y3rBHP5YZGJZ0CNZnHdX96o6WbSF267SNp7vGk9jMwDG8rMjZJLo3HDAHL9nVjce0yyWhFf6pT1xhox5Gg6N5dEfqCgAaoSqCJc7SVx0vyuhPtylGW42ISovNL9JsSnjgSKiIqvifoGIJXyO8ZcgR974gQemlzAH27sxoqGjCdH/raeDKTcMonxwQNToWBFt2BZrjEq1FXSGHdBl/J302juO7dozrXsvjSBKd9eWko6j1Hux0TF5ZC/hemFOUvB9QYRSuYBx9/C9djwSd8YQ8K1SKJxknHAzT80Js7YG29wTq5fWH2aKVNfNcSf+JcmK3ygSyYrTryXm5omKn/iS68+aZG4SSMoxP1leioKEL5m5Vrs3NnA3HUzeOQRit6+Fubu24+NG/rR37+CgaO0Ugk1d2SAM2jB/1BT88ADp+amFmzedDpmZqYZiDqGGeYavPI5B7F3bxf27e3B2Bhf1L4fLc1tOO/cAZx1VjvuuON89D92luMS/IUEruJNwaEU2jfMch2sGDyLxiDrUxVUXyCv5yPAll/m9EIN7/yvIfzsTzarulT5d/1G2C8DVBlmVch2MXBVZSKKjr+R3ZDSvL3LukaHTkzi4//+K/zxGy7Cm166hoWMMv4007PVAuWf+c7jODwyj/AyejOZvAA42ZMgoG7PoMeLWCqFMosoczEvHhhG8xmrkW7Oo/XsjSgxi1Xh2BioA658EkncsSRgk1xh7XL/EC2VPyt5A01XjswvASeDGl56EpRPQDkopO0RCAw/gs0BSdSnxPXHZnD98Rm8dk0nO9qxsjHrAx0uMCTyRqhyvB+8qNhELpi3CN204afswpPXg1FIYMp0Lmkly9XfRpTrQxROLpHPFked+idqMD/hdZHyuTop4K8ihAxKCBq0vBYcljYZKftwGbSIS/WP0EH9UoBpLKm4pkeqeJQ0UxLfUkWXWqpAuUGUBFDFaWLxQFHY1IeIp3Z/SFIwRZIw+3loPFkk9SAbM862FkzOzRBc9pwc2lu6sGJgpbWWhuoDh/Y0R7QrajAbi6BWZrVqaW5loGqGWaoOY9OmcaxaNY1KpQnZfAZPPEGwOzeCs89uwDUv6MYF5+fxne9ebK23sl2CD8hSUXe3jfH2na2y2s5d2xLVN6KMn4/0YrnhuTJ6Jdddu+fwz78awbue1+dOGsR1Z8wycDVnf6uP5JyF6BX7sDIg3q8zGb38w/8D7uL7y997DUi5ScxE1tP833zvSXzmu7sRt885qMoYHnfMiAJWGrNVDm6Zmn30ALLMTd2wqgfZ3nak25pQPDqG8tiMk9Kr96V+j8sDtALk+R+9AGVude+sa1CiEhwLql6KQBCl52f1BupdmDCWb953+OQSEBBVSdc6QPCtI1O4fWweb1/fiRevbHPbnu8tPB2MSKCk5myLQKXKoJLZT+cXoEfI0+OUxeuu3ipI8t8PKV/hQgRUi6EUB196qJIdVEzDmrdUlaUqkXqEnCisj0T1neWbk/1juKR8/VITcUaumI18MKYJ46JuXpRcUxoSb00VhdbZloWiBm2RX52TaKK8ovQIkkEiUyGWOnEn/AgOEm8ifODhm3D06NXo7u7FNS/M4NyL2jF8mFoTrbKzMQDlzSk3TIUd4lZRZQSSApi8trZ2BrC2We7AEyeOYnZuGvNzaUxOdeDwUAuefLKMCy86gi2bm/Gud/aw60bmFnwjhkdfiEPHfoYDkw8i3n2kBj4ScC6H0VB5vkHazIbQndkDsg11PVoyCT7ynePobm/C757bok4CgmpVWO67mvr0r9Nb//qHmJot4dYvvx+dzTmGvcr2YMYB1ff34TPf32uswbBiCD309Qb2FQlIreYSF1jpbYwDqOrsAvKrupHraUfD+n7k2PnCM0dASxVNcvxxIOiZ2RuRiDnOLZbcj4hSFKXkEpuvlcrAwuf6cyYhebGWlJjoigk5sD3CcOTr1ho9GY/n660+8cwI/u3QJD6wuQeX9zQpfDpQ8snTXYY0eDG7za5tLSsBQSut9IDgptUUr8kypXwFjwLTqAfklPqg0g/RRwDq6qpMjY7CtpURahyoU/em8Smo7QPho78pLYlII5Pct3Sw53HE7TlJeOVUwWmkslA9Vdy8gpYnxAFi6ngWTjZHzIXq5squh8QUFX3L4+YTR1Z4+vp4SGQKGisJCZUSr2xi8CUIXkjt5ZNavQof/LP34n/+64dYuSKDxsYGrN7Yj+OHpmwxKmqCt3BUmhWgla+mDmCu08b9Y9tk2ts60NLSau2FdXLkBE4//ai1Bmv//h7cdmsXMtmjmJ6Zwrr1K7B6TTOzZOVxJwNXrW1bsEdxCYbVhTwYqROamaiUVv5VYzWJklApPw1QEeq9nWnK1gSodDXzrL5a+1fikw+2IZ1dwKu2pyFcIu7GlpQi7BMYU3MFvOKj32bqpfHrr78XHW0ZFjvBQFgjpudq+JsfHMA/3zhkLBUCpaoXalmiJglilKvnab5lKmetWLHcgcVj42g+fRCpXBYtO9ZbgKtwbNyRH1Yqcw5+7c3tQwkhHpi0AZbaWoKxs4wcNEWI9ykbSJO4upmny+wNB1K+6vQgARQKo6XZVFXDhQo++OQwrh1oxdvWdWBFPuNBDEpl7GClDQRQATUg5Mh8ou+IReWylcoDU3bONaruJi9bplQ9nHJDfeuvptWDvQZKBYzKGOHcCx2WUqccaW3a1JqDVMVBtRJcW8l4wki01qXKCZatEo3JFy3bZPc351GPfD9Fjx42R7q1c8XHw1hUqheA6LFRcuIOgHE29yQR8R75MWlY+mC5gZv+kySy4w3+Ch8JliU/MOWe92o8fcNX2ZN8ARdfeCk6upuRb8ggm00zd2DJTekbbKk+oXoDlhPtB1waD6cUs4g1NbVYACufy7O8ZzA4OIKOjhIGBmo4sD+Hhx+uMuvWDM7c2oidO5uQT69CE70MzaQB08URVKoFpXxqnYW0n8A6Cox04KDjqCOyZP0+pRRdxIRAgkQTId1M6VwO3es2oGPlamvNw8TQPvzgbvuNvMu2NHuMypO6NoWx/7c9OoQXfvAbeOmVm/Cff3UZA9HsHlNmoaqmcNeT83jFZx/BzU+Mm9WLoGxXKzJNDdabeHKqaKemCZgQA496H/P9Hcy6VkN5fNbHS6s1lE5OWhaqVHMeGeYOzHa2gqTTqC2UmEVrEUmopZi1Dk4LdAEV9k/omGtsRorJ3XjGAHZetg0NLfaLHbK3FRKet06dDiJct/J6KXmndmVBOpFap2ShceXJVeaYRtxF9Q5T6LTGeE4Uyrj+6DRcX6GQL1274ex373wZ3z5mf1OSr7VqyaRU4GYjQC8fYhinCVF2VZfX5RlJcy+SAJmCR3H1SVZ3YzpoIE4+d2RWi0UUR8fwwN0P49D+w2jK9PDpE+IFgib2cMJrga8/nUmVGKBmLs9a2ZXXnK2hNWfrvlghmExlUGms3ykdd3aITkeRamL9ZM0alE+cQG1mWokzp4kzxyeLDZtNk0mjdeQRn+KULRMtQkfo9VPQLQriNBNBPNQZf1CnieUnrAuFPZ7spE0piE9uYkJmurkDK9/4UXzhS39qDTSf+4fPWOGtHQ1obM7i6MEplEtVJZEOksTr3bJViyqoS6pHyW3oEUWOASq+ML6zsxPjE+PsegSzswUsLDbgyJEWjI2VsXXrSezYkcfVz+/G5s1NuPnm56Gra4dltVLXW6myfRMy9Wml8ScjX9cVs5xkqXLmloANQ6lypkCzdAatff1oWzHIgEIVE4cPYm5i1I3/zM9G8I37JvHha/vx+os7A4YRitseO4xPfPUOdLS24tYvvAvrVnRheqSMJw7P4c5nJ/Hlm57F1GIF4WUM7w92bJL6Cx70vPzEFbRzormeTXJtl2CFuwRXdiPT02rFZtkvX8xuuwTrIWn1mwmrE00NmU0ZQm1UTtw+5CUW5wpOgtPl4IApQlwrS0rIcEAPlfuq2uzVc6Kug/Qvp6HKJ3a0KLes/3lkCj8fncPvrenAC/uaVWHaEgLx64IaecNO6lsGrvL7rEXOZ2Aky5TMQxzApi+QF3l7crWy6Xka6kpGub57Tj29RbjsAnRt+DRuj4k71y0lLREFR/y8KOrLK668ANKySQrEKBLP3LFly5QJT6qMBjEoGsfFr/ogWUIzUkfaOBRVZsPoqaQkZvbIwCCQVx/J75P5QSPQ/8o/wuL+x/GP//x36GID4l/+5V9a4RlmrVq3pRsTI/OYnlxk4KoGb1RwBgPx2rM2aMq5uQtZ1VFSGfwFZbMMXPWtQDtzAw4zl2AmPY2+vhk8cP8aZrHqRHPrEfR0TaC3dwB/+AfteOqpVbjr7jdgePQaPH3gvzG8cMBXvqBz83AW3l6ovE4qqGfSgCA+BrvJTfp4vKl01gZTDGjyOpodPs5AEHt6rPmBwOHxMt71taMWwLqUWa22r27E9sEGDJ2cwcGRWXz9lr0gmSacc/qlzFKTwXWfexbTCxVMz1cl/WjMrmICOmoZTeHBz4tRwEoWSrTYsD33JS7uEjx4EinuEjxrLUguw1yC6xjgmrXchMnBFQ2sBhtPC9Cjhrs9g8ADJBLoMn64GBKYImJiVve/0teJUSkPWx0JNMml0PusbLlxrWDEMIwRT38nM359grkEP71njAGsafzjmX3oz6d9+cs6CODiuuQUcOeBLip009ZDycBHBihEs0iJX/vUzq8my6GmDiuPXdLbhnpJPHTqxGsclKrfm5Tul9q2o2gpM0HCtEZ275Fp6WAkOKN6ZZvXYQaPVZBitEffAC4TkZA4W3IgqFKTLq1a3UFiWcBZHLATX36yW0wi+Eh4dIzy01h5h5HabU2AStC6D34FuYG1+PjHP47/+q//wq233op169ZZcRxoccvV+Mk5Bq4KLiCyxxRqrQRVdyEW4EMqCYXhKTjomqChoQlr12xg1qpZjIyewGVX7GfneWaZIjg01IIHHlzE2TumsXZdN1avbmaAawUac39sWax2O+utIuAR6iYXGdXbNsVUYW43zd29lpsvw6x3swxITR0/ilq1YtdpSJaHx0v4xr1l4N4pbXBfzXwWBD97bMrVAMoZNauokbpOisD45lIAsqq3Lcu1pKpFDJNckHx7tKlx8FSsolpi7s58BpnuVqRbGlA6MWEBrGg52nlA5jIYcGtYsiLZPFICCuifk3G3CqCCV6p74oejDtZyVaoFACnl2meloj5G9yHCeSBwH6C0AnhAi1jrrX4+Oo+3DrYpAMrJBKZF5VTTTxymdVjEVwYnEOp6Mz+YVPfhgma9guKCVOtI18FP1AVMvnBQReli1T6vWdCOREr2iMTgWTqRuNPL0nMCfDA13irrgOQaBY2xQbHxwVM0ELM5QixVynMWoonUEaNz0VjcgQ3c7jUhsoFwQBWmm5yHKfcovcMnY1p3Wj+PbxAKkbHyTX+OXP9aHP/6p7Bhwwa8+c1vtqxWHFxlc2kMrG5Hd38Ljh2aRmGhpKRV3gx0MhZvvRjBlClcgC9Jz9bWNjQ3NVvbMIyODWNuYQ6LCzUcPdJquQQHB8dx4QWT2LWrH+ee04y77tmFwScvsFyCx4ZvwwIt+gtKuK7R9zGorZiwg8JFPNzpSSJKuUwtroFZ5zpWrEZDWzsKs9M4ufspVEoG/RU5OpnKQ5Q85akmyIaptnMvTJ3INWBFgaCetLTpwHtK9hGN6i3qpgdc59p8CUVmucr1tyPT14782j5kmTu0sH8YtYUiYmslAyFl1bFdS+4aKR5kXpXs3SlnPhcuTeVNMudarkP9LrsbewrQo4R7afQwOdx05T2YSQoScT88m4vrziIykIQCwmSrFLSHMJ9+wnplFx4yuKpRdT2U+FyOXALXnSpde3kqg4wXD09xBQTCrn9a0zq1qO+AUVYk52urMlbdCFlSaybqKGHuJRRhPShsBAujoHRGy52Tt58/vGfXq9vyULBuSxuP5HKFS8kEJTZOLEaKA4LiVnEcWcnT6GUJrvIoigmoSLx00XH1x4cDKmp/1JPHkBR6XvBG6zj+tU/hm7/4Om677Ta8733vw3vf+16Lh4OrdVu6MD2xiLHhOZSK6oaSvgFbPIxRqE+JNaqE+9Y1SLeJpNLoaO9EU2OTtXFoY8Mounv2Y/++buzb281cgcw1NrMb3V29uPr5PVizOoP2e16E1d0XOOutHoSppoKGCR0OadWFMBBCA3JRkmtyG1ra0blyLQNVbVhk5RtmYIqDqnC9PHlE46GRA3PEkGL84LRhwoBfvRoNHvjrJ+9OUV8MTZzSumJWq+KRcZSZizS/sR/ppjwazxhEdZy5BI/zBe7yruxBZQp6w5Eo62eEFHvudzSyG70LF90F6VLV6xYDeaNL+xpiXvfGaerXRuZV9feDBQpANURRqz24YCnKjCGBF/eDDjrg9FmIar71UDKgEh9P9qx95rVIojwCmbq7ubtZB/VFePKhAleXV/sKgSxEhrsyuLacgbxsVJQL8i1y4tVNiswU3l/jzFZJ5QbJ9OtJI3MIJtMMXu9IYWwNCAS7SFJv9Y9eKb+okMmlLooLCqIKQQDj0/hy6VFfOqqzxgZUHnN9XcefmfM8FsrDB59aYQGViWFUpsdQXZwDrdjrS7jV6rTP3YS50y7H+9//fsty9dWvftVN2t7ViI1be9G7ogWplDPIye4/6o5tFrDy4qVP3Dg8Fn+NKoqLQZM6n1bh1/wjzhw4rR3cgI3r+3HeecxCdekQ+vpKzGrVguuvT+PJpw9ZG4q+/W2NuPYFK3D5WW/Ac7f9BbrzK7x6oGH1HQE4oE+mRgbor9ybtqvK5BrQs24LVpx2FjL5BpzY/SQDVE/6AJXs1gnIToqP0E2Bk3r/duom4iPc1BfihFO6hPHH2GGUPJMCKvNztZpPjYGnxWeOonBoxNqBPd3dgsYtKywLVpgcIYs6o6S7LMn5Y+VCvHdA5YcHfTsAoi6A8hWWyGfKOiC7X6hvzqmggB81Z62P2wclK4/PTUj9ZXTXbQnEpSRA4D1X1zN5FkO3/7uZ2GucBIiCDDw0K1dNBmNSGeXyUFFe57omAzT460he6O7y6fUiATnfOG8os5fW0Vf7tJV736GvU4qeI3Sqt8sFARgOBGlgmuWkJUqre6z5zdFSNxoOpPhlDxqugzlV/jg5+ScHNTysUdMQfaRGT4LSIyT9UgCVX1actLw7V2Yn0P7wKFqfGEVp5LAFrmrFBevJLD+wFus/+BVs/+/dGG9fg7e85S14+ctfjkOHDrkyegZasOGMHnQwkCUDKe/CGfxFnk5Ba+7TJLxBUPp1gRWF78gzANLXuwJr12zG2tWtKBf56+3zWFhI46YbB/DzXxTx9LOHsGXLIl79qgacf04/Ljrzg9ix9rVo5N/H02rJNNAulagCTFQAx9/o61yxDoNbz0VLRy8mjh7EkSceNFqnqNwsA0G6LD+s/UIRpg//blTMHeepJEsk9r0dFYui+4aJg0beKDml96tOYPZVhVmoFvccR+XktLWQPb+6G83b1yDd0RgiXZ3gXal6g9I0kHOWdbGBGIGEuRTtifPH107dhd6SbtJDjmsFgvfGm4J/iQMGhDVF7hvU278qsPmpSRQS1iKqsdao98afuwjcOWrw9JPLoYA0wIfvlPrQrUquBUuTRz0rYU3SgUoADMoDI5Uypl4ZjZUCR27N2qNOVZbC5JoNHn1oYBwxnAVxRJPzUBZ4P08thcsPnweTYoJTXRaeQ0a99P7GuykkIibOWqGg4VOVFICvEd2owppuVN7B8b7hRmGNLk84JekQyYCiNfjXqsxCNYu1B1ZgYF8Vx9eewMzmGaTbOpFpbgfJ5Cxwxa1W4zd9HTd89VP40fr1FsCS11utXNeB3pWtOLx/Aovz5SCFoL5pJI+KzlObPvoSTYb0VM7dgQ0r1qCFuc9aW8YZ2DqB3bvbcOxoJ3MJLjIL2iG0tXbiuVf24eILm3Db7buwYc95eHL4l9h74iYEr4UIqXMHdNAofp3HsQB1rlyPjv5VVtDUyDFMn7QXoftlmfoeDVDIVSxEjpmojx/mKokl1zTw6/qHCg+MF/Y3qmlst5cgmWredu5EGwWIm95yCR4dZw8X08gNdjNAxdrXhgFmyZ0FebYYIlu7Iv4wgVVctyC8duw0KUlVOy5qNLK0dyw7Nbdq1SletURJVjUBpGQrmeuCJ4qOJq+XXIwwa40AJa7OklwFmmjrpoQK+qJ/xb1M9KFByzdAB8FLvYR+OUR/QPDS1ny937mP7luCqix5KnCxmdZko0f5qH4T3s+TkOuqNOQfracmC8lmsOjHq+C4gFkO0WC03jyjSHr7jzoBy3ejyBLjBQXdoqhB2nQexheHX+QcMOJEEpFkJCUzAKU+nigxKWTaujG1sQO0aQIrhpqxbk8bnqQHUFwxjlrnAIvvRKqhGSSdRffVb7QOeb0Vf1uQL2jnxMHVxjN6MTW2gJHjfL1VxQPnJnClog7l3HOnEI/fS+yK5ANZe2uH9dHm1tZp9PZM4eTIQbS11TA338h0bMSmjSewfXseL7ymG3s2NqHx3hdisOd87GHA6sh43E/eiLzlVTTx+0hTZw96Vm9mdZRnYOooJo8f0sCUQ7HeLHSVQXT7jtvmHdAhz2oR/UoHOOpTvJ9Ux2SYfK+G4dNQF0pD5HkgTlm5QsIfNixwdeCk9XZgdkUHMl0t7DwLjBXdZMRtf15OoOpWv96EShTsYgf6QZmroWF9kZsHpEwh9Qt55tZrSlsvJHR1BPiBhsjX1cMpsyRSYCN5YboC2CR9VV2cP3K+sj7atbzAXwGIXMWUI0d60FJHEa9cMIT7zhX52rnkglRK7C02g/yyAKTbQrTMSjWPgfq0CKJ440yStMFv2lFDkrj5h81C0eOlN0YkLW9Q/18qRY+DYfEpM2PYoIwEPGEkP4uE5RFm7SIhsqNC6iNqUoHoASbymk14ecImyTBAZQ7xiyIMMDUh178Os9t78dTF09iz/ihm6SgaDk2h74EZ0IOHUZ48yaxZM9bmk5zk9VZvfetbsX79emW9VUdPE7ac1Ye+Va0KAHI1EwWnqqvPjtPcGOwRvFYzuAElXn6eZi61jo5urGBWoI3rB6xnhHRqEZVKCo8+1oOf35DFM88ewurBWbztrQ246ooBXLH9dbhqy/t8LsHgJx4E3xYDK6dGBkpXnn4OVmw6C5VSAYefuA9jR/aaAZWlgibcNyNpg7pJBOIS1WTDPwOEkG9Nlk/X4JTeb5KxQ2vzVB8zSEg+NqWMFiBqzKsyPofCM8dROjGFIFK9ndoUIoAJkaKp18asQ27rEOBUBVe6VUdZnwRooIj69JAXhVMnc/tckiv6oGylMAFkKpWBaEDLSettSqoCKyrJ0HXXdXXXP1HquuX0MtSouk6L+tSU3h50FTa4T12Zfj5FR/ntQTWlYIDp5YKaqFMCyVJJNCCsy4pHxHAWxqWGBtxf9cQcXRfFGVPiYIG4skniFMmJhsZl7B+C5crOpvpwp4mSAyp/HFXCw4AjidAjwcwqhS2tHuJMB+7zLmLJImmkGbBKZVfy7xSh0DGC3BhB/lAF/Sda0DlRxclVYxjfPIlsey/SLW0g2QZ3vdWqN/85Dv7ft1vuQG65Ei5BTn3MHdjR3YSTx2YwObqgvRkmPW3DDKg8Bm+gheGpU94ji1uCOplVqJFvwzAzhedfdQIHD+Wxb18X9u5rQjpziLkJm7DtzAGccXoL7r9/Axpb/tyyWHHL1WJpUqk/+0x1Hfmfvvzn2XwD+tefaYGqhZkJHHv211icmxIKK+2QyO0w6CPMnjJSXn5tqIk1iKQuoKTT39ZymcOF0BiN29wCwhTU03vvWhmWDUOdoPy6W0t5qAl8UahjgnPnqzWUGagqz3ArVaMXhZAJjYqmSuHf0NNuw/KWAPqd1AGUviZJ4aHert/efEjN/D5Z1M2DyBYYpwkqbzb6TFJODIGvV8gAyGeBMpDP0uRzx0HBIHo5feX3Z+B+eFmpU/nXKhdB4CJ16VwhrU70PsAvU16D1dWCX1iMTqTJj55hk8kM68jRfXZpFG6pSl4/YWlObVnsO5ORusKyZkulTILpVN8uPa8wfeoAVCQ6fbzmEE8nGhqfEPClUsyUnkOGWXvSDHBkWrow13YCT/QdxeDBdqw+0Ipy+Tgm10wj29GHdFsX42HgKp2z9rXiVquxG7+ObzK3IN84lAMs7hZcu3Ytcvk0Vm/oRD+zWu1/esxyCdoFMA2C1AUdPvBEEdjZFRcItSeDRlaOhp5GtLa0o7l5HCtXnrAAy+xsK37xiwFs2TKNM7cWcOWV7bjooib8+PoLsaZtKw6O3IknTv5S00oGWOF1yhehd63cgDO3rMdh5gY9se9x57MyzuMKUfld+dRRnxo+TRKRpx5mWkBNFH4amoHydqOzZicOeaLi9+WoUUHnFWfeCisaoZEW4lqq9DHAVOsB2hEXn1gX8jxrQRPi5aVLhpPGBg8SLwDvrTiq1Lm+5YEb7vy6+zY5fASq6rJLDm4eUOpE4VFy0AC2aA8E0N9bk6vUpKfvXLZK+R64tPVVurtQopprYSNGgBamR5jLj/jNTm6rkAX576966S78loa1mruNRLzZMZrCR4okRENA1dL11KWF5ZKkPEH81Hi9fGUIp4yqWJxs403ettTkAEamZBOLOXxpoCYkPkYR6JLqMwpQidAl3jMLXKWtdVbpxmZUGHg61HUcY4dPYIoeR/pYGit3t+Lk5sMo9XUwvi53vZW8v9W3GMC6/fbnWFYrsd4ql8/gjJ0DmGAWq+Ej097+VvJEIkjfZI8aTql05YIweRaxqZFZ4bK9efY7jZnZKVQrCwxgMTfnnnYcPlxiwOo4s1g14DWv7mZhXbj3/hehr5fvb/VLZ71VQP0RVbFLt3Tj9ZesxrXn8E/s5FlvYuXLggGrnXhiaBE/fegYfvbAEUzPl0FNE7YLCJdKYqVE2PSoVS6JyNUdFsIHOvu18fgDYb1TQLxdl1XQpIxBvjVVpr5DwhRwmxwh8ltcfohngyUXS/kmYBlIKV8lkO+hk5e4lr/556rkZOJZtqj7jAK3iKr7SgUZ1MORXgJVVxJSK9RUQNhv0cltQrMMmac8b+KjQCD48lmYDDyuNA2UkQCQJp/XNBOZrQuM1ij7cz7+NkmhrgVTep6kg9o34/cMouSUjEytHliOMSguhZXVHH7VBz6MQw/ej3133qpJigOo1Bh1hAijZPdETpPBstJSbrdKtK7bTAN0iF+VJok+IoEXUrqlNNM4gCpsckgmi28AijQHVylkMlmkmlqZS3Ac6bE0csOzaJ1iAOreFowPFCxwVe7nVqtOkHyjlYavtxKL2fl6q0984hP4+7//e7zsZS+z5Hf1NlnH8JEZnDgy7WlC1RIolintDSXfuXA31Ki/mCwok06jo6MLLcy61toyhfa2aUxNzeKee/owO5/D+OQI5hfmMDjYg987vR33P9CPpvt/F2e0nY27jn0fC6UJrd7UJdcfue40vPOqDTaYYnWHhlmg6QAbTU/DmjV9WLOO4NorNljf2+PA6p9/+Cge3z8L0x0w30HZBEBD2lz4/df19qcnwZKUcUWzJLDrbF8bMu3NoJUakpPcfsO5vIlwaQ8Qal3oY0JEP3LY+f5stRrVIlSJQpIJt2rVqU3yzl9XgJfAtH5IhLvXDrg4sVDGiqasCyyU0knWHQEMzNO/zWv+DiAkq50jRVpo7+lmM4vv4AUtHlfKJQQL153JLUfFG43mOrHqVXoOqgW4/qhUTiEbJl3FvdBIgNqwJizaXJWq8gFRc+Ht3yxTfWwwc5gprAep94fGSpOcgnQzjwctPb1Ydfa5WLXzXOx4+e/g0R98B/vvvM3lTKLb8pSDRsQRvqRmxcfjZxl/8q5fzlLyqQdQhQ3Cht5E4qSPW5fROkV3j+SAqvnsS5Bfs8ENT6UyygLZVIa5BBtbkG7pQLUlj4mGk0gVqugZawFm5jCeOoZatWx/o4yDMQZgMq2d6Nz1EgtcHbntJ/iff/mitbfV2WefzcBNhyW6pT2P7r5mZjmiWGDWG1c76p+kfOWWHzNiEh8k0swK18DAHz/yDP/wT9y0tzNwQ3K4/qeDOHlynpV/HFs257HjrEbUUr1oSe1CR6YdE4VhVKqLjla2XttWNeGPrmhHd2MRu4+dxNGJcZTy+9DX38Riz2KWKlbWhhwzl7HMWli+rWls39iM33vZ2daHje969ATUO0ScB2O5PYiJzKkLaYLQz/znJngWv28qnNTfxvhZurUBTRv7kO1qQXW+iMLBUdQq1YSDluySC+sHaly2p9Va81SdXEAUiabSMtCLaqGIMmu7fvnBOrQUs9bBaZH9qxLxFQKmB1+TmOZvvg7g3Mu2oam1RZFENKymvNVntLB47d6zVhHoi6xd4CaDD35NvLt8+/EZfHPfODa3N6All5YqxGypsb7bd2xGaoeOPs6qdPf7hURtn96ifFvaDta/z2rLQ6leGfiQgL4NqBYowA+mtHNqGttc+RJwNOTpA5vS2BcEXGmphMrYOB64+2Ec2n8YzblepEjaLWdTrQFsJLS2XpikCxZYynB3n1NX/I2wjgZ7zCtWU5hK51BtdLeJTUykzljjbNXYgOyqVaiMjKA2O+vjXF7gkky3XFMzTr/6RRh++inrfONlV2LjpVeitDCPqcOHNO7oySFstIlDJHK8YnNOS+fKj3sB0SKj4uLNeeFyop9d69EhGfiJt22CWWa8WxsvjiROL+INg45DOqgiqYz0oGB/moG7BFOZHNJNLaBtzZjuLmK0ZRjj2RNIzRWwfn8PFghz6aFg8zMLFyEcXHWg77q3W+uu7vvB1/D3n/4ksxBN4fTTT7fAVTqTQkd3owWupsb5m3o1L+uAinMX5sqP9tpTXxRlGFBsYp2yoaHR0rNcLjKLQxVDhzuw/0AzCsUpdHfP4/TTmnDW9jyGTw6gs/FM5JlVYmzhCC49px8ffOsWvPz5fbjwys1AGytvexY3PrQb//r9Z/H1nx3A/hPTOGPrOrR2t7NKbmDgapJl/AjjHWSzcCcuPXslXv+SM/Gz2w9gerao3C59N3bfLVaC495/ApKw3StcROal1gaZDRt6kV/RYVX94oERlIanmKWqqukWUz5IxNOm36WZ6WkBxzaVyXlEy7epub8XlUIBJR+oEmTWQgZVCwxUVWjVdcPlmKs87YCqcxioamSgyqt1SbIDLEwTtrxcSQ4PXDztmYfc9k/hf97Y0tGITz5wFF/bM2rpy8FVLkUUUCPnyS1bN8igSgAo51cBVRKPHs4BFQdWMhjRaxmmOA08An4A6VuYrqyhcoAUpb668AFSDdQadYOfai6o+rUFqpoyPRaoEr3MCKrgWXC5MbuzoWQJL1bSmGagqtIYtfd21Ogff/wLk5pubGSgaiUDVSclUBXMn0R2Mr385cmyMfu051+D/Xfdhtu/+HeYGx1B/+lnYP2lV2DDriuRbW7C/OgoyosLrhSTjLUXXsqsXn0oTE+iVhZ7KiavP6nVBXIwUMUtVcknaRPPcgCqcK4whBhPbnhYRDyJiA8NjxMft7sky4Nqcc1nXyyBKmI9cbsYRVp/4YKrXBPSzW1AK3P1sIk1N1dD/0gHBo42IzO1iLnUJCoMXvE9ZDhA4y7Bpk070P+KP7LE3PI//4Yffvfb6OzstCxXnDi44tsv5PNpa+PQSsXbbRnuQ30QygJkfOWoCtkaL/961cFcVgwoNjY1MWNSI7NYzaG3Z4xZo1IolTNoaWWgcXyGWbVquOD8ZvR1t6K7bT0+++HVeP9bN+Cs0/uwbk0vOpjLi/+evnkVXnTVDrz9jVdg27bVOHhiAp/9t19inAGmTZuH0dzZyixWz2dIoBfIN/NFZsxdmMXrX7EDxXIVDz52HIA3UVH1NqmFCwVJ0eSH6jFkOfXJLZG5VZ1oWMcmEjY7FI9PoXBo1NrbyZ+HBg6VX6VQWogZReo6ZhmoArNUVZJYqvq5paqAIgNVZhhnrgcdVNVcSxVhoKrJ6hsCVAlLlV8JFQj42qzM41s/BAV0UcnS5b7dpgED0e5L7GHg16MLeGRsHr9kgKmVWaw4uBJ8Xh4Uw4sV3HA0BqgSdeUCKuLdVnZuWapac8HgSAsX9WHq5cQQrgMlF0zJ9UAixlDxIoEESn3y5Tp2wmrFEqoSqLIsVWysE/E6qEox612mJoMqio58yZJbqqYxGQtULW0WCEqlzw4pDqpWckvVqBFU2aniSldlx9fK1C+5paoJW553DU7ufhoju5/B5OEhPHvTDZgbG0HvaWcw1+B5GDznPAacGLgaG2PgSn3Y6t5xHra99Z3oPHOHdQxecTVoNov5I4eZxbuCpBReD3YZJEtV/aIED4nBExVfXzOKAiPJQJXxA8kxAVX9Vqr6mq0/LqpZa6CKpKyJ0h7FCJz3zyV2YoEk7rpK5W1wVWtrwGgXXwC+iP6T7SBzCxjLHGdJK1ZabgliqMkauFp3XI6u57wa48eG8I3PfQJf+9rXrDcEueWKU1NLDt39zVwNzE4VPL2jKlKecYgX5pryZQFUDeNryHIM4DQxK1xTYxa93bPo6plilocU7r13FZ56Js8sWqPYsqmKV7/sEFb2lwPVEBPOKgY6rrjyDLzouh34/o8exy9vnUJD0yZs2rSFcfEJt5H5AJiLMD3CAF0FV116mlXXdz10FC56ke+dij+MwZomoXFqWvG8RY18rjwGfLP97civ7bFcfiVmiSseGkd1rqBOsoE5EV/O4ToT6bBvrK4jB1W0SmO5/4Ts5v4+ZqkqMlA1i3jjlE0qqCqgioorOcssninZUtXS4s7nwrqiu+4AFWSICwVYUJi8roq7z+QaU96AY+dbOhrwwwMTKDJwNc8siXcMz+Hnh6dw+Yo2tGTTXhpGw4tV3MBchnaezpuNCqhylNHDFSUJs1TlcJYD3KADPk0/nXwASlsL5qtHKomXrVYBLjwhk5rCDWF6OHf/2aDqEclSlXEeTSRLFXVAFWz3H3+Rg8en2W9HY8VSvFix3X/1WqrCY0wlUeP0PkcaGi33X1Vx/9lx/rNwiuYLm6H981eOAb5Nz7uagapnMLrnWTd8ioGrvb+8AfPjo+jdcgZWOOuuOtass+K45SrV3Iq2F7wMEydP4PBPvovhRx7ANJveqv2DyK7fzMayfUC5iLgUrw6WDVQtr5XKHFcvGEkKqLR4EjftbwOgUon64m0eGVRxUJDioAnwXBWmkjjgKsXcfHy9FWlrx3wXxUjjUcslyMxN2LCnG3R+HvPZWRvgWOutspZLkK+36nnBm3D09uvx9S9/AUNDQ9i5c6flEuSLf1vZJNDd32Kvt2KWHiIvSqH+chGDlspO7A6D4jbUqijNytOQb2DAqsUy5RfZ02itVsTkZBP27m3BdS/Yj56uEsLIfWLn7hVW3pb2Jlx33TksKI+f//xhDA/PYv36M9DI3EXA7exgLsE0A1rlRVy2c8AGVg8fNwgOOEf81qKm8O4/0X49Hu8309aI/PpeZNobUVtgTt59I6hOL6rmQMNdiIYsqi5QckWgPoIyPc3OmqrFgGdbL41nqeqz1lQVZ2ZiaShIt1RVLXeOnZq7/2RLVaOwVOkLrR1Ziq4Blil3HysZgHiR/gXWDqsCvpzfLGuLtrVq3i4zSz/HrMHfYUBreLHsrrfi/PzatVRJoEnUpbfmCB6o4uEp9fosZqna0Zb3ARlXf+fa1HehpzEAUj3eF+fm4egqy6HeyO4HaJ6OrguRqK3EA1W/VtdUOWwuqGLgaaI2z0AUm1y5u5jPCyyMDw+djWVLdrEax/0X3LoBryeHxcaNSTnuv/JJHVTR0HRx5cdP509traN67vMZoHoGY7ufVXTj3FNHGLi6+RfMSjWKbgauejafjo3MssUXuM9WyijkGzF76y9QZA/15clxLDzzGEqLzOrcxR4UB1ahNrSfmSHjv2gTjhzs1hUDVNUDWurhrWfndDWOxkqXsDwkTto4dRCvDJxoDJ6o9GFTlgKqGLBIW2/+2Qnt8SWkkXFwlZbXWzGA1dQIwlxBK0/2oWekEV1HCCaaxy2XoM2fcddb9V73duQH1uG+H3wdn/+bv8L09LS73irDLCOdPU3WMTWx6LoE3UIpxSFumFLeJL3fAQZ8bQzfhoGvt2pvr6CnZwQXnDONC8+JtoYIURbxkTPD16dlcNppaxho3IqHHtqDxx9/BmeccZDJv4DFXWQnyLJn2dIMLt3Ra20ncdcjJzxhxAAcw5plQIg5jqjF18JTzXnkVnch19cGyibb4pEJlIdnLJebwkqUE02SasxP3juoJEmNzXS3WPVVmVyU4k1SvPPWAWapWiw4lipTfmZSF6ovOKDKJr+lqlnRPHAsI+bX/8X9oO6DAKC6p4hZvkhoACFbOhvxo4OTFriSgdHemSIDUdNW+NndTZb77xfOmirPMgVnB0sTqCLurZcXeXMrlbxQ3X08c8CKDNR0HhsDGUCjdGIZ0iVrtM7vtjlHvOsu1WSFWankdivAmaVjsYjquASqmEufWDDKrnfZ/TdFF62HJW9NlbBU2Q9oflAVNE9FzYhB8clmUg6qMqtWGNx/JDSdnpd6VwmCyxUU6i9zls0tm57zfIzt2c2OZwOlTB8dwv5f/cKyXLWtWmOBqyqbn8aPHwY5fgTVxQU3TW1sGLRSQqqjE6SlFbXhY4hLccaNCFAVbzikiEP1grPlTueOQr4YxTBqbBPmRlK/hcofvxyASg33p5VBFbdScfcfcarF+2xFhM5ivZXjEky1t2O4ZxyL1Um0zjDX2mgVJ9MHWOMtWr5r/3qr91iD4x3f+g/85Affs9ZbnXXWWZZo/j3BgcE25BsymJ8tqYvZlYIaaosSdT2WNrAS/QlXsixksznre4JNjQ24+JwR5HOSK1Sujyp7Ap2dY49JzOo0Nw9SWLRXoubYBMyAIVJ8Is6ilYHIM8/cxqxex/DsswSDg9vRzNemWTILINkC6MIoLj1rhbVw/aFnxrTCSI0w5HZE91ISyU+yGeRWdiC3qsOyMJaOscn4+DRouar0GHeSVCSRRHnVp6V9zReqc1BVnVTfygyT1DowwAyDiwqoMuWgy2gpZiRQxd1/VTcRt1SlJEtVQ4tjqQpxP4lrE5j1wAL1Ay+iukFdywsJ3v+Jn/PF6SX2FP7I2AL0tVIl1rQfmVhgYMquk6enCx5IEnyOXBk4yWCKQOXjlqrtrTnoViTTmOazsOlAUwAat3/CSIGwQrI4+UEXUaxURM9Y6G8jPZu37LdU8QdFUQ8qqLIncAGq+DkfwTobipYSJQdUlRtTEeAonJL0rbA0HFTlrIXqo3VYqky91jdaG2WqYeaezBeZr7/yeZbrb3zv7pCcbZo+ehgHbrnRsmwR9qAzPTaCK97+HkwfOoDFCW98pfy8qYHxMMPA1BS7KfHcgOF7Y9kaRTh1o242qbM5LJecpM0qGGj41lHRoLRRYUkpCjBFxYeFxJhuOagi8hNegjIJqxUzsWbaetEwuBnzO1di3/kF7F19ANWFGaz7dRY9j86hcvwYylOs0xbm2UOcPdgMvOHPsOVL91jfE3zHO96Bbdu24a677nLF9wy0YPv5KzG4rsMa/KzvAdbsvWvcbwBKh9WOqP7dQO9bgfzgcdb3w2rUu8c1KrkHCPp7UmhrKcJdXyZlQkbHQZ5mT0wHD4EMj7BjGDjG3HfPsA7/xNPAKO+4/G24inW0tzfjzW9+vQUab7zxRkxM8P2v+KdPHmWZ3cqelthPrYq/eccOZrXqQ1gblSoe8dujqa1Lsez+8/2mGrf0I81cfdwqVXh22F4ITjz+qJZm0kmAsLh9O+iZVz+Db01OMKiLDo/WxndF1DD5V2l7Urh7+BauewOyAKz62h9K1e/dWeGEOMCDqOGyPizs1Zu6rUXqbqjkBuNBw8y1+71Dk268sobNnRvFLvbUTefqSLVaMOgv/7qAhvjD1bpSP8EDXz3Y9nS3fiQe9SPMVKkTu+/XFBBX0/UT8qi0JYOhERPpHsjk1aR3T8Qwoj+310v1pjXv9UaXJa/oMSI4LBABsDG4xu+X1pKidBrf+yyGbvwpe2idxoH777SuvdQ2VRlQq83PINXXGyKJRFzrYSQMVMWb0Ems9CQGT1B8dJx/4A5LF3OIj9mSoqVFl10edKPTqWllPeyPpUbVqVkcd/8R8aRqCYxZT1Z61imy9lqrXO8gyKaNyJ12FjLtvShkilgx1IzT7mKulMeGURweYhM2890XFyylc/1rsOp9X8Lmf38Uo5l2XHfddXj3u9+NI0eOWKL5W4Kr1nfg7EtWo3dlq1dYAylbLoiB0bHAU3nDRqeyFcBF4QA25vZpmrH97FZ6ZzRk12SEPdGcGLbjhBvEepx2ZDIXAfYdAh5ngGmegydu7l9ALkdw7bXXor+/H7fffjsWFr4Fa/E6uY49ig2A8HUotQr++6PnYY2131WcjizCiTbM6AAj+D5yV1qeWVqy/W2oTDNbzJ6TKI/MWGuWlLpC0GAcTvX0jWC4JMoaBHZEu6eG1MS3RiYpETlDCr8e1JtM7SZB1clZehBwxYgwJwMZHAiZcPgEUlOABoHvoUGRzX6bWf959cYurwQkqDURR3UidQhbmlxSakrnRMjWIVdvwAMVWpm9rkrhc9NJ4EzfoZ1K2cKJ1xer1/Q60dNrYaDSR5wFUBVrrLSx0PcZSaqOLaI/iq8cuK2SiLJH9ww4MpLHRwGkoMEzOF1cbemSUpLAmCoHVe74Ld1nhfzjH1/f20CbceLRJ825lErIzlXQ0Nxvrf3152zOKZxolKUqKnlQlkTiiAY4SdX2SzDlHRRuAiNRIkyDf9QaMBJDl6j6ixdHDWdxyV0i4Y1Ldh71TEJ8wXsmi0xTK3J9q5mb7yyMnN+Mp7YesVyAKw7kUTiyG8UTB1EaO4HKHN/jqGypne1bg7V/fysG/uiL+P4t9+Ccc87BZz/7WRdccVfgxjN6sPWcFda5B4qkQ7ZiuTUiDZRKvDa4S1XX1jhlgykOnsSxyADTyCh8dSwvVOfE0y0wV8o+ZrUaO8AC+N5IowxYUezatctaO3bPPQMMWJ1p1zO3aqWqvOrQ1gB86T1nIprM0MPrTWFtz1k3takP2RXt7EmujMKBUZSOTlquPh9JopICq3jc4VzUEEC1G6b2YT8gDQJUiXqLXqVaYtdVpLvhiLxtAJExiDK5+6xTjswgCxQ/r1E/4KEa+OK/v8NAVUvWG+qpAE2GMtLAEUkCWwo519LDWE0DTUK2UjanzDKvMWcZXAF+4OiUtyaBIqoATuoDaYoecimcvkw1y5jPHau1Nr2cxPmlDvqz3wCUqgpLIxIZG8wR1Idp8qkjBsUDfappwR/LH/JobAUlvmoV2SJBe+dGZPLN5ll8aob1jV7kO1ZgaeRJT0UxhItZyp0gMYDJchINyYeol774U5RXXfFqLjR2WjOPhQdS9qEAq3p7mSMwlc1blqr8yo2g27bg6csX8eTm/cz9t4BNDzVg1b3zzIU2xMDVMVTnpxm4sl9Xb73yd7HmS/ej63f+BJ//l3/HK1/5Snz3u991xbd1NmDnrtXYuLUH+casb2QU475+wLFCeZOyNwkI94YAXekUB3q2pYo41ioyyj+vU/HKqCNRKw87H1TYUWYXJw8xYPUUrDf+cBJNTTVcfPEFDGBl8cQTe1lY2Um0ANL0ONNoAbtOb8E7XjSIpKS2A+WGeGfZNPLrWb2t77ZAYOngmHXU5ktGfk+4av2ibp1HA6JgDhJwHhfsmIZI9VeNMOcXf/xxQIVYYyQt6HbzJapc29IBBeBbv5L1Sl9/FOi6IoapR267rpraGiJ23czu+6ssa5UDjkAN94a6P6Y6CZ3UqFc6r//Z/DXA9/Cj5aiAxJrGJ1uYqVNmZb0k/PXjs3oZQCvx1SdR8xUCCFHkW6dUvEiAwOdPa5N5DqYIXIuVpQGJ276DiS6JgwZcU9SnWZK8grhCxhGrTcjuv2S0yB7gmxlo6t/0HCcvmQjKc5NozvWhsbE3UhYJuXKUtf4u0VJFAmOCM45D8YBHssHXiFPNrBFE6wZGNOQqDiAypY0DphDIk3ImBxIwONRN0nqrbFsPGgY3IbflTOQG1mG+sYju0WYGrhrR+tQkiiOHmftpzHIJivVW7a/6AAb++gZMbbwYH/jABywrz3333eeK567AM5nVanBjp+IC8aMpeAMx1QZyCnXZlJM8Q8o2OOJPSFyfMgNTiyWb0a0sr5yKtYr/8rSlKn/NhxmpTgDDDzFGvtbqOBoa+O7yK5ilqoZnnhlnYcw0nXqC8W9gYC7P8izjgy9bgTU9+bDKRaJbwb/pONCG/JY+gFn5KiOzKO8bZWC2FNCHCJR2ZXjQ8HAWCUhrU7I2Ho+iNkXwq6uH0GBeA48nJoTbABxkV48LkGSXlnwNb3KvUYPLSeOjmlVMyV/iqTnrh35nQ5fL50GraBIWKmKMc7qYJEzgVxOActdAQZ3KHcUg52IBLCHLuZZBaM1QVgUeSNc+axiVwlwQpd4nRQ6VYautgwSxYCIbU3nuar9L1FcDBglRd4gG5RyYggSFhIDmhL0tdkqPKxyYVas1dfkG4pewMDOMhZGD6OnZjp7BC33cleKsBaoaGroQRWGzt1zvKZMi0RTWJePJqvcWhqcnAdcxZJLYgSEC4oOtOANakNw4U0KYJUBn81mqlhNdWeutckg3tlrrrRrXb8Popb14YscRlFMVDO5rQuHwbsstWBpm4GqKgatSwSpkhvF3vP2z6PvcHRhJt+F1r3sdPvjBD+LYMfsV2HxjBqs3dOLcy9aid0WLuyZKgCNl0qLOQGYBKQ9k8T81F4RZl0gTYamyXX+kWLYfPYlWp8pbUc59ct2GDrAqlO23BEe5X5+vszqJvr4i1q5tZq5NivHhTmB+K+NlN4C5SFMsz3bmKvyn31ujV6T0G/NxgoG8TG8rslt6ke5qRnV8HqXdIygzUMUXVBNHXvjwbgBWsbpVVH8w8XsU9FiWingOpEbJ9svvSdIY+Sg1Ft03/RHDNCG1FXUyV+W7k63BMqUAKK3tmXhk/ZqZ+++a1e1KmJSx12mMZEZVbh40IBxQQIoLwgBfHVAirDnO9CSBJ7ecIivD+KSCOKIUReyeLqgmnqIcXnshtCdbAcC+OnFkCWulCNO53OZP3JtYrqUEdAOJ7ET1jsHh40PoQvWA+x8NJuqnKEBlAWrlxYLk+Y0M3cMeYsfQt+l56Bo8T4lraOlHlfA9QGeUfM26hpEXm0qa1Mt2KRPvUhpMUkBlJhqZT9ATCKlDYlR549dH/CYlkHMIphdWqpR9pFI+BiwbOeut0ny9VfdKpE4/HXsvLePxbYdAy0WsfjKPNfcxi9DhoyiPHWdWFG+9VbpnFTo//mO0/t7f4Md3PIDnPOc5+Kd/+ifM8FfkWXyuIc3cgb3Yeu4K1yXoGqokvGSfU3fcsZ92ZR6ndgUoqtnuP8q9fvz7iKJOdNMe0eqMH9kmWJ+mL3IrFyvH6DAwvo8xTFnHmjUlNDen8fCjrSjPF9kjU8l6bTtVK7JOuYhdG3PYtaXZk0v1jCKquyWP7MYeZPparP2mSntHrTf7qLTRHfX9jSCtOcUH98TQbyiiczWBEyB60bl/qqOB8uNvBkr09VJUP4E7CdjBmiWFmixQXpzy+n/NvN5IsYLJMikUoAI9HTvefFoPVHLtKM5fyWrhgCzhKAzCW8SrHDcfcd9Mh8AYoJ7LTymXzCvHSXUh0qhrt6S3J/k/D8soVqmaVM81pXxavUlgTi+67A2nhoohsiAHkNr6yBavOEQShMaV6M+fCqCohXppVAkIvZbTJimriRxgzfpTTYHmSJRntVLAwSe+jfHFITRsPA+tp12BbMcAUg0taFy3E5PsYXdq9GlEUdzSpFT2OLcrDAmHo2SPZ7njTEQjYkiA6LAnh+XRj8ZOt5S4GPo483+KSJaqlDa4LicRZ1f2fIO13opvwZDbsg0Na07HXFcFjTMpnHlvO/ofmEHh+H6UJoatbRnEN5ryl7wc7X99Exqveze+/P++jle+8hX40Y9+5E5MbR0NOPuSQWw4o9eyYnluP+qeywvaIVuxqDfBFUt5d4G6BUJIGpQBQqOf1HkkpQws0lUbAObmxIqNwJodTOFOe31V0bFYHWcWNmaOBmaRycxh69YyFgopPHOA8zBQlR0FWo6D1EqW1epDL+yE+T4Gh5HmHLJru5Fd0wnCQF3p4DjKQ/IidLVtxG+LAToQGOWauKmPTx8v4rRbAv/rV1EphKXKBOzsSSVOS7enX1muE64sRgf0dTjCbaWDHBdkGKxXVhGl9LJrD/raLSFHhFF16hbn/axPvMCyVlEtsciX+tIIqKQCSuofXhUdqSJDtvyIa3l74Ro18GuA0gOb0jdCCZHSUiUvwA+MqJSfPLR5X7ESLkcJFGqgz60Tt4L8gEQsLbD3sHJcgIqlrH4K6rlLpWUe6RPkK48FRgbr7T/U4mpollMpzODk/f+DsUN3odzVhfRZlyN3wYuw2NWOsb23sPjZmJLD9LDjUnqSOLTUtVTUyBE//3hplxOgcVKGzbrzit94iVGDoLggzvAciA2mTAvVTyWJ9Va5BvbEwADQqk2YP3sl9p4zh9GOSfSdaEXl8EEUDj2D4skh2yUorbfKX/tONH3k2xhdcz4+9pcfw7XXvgh7du+2QRHrfPxbgmecPWBtIOqCJai/EL9UGradwbBQavBQltWZJTOe7vLjR/86kNMvBhnYbJ2DgSuaZ6Auk4flQiw766sWGTg8dASYYx2YlaezaR79PRU8dSyL2dqwDbxOMiDFgBa3kO3a0oRdmxsR3L69cL4IPbuyE9Z3+hpzqAzPoniA1dtCWUsTLqeuwTVBm/G34eC+S+HZkVINOTSs60Uqm4n5EKTmZc5XhUgU4X1Mt3y5vFRbL6VZkXxxehoNVHhi1XVEMihwdZCtNYrlBr5zTi9Y3YYw8sFO6uniXUjx4q/Up6imm3Cpub+63rL+MkAhhrFTcs9BAzxyviJ9TatfKhVUXz9VA1R5lCrlgV8b50FUNfHLIA2uKtJ2IDRuL6MxQpJz+JM4L+TEYw6MIYazBEoEhlqWqkj9iJTCLJv/LQ09ieJDPwX23I3G8d0o3vtDlI89GyArCXmoZkkL1ZeiSLJbXy8w8ecZvjg9HBwtzeWp660P6npcfEmILdfATezNwNMOuCKuiN8AuuIuwWzO3oKhdxCp007Dicva8cjOQ6ikKhg4mMfW2/LW/lalk0dRmRlnFpeSVXzStRK5138c+Y9dj5OpNrzhjW/AX/3VJ3D8+HFrkMjm09Yi9h0XDaKHgSx9dqH6JCDAF/tTKae8rRQ4KKoWmLWs6gdU4rxrwKk4Z20Gt6ylWLrWfv4FYJuHf3KHy1hg+h9mOvKPEi8UcdbGMjNm/X/s/QeUbEl6HgZ+cdNnVpb37rl+tn1Pd0+P6ZnBzGAwAwxBgiAsYUmKkLSitKJEaXUOyMPVOXu0EuWX0u5qIYoARE+AIOwYzEyP6Zn23j7/6tWrV95npb+xf8R1Edflzax6PTD1d9fLzBs+btyI737/H3+08dybY6QVzMoy1Tfp//xHHJVN+P2QzjvH+pE7M4ZUfx6ttX3pb6q1WUES8U+ELDYWi8+IJSsruEjx6AyJRs1NDqF4ZgLpvrx0Bd64u+3LLX5+sG6XP370M8RDc4HWRhaIH56PO+ycQabaSvkWdefPDGM+1Hgq02MzJaF5hQCXh0dLeHikGAKMvO+x6lUnsj+KMkScsv1ziHSMqpThbxNX2uTuBITXJ2ofOTguqJLVAacH0PUmaHlpdTShYKGQMW0/my6LCPhVgO4rAbPqbMBQxoHiOT+0BtHCENaaqJhhV2MAB+8mp2B6/VvnuMnE6p+2mcSlQqc10fvGm03Ulu9g6+3XrPUkQV7drIaJDNW5knV41eMnKT2e/1t3kqy5CcFK4koobxkhYfESOUUnzk9/9HoHOwFQaWMDIo0sY3V1YQyZFO+ZOPZWwnno6Ayy5x9AYe4CdidMCVBOvF/GzAs1yV411hY1eys2PIX0f/KbMH7q7+KPnnsVP/lTfwX/6B//I+zt7skmiCNvTpwbkT6usrmUN4H71IGq7Nf7rDc3h6niLZithr0625EUYMUNMT5a4vGXcanSkI7+hggkFQkUmYP0ZwMr8bdNTNXOntxRWOJ1nJ/hePUuw3aVyYVHZl9ogGXbxFYVMBBx8Kp03nmO2k+gyqw0Ub+2hubant0e1uWUbUnn91A/gGE9LA9ReStXqE/F+YPF8wSeR8ryPtTvbqFyeQmmYPRiS+PaOGfMCCmr07zReQ7RgJWfkXJr4gCMcKDjpIUS32VY/Pm4BdtASsnPH8fJJ6C+os9foOdBKT2EnfIhJx6KLQK/v7Z2gDd3624dnefLMzZXy4ANBvUsnTYxxsDDwKULmnSbLFNlxYBAPK0cNR/OXbDn1FurD/fP/MwGN/Ev4K4JO7NHI3fqYtvPQZ1s44Xl88hePAdjaADJhEdcZRF1BcIVxkct4e3lMWFCHKCbLG8WWYL+LSpuL6Lnmoip6q7ozgCNoZvGddtw9Y00QbToC+71+JveCWyFvdIla1P0QtUpfecFQf5iHphKGep8wvCBASqlMt6RN8IFwznw+8/h7Y9XsDS9hYGNHPK3tlG7fVnaWzW3VtCu7rv2VuzxHwb+b/8a+Oxfw2/8y3+Nv/nv/g185StfcifPgZEC7n98GifPDhO4Sgc6V3UMunMwJFWNzP6TvECzZk1KzICfsWJbd20wZQMqcdKXYLgYpZ0qErgaJjBFCxm3yxU0w4Y4b6op3TU8fILuAW/iK9eopFQLxvgWTaQNyk4cL8LwK5+2t8PbdTVKeeRPTyBLDA4ngFG/tY7G7Q2YAeedYVO/Oi6Tj8VoUeC+taohfoILS6lLZqgkwVRufFDaQjXWdlB5fwnNjX1fTKes+Gfdcgvg55Y6Pbe+qy654J+guZaj6Qt3FmXTUX9BB1aeWszOifMAyHKKdeOrqjQH2Pvsr5zv6qcDPB4ipurhkYLbN9xfmK+FznEsmgpLjWVfWiUV96++u4n/+fo2VuqtwDKt/rkgEz7w6AAx+7fmSsEPwNT2qWpBpb/sBsgUYc5SmVMXrhr8e2XKckweACTyCmNu/wREzAuuHtAqq9VO2WEdVye4EcW/+RzSk+PIP/ogcpfOSZDVi7BIsIWEDFin56xXiXmGRd9JUJXUEi1+xWQJ4vaOOSxJrP6LN+b0vdl0zKvzlWTp4oBO8I06WuJBCIvt/Lg33rChynuoR7fh/hJZ9FuKzVQ5bJVLxvgWkA9MXHBl2Vvl585h48lRvP7kXWyWNjF5k8DRd8roe2MN9eUbrr0V7IeOf+aX0f4Pfg3Ls4/iv/vv/wF+6a/9PJaXl21/VBxDo0Xcd/8YRqfKrs2E2lzxV2uSGk0AGpvFEvURp5o7u7oCgHP9LlijSiuADazaTettVB73YgoLYWCsj67bk6EspG55XicglCPwdWqC4dU7DdTyFVLdDcDc6ad4lk72Zz4yZI3oTBr5kxMo0B9LpySYqt9cI5Yq7jDQAA+BJC8x8bDDD8ys75ZxdfxcEFYbR1KlHIoEFvMzIzQe0wSi9rBPYKohjs4xuxmLrMOlqOfWC/eDB1Xlo99/xRGkHeaAKL9xs2Y7xbmP3eKRrJNzxQ/Gwj4BH+Cw6+TsenNUyz9vs1XcSwC/ePl54EWD6aG3hOPr61X8yutr+D9u72G1Ybr94eRh8nDe32tfcOlz2T7uO07GD5TUPvJdC4TbeWmG6Uwv07nmLepcK4sxBBk1+K75u4zr+YRLcASYexWkJsZR+MjjyF3sHVwFy7HvcTePWGRO4b/ihEXOSdZz2G4fRv13yEYhyWubXtYHaFPFYqbzeFBz9HVJLmEP+eEkWVuTA0gnjCWI50tlE1KCpUoLUJVS14vDD8ZDiWpvNTqNwn0PoXT2MWzNtmXNTl7ul+cJ4tZt295qSwIfOTcMTqL1l/4z1P+v/wSrTYa/8Td/Cf/zP/wfsLKyKh9OYW81c3IAFz80jaGxoqVyUxYW8e/G/phrUyUhacaw9O9hhupmG+bN94l5qkpARZSRvIZ2Vp4vBWljRdfSFX1B3tt3bbceOVUgrWAVX/4esVlt4b7BYcUMnBjL4+zFMfSdn4VRyErmpnZ1Ge39qtJh4fedd3HVC/VYLB4bPwigeGDB6DSuLSP04ulJlOgvTSxcm0Bi5dpd1Ejdx00TPCIvRF736mWBGYB18VyE5ulmxEJicP1ImZBFVnN8yeOVLVo8HqIuhAp4EABRLqtlx3GAg6qGe2i4gIfpD35Vn5OKO0ercB8ISDYvCAD3+ysH+Hvvb+GZjZqdpdd/qsrNratrb6aPOutlhwfieXF031JqSOA8v2BFPRcYdmHhLQ3Or8ymufxMlfaLW+1xQLX4z3TBaVxfBsd0a3EJ1e+9gNbyKlKTFrjKnJr3gasex/mRv0CH1YPHXIsOkx7VOe+QT7Ia9ZLSwy3J7peR7CbETWaHBRxHCTLCu613z+lJN1tHZ55wCuqQphOgCk+dBBAaNqASR4MJhM3cW8rwgasAw8T1bzUgjdlTlx7Au08f4MapNWSqDKmFNdQW3kXz1jViNBx7K0slyAcncPC3fgONH/1P8fXX3sK//7f+HfzLf/0vbL+eHNmsIZ2Hzp0ZlkBLXciW96YtP1WOv6pshrBS01tYHUpPTNYj40B5EObqMli9ZhmkN6tUxh79zoJtbAFbyz5ARp8iP1FXyv/MZA7zYxm8QW/31nZMcVNMUvVV5O9/94lP4oH9WRxI5mZH8zflSPTdcgBSFPBOCtjRIZ3VLu5fVaJS070tTA+jfHbaBVMH11dwcEOodoMGpM4C6v3xiHqqYZ59CyJyTCRyZrWnVq4v+uDOI8N8Czizj2kJyc9ltAD/kSnq4i7jmBHsiwt4LHEYIGGPpqn8FGDBFHbn53y2VXbF1FUk2A3cbg/3wJevYV48+lxttPEPb+3i//LuFl7YqXuMIwtpj90vsNvs1kqOKcXGiitAknlOQ9V+9X/67xkPUaE64aH9rMWwTqKIxyFc6RHr/D91ePKOY88P6awO48RwN969TODqJbS3dpA5MYf8Iw9I9WCcdHKy2bsc9tnqvMa0aT61xk0v9YwBvJHSbTlO3azcEzFV/BChqgQhD+sx3+Qgg8cHo9OCEaU2S3J7ugNH6KGcXhdDOwZTQFXaWse7ruIHIZq91TBys2dReWwWb3xiFzuDBxhYz+DhZ0cw/XwN/OYCmgRgzGrFBR6Nhz6L3X/vH6H+8Z/Fb/+bf4n/6G//e/jWd56xJn56WAdHCjj/0DhmTw1Jw3Zx4/brZcsGwvasnioWIQLaDdVgnaaqUhkYHgEbGgTL5WDWbGZKqALbDfAMqSbbZct5qGLc7n7WanA8tz94soSXrm1gdb8BY3ALqaFNYsf65E368Jk6Joa+iEfn/jKK2aGQToqapn2LSejz0d0E3+k6850VGAgXYGpiCAMXaUEYGZC2YNXFDVSuL6NVqcWW1Hn+8LePI3o3W/LBrmbhABOmZGMd+xjCllgIJAAe1DjOTjcgBLD5hAeYF0VtyBHIQ1fX6equBwVbJXYCwv8qpnxlyV5Ig/wOB1N+C3urf3BzD//r4j6xx6bHwvlVeQqbpnlTd9rEdM/rKjvo2UTZ19X8lZrJ+6Q8hyqg898nJ50KkaxwaOPKD9zlGHGAlMyAuf1k1afT2se0n5bXd+86p3mj/tqbqL93RV7NXjiLwlOPdwRXRy/+nomTpOyVcp2rLhVYRC6d5i//PewkvazTnqT6hqb/fjcJwsOSAIw4o9mw6/rbQ+d0zuiNeQvvAlDxDuFx13kPacLTderXaMAXN4D6HnkKufnTSBOaKhQZBkgLILBEtS58NAlMwCwbgiOnhA8pzHYemkpLgJUqDRDIGkGD1dBq7GNydRDDS2lUmms4SO9bJ8uQbpOlLEDTnH8Q9Qc+jdr2Gt786m/h2We/hUcfeRyFvLWw5IsZ9A8WqP0mKhWT+qSGgey2+7os1H9ms4VULgfYTB6ja3KnYDYHI5uW/SZ2m8k7I9SAwnA93QY7IIrerMI77obBtX7OZmX5A6UM/vlX38PYWB2XJqfA94WBepranMbIYBMDZ+5HMT2NAeOjmEz3o165i33u2FOxWKYq6qlgIb+SpY9K45g+hwOr3FAZ5dNTSPdZ2/rrpMo8WFyDeVCPLDv5VT2GGCeDk6Q6LvcTcVjFwc5WSLzoBa5cT6OvnpHfq6yONv3nzEwZGjMi/zMXJ/HQ0w8gWyp6jJOSJWfRz7c20bOQucNlW3zxFNZGnafcRZchJA5cklUFIxM05r96Z89OxpQXBgU0KKyse535rjMlPpTf9suH8/1mrY0/InVglaaXaWKHSykWgGMI6SenLxgQ2ldqHsz3W43P/HmGgNiwtEKNb2wS2/bsK7h5fQGlzDixVSk3XoFU/eKpF9Bnmx/IZyBltj1jdohjNxv0AttG00xjP11AqxDFaTCtRqyQR2ZqDOb6Fsx93VUKp99CLWgSg5Ua7Ed6YpyA1YSMx+t1O7f4eVwYwmcoTXttA2alAvV56PycBWseLd2vcAbNtUOPPIHK4i2aJ24BXeGIXmL1kl5v1xHYVCVZ+HtvTne3wf+Wethu7FxG5+u9pum1Ho4kAET2nJehuUFsiDMM3JMeO3JR7a1GJpG97xI2nxyVR97sFPakP6v6natIXVskVdkd+r3pumBo949j94f+Ftb+2v8bqy0D/8Wv/m3849/8Nayvr0nWKkN60OmTgzj74BhNeqc8X1WCraLFmRGYM1UVoJDtTbDtDbkTkRnc8muVF+xUxrKtArFW/XS9WdbTCWm15cHNopyJwRz6CwxffpZUmM2SxW4ZlrFbivJttW7j4x9t4y/9aBbzpz+MBy/8CuaGPwT9hSL8DqqjgYVeZyEx/fFUPiNufLFA6lQ+j74z0yjOjsnnsra6jZ33FlBd2aJ+i9vZ4/At3Y3MwakZzD3wCH3OoVVvYm9zDcnqqpfsfldsj7h3Ufv0DLB9LAz09xOuMFPqNTWuBD4mD6ifXENtqIs/178rDI8O0oJ398GhvLSvUgrwWKEIwBl657keEBwB+mvqH67X8P9ZOgjWET4GylcnT53psVFqWxnTXXxohvycawxUpBNV5TPpiyULeTl2QbbNWJkA/DZfScUaEzwyXXt5FdXnXkZDOBemOLmH70fu/FkY+VzC/B2rv+7rFi5Ht5JIls704HKwdsnqy3E0LQuK3tZ0p+g8YUb69biJOUn6bkVdVLpJEy69tTkqbbI6JeubZOE8QRwZg1nuFASgytk7AN0X0nsz+o5WBLhiWaJbByVz1S4PY2FS2Bw1UdhiuHB7CI1cG1ceu4XG+KBUHYrznlg6TeBqDCu/9A9Reu+bePal38bzL/xn+JHP/0V84Yd+VDZdsHjp8dPYqbfQV3kJqfa+ZL0MUgOK59sQ6j1wDyDt7oA16uAEvOS17WXbS7Fp9WXGtHSsckefaSFYZ4IVtlVpa5fAUxdH8S++/KZkpyzdbJ3qS2+c7WG8/pIAfFcxMjyGn/nJIVy9Po7Jl34CW2ufxsKtf4s3Dq4g/MaFPRvWTQ7e6mQvB+7xG4meO4bMQBHpUkFGry6to761G5F31NzhAyG+VI6UR8YISM0iLVSxBKS37i5id5XUwbbrjW5EA3KMxUzp4YbnDmNlMR7w7Hd8NlT+dE5czZVByOLOuY7P1SUxSo2o2RAxyy/aZ2fKeGMrbNODb161vzK98fCeAy+uA4ZctsrBn7CujWYN/Mp0UfMzpdmsqSo/tWaqHRTX2+rai3GvD5WEMj9TaZWqRpVgWQOvcNk2UTcj9EYpWatt5/aI4Bagcu2hlPrGvySErCIJl7bWrQW0V1akrVV6YgypiVH6vYYmXRf2WFHFcT/6RlJKwru5CVYchD/fMQsOt20KlQqybtKHxOwsPJAz035FxxeSPooqRBfQC3DigfD4LmOhaXp1oZDs1iTJ6zBhvUr3eYqdf0L1R1oAy/mn4C6774Tvn9j2VswoEPggCj5fQnqAVILrS7jWuonZtSl5nuDtUzvYOLtHYaO0uA9KxkmoEisXPin/hl7+N/jyH/8OXnzleXz+B7+Ixz/0lJxoDrJnUcmcRbH+PsqVl4k0OkA7nZfOQI2mWIgUMFCrkTqQAFJ/vw6aTFuVKrQFElRxt+5euCGzuG+mH3fXNnF7YwcnThFIS7VoMjwhQdZj929ivZXBm+9UMTlexezMEKa/2Ic33h4nJuiXkdp8Ge/d/RoOGttKB4U9G9a/4aMl/qWIaXl0iuVJjRgps9FCYXIYJWKrMn0FHKxs0rVmSLpkk6RaSr6vH8PTc8gTqBUAavvuHeyskFqk3Uavwjv89qrLdCDg/lYBVtChZQBU+eKodlah4AjWXXTC/aCCRaVx4ovy6KH/9HQf/snVLazWWkrNmPJNogM/ttL7QPthx4/Qg5zIp/Grp8ooGoEK2gCUWa5MDJ96TgWpIYBL7uJjTAM44WpQvb8QAH5wQZkKVN1qMgSGqgqSDPHsm9zuMgf8ca2vOjO9XOuXwGAJFbudwpj9/asEpG4jS+AqJcEVMe/0uyV2QGvgKgwQdbMA8ITXo+YUhk7Omjp7VE9e3/DZKUoYPO45OTroyFT1Lt5D2Us6NW0cRo3qJqs71DdNJC63t/Be2hqWrvd6dIvVnZfmvABVadsBqBNFeVP8UyECXBEDlRI2V+kJaW91MLyFKwt3MHLDQHuvgtqtNVKvnUR9clvaYqVoITayRdnerQ/9GPbPP439V/4t/sW//k1857vP4Bd+9t/B4KDleLOSPYdaagr9xFrl06QqJFCGvaa108+qgNVvYmInxgrZPP1RHHFQp6OmMGxVIpS+Ff3sHIlD35+8OIWDgwO8cectzM9/hPIaoEk6JVWBxUKd1GYmbtw8gXfeTROo2sTF8zv40CMjeOj+PAHCJ/HAO4/ghbVnsLP6Au6299AZ2Ceb/JzYwZQsEEu+nYccetzY2kOzUkV+qB+FiWHk6FMAq9q6pQJkofk5uTKEsVWFvgEJpgp9lmp1b2MVm0u0eDTqSqzk0ygCJYR9DzIT6idCFnHNIDqK82KePyknHx5VfQcQ+FgaL3ublVF2v7GQFjmbOX72viH8D2+tQmdQPJbFuszduqsgK2wMwAYUnCtzCqX7BKkbf366hGKKBetidROcRAEw5JbLdBWnszNMUf0xp69DwJfqKFX7dMJdhi2cIdRayxHMn1v+qxhX0zgG9knm1JA4ieZi/Q5b4OoKGLFU2XP3IX1iFqlxAlcLixJcJS479roegyWsm3eVR4Y5uYoXI35Ea1GymcCpD0+YTn/VTMdF5B0LjS+K+2J/kNJ9eb1MvkEAGBaWLF2SsntdHCJyoydfsFN9NArKtG6npU8FO/BPE6BSRagEjax0HmlkcmgX+rA2uYb60iaK63lcen9MqgTvXFjD3vy+VAmmimViuzJo9o1i5RN/HZuP/SWYX/5v8Q/+x/8Sjz3yYfzAJ38IQ4NDaLI+bJQ+iRSrYdB4H/kMMWPrwoZBfQXl0ku69EslXvwP9m3WSoQpKijmS2OtcJgf75eg6vqNPNiHh4ipsmyqmJHB6Og0toipeuTh27h6bQCLd4axtt7Axz9yDcOkEvzEx4axeIqA3LOfxfLwY8gQa7Ww+UpkVzkjPunzacVXAUHUeGTas6+KYKskkCKAVSRgVZoYkSCrurJBKsE9LY+4WqWzOYwQmCoPW7udqvu7pOpbQHUvXK2o1j1pGQGo4Oz6Y8wGDMoC5otr+pkpru8AFCyM5U/BY6SYf7H3VcIBR3B3H3qMmAvA4LEw4PpOM9VyTVV9ibiCrfr/vb+OSstDCXEqJwe4WOjJN3eqbVfUgl8YLeDnpouAb5edKwyB637gZQE6X1oG18ZKX95CgJKvzMilXGXNhPovLIU2HrRmeM+08oB5bepubvVGcKd0PPwKgav6G29LtkqqBc+dRmZ+Fg1irtqrNrjiwdVav6udZ4lkaKDbMN2nWa9yNBgkKhf9WrqXLLzQZMJ7TKeXzyJihJXHkkQLROiurXGAqnNZRy2dNeDh4WK9L9G6PeL4qdLiH34Yft/ENmZPpSx7qxQxU83V27hBLNP07X6cer2I29tbWD+9LYGVYK6E6lCwXc2+EVz98f8Kg9e+h/abf4D3r/z3+MiTTxNo+UGZdYvnsWY+jFJ6kpisNNI7N+1C7d4TvqfEn6v+s9mssFVKVRFaFzA3MYCdSoOow6yt2rR8XWTSGYyMjKGPWJnR4VUsr17BQbVMpFiKVIAHyGVMXLqYxV/96WFcvjqOyZd/AubyJ/GVm/8Mq/VlhAsLmeT9S5P/OgtN5bXJi8sjRqZQ++3fXkFjt4K+6XH0zU+RanAUu9duS+Cll+eJ2HE3ND6FwfFpIu/SEkRtSjC1g+jKRLUnfnz7560wFZ4bJhN4gMf6qauPLMbGeq4cVVWgPJeBgufd21eutji7t8Tesavkwd0q2aWHqCSdcsXfX5gbwD+/vu0CAZ1lUisJsBDVnsfwIKCC/PHJIv7yZDG0PUq2ChALuTvcHk9K+/yzlNfmEGAFuBXTx6U+mt1vmurQAx0aDgxh9D0ADw/82tece9ut9D4Te20VtlXizwFXWQJXnMBVa+kuwli0kNH5wQt3DNWd+bHbdYkr/wavx6XxXzkS9V/33ci6LD4sfTfCe0jTbV695J8szfcdjFkMN8r0N8ZsQ3Vv3YQ3O/4pFdXeipgoY66IyuAm3p5bxPi7belssr60htzaHKHKGprjQ0iX+l17q+0zH5F/k2/9IVrf/SO88darBKw+iwfvf0xOjvuNcezjB9Gffwv9jbeRNvfQ0aLUnfHtT+eR0Zx5cgvtUp2Rvk2L6yZY8yG0TAv25ql+M1NzxJ5VsbJ6B5VKDSsrU9jeLmJ1bYeA1W3MzQ5herIPL706iY8W/0PJWFn2VkG3AtEQKQhGwkeDb6LTfrLYGaGxs49N+ssP9xNzNYrhC6eJxdolNmtdAVcCTKUkkBokQCVcZAj13triDanuC62DVhknlPU8M0FZzB3g4DASbt8xz+GkFaS/EppcUcGFsVIKu+FCBj+gcv7xgSOJgxRVn1qwCws0OsVhstxc8aMnB/C7t3dw0NbvtzaimT584QuzPnQ3CRJQTRTgZ+s0MKSq85w+dkCq78Bj7XxFH6MEeIBKBbpeuPfMefkEF143LZy8vGch8ISHPPP6PGplIp5fv21VEpHld3VMk57aX5wDrtIEqNL0zGVPn8BRqNd6W43jQZIIaZtHp/7rVdRZRJdgvXq0qTpKMBNfSrywzmlY5zRWum7aE8dSsY5pji4sqbDIq2LtHqQvQomS8r+R3vtb/MGIAFeZDIHGlGtvtTWyRYDqGji9mF96a1KqBJdOLGPnzBbSZVIJ9g3AEDZR1AfLD/wwNk89hal3/gj7X/ltAirfw4998WfQXx6U4TuZ+1FJn8Bg/VWUW1esMjnXjdX9q5A269pLALeun5wcos8DIPMymEnfWxekQ9FaK+ctTEQVlEolzM+dxs7OFrKPLeG99/sIXI3j688M4BMfv4KBgT5SDU7iiQ/l8Ox3H8eDVx/Ge8tfw9trz2Gf16DeZB1Y+W9+/MSX5EntJLXNXTT3qygRW5UfHkB+oIzq2hYqBK76R8cxPDWPNKlzhRH65t3b2F5dcnf0qYxDt++kSUUFVIFdZUBA9aa6R9DZJCueusi7O8Uc4ObGdfLQ7aEkOHJZMbhxdIjgCVdUO35GRgUgxbSBH5232SrYhuLqWPCygX+MaPVTxvq/e6KMTwznYuoGDSA6DTKV54ZDr4KVxGdE7GO9/CCNu3XkSjv0e6rWTe76s9lExpjeeKbUNYJVc/rAOwrT2/HHe3iWOr2rRUlcstYCqf9WVom1ErZWozD3D5RUSZ4anris3oUrzj+t370KC/xKnpfzpCaRdPjqmcSeqpeikzM4rId0vYnHroWHHZXoZfAjKsN+N4uJEd8u8a3IrD/Dni8YcG+7/Psl0gVDRtpbSdVgoQ/NzWW8kbmJM1fG5XmCu3eruPrIDWSGCXwJcFUoSZarURrGrSf+Kpbv/wIufPt/xa/9xv+E+y88gqee+KQEVw2UsJr9OLayj2C08QKKrVtWmcx9ffdWMVUsYxBldXFYhyYMYqc4vd0yoT40W9hv9blZOfHTpAITLhYG+gcxUF7HrduXsbk1gFKfges3gNder+HRRw7w2c+Uce1kHvzlH8LA2BOStVrYfFVfbFyJuvkaQkDkPMA7DZ7wtG1SCe4u3EVqeR19M+MoEsAqjI2glC0jZaaxuXwbWyt3QtwjsNhyFLIAPbNVHFCdYbpaHO74PvIWcWED4oEVr880MMZ1Q2rnoVO9iKu97YCJsLTaXMK8OkFRTalxXGBhMG2HoUj6RQJVv3d717Kt4sxthzoncLUvFJUnUyKX0gy/QoDqQ4M5yzDcqzyYxjYp/QMEWTkoQIh5z4e6u1L81mzYAoyhFYlrdmZwARP3MWhu/ZSwFBRxn2Pm4GP9FcRtL1duiwpou5xc3fkhNhK6zNT6t15H4/I1QPz5wqJ/32vRyzNNzxF1dz0Xt8p216Zuyk13F535PqNjdX8b9Dx5zyWw0K/dlJ00bq+3RU8XBei6z7e7MC9Gnv4RPr0Nx6hKfRP7sya2KkAYsUuVoHDmOTyJy+M3MXijArZXQWN1DcW7dZgTe2iMDyDdNwRDgqs06sVhvP5Dv4qxhRfRev+PsXT3N3Hx/MN44rGnZfYCXC1lPo2ycQUjrdeR5vuwVzBETlbyjdi7euPuFn608CShDPGC25I7DLebg3LjoDtfK4+A+JomJm6cVGPl8gDW1ldQqTbQavXj9mKBVIINXDi/QWrLHH7upwfw0itjmLz8E8jefRr/9OZv2C4Y1Gcq/EUrplP19jCuVNIJYcF2R0guV0R/dgTpVA5VYuyq7Qpa1Tq21+8m8Dflb0dQol/aousV1jMW0PAeGBfoMIUt0VBJSCkM4Dykv52h4U+rAAL1t1s2fMBAy9L7LXGvaep50WeJVoQvzvXjX9zYVnCQ9+Kp4SMlrbvTT7ygpQz86rlBzBfSTqW1NAEWSgkXC6hqUM4U4KPlw3z3RG2v0w/qOYMK2xcAp4AGyLQdmL5+1hZqO9/A0U90TZwN6DrFspNZQDxou9RR3Oy7n4+jXyJ6W6WTlpo8Xti84tVN9FlbY6qiJKw93kuVXtJRtjtYbjo80uFEbUCy6sc1l3VME522UxoWk66XfkiWRr8NvYGi7tsaEYuiiYM40lGBfxaBlRDN3iqN/Nx5VIZIJbh8C3wdmLtNDMnVIu6e2MX2yQO0JoalCwaWyUt7q7X5J+Tf/OU/RuW1r+H9q2/h8Uc/jvNnHoC4OzvsDHaz92G49RoGzGsWuPKrEcRX4ZLB18e3lrfxyNlpy0O7PBewjZXqlLsIOG/ClusCJ0dLuVAoFDE/exLbpBI02BKpADfxzjsn8PobQ8jnb2F0ZB2XLkwQECzjhZen8bnS38HKxst4ffnrqNj2VklHvtcS54lXnvrIOTt6PGWyeYyROrM8NCJj1fZ2sL1wE6n+AgqkEhy9eB+qmzuoLK+h3WxE5B32jIdNtvBd54hbaJwUhsPKABqTouInec3PJnF74Ta5BgigMituGsDRGwUMrhW2Raup+O1jppgCEDSjcFcd5rBWHhgT8sX5fvz+os1WBV52rWsWlDAC14VTz797cYg+UwALN0ZXy/LGkMMuKfFC1HJqGvWOBWyy7Dq56lR4bFZYvbhv4wCPqKdNO3nlqyp+rX1eemancUCY096kwux84qfi8LEbzcryhNfupUQ/b65w+NR/3eQTtcrGldtrH3h5psMzZR0K7Dwgwm5v98ISXus1L3R4Nw0HYfHpOpfdLdD0S687/UJj2YuBmB4NfaXovav/NIm0t3JcMFje2bPjc7heXMDkjTqmbg1hZLmNdx6+ivbYuAyX/q0IXIn+WTj3WazOfQgnrxAoefaPcOXa2/jERz+PcqlfTgQbxsMSYI3yN9BvXtPLFgxAy2Ze7NX09avWLr1HzkzRhL1FV6qo12ew3JhVCESuACtAPXPOYU+GBocla7W5uYZS8SbW1koYGWmTerCEV14VKsEqPv7RITz5eA5/8KUnMD1wEYsr38Fzq890deuDb4FAshcF7ymQO/omZjAyfUKOxYPdHWws3UJ1z3ZiWq2gvrWD0sQYgatB5PpK2CdgVd3acnNikeXqyzYPXA2LG11t03ZKqS7AzgIpeR8ezUOEsTA8wIRABxaBMBYEZD5mJbBLUPtkGvsSACx0TdhW/chsGf/yxq7sk7ADqZ2dbKrKb4yA1N+9YAEqFyRyldFRygl85/EAys7Hv7ia/rg+EOSyharqz6cWVNvuB1087GHgcB82HgqolMWcee4vTO750eqareKdZv1ewcD3W8IAjj46uKv+iwNC8QDtMMtZt/0eylTx2Cr0wsYkEx7IIS5WN4CrW3DWbfwk4d1IHKA6unzVCcsNCty4Xu7kn0Kx7a3EAp8xUjAv9mFpYhlLC1cxvJwnhmQRQxsNtMf30XSPvLHsrWqFIbz30I/j5tnP4NEX/xFW/u3/jrOn7sfDDz6FvmLZUgniI1gzHsIUXkRRWMeLw5Zr2/C/fr565S4+9aFTGBhdhjycuTKJm7WzChPhLVLMVjFwQ9+bxGywlSYmTqgEhQPTvtJd7OzuonpA7NsyqQj/uI1TJ7fx2CMcP/FjI9Lv1fMvWfZWS3e+ire2X0/UbR1fniMjWgceDxOYEn9GOoNGvYqVhWuobG+4CZwspL3V7SVUVtYwcHIeA/Mz6Jscs8HVNpKKzhU6jAsQvnL6fjp4xFZFeWZF3KETXIYoyHB42ThhYef/6eomhoALASWtatSuMlJhgAZ2PO4AArg43qq7HeYYwf8IqQD/YHGf2CpTXw3cKjqOQa0LJ4oZ/G1S+Y3kUgFAEw7eoGlGTR/TpBbq9SXz2DcFIgfAEZQ2+th23eZKAbe+e6PGdcrWhUW8UChjhCkxuVf/rudT3nuEXsBEsvgf3JrAY4uKAlRxaKKXuvPE4eFan9As7lVXx4Gn5OCGJ4sWn6Zj7F6A0+Fvp156t2AwPBc3trUuC/MdffCqs+ifF7HtN6RLhUzOtbdaX7kFY6WIuStjKF0rYmNsHyvn9tCcGkGqSKxVvihViLXCIL73ib+NqaXX0LjxDFa+8ds4c/ICHrr0YZl9A0XcwqdIHXgDYwfPIiPspaxV2K3Cr//ha/jFHzsLVisDzT4CVOexXJ9zF23vPDhvAWCcedlw7ix3FotFv7PZHOZmThC4GkIudwejo5dxe3ESV64Kg/YlTE1sY2pqAr/ws4N48eUxvPbGT+HE2mP4xu1/4zvyJqTL0NsIEUBqdPqkdJUgPCav37mJ9aWbCEP36qgV4Grj8jXJWJUnxzE4P2sxVyurMgwda+u9NnKtnKglUkuqC/c+VICkuk5QF2a/2smflVsL9b2RQwdKjg1TiGrPwSJOfq7qUFGJ+TkS1xeWYl8lwkuZFAGrMv7VzV1weGMKDArjZVXxUn8W//H5oYCXdADwu4Jwj55hXl1Vo3BNfWnXR81Ha7vTQSy8TI+dggfQpArW1PJWna9q9VVZQbVnGdz6h41/5oAnDhXBU96i3mZXD4xzz3qdhxOulkpsfg+BWI/CTUQjq/iSD1Ov5HObHjPtD/QmmjDp1N0spAjgHnd5B4kbVlHtCX3/8KXtvuxegaoTkx+6H4P1EeO1SV/EcmQ6B5W7M3tvD/KfenHsrVjesreaPYvM4BhuFJcwcbmOsbUhlHfbeOvS+zDGx5EZGNPsre5OP4K18Qs4cft5VN/7Fm4svI8HLzyBU/MXICDsNjuJ7dJJjNVfwmDzfQJXQs3CcHN5G7dWdvFLP/BD8obcqJ6zWCoJjuC9WcMbCxoTAeayCCpjxexFq9w3QIxVGVvEBJWKywSuNjA12cbKSgnPvQB86NFbuHRxGBcvlPHCSxeQ6f872Fl/Ea8tfwNbzaBzTc8ENsE4sSeFYnkQU6cuIJvLoU2qz3VS822u3pGHH4dJVM7VzW35J4BVeXICxeFhVNbWUVlfJ3DViMmp8/wVWRGDuejA/3T4F1jTQRFApF0R3Li62slfUzdNiNpO830FHmC7VHCgMVamZUXN/XfQYcKoAT9MKsA/uL2HShu+KdGb5z8xXsSvnB4I7Tp3t52SzFRYqAArpBbDfExeCCC1fD75ynDD4B1Vw/R+dw9Jhns73fr4+8kJVsGqnaWi2guW7RWmX4h/XmKeo9hHLPnyn0SSrTJRZSa91q3ErX7+p+9oJHlueswAU6US4t1JFKByCmWRaYCkgCP8bTIABDtWn3VoZ/ztSx6foxvgFJfX4QFVdHHiWGCxDLXVmcPTbeDPrfiOvDFLg1ie2cTyjVsYW8ihvreM8n4bfUYbO/ftItU/ZDFXFLeVzuPaqU9iaeoR3HfzW6i+9gwWl2/i0fs/iqI4FoeyX80+ju30eYw1XpTg6r/89W/h7/3y57DdGsH1g3PyU4inkGfeG7L7dg+V6HJvl8dUOaPQesM2mIGRoTH0lwcwOLCKjc1VZNLEstUy+OOvT2Jmeh+PPbqGT3x8EB9+Io/f+p0PE7i6DztrL+H51WcCXZR0KhNgamz6FH0OyMVoa+0uVm5fJTDl380XN1cES9pbXsXB5hb6CVj1jY8hPzhAKsEVuraJpKJ6ENLLUecUa/F2mUIEQY/prPHOVR+Y8cdXmxpmc+TZLHFFlQZ/5T22KRjkjRX1mmRqdNWiakTvVFbYVj0xWsAzyxXb4NJtlsznx+fL+MuzfW79/axSWH2sTwfthxuya/0QAFLKFwWYhZXJffFdEGaLqTws3GYBmZ693V9erppjUx7it8xXOGfK+YnyQpQ1VfxTxB3A3EPa5OIDtsq15JIc3HjPXLAO2lcbiOv16q3MeEmGQjqVnQ5m2ztA4LEF95IuaR26A1Tdh/fydstCr3D0Wg56qEMw3D/ptOmFdZ++7HDfJHQsnjj2VkYKGaGuutSHlcllpJbKGL/Zj/HdMvbu1rFw/23F3qpPslzV/ADevPAXcGvuSXzo7d/C8jf+OU7MnMPFc4+hWOhDHX1YzH4K7zcewOmzy/jo0z+Gl3dOyWKZslha5KENrax1Vob41YHeMSHKVmIFCNhrGQGpLLFUs9LeamVlCQ/efw3LK2NYuD2Mvr5V1OvvY2R4HD/3MyOkJhzH8y9+DgNjj6N6+0v49u5bgS6KejIzpEKdJmaq2Dcof1f2trG6cAU1cSailjpM/BNW+OQp1H5bC4vYJ6Zq+NRJUgnOoY9A1uaNm2hVq4Gahufob0EIxWA4oIYFnhVHxcTtH9qnLaZ3I62bwLz7E2YTJW2lHKDjqhARUNNrGxeUCnF/uWp97eaZ3uDR3Is5dfgrpwbwzZUDDxQwC4z9+Fy/BFTcF9+qU8juOjUM3nhWnWx6VVd3uUaAEOaLZ+cNeyOBClLDGDGXrVPYKFW9qsfV+9x7tQ+fdzWA7II5O6VtUxVMGxzbTPnGgMjX7SgJ3/l3FCApLo+jyF8JcvLsdWkMCO+hLt21N9U3NP339UzRodDw67zrdHFgJDlQCVxnyeJ3x1J1W59gWDIMnDy/ZGmCccS3vkeeQm7+NDKZFPqKDNNlyO1/79A6t01/zabtcO1YPBFvsQJcScehORgEiLIj09ga2Ee1uYahrRKmFkpYTy0SUKrYaQwrDf3Vs324OfOEtLvC8nuk9rosB8UQqRXF2Mhmi7jw0KdQ4SNoNkxt8nfvHrMWEPW3Nd8wJ6ol4pqtqnLXG/e3MhboezaTxQAxbMViBrncCiYmNjAz00SjlcU3vzWEam0XZ89yPPJQCQUCSJvV+zFRmMTawSKa7ZpWkbBFZu6+B1Gi/IXd1MKV16XtVMtxh6A1JOy77xbEjnVOrFcbB2uW+i/X14f+iXGks1k0qzXwdjsiT/1TDemrZ1CuW++dVVZHm3n+xDK5vDyT8czFSdz/sUvIlIoemGD2HKYu0FphjvNQD85pnwrQUa+D6Tv7xLjivuvh7I83EFTjca33lOsqmBFs1VqthVsHTTf/nz8ziL8gGCpNtRdhTxVyXQIpte1avzl1Di5wKmBU8+X6ZRfgwp+Dj+lT6+7m5wdV9nWDJsXs1jZeePYV3Ly2gFJ2nF6y0m57CvS8yB1+FHubVyHuTBoWI+j8l0o16GWmihbPoJouoVUwwlqn95X4y2VhjA3DpPL5QTUkRrSwBFfiY/COMXrFO+rd9l91f9H8lD17Ae3VZZhrK+itjPgrydMmi6mAqu4W52TX48K7ARDhQIuHxU0AqniP4KU7YOSbUDumja4TR3y9wq+p9bBmGWeucUFVLoUSgaoxmh9ZCri+R4wV4QGx5qlebI9FERtciZ1rLJ2Rx9k0xovYLG2gUd/FVmoJBiHTgbUsKpldazpNWWBMpN0tTWBx/EHUhe+VG8/h9tI1eVByuW9YZI50hhGrk5XfW03TYwjgBxXMm/9tsGV/hf9tmDE9tRPHW+OpzEKJAN4I8jkDWztb9MJPIOjWEG4vlnD9Bqk4i8s4e18Gjz5cRMoYxzg+jLHMAOoHS9g3606ugdF4sL+NfKFMfyX0lYeJGW1ZLJU3LLU2RXS60v5OHn6YZKdqO5adWt/YGMr0J9pb368gvBT9cF0nRh8BKhdUGTaosqMIBk4Y2QtQdUmAqr5SwMjZDzpkWJQ6y/ntY3S070p/aayWy/5YLBL39WsQWARZJBYGUuxsBLD65vIBShkDf/3sID49WdTia2nCAI3bdqVe3PnQ66I5+2S+fvHZODGlPVY6eGBVA0dwnxEH3KqAKXK3pgCtdjyjoYOqPgJVBJPs504HVZv8QN6JFEy7XKd8AlrpfZpbs6hm/KAqfFTroGonBFRFS9Tqhw7XO0OmKEatO5anExUjb2Mmg4wAVQSo2qGgKjCJKPkfXlinCoZIF6CqFyASF9YtqIrqPBad7MjqxSJCOgGaowBUDL3UVf+ux3NAVZomy2KBYaTPinKHQNXegQ2qIt7sj8UW25jdkF7ZiaUYGMDBVA6txh4GNgo4vTCJ4UUDjcYODrIHVvw0ATFCryYBrI2BedwmcMXqe6jdegW7e5sY7B+TajkhmWwKeWKPhPqn3fJ2ZnlACCHMk/wXzr9amD+9+q99UZyNWCz2Sf9WzUYN4xN3USi2sLnZh1rdRD5PKs9UG5culnD6XA7L65MEyi9JxmqnelcvyxbhAX1n467Mr1QewuDoFPKlMqqVXcs7ekdg5Tz7zq+o54FpMQQzVd/bQ2VzE6k0MbKj4ygND9P9aaBVryvpnAow+OGaBqqIqTIdUEVJ0sRUGbToSqbqoxeREkyVL0cLCOlgIPST64bq2vl/vppqrBN0UUky57cTPwCslDQuGvFdtzWKGM2lsVBp4FfOD+PBoZyvPmo+cAGLOva4ygS516wcnGvM306mM1NhfAaHDmBlGQwIMHF2nSwA6dXcDx7V+wHfNYMmRQGqnn/2Zdy8SqAqN07PQsYtQmeqLFCVEUyVkjljLWKGKyGgKg54OKBqCDwUVEWDpE4rerAk/7e4/BERv5sSWacIUiuQve882uurEaCqc+ndtic6bbJQG1SFP6R6wl7AUVR4HOjoFUD4L8Xl021bkvRPp2uHK/sow1RQVSCmaqBoRV8hAkGcqSk2YllGnN0NwD+X4qgFCQwZ2Rwyg+OoDTJU21sob2cwslrAQWsD+2xLekYXajhGagORppnO4e7wWdwdOou+5Tdw59ZrOKhVUC4NSXAlFqZcPk0sT4ZASduyr4EHlpiCsFwQpSzielx3ZvfiKr+dN3khgjkbGh4lwF1EOrWN4aFlTE23SBWYxzPf7Mf+/gYmxuv48JMljI32IdO8iHPFh5Gtr2M5wiu7YKc2Vm7LkMGRCYxOnUSW2B5x3TJWT/ZsdJyIfXEEuBLgN1/uR4reegUY2t9YDywh+hNu9U2o+s+WTL4g76EEVR+/hLQCqmROPNy5p8co+Svt3Sc/a8J9NlhhIMiptr5zzWOy/Co2NV+9btDZHFueGitiIJdy8w4wUspt0cqEH3wpY84noaxZCHPn2q/5w3x97a+PCkpVmO5Gcozx/SCYvqRs9d+Lgqm6LpiqCfmC5IgKqrYIVDnqP8UZBYHwFjKZfWJrs6hn+nxMVbhYoIoY8VFiebtgqjo/JUeTNm4l75wuAWATTNV9NlO1vhJSt6MEfYFR0SEtD42Rjgv0wrrPOEmVkgvrUI4SzZWw+KzLWx/ItKv4wbISsG1uzMP2nVcWj4khXCrU2tY80jbVyNybvI8lXphy5E2GJtdsHtWhKt49cxvlt+9ih2+BLaZQXs7iYGIfzYlheZ6giCfS7ZTG8OVH/gZOrL+D6p3vkfrtq7jvxEOYnjhtrZ002Q+MFFGvErAhxqDdNqEaqLsGto5Rs2a4rO9QYlAWUqY8WU5c9yInxmpQGtNv7WxgbX2ZrjUp6Qhef3MMV6618fTH7mBuZhCzP9aPd9+fQvO5X4Kx+Yo8rDno38oai2tL1yVzNT59WrJWwt5KgK2Nu7fsePHPubpIhdwIO4YVR9hVDUxNIVfqowWNYWuJVJVra9qEqS34GtxhURVwEzoxtB1oIYCAwwNTsn4RRuFWsd6OQWkzZfIAIHJBg1OebXCt2WIpzIzmbYmHGMQrFQnsJFTYM/WgaDDowEoDc/AM7H19IWvjjFe7rhrYU9of7B+r/zxfVz5GivNQFtDKlmntccPc9nJtMGj5aNMg0z/8dQCUvlXK5UquCedUdfbudU9+cvmg53nlQQpc18WygOYRgIohru69ACr9V1y/hOeejgtMJvf2VlsSnGiP6qiWw0nvgEsXvX1HM7xZ4Fdg+HJrHa63rZc0k7vzsT4JHEsykeAqjVSOFkNie3LZ+1Ad2Aa/ewMDN5o4ebcfjVttLJ1Yw/apLde/lZEtyht0a/QSlobO4OzKq6hd/h6u3noTZ+YfxMzkaZl9Np8i5oqYr0qTGB7LcJg7EzfXHTQ6QEtd+B0g5lvi7YXS8Wulug0QNiBpjBGzJPxbra0t4fEPiV2Cg7h1awLvXyFVpXET+VwJDz04TWrBIp5//sN46K2HcW3tu7i2+l0stXadGsAZk8Jz+uKNt7FCAOvEfQ9jau4cRibmsHbnOraoDCQEVjxiQs5Tnw5MTUp2SrS7ur2NrTu3bf9VFiMW4dkIne9xVJ3sOYmHTccKmHIWSReDKEsnd1pnpze5u9hbwFff0aYeAqxdV8tmCkBwAE8Ik+OMGxWYcQdQOWmYntYFIlobOLwmc5excurmggRTBTRqZcKAkV0lN60J9YUvDIAFPKkr8VTAqKb3gyPTAbbade7cbAWg+eZaWbapcwHMScZDXv7jxYUOPHy8+yWaOuhc1gexanrSuT5WtKh4RwWo4vKKKyP8ehr3TI6apUo46cXk4z1SQQark6jdl8rnMPnI4xiYmcXE+QvudaFWOKC/u2+8ic3L7yG59ALOkiFo/wTlFzE/NVoWU3G84e+IRPNvRWrBQhkH41t44/pNnH9nAicv92OhsoL10/tID4xKFwypUr888qaZyuGd6ackwLq09BzqV58npmiVwNUDyOctn0AFsVOvkEaNwFW91lJYJ+6CLAcUCS/OFlCCO/RFmHMOrHYd9sjRXqitH4V8EfPz92Fob5vYq7uk9rtG6jtqn5HHV746jumpCh5++AA/8KkBLJwpgX/zkygMPYD03a9jgdgrhPBDTQJXV99+DkOj0xifOYOZ0/ejVB7GyuJVaYMVJa4Bvg8cpUj9Ojg1jdLwiIxR293D7vISavt7Smqu1cKbXRyWqsNEHVDPKQuyC1rVkqxvXCvUW/A1kML8af2LPFymiCtlMl95Vhg00KKBMH84h3s8DRQWKyxfVX3oXLP5IzjA0euHIPDhUF4CuGJ7xX07CdWOZNCZKfclAoG66OmYxur5oJEWz62jyN5g7jmNqlsF94sNkrw3mHCxAKl1w7g0rkop5UePMS9Xp+4IAVTRojOuhxGe8NpR5BsTm/MYci+ULnD/ZSHXj6JOceWn4xf0Tou3V51kMZ08g794SFhcuvjgsLjKK8MhpHDpQfQ/+BBMUt1sHlSw9vzz4LY3aKNYQmpgEPkPfwQjFy9h78XnUV+6E1OncOncl8Hh0ouIt0WBo5q2TXpb2/B3FA/Pn3OR/q0IXBUtcGU+0I/3ppfR//4atjgxMreBiSt5rJ/aQ0P6txqxzhMkdqiS7ceLJz+HKxOP4WNXfw93X/49TI2fwum5B1AgZshg1i5BYcy+t13T/Blx01t81VGiqs7cRdaEi6RUJktTWyh5CZVgiVgrcVDz+sYqatU9DA8P4tr1ftxZauCBB+7i0oUCfvEXhnD5yiS+99xPILf8NL6+8Du4erCAsHG1tb4k/yYIWI1OnsDQ2DS26ffybRVcMaUVugpQgNe+sXEMjI9LdWp9fx/bd5focw+d3j71hTbGYkvpTB3Mhav71H5zEYz4HaYuUr9z3+HImhpNVQIxF2zwkHxcIKJc13cn+mqgOONU44cQMTo7xnQ/UyqQdMGVR8vBU/dZldBAJYerzvbqy7y1wQfQlJI8NZ/NLGn2VhH97bclc4pxAZUahwfHS5S4kFTpN8a9A5U7ib8n/b87p+8WDHVefTul7T4sOWJw1CfhIInF5h0Vo5MEaYnkko5PmmwIRd3GpMJ9eR1ejiofPY/C408gNTKKvRvX0Lh2DS1ipcLSZObmkD19GtkHHyDQYqK5dBfdSLwPrSRtS9h+MVZpPmy1rXHreFFwHzFlgjuWHkW1tyImSthRHQxWYKxmkL26gonlfvoD7p7Yx8qFCtLlIcveKmcZQm8XRvEHD/4yTm68Q8yVYK2+LoHV1NgpS7Mi7K2GC6RSa0uVYNs+10wwVPJTsFTcBgxMXZBchGCPFgZoLIO3KClrupSUkcLY2BSBq35sba/j3NnbOHkih5dfmScgNUBhC9jb38X83ARmZ/rw3PMzeKDwN9Ev7a2+gYNGuLfzlcVr2CT13+TsGQwSeyV2C67cuWarBHURU6wAU+XxCfSPjksXF61mHduLt7G/aR3I7O0UDAdWYUrA6Ptol6sQF9oON/gBmorCmMuCBNsBHXRAAUo2+PBuB9PAAnj4wuGqpDT1lPK2r4I9pjD4PKRuWp7w2mNy9wgkWYKNy1QWSXthVsaU3/5KaZ7Xjz5mKhQYcdX5rQXQuA2I3H7h0F4UnHT+W2GqrB9jgQOe1WO31ScoADq5NbKYfZSBpyK1RxwlMLueU3lonSPjhkpnENN51eCBHLsCRzF5xcZ0AHPifHroX0WCtE9cGcGwI1D/HQV4icurlxvGQnJhieOqqZzw1OgIuGGi+vabaC8uIhohE/Nz+zaa9KacOXsaqalxNFdWbSvwbsvvVZLlKVongFTTBlUuU9VLlx9LvIgJO5ORbguMdEYe1tweGsdbk+I8wRSmbhGY2tnEwsVraEuV4Ij0gWVkC/J23hy5hDuDZ3Bu9TXUrz2H67ffwqnZBzBN7JUIz2QNUsfliTlqokrgygIM+vl/DrByRF7x1lzv9UiP5F6X6Q37G+VXKvbJHYLlcj/W1lfw0Y9cpZgZqksGX//GKPpKFTz6yA4+8fQIPvJUEc9868N46PLDBKy+jrfXvoc9sx6YyIVK8Pa1tyTAOnn+UcyfeZBA1lksk0pwa+2OG6+PXm6GpmaQIgZQ7PDbXr6D3bVVy01DguXBi+NfrNXlU7t9GohSAQ73ZRmw0WEMHt+ghPmNp/3MEqDxc1ZU5p6fpzI73A8YnOs2spBwwUC4OkwFfQqI0zY5+ICNWxZT2+WLozBd3OscH/hU+83+wVgkoHNVnnYc082P6eW6cb08Xa/1djxTHeoKEPODPqYAWFjd6cZ1GGEvEIr6lHn9yNWjkKIX5MgVkPtHa7eTdHx81mX8YOrk8btf8e71ghTes6yLNKokBFXdZt8LUGA9hvmDWUyEJJOtmsZrVSpfQIoWrMb6eqI8ONE/7TsrSJ+Yt1Q/7RoOL0nq7z26nbOzJr22Darced2djI7lyEW1t0pn0S6UsTy5gZ331rDbWIS50sLMlUFsz6/gYNZirlLirEDb3urtqQ8TwLqI+++Savn6C9jeXcUpWyUo7nqukJG2TrVqC41a0zJWF/fUcBY0j7GSb84MHvCCAjXsBce9Ln9zd2hY9j+W2sfyyF6SBzVvbq1jb6dCKsEdLC6O4Pf/0MCFCzt44vEd/PDnR3FZ2Ft974eIXXocN5f+GJe3XtNHtV0JYcx++Y3vYnhsBhNz90lw1UflbG0sETs1Lo3RhSuGneUl7Kyu2GBKl+inxQNU4XOXY1DOfdejM+VOn6hgyWVx7EVdUStZwU4n+8CZ8t3PaphuXO4BIJ/BulOmA65cA3kbBUQBFjB1udeBlKoW9Bg0Bo1R0sCPl4fbHi2uCmjUvgjuTHQXOT+TZ7ddBWrapwOknD5R+klppdYXWjzOvdupAmo7Q+ZVHqq4hup2MFOM5Zx6xcthVtPuAM4HLd3qtLzHLWk6BfwiqYTNAOFhSSQBqOo8AI5ms2f0FBiM2Wt53aTTu7XI+lHOzWMjv4aD2nJs3k7KYnYAg9l5LJlXkbQ+93rjrL+e4m2tbTvu1l0qIDBZHMsRigBXGc+YvfH4IFKbZfDFWygvZDC6nsPG7QqWz+6iMTZg2VsVSnJ3obC3euHED+Ly+CP42LXfx91Xfg+zk2cxP32ewFWfnLMLpQzyhTT2d+uWvZVCoXtrue5CIQC4oEyCivG783ruYDXxRfjVmhibRh8BQAGuMpktTE5uYeH2JBYWijh9+gZ2iImbnJzAX//lYbz+xhReevmn8KnlT+L/vP7rlgsGZZF1Xs83iZ0Sf/NnH0J+iFSLA9ZOyerONjYWbqHVqCOoGNHHuG4p5V9+w1LGGPoG11CFFWFBMMAVsIVg6WEsjN+o3CsDAWYk0BoJon094gN5qgq4v9FCP1HVjXQK+2kDlRQLMm3wZmc/26O2V6+H/Q/XgZV7uDODC3j0PLmXkeHCFvfYLBVEMhasa0C16DJ7nosJ1+jQ10a3Deq9YvD1GTz2TTTNiFpVFBAuPpg3s3MeN/aC0t0s3O2c7bW1t5Wn95Thefl/2hsakFQ+SFAZXlYCP1Xx4lguJGtGt2xUtx3UbRuS16eyuoDZmY9g8MKPYOnGc9hYeTsy5czDX0CLFpbx6QexvX4d7UY9IuZRDkh0kZczoVjziwOquPPprJjHcm9Fs7dKS3ur9MAI3hm9jbG3NzG7NgWjvourZ68iM0qsVT+pBcUuQdfeagx/8IBlb3Ww9BzWNu9YKsGJ09L5oFg3+gfzaDQseyuXTVBtWZQFzdktaAU7KwdctspNA4c1UM21rbyEEbtgrcTnxuYaCoXbSNOCnSKW7ZvfmpZxP/axBZw7N4L7zpTx3e/N4HOFv4Pd9Zfw3Mo3fP6tGNLZHIamZ5HpL8ojbprVKgb7J1Cg342BiqYS7OEG2P/yiDdTtZ+sn1679Qck8C7ishtcX6T94MrJ1/3NEWlLpCzwTGVhQgCCXh8e/p3+yxOgKrZMlOkmj5sMLQJVdwko7NBfW8cFrpsClf3xmD09f2eMcNXGigX9SplKOh0IQjvwWPOtFZLG6ROXuXJvgn8i8+y9Iu21uPs0wLOz0qpmfRoscsE37HwNZhnOC7aKy7MaoydWp9SwAKtOAQgdIvcKVPBAKR+EOHCc9/iC3+sK2zlNdH1SfUMzf7+3s/Diwo4yDet8jcXFtYBf8rzDw812A3vbd1Aeuw+DUxcwOHGeIGlGsgypTBHpfB9yfcMYnL6EofFz6B86QeEpLFz+OoGqaqLyk+Hxzn3LO4T3PfJh6VFdTELCFoeqKdOIg5SFc+t2m+MYVX2AwpwjbwRrlUOKVH7VqTxWyyvYNe+i1tzCqWsjwN4+sVT70hBOHnljWJt3t4tjuDl6CQ0xed96HndWrknfUaXCgMw+RQulUAuK+91qmR4b4xEY8A5qVjysO3VTP6HG9X7bUawwg0lbq1JfHzFWxMI1GqhWD4icM7FJbNw77wifVzsYGdvCgw/04dFHitjZn8R92SdRoMos7t8k1WianrFpjJ88I4+1qe3vYu3WdWzeuU0vKncxPD6LkfE5etZm0G6J8wR3QzqWe+3xagv9GWLaVXUHoHVMjXUUifSoDsWjOgFg5+y/Cx+7SCraopuPBSCcvrUXbkBjbNTiJThwAIEvPAAJuPPi42+lXh7U33bZ/jQirEzjIU9MpjhyR/xl6K+vaaJUb4PR21aD7mXbyzx0VtCWegegsxCbM198Na7HHMFl47hfTWbbpoXPTOHbDnhImVGi10sHqKlGE4XtHXn23w3hUT03QYApDWczRKGVgXpMjfSozm2P6sx+mAhYpbJbBBZzqGfKoR7Vw/afimNqUiODaG/TGK9GvaB7tWUh1+LE/0R0Ehbzq7u0qvDwn7TGpk+dQXt9DebmenT8rss7irThMSSoQg8JhXQPVjrd7gQAyn+N9ZK+t7BWo4LtjWvY3VtCndQrbGwcGVJ5ZGhyz03NIU3febmPwNdtVLYXYRT7MTBzTqat7SQ5tyg5yOsuTA/3gyr7sHUJqMSf2bIZjWP5YIXZhzXTRMLSOWBoEHyQ1HmVKmYXRzC6VkJmp05qmh1a6Joe0yXOE6SbuFaexa2xSzBonNYWXkK1to9y3xCB5qy8++lMSh57I8Q6T9ABVr4zBaEAJ+aBDv919ZqW1kZk4rgbYcyez+fljsFCYR+DAxsE2tPyPMH5E2vY3NqkMcjx+GN9KI7kUKmexETfozg3PoyDwbS0m9pYvEl/lqpP1r3dwtrdG9LuqkzM3rB4/vJFeZ5gW7Ot8sOkeHEggBM7205hsGqBqobRpD5vw1mCxHE3jBkuqEqXSl4eCqAKY1icMPjUaGpP+9+wvQU/eM2flxYGIGBsrhgz9RFTpYIqJy4j4J6rt5CvNiBa3cymrZ5kLBQkBdRxWlvhUEN6HfwMkfMv03c5RjJw8PJ0+9xttNeH/n4KA2f6PQq2UZz954AqeaByflKCKkdUUCWOqRFqTgGq3LFnFUms7SbFiANVwXmXZTMSVPGdffBq/DE13YEI3kUaFvLNyyMq7+hcYkRJKo+pOXUf+Ma6D1RF5aa3qbv+8Ofc2xqY7pRtXLg6YLsR/4Th5Bf8Hfbm0cuwCZNkAMWfvkULlfg7WLlOC18GueFhN744qLVVoYHfsib27VtvYuLSpzB44mGUJ85g89br2CcWIaz8o7Kl6mYoy+29pu1KgdmfZnxOx3KPxZ70DbFoC8ehggntG5T+rcbe3MbISgEnXzXw9vl3SSU4SerCMVrQBzR7q5dOfU46D33s2pew9OK/xfzUeZyYuUjsUUkufIViFlkCVwd7DdsPks9pKPMWQqZSByqzBcUGy7SODnEXM0cVY6tG+vsGUMgXpFowm90gBuuuZM+Ykcdz353E/n4KDz24ikceKeBv/juD+N73pvDSS8N4urqOf33t17F/ELY5hEnVn/ibnDuHqbmzkrnaXF3E3dvvo16vuvGi5xse+M7clgHQllmmxHNApNchrkG5qjpCnPfyIABxfum/PdDiz0dtiwoYdPUctLr5c9nJEnBshexMtiOmia0a2qqgSH87/TnUygUvSggrFjprKIhddxehACafipB7marVccvRPdH74ijMmr9lYQBNHa8exdhhBhRxjQTx3LpYcyy3k2ZPnoQ5nkPjytVA1IgCkWRODo71zmnCc4m+ppcRhQKC1xMbqfuSMs471iks5PD90AnhhId3YKqSAY9erod1ebL8WEwS1uH3YcN81wmFtCoH9FeRf+16TXFLTpNbi1SGdy9LEJYbnER58gxSuT40K1sU1kxYZg/16hCuMlVpmlQNay5Gu2XtBDTthfZYvo9is1bS1kqoBQt9qE7nsdW/h01+E/X2Dk5eGybmisZYfk8u+hLYiMOaKe1Brh/XJh9DNT8AvvwuNlcuE5DJEsAZsrI3LJWgkTJIte3ZLEgmysc4OQyKymLZVfRUG06dw9Iy4dsqTaCqiGKpj5izFFo00Cr7FWKxmlhb7cOtW0XcuVOjOKs4dy6Hhx8uY7dZQKn9JGYyA2gcLEkXDJ54IGh/dwMbBKZSpDIcJWA1MDJF47hJzNUOvNrDlzbutc6CUCmTYeQgJ6/UiBlsoiXPEBTphfd2V/330YvyQGU/SGJMBZrOJ9ftjNQXOBW4AgGbH+5rgru7joUxU853JW94bJIz/zYNOXKkTZV17x1fSqY0Dpd/oq7NFjJ7NL/VqRfyWfCUEV23mPYwmyWC0j4tvWOHpbRHy8/PZPnjKN89Vkr/HgrqVAZO14vLOOJA5aLDVF21mCqaPWVLhP1Uvqmq/6oQO2XTvqNqZNzMBv3OoT19EumHziI9MyNPsOe7qtd/XQRTZQwLpmqPmKq4kwbu1RYuHhOf95CmQ1wVUGXSyJw8I1mqIFMVLYftB9+o7EpSpZ7Vf6zj1NRNXknScH/cewKq4oZLb/k3CEQdbCzI7+Xps+ifPi8nF10l2B0wCgvnCdM5oEqIMCI2Utb8YbYso3Vrp4034R3L91Fce6uMtLfCYBl8dFB68e/bSmFmaQjDiwbqtU0c5C1Qbxm/W/ZWO8Vx3B0+iyq9VrevP4vbd69KlWAxX5bZp9JMslainHaLa+uQLN4BUxqQskLc+tk/w8CXh7eshEIlWCDGKpfNSnurdLqKmdlVZHOcwFUZUzM72KusEdAz8fBDJTz6aBG37oyT6vASxo2stLdyaubUT4ALAaJ2NlckuBoZm5PganR8nlSEB6hVK0oK51v402LNaTYLR9/H9/Pyeou1CIC03banhD2lDarOE6hKlYpuf8hHx/AYF66uqvCAj1umM5EyaCwMfONAraObq6raU8Pt/NT43r864NlPWZRLHwErx8Ba9L8DqEwCwBbIorod1ME2duWuYbOUR3j/eXXQDe11QKerI1k0OILHgrlMFne72g1nPtaMKeDVuaaXGV2WA+4sY3OmgKqXpfqvnJ8ggJ22m6WDqk1ekSRWGopbBVhAN52lF+o2qf9IXdjMU76jo8hMjIEVCzB39yXA8osEVSMDtvovClQFVsfE0m2aewPcwsUQvv1OnAbf3FBAVWewk7yscGqnM8iMjpEqD03//cOAHZY4HYv41S3wiQJVnctMFtbbdd4hrmCmqltLqJDaUBi1903fh9LEaXldMFdJyogOSw6ohKigKiVAla3aN9vO3zFT9SdOHOZKLOZpAiOD49gf4zhob6K8lZb2Vrfy7xCj0JALiVjUmWStDDTTOaz3z+H2+INgtT3sXn0WB9U9Yq2I6SKgJkZJJmvZW4lFxAFX6sLDnDrY19XJR2WrHKaLKTpE97edQNhX5bN5AlI5ZAWwIiYum9vE7PwG6BKuXR3Fd75dwvbOLiYnD/D0x/sxOdZPasCTOFF6BJOtfdyqrXrlK3ORAFerwt6qJuytRjE2eZLyLErWqp3AMajXLoYWPRfje8RI0XdhpF43vAUvJR25pl2myigWlAVbWZjhMSGIWMxVJ5sc4cyLtpvNx7owfzwnTGGRZByHLbMbKsKH6y1U0wYBKwIEdG2Ae0yV2H3XFuBKACr6bBOSEh77uXjz2q7QAl+HWczJDTlOOS4TZ1Ugsi3uMTAh4fAxXFBBo/vpS8PC1KkMXM00jI1Srjn9qAI+FmCqXsVNaagubKpSbsJC02+oTjwWTabWiQbW8yFvW0qcJkBqP1ZAbX8TrTtLSA8PIT06QirBeZlZe3MLqligqh/m9l6sofrRgJ1uAUvyUrurnz13CJuqk6epTwRTtZEgjXcfe+0PKw/eMUaU3AP1X1QYS/zLmSoT5c0irkdeSxY/OUjprlwBog7WbpFKkFQfQ+MSWGVKg2jsbYaoBOPz6hwWPrQ0UJUyLLURLM2ldAR6zFT9yRRbPSNVggSsUgQWmlNlbE7UsYqrqLV2MH63hNGFFPaNbbTTlot8Gd+wwNXyyFlsDMwjc+d1LFx/WS4YgrUSrJHIO0vgSgCsdpO7C7RNznhqP7c6PqN1FnzV0tSJTFlcDIu1yuXzBOoJZOUKYuChVqvRtTparSyuXi3j/fcNAkUrOHnSwCeeHqR2F7G6ewEThUmsVRbRbNfA7P/UZ7Z6sEvg6pq8Pj59Wp4rmCa2r0bPXVs+Z/HPjvPkDFWJUTMtA+5qylvQGNVZeHOfPjGMSx+7QBNpn2KPpoMARzQAwbWODKqzVGDhAiUez+YAPtDg7a4zARdZubZw9HPmoAmT5oAa3Y8Kgcj1FMcAzQHCUL3tqP8cYGVy2w7TDturor2+Cz5Aqs9MygV7qirZX1etflx156G01UXoOtNlnVXJ3fkqqi+0Y2oMBuYDmYG+UvMJUQsKEbv/ijuq+m8CKZaBo+LVDdWr7u4/P+vI0tsUP4tm1jJUF/a3zduLkoEyyqQaHx9HZmZaXjf3LJWgw1SZxFSFg6rDWeR2k1a/o84aE6xPfNoY8SUVoCpNoMoUhupbnUBVVJm8Y4zg1d57tEdQxWJiHBZQJc+nE1PVvauIo4ofFde7LtipysoNmiTakrUqz5yX14WqULXLipdO9Q0PV0GVUGEYhn3kg2O07toCdH5rOZbvgzislVDzETCBYEnGR8TNRHGtham1UQysplCvb6OSte2tUpZ9lkgr7KxuzDxBn4OoL7yGtTvvyR2Cg8TsCBG7wHKFtGtv5WqvFFDlLGzObwdYaQDKieuqDtXxaC3swo9PPpcn4JSToCedpnKJERoY3CA1YRP7e3mMjB4Qs7aFXVKPnDubwxNP9FOcccyZT6BGmWzs3wjpJKvSe7vr2FwVvrKyxFqdwtCwY2+1G9/Fdg6lZhrFZkr24YEDquy+yFCdx6cH8ODHzhNzOACVoYqy2XGXIeYBCO5nXZzaM/23mo+2XHA1v3CwFfZdyHC9jZG21R7BVomdfpspK3fhw8qxq+I2SyWZK5N79lbE4LQW18HFxoP+YmS58neM/ZUaDht8h8ZnCLWtimqzpSrU74FbBgD/zsgwp6tCUgTES45NFTFVpeyEfBmwXiz8NlXe7j+ZB/N2oBqZLcqfVH/Zfm33HycA1Vpdk+nEkWjp8VEYhQLawtaKnjXBVFnqvyCo6m35V8BqyLUo+WDAm1I3wVSdOCVZqqSgigW+s0Rl6XnwruJ76TraVMUv2u4EkTC+UyU9HQuJFwaQQuJ2AFVJ6oOIOnYTv9e4AlDVd1YluErnSyhOnkZx/IStEtxGUlDV7XtB3yNPEag6Jb+LicFw3+Qs9Z+oV5IH7Fi+z8J0eyuxS7A+04eVwh0JqsZX+7Ccvo4mqcuEsZz15u7ZW+32TWB19Ly0t6q+/wxu3H4Pg/0jKBWFvRWpL9KGPPJGDI9201ogXEDlrlM+laAKvpg9CrkSxw+67DjCyDybzco/oVbJEdDKZrcxN7eJvj6Ot98ax2uvlXBwsImRkQM89FAZM2cK2N+Yw1D+IlZ2L6PVrvte96xKChC1vXkXGwSuhJ3VCP0JmyvhkqFW3Y/t4jTVXbhVEK2rGrSg2Qflin8yeQtEfPTzDyA9Muy+g3ClfRojBS8csQbePmAGVxni5qVqtTQVo5sHXDZKy1NhrxwpE3Dul/fIwJ5w+kkxhHf1uvBvJg4GbXOPtTIVUKUYszfXduSnMVzWAGXo0TKIAnrRdlUB4BMSz+nqwIHFCoPmvx+qulRzqOoLTzcVUHVV2FQ56j8rrar+ky4V6JtjqC4dfzKr3kaKXpoJVDUUUOXO4sROtTc20FxakoAqPTFBKsE5+ULEDerznaD6L/GOughJRnD4Y/BEsXTpwKbx8Fzkeam0VglAZYGq7tqbrL5hacIkGeiMYariAUm3C7mKGTsDMRaTOixKt4AqLLxbAOaF8UTxo/MQvngO1hbQrh8gNziOwsRJpGmBbJJKkIeqBOPz6xRHBVXSL1LKWwB425mkj0HVnxrR7K1och8exsZ0HevpRVRaa5i+Xcbw3QypBLekfyvX3orStNJ5bA6ewNLUwzRh72Lt7W+gcrCHAWKtssLeioZGRvi3KmRs0G37t5LlQlPvOaDJ+8n0T3jAgKnxHRULLR4ZAlU54ViT6ib8W4n4tVpd+rhaW+vHrVv9WFhoo1S6i/HxDB55uB/LS0X0Zy7g7vY7BKxUQ159/IvzAYVKUBiv9w+OYXTilPRvdXCwY6sEg9KmxXB839oB2GJtNFnbZTPSxFS1CHT8wBcfRGZi3O0DR1RGyrUhshdtFyz5F3mlbO5jTfzhVhy45fpVVgGWjAVBmbCnEuFluq0DBK7H6W+LLrUoRo3mhd285Z8qW7Xcb3hAyjZmb3vAqkGqQGOwD0Yp76o+VSYpjkGzfutA06kzj2D9QvNRf6h9bP8Oi+avayAOhaUaDZR2dvG8w1TlJkn9p/ip8jNVVFSKW37NnHEvTavSwl6KmKqMH1Qpg4DWg9byCjipwlPlMlJDQ0jROOX1BgGLba2O8atA3BzOQr51FpYoBQ9NyTpnDD/dInb/pQVTtbXZFVPF0F27/OkPEyNV7lH9x7qM7whHJ3QcnkeAqWLokK5bkNQLqAobYr3nI9ipA6ESpImrOH0apZmzMkSyVqaZMK/O4RqoEm9PtqW6tWgKZGVqE9Cx/CkQprhgIFWXIViUsWF5GHNuvY6plWGMLGdh7u9jJ2tPTsyw0tjganXsAraHT4HdeglX3/2eXGSGCHyIzQzS3opYK2Fv1SLWSnnBh5wP7FkszA2DCqDsq3aVmQfKXKN2g8BVSjJWGWKv0gQSM9IovI3JyVXkCy1sb5UwM3uA/coG+st5fPxjg6gS8GH1cwSs3pV2VpHdJBgnUv2tLF2TtZgk1fsE/aWoz2q1vQC4ahND4Biri0VfGKtbOyKtuprcwAOPzGDo/Em4Oz4Abbeaeo9UQOCALie+E8fPvKjXNaYmiv1hTAMSLrDhejwH0FXslyrBVqWpDcNNaicF1ghwCWBXo3u+XyImVHjjrzVDmSrnr1WpITM7Cpdps8uRQD6krsHdgQiZylmA6Qr0D5T+9IEur4+9kl3ApualMFoKpWoB6GaLQNUOXrR3/1mG6s7uP4So/0yCTlx5FuwshfNPYqraYUyVT8y9fbSW7soIqaFBpIeGwehFQ1yXXpqDq6K/NyJEBy7xacLiht2kuDwAFpfGCWL+NLBsquZJe7O5KYGVFxKWSTB9L3KYlU+kjVH/xYMD3kOa8FhhYCgKeoX0emgeUdc6ldtN/Lg0ya/7HwthJN7YWUN15ZY0RBbgKjc6RwwSvb1UtgP58a7qa4kKqsTCKuxarLIVlorHPZTH8idWbHBlSHCVkf6t6jNlrPWvw9itYXJ1AOv8OhrtfelHzbO3ysghUysM4vb8R1AvDKFy7UUsXH+NwE0OI0Pj1oRBcXPFtPwUuwRVFY9zLp7HXkWoBFno06yxXmKHYFruDExJFbUwahcqwmJhD7NzWyiWUrhxfRBXrtQxPc3xyCMDuH4tjXL6AhY2XqEF3/GsHnwOnNKFvdX66oIEbuOkeh8W/q0Eayz9W3kphaF6qUFtpv8OVGN1CD9vWWlXdfIBUtMUir4V1EWUGhviqpl84MhxDyEvKfXVwFAIo6L2n3o/VICgAjglZww32tQmRiymAATEWBF8NAg0lel6ili4qrSzojAKr/bl0CwSuCLgxIW9lcJSmYqtVe70lA8sqW0JaZ9Sd9f3lhLmtEX1+wVferWzeMh1a1az+5yFwxgN2CrASlwVu//6iKkSu/9uXLslQVXKyLirlcpUbZoV6fsvbVpHQqk2VUiJsZWWhurtghEJqFwRfVun/qZnjtELr9wlODcr69a2WavwmT4Z6GER16MkahVPni6iPk5H+lZ6CarmTtrqv00kLSdZu7pFMSxR2T2o/+K6NRmYYLFpGBKDEoYO+SBZPh/I9eA7AYuMC6n2q63dRrtGKsGhUeTG55Efm0Zja1VRCXZbL0s0pgrWIuxUSm6XZsdM1Z968dlb8f4+7M+msZFfxW6LVGd3+zB/bRDbuTW0eMNa/+UuQctKeb9/CusTF1ElJmbn9a/g8vU3MUFjsFAQx7EQmMgYyOYzcpNDy7a3sl/MoTJRdlXc38ypm4s3Iuys7EVUgCnhckGwZeJTGLWLgiqVCpbv9hOoGiD2bBsTE1lculjCO2+l6OUghdXdK2pn6F2jfHfsrXbob3hsFmPjJ0gteAJ16d/K2n0l1DYjB1nZrgZrwWTWmW5yqz2pKlutNh7/6GmkRoc19kMUFGb0HAqs/HHs/uAh+fifTDOEWdHyU4CIZuRNf/MHDaSZ5VJhX+z+o7YNySmAI0vAqa/SkC96VWKrRNo2fdZGCBD00X0gdRSvNTSmqt1oInd2xgcKPbCifQKIZNrC0jt9AQ+EaWn9rCD0PkdU/vY/AZAF7x5kbKZKdf7puFSw/FSloTn/VAzV3ZcK8X+axhSB9HZ2wGaqOoEZGiNZypvUqs0bt8C3dqxdgmOjyExPSsZKsM9h6TpJLzN83JoVnYbHhurZuRSrNZeI53/+JLU7mfovDj3oEgUuo+qbFHTy3nb/8QSgIS6sM6gKeR3xx40FVB/E9W7aFB6DR8b1YrXorfngjnWUQXZsBsXZM9JPUYsmfOc4nKi0UaIxVQqokm9z5vHOvz9T4tpbZS1wNTKEdGmQFsMqhtcLmLpdRnq7KlWCJm/a6kDb3ipTwM7IaazMfghtYkkXXvoD7O5tY3R4QhqSW2dH2ucJCncc9pt5ADTJTx9osidTZ5JmvnAnnbRNIYZKOgpNWa4NUgQUG406Bod3sL1dJoaqiNnZTUxO9Es7q6WbE1jfu4GDxlZ4lyj/OtJs1qRKUNpbDYwRcyXsrYRh/DbqZgNj+5YK0CTWoWm04O7mokl/e/MAT//geeRnpywVIHcYX+8eOM+6Zx+k1ylskZcfIcyOe92vquJRLI8VFHaIzCgxUoPyHcoCVk2Ks2y7Xyo2LZ9Uwp6quF9Di/Ju2K4TOC305mg/+Fi//G0SwBKASuwOzJ2b1eoIVa3mq5sfYLpgiAfPEnTcZnCusHb+fvF9jwJTWv6MebZpCJ+X0y5T9bK0qSrnpyJBlWWoroAqKHaHqW2x7KJF6r+2BFWdIYDlUb0MvltBe20TrbvLckdRenRU7hQURu0SWMWuB17L3HxjfoXFj4oVJywBaPSn8P6Frv7b7sxU6bno35LE7wVo+vMIAVXx2R/mEGUeGpMhSfmBgc6iy3F+R3dQNOjhidPEg6Her4WHN3fWUSNVhVgcc8Kh4ei0ZKxatqqiU3r1muVS4ZR7RahXpEitn+2j6lj+7Ihmb5WR9lbm+AC2h6sSLI2v0XdzCRVzkxbRptQDS8ZK7hSkt2oCV5tT92N39AxaV57DW68+I1e2sZFJ2wWC8MqekuyVqxJ0QJMKqpy6uL+ZvZOQe2/yYJoa0Y4qv4uyUlQfAbCEmq5aPcDoaBULtwYxMLCL4eEM5ufLuHmzhcZBPxY2X1E7Qe+SiK4Sqr+11VvyOZiaPiv/pHvs/SqyNbEcGtYuQDsTYbxtqSkZztw/DaO/rKuwmG7TFABPdtvc6yF2UgFfTv58fW0I+83h8zjudgRDP6mVBij3gtj9l4J0qyB2/+2mGak929YxCy0Tmb0qctsVAleQR9XIfIQ39qE+GHNjSJ+YQPbEuDQu5jF18Zpqt6rDNOiqP5WlgftAmOkDlM4uvrCy/ao9qxts4BcSVwL5RsNV/0mmKjdhqf/swawzVQcEuLg0VGfwxrvM09gRnZaQqbJXPQKwxpAFqkDMoFAJtre3JbiShtyT1O/zs7Icc78SYn8bLmErbPI0ydicXkGKe6sFUzU7LwFVElDFkKTM6Hp+X0AViwzrDmREI8m4bokCVeH1SQ6QvGsscXzverKh1G2fBcMFiGps3JW7BLODo8hOzBO4mvKpBJ100XnrTJWYS2yPyOLsCZje2+Wx/NkSxd5KsJ28TEzMXBF3B1dIJbiEwfUMHnh9moDWLnby29YoUuyt6sVhLJ95Go3SMLbe/S6uvvM8AZw8xsemZLhQ0RVKGWloHrC3sv/xwBMQujtQvWYPQxeM2cBKfBfAamdni742cOFSDeV+esGghX9gYAjDQylcfrcojdbrLedMtWj1mV+ES5G9nTWsE7gSgGmc1J6ZAqm7bq9LtqphtEmDY+2CNCmuUAFure/j6c+cRWp8PKhygw4CdGDhhBmI3eln56f7cmLR4MXH0ITGob8DcX/pv3760Ud1GCPYuCXYOAptEeDdKGRk3Jy9+49TH6cJWKXW99CmbNvCo7rTVsHS0SKPMCN9hABK5tmQeXNOSJsYAsyf8kN54db3Lau2ZaaNowI7CQEtjdt3TN91mCEQb4Eqa/dfn2Sq0jY5GGSqDFv954JiB0AK559wQFWy+d9S/xGo2juwQJUjwgXD+obcJWj09Ul7q9T4WIxKMCz37iR63e4UP6l4d1N+CltKAaq2tsC3k9tU+fOLi8WgEj7JwGVc2T27VDia62FhThNZfDzWKQ90UWanNPHxWcf4cbe6+35u09t09c51GZohlWBh5rQ8I6mtqQSj74WfqbLUfwxy5pFv2cCx+u/PsGj2Vlmwcj+yw5NoNytglTomVwfleYK7uU00mMXKiMlNgm8aGweDM9iafhDiMI6V538Xb737CmanT6KvVJZ5pzOWSlAsYs1mW2erVBWgwk7Z/9thup2Vel2IZKyo/jukihQ2USmD48qVEQF3CAD1YXQsj+efr6NS241wDNpphrBCxbE2m+u3sbmxgOLYCNILO9LWSEidNd2YgqlrNDjOnB3DyOlpsFzWY1UcMIQIFR/zmKSAHZAb2Y5oqC+VIeCDQ1NjhTIvah2ETRh97qYNWbTY/ZehL+Mt61D1XZvArubS2CvlpAG7UbVtqMR93SDAukLqLGKwhCE7F/kIn0r+dgbazRFq14Q4cOiBSGd1sNgpB6B5QM3JR82TsSDD5+YLRPvBcsYcqf/KNqgShuplG1Q5Y9IPqlKCqRKm/8qKLdWXpP5jkqnSnX+Gi4+pUkCVepsFO9VavCPjp8Q4FSrBvhLM3V0CWG0tLydtpxWyM1WQZH3o5Ok9Kg+mg6o5i6ni21uJ8umlbfFpk62FzqjpmqmyQnoHJcEbynzfecj1kN+xoCrqWuf4HElAUvA66yKu96vbOuphzZ0NUgnepoGXRm7qBLIjU1J9067sIU78TBXgOLEz7b9j+XMhkrlK2fZWBK5GRrE7YWIPa+jfzGKvtUJ/yzDq9OZr6vZW7WwB++NnsXnqKbT2N/HeN38L28QcTRBrlc8XpO8z4YIhX8zIh6rdNp0iIWcQZpfvB09hwAve8+IwV+IkgBqp/4QKsE0L4euvjcsjlk6eJDVWoYhKhWNxsYnbpAKMetbinng3yGyg1TjA2p33qV0lFKqk5uQGailh3G/NVcIOMZXJEVtVwYcenYQh2IKwBdpXVBiQ8hZ566vLcDgx6Lfpq6JXjgcM9HB4/ay2ny7O1FrYEao+AkUHtMaXqW0pSlAk0DRI932HVLriNU0cZXNQzKLaX5DA0jio2+BKHKdC92BpA41rd6UT0PTsqNZUFUhZwC8IbPxgz6aVosGXL47dIE/17Osf+T2GsYPKJoHrAI4xDVQJ9V9Jqv88P1VhNlUpsx1UaxsH8j61iKlqx4IqpZY+piqKTTG3d6R/K3EWY4bGYHpmRnaNZK0UlSCLKytCnBHI0I2wLuOrKe1PyVTNUdu2YkCVl6Yz8OMJ0/pD0bFsRyJAVSd8eRQgJuo6Azrlzzrl04nEi85fhXXRcfXrneN30/4kYV64UPs1N5ZJJVhFemAEuYlZUgvOobm5HGHIHmSqrKsOqDqWP1ei2lvRImEUSmhPDmJ5ZB37rbsY3Mzh/rdnicGqopraJ5VQ07K3Sllv6QJc7c4+jMrEOey/+Qxe/O6X5EJ3cv4+mb1gccSRN6m0sLeytt07TJTfMN35Hr9r0PtrNBrY3bM8eVcPSgSkgPPnDBRLJQmwrl8p4b27X+vw9EU/Z5yAJOdt5LNZjNJLSztXR2mL+ohbhs1No63Ve3urhqHhAqbPjEumQOahlONnpJyEHlCA9k4bdeZfYI5SQIVbd0BRf8H18+S+stogQoCqEjVmO02giuJtEOsnHIGmBSNHQHhQ7P6jrw3Dcqtg0lhpELCqD/VZC/V+TXMCCmLp0nNjVnt5uHuHQD8DelyEsXoKAFXViyxoWxam4tPq4IunlecDcU5fa6Dq2gLKhSnXT5WQAKgSKkNb/We4gFds/NuRZbQ7gipFCFSlBh2bqnr8yuCqBOtyDFpH3ozJQ12lvRWiXy/iJAkqCKbhneP73hn8T6UgDASoEoDKjAFVLPHVTq3v3BedSjpC9V8y4MA6xk+QfwJQFZ1vXBjvMq+wGMn6IT5upzArXB2ywg6mvnRDTvaZkQlkZ05JL7ziul8lGAqq3Ekcx/LnUVyVoGXMLo68yRDz2TAaSO3VMb5axsAyIxZrHTWjIhc5MeE5R940+0awefEz9DmK5de+gdde+IZkrKYnLQNasUtQsFZy232Tu2W6xTt1UIGUiwmct319eLZIPbe1aR1dUSFQtbJSwMVLDfT3DyBDDMtzz9Vwe+PlWGegQPiQF4bqpb5+jE/MY2h0Ao39NezurIAf1NBnlmnBJKaM+sZSt3GLrSLG7+7CJh7/0DQyE6PCqZeVl/MP0/tbAxoKYIgyKFd/q0AjbIebBtR8i5sbTnFH6F4MEIDqo+/btMY3qJgVw4pfallASdhT5UktLAzUGznLCF2o+tqDBF7H+sGLeRnfpPic1L6pqRGdNdPq7q2goZ7SFQPzALDygcewY2W0fKKYKX+f2x2lsXq+fswSI6eCKulSIYapEobqaUX954xhblhnTpquobpfgmuQ41LBYqqaca8B7jepEryzJK+lRkasXYIEsvhe2C7BOPBj1yGmfsnSJYnAA5clqJoRTBWpmXfCQBUPZhOSX9Q1lihNZzkSUNUd2j0coAgwYwlAVXLk2in8KNoVdeu6AWDJwls7m2isLsqt3unxGQmwhErQdFWC4UwV1KmMJX9ojuXPmDDP3kruFOwfxP5cFsuZGxjYyKHe2MSOuYRsldEia9sVSdbKsreqD89h/8Sj9EJdxfVv/Ta2ttdx+uRZafAthlVBAisufVtZKhG3WA9UMfjCFHWhU01AGolvbK1bB/4iSy/jBs6c5gSqBgnQGfjmN6vSWL3aiHvDDY71bK6AqdkzmJw5TWCphu31Rawsvova/gYq5hamzHk4x440jSYcoCDqWa+30ao3ce4sLWK0kEFli+yG+sGCBgpCmJcwhiWKpVHz1PxgsXD3AzVin0bbHKSwxQTdww0CA22Ku0vr/SYB4TK1h7Wlvwzk9mrI27v/mjnLgF0ARy58Vo0PInViHGkBqHgIG6fsgGTMr3KD1oawtoQxXa6KVL0Qkqe6e1IrQwGySlVDma80aQT6FZcKfQUCVUi74Czf8IEq+kzb7mnkzks5Xkh1K0EViwFVISurAFUDZWCvKhmo5ACCxgDVubWySs9ySvq2Ss9MS6DCq1Xb3qpb4HFUgIqFFMcC6VymamdLAiskXtl553IRRBrREtcaXeUcAapYbPLwGMkAAusYPyoNi0nGQn5HIeqoa92mAbrLP+xK8j5IHgbJTDU36K2aFrbUwDCpA2eQpr/W5qp8SwlnqsTk0BtKP5Y/g8J89lZj4/I8QeF6oUAajAffOYH0ZkWeJ9hCXVEhGrRgFHEw+yCqUxex+cpX8cZL38QDFx+Rtk5i7OYLGTQbbakOdIES854J52kM2x2oxheytr4iQRW9jGNq+gCFXFGCKnH00muv1XD5zssSVDE3Z6WJvianCEROzJzB/JmHkcvnsbuxhKWbb2Fn/aY80cBsHaDFq8jxHEoYsNiqlNgnZ+8EJBWLAI+3rq7hzH0jGJ4aILrHUgO6jEqcXQ+8BZ2FMFPODMURDkD8v+W94DwyXJTVTBEQJGA1IlR+zMCU2JlG13cluCJ1IKlum+LYoEZTulUQntQzOwdIb+zDFICBFmvhVkECPcPQ6iZqrLJ0DlRxgY6ixuOIYJTsfJybpc3QDOFsFvP8WbnpQlR9atng0Q5ZhYhjavp3HY/qpP5TjqkRojJVm7wip1K5+4/pJw60CVTJeNnBmN1/PlAj1H9DxAjuVfTdf0lFHtS8aasEi9ZZguKBEWO6UkmUhQJl0am+VvxOa0k86HFfniRTNWMzVTuR6ZLjkU5MFRKl0/PwxpX41jWoYocEVb2E9cJUdQeODpOm12tx13sN09sgDNYbS7fkzc6MjiMzcwIGqWQK5y4hNzUXkpzhmKU6Flc0e6uU9G+VHZtFM0tqoYNdjKyXMblQQKOxi738nk1yWgc7i7St8igOTj0O9u638fYrz+KBS48SsCrIISaAVb3Wktv0VTcLqgoQ0Bkqjc2C5V9tZWVJnkG3SurJmzfKOHmCSVAlEjz/vABVLxGo8o530t6CYU2E4piayZn7cPLcY+gfHEdlbwO3r76G1TuXiVETb/Q1aV9FqIrAVQ0Vvo1xdkIeWyOkYXjqFFMarWdw7Z27BCRHUZgaFSdSa4BIFT+Ycq5FAoIwFsbP4FgREeuiwZYsxdkjULRBpMkwN5CjfAaIwMgQM1VhkEbq4tDlSpHANV1Lk/pJOHklnSqMrX2wOxtSLeXYVAlnoSyT8gEXnXVDVD9EtDHqO4PH2qmfdvOhsu6MhdleKRnagDC0HyE8qhNTtbunqf8sP1VWfL9Hdan+4xYbq/oIk+o/ytDMDSZwqWB3WTYjQZUp1X91dCdKX1aESvCu/J4aEcBqWP5JBsjdJRhSvi+fqBjJrkZVz3tt0J5RCapmiXHbIlC1je5qkFwOn96rd0JLuc5ZRgvXYsUzVSwmrJuyeUecnFziEfVR53q49OFXGwtXUXnxW2it3iHGit5FBwaj0/Kj67lj+TMiAsgQAyNs9FKFPuTnzmH7U6fw3hO7WB3YQHrrAPU7V1FfvEyq59to7W66dnwCWK38xV/FGtEe//tv/kN5zfHt0z9k2eJoI843/BRsoc+/9vWUbbe0vZ3FtWsDIcCFweNIggvz0MgkLj70CUzNnacX9zZuXXsdV95+joAVqQw5LTSOV+x2U9pZicrX+C6WzPfl5WI7R8DEYyxMcUZnq4HNtT388//lG+DXbhBjXNfZJXfh5xr48e/0d5gcKKwO97XD9Km8uJ2fCmpkMdAZISffubopXSUcEFv1VtqEY302SrfvXKWNoYa12DYpfH20D8snR1EdKELr4Y09sPcW0X7uPTTfvKGDPV+7NfCk1E0FMAhhrvztk7sg7WumnU5j5Vh8v3E7jpvG6Tf/n5ahkr0CvljIi6jVLm6nVFSSxG5yFhylSsrAFQYcYsEI1q21cBu1F1+WakGjVET+8Q8hc/okWD7XY0ERde4ifnx0HpHE6d/osE6SbBXnCfLwcuoaVHWzmKtFBmP1PEoSlB1H/fEuczsshg0XdojQXtKZtSpq77+F2uW3pLO4YzmWrsWwWKhUvoRUsR/G2bNY+YFx3D61Q+PrAH03D3DhazSl3FpEc5vUck1LVdEqj2H1L/09LG5s4Ld/95/Ja2KRyWZT0u2CM2laC52yjNl4iOurK9QIqZQFaAKzjPYgB9+Ay/0jOHf/R3H6/JPS/vDu7ffx3hvfxCaBQqh5cb8DA+vzjvkegStLddLXKnhsm2Do6PnipAq8+vYS/u2vfRO4fBW8Ye2ic42z4Z+NmL3IIwACNBAWUhuva3xgSsmaKyDEjUt/hTbHxVobKQGsKMVzRhM3DQtICRZrbr+Js+sHxFxZebeIhdqZHsLm+Wk0hvuIcUl7dWNeuSrY04CNClbsNI6YYYAw0BYW0X/Qr8u8AL+NlRNHBUImD76Eq8BQh4bw9WGyFchVPfO4o2liVldmxMzucWtaRJ71BppXrqIhxiatDempSWTvvySd13p1TsJS9bCOc9+ncoGFxLXuXw/lJJSjWeG9+hnB7BniGtB9BaImAtYxrhczGWjrlE90/HvJOvWCo+/dAGqRuqQdtTX1mKU6lk4iFiPhlT1XIGBVRnpwDKULT6Bw4iLybVIP1lM4/3wRpfc30dpZc4FVu38Me0/+BL757a9i8c6Cm12pnPUXAIU8sMW2vYGuHpLAjBi0AIDyLdb2Eim/FYsDOPfAR+VfsTQgwdTbr3yNPi8TU2Ub3rvG5RHvnJR/Cw1cbn9X/kwT+9DXymuMRLNek9+/+Ydv4cv/9HtgtHiRnlQDGmrtnAOa3U8blEBle1xbIa5/2mGmD08G4vkYGPFXpyYW6cv91PScnXDB4Hg7C2lrJSRDar2TyzsYW99Hitg8CdAITB2cGEf14VNoXpgFnxwE6yuCFXKhuFZl47j9qTJJjpG5E0lL67ZPb4+TzFkhgiyd189ic0RYX8Bn8C/ychkw09Tr6NTG/qH7UPPEWUEdoC1TMeveWvewu3nWAze9SDyAa6+uofbSq2jdFpubUsjcdxr5Dz0GlssdYhXiXUYJ70c3Yihy5TFpepGjW/vS4RnH2wDFw65o0Wl8jujh6K8V81/o0JuuJhv3TrxK9NIfRw1d/XWKL/lYjuWQYu8SFCpBwfSwqQx2+7bx9uUbuO/KBEaumtgeXJSG7qw8LOPuP/LDyF57Ab/1O/8E/9F/8F/IuTKTE4clp+QRM9Z6Zduf+IeyWNiY8sSJcAP2ogdMz1bRaqcQNb7FocxTcxcwMXVKJt0gRuru4vuo1w5CUljLmNjRyO0jnCRLxw1tcd3hK9gwFzBizBPjkyMQ0pT2Vcx+upvEAGTyBXzpX70s6/j5v0qLGKlZCNnBv5sPLHpXoIevgjOnZtjOdEClfsKXtwVeTSwQW9jXMFGiiw+3Dbyd4tiD8KbO8HophUkCWKO7LZmovF9HfvsAO0W61yNlmFmrb0z6DmKtpJNMt0wHmDLLN5lhAxfDA70uIHTrYy+ghqHVXzXaZwqg8dixkLYGAKmel/+sQLXfwuzUtHhKP2v2YraIvNN2ZGc8M/tlwbR9VwXHaacVhMVEiVtNkq1MzYVFqQ7MzM3CGBslYPWIBFwCbAn19WHyjk+TBBxxXzoeCGWBK51F7bXDror2/k75PR1dTHhS562gFyDBA2X1KB2TcsQj9KRlsx7DOpfXy3DsnDZZnVLpHI7lWI5EHHsrsVOQ/mudA97OvIf2/g7YchrNQkmeM5giVkgMz/0P/wSu/Ku/h+rBAUpiZ5xgm8QOs72GN3ptwKQugs51C1jZm9QFKEtb5xIODjTQ/6DwWTVqRbUfklTGAVOnJbDa393AnYX3sbe7blVfa4wyxQqWShgiE1Di8mDpDKn0GjazYVgVofiXW9/Fo5lh5Fkfyq0itjNiV5yzyJtoNWpIZ3P4ym+9jDs31/Fjv/hRDD58lpidCe85DlvEfWyV6QAVB4xwxZ8TV1gZB0worI8q7u42bu1YrBBoeidn4EFiqgTX9gSxbtd521IBUtxlujcbmSKmNw+QtrfgF8Xuv/U9VPrzqBOYavXlbbYJ3tqvlMt8Nl8qE6Wp2LjdFzZD5PaNcmu4A6FsD+EOI8SVfmSAlqd6vqDTfqscbuNnD7Q54Mtpg5u/k4WKBh2myjchMwXQeffTgepOfbpbASw/V3FrWnRKa8nvLAI8Na5eQ2pzE5mTJ5AicGWUy2gtLqK9to4k0j0PZ5etgBJ/SKAvFfQRvromQyfJAFVSgObF63r3n3170W0a51+WKE0HFR3rIm4XefNEcTuFsUNcSxbOuirbk2y+jFMXP4/Sw4/DHO7HsRzLUYk8qFm4XhAsQ8pAq76LS9fuQ36PmI8JJtWFgq1q94+j+O4zyLQaOHffBQuU0V+t0oB2PI0NIBzv6dZ1/buQvcoe9vf3sLZWxhuvjeDcuTYGBgZluNj9xwYzKA6UUdnfxs0rr2KJ1Hz1+oFXb6iTqzdDMdugi5stG7W0rR2AcpIXC7oFOgg2ocI3MZG6Tx62nDXTkrFy6i4X5rYpj9VZXdrGWy/dxOxIDiOpFnhfn9wZ6Dfodtg353HmMY+1CgQ0cOCL47ZT2Snn5N+kz3UinUbl2X8G+ql5o8RebRBbRbVEm9ilrVIWzbSBTL0ld4q1xVE1+zUYq9tg4vy/3QNS9RIAPaiDlfLwuyXw14+r9VfDHdZOUcep9lpeg5jlnqLTjkEHNLGgbRXC6oDwZTTdamFQ2f1neVRPuaAr37BeKqzdfwcyF2f3n90M+WeyCtWJxk5uSPFTFb9wi91/6aEBtPf2pVsEXTqRIF7xydJQaLWG9t1lK11/WToOTY2Owtzalp7Z4yXuaBoeWTSLiC93/01N0/japb8dL58O6bqRJIATEeWEtbZLQ/Xei7eq0Lk74kuNQLKJryYt5zC5dM7Vutpr3t3fA8FMzZz+GO5//OdQHpym56LbbbnHciwJRACrYh8yI5NIC9cE+SrGl4iN2tyGWa+60aqXfgBXrr5r/eDCpYHOFEBZ8F3Gxv1pL7p2XHG4soi+vZ3B+noBXkZWmgap4G5cfQ3vv/UdjZ3y4BPca4EZSjBUqRz9ZcVhg8S4ETA0xHfh9JHCBGNFhQs14K326zKNsK8qtfJ2Bs6CT9BL2FgRu7Kxuov/5f/+u/hn/8OXsfvtl2HcWqBKNjWQ4YAIt+1am4NG2k73BFR9CrDxG2OrNkWCsBF357WUiTVY6ilhX/VwpYXpWttNt9uXw50TI9icGiTVX9otm4nz6Ja3gHduo31z1VZzce1+hdmSafVQ4mqG7fABKlhAyXQYLy290n/QwZIWh4fEAUL7jvMQ5oV54UaI/s/Fw+ogc24jz6A78TxDBhfwTmtINy/fwbzEIc3NN9+CSSyVOCQ898hDyJw5Je2tokvsZl1LFtd9BpRSuhf92T5MTl5a5eYqkkZX4g6XQ1QknriLkmhasZv6xNGn3bYraZrweL3be0WVG7wmwNT4zEMYm35Ift/bvoPlhZfQd+avoP/8aRzLsRy1SH9WxEplhiawOX4b4/RyOXSHYXuM3tALfZKtaszej8vP/jMcVEkFWCxZLJdh2d54jILno8oR7vxUWA/hq8qaF3zx7N/XiZ3a2L+l1JD74qkpndnJDhHASQAq3oLBS9Iehpk5+m66O9Uka0VRFwhU5VGSjFXBJMaOCJ29dNVlX0TcVrMuPdWLOr/wzfdx5e07ePJT5/GFn3wCLVIHtunPrZtmD8TcRUUDK4oySU3nAgXHct0BAT42R7VLEvlW6fN1NHGS7sesHW+y2kKZWMS7xTS2C5b/sUp/AZWBIrJCDUhMFV/dcQq3Ppg6z3sG39DUgJB2Vl69rVqZPDjL8wB75bVB+65MgabfNsoFahx+NZraZ069nXFhOpk7wBWealDU31Un+sXOyFJHMtuNQjIw42Xh1Sq0DK2Xk+ebXLhUCTavXYchVIIn5mGMjCBDKsH24hLa62shKZKupMrLS8eo3KcB5DHpkrX7cChGfQkLSpegysuql0rFDYFOwtUJz7NY7TqXpICksxwWXB61Ib3etvLADE6c+zSp/PpRr+3i+jtfwv7OHRmnD8dyLPdOjGxe2lBVxhaxu7iLvvU0tsQuQKFKI1DVHDsp41VtUAVVHeWseeoqB3sRdsEO4MwD6ZRhr8jORKskiBTn3Z8rT40/vp2fYKXSRTe+oPbFQmt92su0aBdlcr1NLyxsGCVjGPm2tavRAlZwV33hmb1ttiW43Frbw5f+5Yt44Zn38PmfeAJP/tBDEly1hgY1cAkVKDn1ZfqZeQhjVOABmLAWmo5NEaDZNt1gJpaIjLjUttqZI1A0vVVF324Vy8MELoVzT4pbFwcr0x+bGwW29qUK0LCPrwkYgvvZRlh41Levzm1PwNA+BFgF2sN1b+h+2yiEMJ7hPQaNyZPfXS0es8eo/hnIhyvxxf92BpxBGXVxY5T7ZnQjEB4vRwu4hOqvTn8pGp+piXHp1yo1M4Xmu+9JdyFWiR3y5Unrp0eOAzBBSYYyeE95+3MIL+sDZ6p6F6XysVU4agaom/hHBdg6lxwlAkxNnXhSfgo1391bL+Luwgtd5HAsx3JIEbZP4txAYqYuz16Taq9s7X55jAsRNeA5WpgHJrCxsYaR4VFbjQaoai53reIuyeGKDHfwlTxzkGF6uoZMeh3iDMDOj7J/wu7QHEMcMm0dscNtDsN5ITJF3dsHwusnWsTyvNN+Bg+yz0nDdQGsUtzAXqaKNrMch3IHALVaMg/hrX5zdQ//5B9+DW++cAM/9ssfw9CJCTROngDPZnTQ4arrfIcuh6nUbHbDAWbqDjnPZQQiQUqNwl4uGpihtg/vt2VrC7UWZhc2sFPMYq+cQ71kH6RM9cQEAcGJIZmLCoSce+hhXaVFFjoM1sEGNOqZfV7b9AsaOFLBGHSRw8tncxYG9FyVqR/E+ZYfT0ULdFSAeNg4JDBcwlaW5CsJj8mLd4wfJ+3lFQJYW0hNT0k7q+zDDxJjtYH2nSUCV/We6xgbk/ND5hu81i2b1k14l6DKkmRYMLwK8WmjQ70Q1mE8dguOvBLuDdQIr0/vLBUL7aUcMVICTI2MX5Qxlm49j5Wl19Fu1RPV51iO5ShFHsqcK6JNKColDJglU+UZubYHPCeDfuBgMMNd1CLHq734pVLWG/zgYAMDA2Ksj/Q4vDvMagQujGwfuLSnMmiBTktAhGZK7g7kTQGsmqjxA7zZ+goeTFvAKmOmMdAoYSd7gDZMbRKU7Rae2pkhzyp844XreOP5a3jyBy7gCz/1JAbOn0BjcpyYoYxbR9XvkkbKKaDFKcDkQMCzuQLKNGNwBP1FiTh38gbWsgWMEUtVarZkzqWdKrJi918ujepQEfXRfqVuLAjWfIDZBStq+dxEmFrOrTegAxxDZ7NYCFvnT+ed8wcE2D1l56Da1y7I86Mqxnx96Ben7s6qxVwtrg15ES29LebJ0h5ehOPQ1o2bMFdWkD57H4GrYRj9pBK8cwfm+kZXeSUHNzxBui6AGnCIFTgeyaR7LTI5sOqW/YkKufdAoFew6Ek3t+powE1a2k09ggn6c+ymblz+Khq1vZDYh2/hsRxLIpFG3gamdmcwsdyPN0/vBYYeV754RIF3VpqfoWAMro2KQ2EJlitFgOTWzRKuXevHX/7L3W/CSP4kCgauQEAuC06fvHUgfDYQoBJm3sJbJgEnAlUNVCWwupT6AVIFDkm2arjeh4N0HRX6g4s9nJ14XB5vI2zLRJue/8a7uPr2HXzhJ5/Ek59/GM3hQdSlp2u3E1zg4u5StNCK2yJPc+gBDw4VWEQAICgdbotwELo4WEAxn8Hg5r48XFhIdr8Gtk2/r6+gUcqhVciiLQzYZ0aCeWmsD1c+uG1bxTR2yr0nik0a7LEBxcbMKcP0tYHZbXXtubjPMahbFQdger/dctzbznyDlXmgOGJKdc/I5U4f25iR+WsZJsFMRX6pfIHY0Ojz76Jy6lY6p7GB/UEVjdffRJqAvzE+hvSpk+DT02i+977l6DYkTbeiQ1PvSrgkW9+SxYrHInEUTE9MVXdwwIvdOU2n5h4NEPmTIL3DG6sPRHoBpqZPPCWB1e72omSn9qTdVHzaYzmWey3yzdz2h5Y2UyHhCH0A5Ah1AIEdz3MBwODTobjrXaWSwu6uKK/e9TBn2rcETyWpHI1MCZzAVa6dJ7VYVTJVLQJTdaOCBq+gxWt4rfWHOJV6DNOpizJZsZWj+BkJrmqpprsoewu7adm9E7gSKsH/8x/+Mf7wnz+HH//rn8ADT19EfWIMzcEhlynxAwVvCYLGDrnXoIIsq6M1cGEYzo9QxqeST6MyPYjCXh7F9V0Y25ZTUNZqwxC/hauFckGCKo0lYj523WGFmABDtl8qW8wQgOeyW4B7w1XfU2EqP9lWJV/u+4QvrrpwhxnEc19cxpQLvrHG3DTO8uupXA2eRZPyDz4Ranpf+eLYI2J70yOjSPUPoHF3CS3XvYC/pno94sLj00Q9B8HrreVVsM1tpGemYIwMI/vQA8RYbaK1tGSDKx4BPNGxDNmXps3wdnw2k62ovIc0qvTIVCXFqt1JsjRxQ4FFRUkovcC6qBk6aSWOHsSUB2Yxc/IplAdn0WzWcOP9r2J95Z17Vt6xHEsv4i7SIaLtAvNTUrbX7cCOJ8eOxcnf/jSUcoKL5715SStXU5jaLqFAIKnF6xJMHRCLUCemivgoVNkefd+XrhbE71Opx2U6wVqVmwUJsIRK0DQcGyRu94Xu/FIczPy//Ve/j6eev44v/PSH0X/fLGrTkzCzWQWcMA0weR3EFOZFn9s0xoZBBydhqjSF0an05eiPmIlqA7nlbbB1WuCbHiwJs/ny5+XVwR8GjRhS+0JN5/aTvx0KK8aVQP93v8NQN9jfXujC7H+4/Utnn5Q22GV4FUbPw02cI1m9fh3Z8QlkhoaQnz+J1vYW6ivLllpdqx0/tGpMzSvpdWFPJVSCBqkEU2dOE7gaQqZcgrm6ivbKqi+pch/RQbj6Je6lp7vrh18lo/uzJ6aqO2GBX9HV4T2mYQmuxV2Pk24A5r0tU9hNnTr/QxJUtdsN3Ln5HFbuvIpW69jv1LH8yZS20UI9HRyfzFXl2BfcR99mIpT3J21xsi9ac7N1IaWCN97t4tFNfOtZnt0uYmzf89WTYXmkWQ5ZXiD4tIMM6DepAzPISUC11r6JLfMuzqc+LtWBss62SrBOjFUl0yC1YRvqzjJpW2Yf1yKuP/f1d/A8/X3hpz6MH/jRR5GanUBtwrK38htcc3uxVwGC/JRAxFnxlTZZKAMBo3a16YwFWKQmqfsap0gtSX+pnQo4qQZ5Nm2p3RQ7JvjScU+XGwQtLOgOIQr0qEblyloNzeg8hHVCCAjV1KU2K6rWQ5vjufvNS6s1wirIMWZ3j9lh3C2Dm20JCp2NFl7S8PEodtjVF2+jQUAqNz2DNDGWmaFhNLc2FXDVLeCIk95AilAJmm++LRmr1NQkjJlpGGNjaF27Dn5QRS/16MyexYmOHvRfveTXWXqwqeoFJOipLYnTJ0elSRa/+9eCcDDnhbGONeCxod2KXqZQ702f+AgmZx+T19eX38Lireekq4RjOZY/yXJ3cBkr2Vs00dynXfdvlZeiGKYzJYw7Z8dBebLFP4blp0rYVZ08VUGxJGx9cp0eyFhh8NnTeDWW/57YKmG4kg1Nl2VFpAhcNXgJOd5HsGoHdVYhxqoiWSthZzVmnMRM6gHkWUmmE+pAoR6tp1pSLeiS8cw+M495jRb1EurA577+Nn74p5/Ck59/BFUCVvXBQW+6cMEKc/GSI6ZcxHV2SwMeKuhyWu0DFkwtQ7l37QFSh/YXnURaerUOflsmDxDxALOm3m+nTzRbKieuj8lyy1IORIa/LKV+jg2VexSMUmcJrPRcLaAEb5eq/5gau/ehHgDO7P+0zIS6V+h75RFPBnTKNky4BE+1WzckoMpNTMnPdKmMxvoqGhurOIx0Qx90EnNjE3xvH8bkhGSt0hfOE+gWKsG7IfZW8WVY6r97A4B6k/gJ5gNgqjyAkHyu00HF0TFVcdINEOsGcPYKQjmBqTwBqQ9hYuZR+X1n+zbu3Poe9rYX0V299HyP5Vg+KMk3cyhVivBvm3AOmXWZEbGWmVxTrzjqJv9aw7xtVDazI84obmF+vklJ89ojl86oHqz9z6KfJou7CslQhQGqA3MPO+Y6Dgg4NeGxcmnhPFT0AcrEZuUkm7XN72KteZOA1f2YI3AlRLBWxZawz0qjSqyVsLey2ulrs91XGyu7+M3/6Sv4w3/2PfxH/4+fxNDcKCpTE2iUy15L1d2BCIKjgFG4AyQYNJAF6MDIARkaY6T0l+XoEqHgzA+SwsCOX+WmlqeVbSMapy3qreVep3nfw1SQNiOlATlFLa31H3TxXFSEjE/7XEinsuoB4dzVDaqNFF7rTek4NxpY6TUQDJX4E6AqT+AqPz2L3Ng4ait30draiEwXl6d+PWzVTb6Cy1wIPLUXFmAuLyN93xkYw8PI9JFKcGUN7bW1LldF7tbgMMJDvsXF8kuS8tO9Jeume6PIuyiwwRNcSV7m4dP1xl4dLj7QPziPM+c/j2x+gBipHVx5+3exS6Aquk5OOXHhncKO5ViOVkb3xjCzMoRX79d3LWmLO72lP1dvoUBvpKczafSpYEJN5Ne3yEXRkIvRrZs5vPfeEH7yJw+gGgafv/hRZBbTWFu9Qc9RJaSG/lmJh85tw5Ucqfzy2jXhPmG1fVuCKo/F8RK3BBOBNtqsKl035tkAcsRQCXurFfMK1swbmCVwNW5YpxsIcNXXyCObSmM/U4fJzEBtBSvHUsw+8mYPf/dv/Bo+8pn78cM/8xRKF+ZRHR9HWwBJQ7fNCqqxEK9Wk0BF+e7VwAW8lrdxv1E71wEJ1zcZcF95LuOlXPcbnpu+OrsgR69WEKz5y3Ly4974UNvrXdPzAw8WZLlIsG4292MQ5iVjTgVcXGWoUdSWybMlJadls69qWJQIYNWu7CM7OobsyDiKsyfRGhpB7fZNmM3uGCHvejJg5wjrsEILFwzNd96VoEo6D52dARsbhXnjJng1XiVo3WcTvUtU3boDiE6Kzms5782lAushjZOOa7+SSefm+8vuNDBYbE7J4ncDlMIeoXARYGr2xEfRPzQnfUzdufVdLC++glarFig7vF+6YdyO5Vi+j6KogP5Vuw8LtQMc7O7iqWwGvzpQhLN9nnEH7DD7bV9iKflF+KkSI71SIZanKlgpna5otZqYm7+E8fETuL3wjgRXccKUT/XZmtotaPF22utYNm9TFdohj5pVT8FYMJpiDaQgXIMemFViqwyU2KBkrhoEym62XsEyu4zz6acl4BKSJcZqmP6kvVW6IY3Zmcsg2UtzKiXVecKI+bmvvY3XvncFn/6LH8KP/OxHcEDAqjY4gHY243UFD+7o4+E0oM4qhYAm+b8P+Pi/Azpw1uK4QMYuhIU42VRVkaHgDk4NXZDnB2hCLBWqF89fV8VBh2J75oAhBbyrqW2mydnB6Benjxj3fjulyLP/mKhX097pmQ7USHjoF77LmDxfEh2EOK5GHbWlRTRJBZibmEZmcAR9Fx4kwLWB+sqdEHAVvmro37oDHFF1U7O0VIJ7UiXIhoeQOn8W5uaWZLLE+ZfR2XDEq//iwrx7lwxG8dgQ1iGOkHQ3mR5WeOCXf8R0jx69dPpvR0veS05H3wPBtvrLyREjNXfqYxidsFQCy4svY/Hms7FG6DxhWcdyLH8SxVuWGQqZPgyxftRa+3jT9oPkCvNN+r73hsAuQyXs/Xe+i1TJxNyJ+3HfuScxT59XLr+A3Z3VyDr5gdUIqfyyba+MJq8T03RbslBuHdyEupNHJ5MUMnQ9TawLASWzRqAqTeBqWNphCXurV5u/j1HjJDFXur1VxkzhwFEJKgb7ojhhyO7sgqtW6viDf/pdAlhv4Ud+5iN44guPojI+hiqBK3/75Kdq0wYVy3i8g3bUjKse1BknLa8I4/JA2Yxpva3t6oPltNSGOfaVYB5gOhMn7cXUXaB2nkxRuYWBPqudNvPm22nogDU/sPRLAJeCaffez2I5wNJsNajO4siiDII7XS17K9FXYtx0BldAm9RtVWKoGpsbKM6dItXgKKnbyqhvrRO4WuqcQU8rXwdA4xsHlkrwNtiyvUuQwJUx0C8PbZbgKrQIDxQdpn7KLQB6YLCY8m9c+g/UpipZ3F6y9F/oHVjEYfhk17uJa9lNTc09jsnZx+X33e0FXH33D6XKrxPNyBLh5mM5lu+fNEiNFbb7TwhT2QpbsqkiKgSsVmmBG5fe0r2F1R3tElGw6JdX32OzunITmxuLmJo+L8HVAw/9AF27QczV2wGVYNgTN6mwVCZvYaH1Pn22vQT2VkXVlsZ9rVNOFxacmvBTBJZBmwsXoXXk6L8+295qh9/FXmudwNUJ197KsFWCBZbFQbaBRqoFrnSDtE0T3utJZdRuN7GxsoPf+B+/hO/98dv4hf/48xidG8X23Bxa+ZwLU+zO12ya7Czhd1vg7oBzkWJQheeCD+e3Ypfk7OaTjCM8QOHWI4RBc1kgBPN0wZSSl6NeNE1dTcSVSvCQ64G83X7lyv3mSiIlA5Gt4UP3ihjMa78fWLk2YOK7YKWItZJHIaWyEeCqaRmzs/jz/5yU7coe9t57A9nhEeQnZlCYnEVuaAw1Yq0aBLD8Er6KsJBGIyJtlHBfNkoeAly9+x7Y0KBlzD4xDoO+y+NudkM2YPHDr3J6i6LAUy/t1OVQoCoa090L6RYo9Q6sDpd/2PXwuFMEpGZOfgyZTAEH+yt4/8q/kaCq21p0J8cQ7Fg+OFktr2H55E3kcSEQxkMWrFy6YLFVjRY+W8j5Xy/dBRz2giX+UrTgnDhVweCgYHMKNujSSpJqwNsLb2GV1H9z8w+QOvAUJiZOY2npfdy9cxm1UHsroFxPayzVprlKTFUDNnJy66cuTGOkfhujRUKAglq9hr3tXSp3zYtLQCtFPWIQ00UwSW6vLxj9lr0Vou2tyvU8AdSWZK7EkTeK/bPEdal0loAFhbRauPzGAn71l/83fOQHHyCV4EfRf34e+8RcCXuroB8pGyC4YMjqXNPq7KBxOoL3kMeBIxvAmfa94372y5dOVcNZ12z1nYMmnfQKaybLdzCivx7Q6xFafzs/Ky99bQsyVUyZzsPXGFdzCcf4Xu1zO1BlUQS4IqBuCGAlVYJ6K2Q4HHsrhjDNhy6cGKt1NHe2kBudIHA1S+zVaeTHJrF/4zKpBP0vOslAVLCUDqtsh2z41jaBwApSE5ZK0Dh5gh6yLbRXVzyVYM+AKgihWEjYYfINC4swVOfoDZTEp+kOhOl5xadlCa+F5/1BS//gHGZJ1dc3MC/tpm5e+RruLr4UEjOunlaPhLNVndIdy7F8MCJ3/+0Fd/8JYc4/ypDMGJb/pzebbXym4O0GM1RUBY99cN7eS8UW0ilij8y8Ei8ogpm6evl5AlLv48Klp4m9Oofh4RkLcBGj5SW2yhuoersHhdpvx9xAcEGzfj/06EN46umPIl/IS9WcobBpuzu7WLx1G9/7znMSZFlb8dPEaJBKkLVxwKvIEtTy21ttsSWcTD/q2lvlWmn5J1irmtF0waOzgAvGKpVLo91s0tzSIMbqLQmwhL3Vp//S49gbG8UegStXvWU31VTcD3grgMeomC56U9WAelcHAJLPloqFATTuc16qAKaALRbzledTYaoqPr8fK/gAleYUNUzFp/RFqE1VB2HuJ9M+3bwliDJ19kmqBIVbjQaBq4xib+VGiLS3inzFb7eJoVoihmpDslaCsRq4+IhUCdZWFqXTzt4BRpyBTRerNYGn9u3bwMoyUqdPAcODSA+U5UHNfGtLsSXsrpywWB/Eyn/ENlUdycCEeRymDmppSbvvgwAaHLn8IE5f/ALKA3PS8PzOzWel7VS03VSneoUBqs71OJZj+aAkavefK8o6KiSXLsoDlVW7KveN32EInB1tdrghd/+V8OabI/irP1tBEqlUtvHyi79HjNIpnDjxAM6efwrzJx7Ewq23sLZyHc78UWh6B4pYLhMabqUE4yTqlc1l8dnPfw4z87OSNWsTIOQpSp+20hpU3/6Bftz/0P24/+EH8PYbb+O5b3+PWOldmZEwZCclIFrEgIm/rJFHn1FElhdR47uh9lbFRpa+ZyRrJdgrq0rOfEDgKp2WakGTVILryzv4l//fr+Frv/MSvvhzH8OTX3hMgqvK4ADco4IVdaAZZhisskYquPJuozblusl9Nlo6oLLCTShMAtd9SakMk1aW/7vPBsoDZQ7LFZz3VJbNf93vZkEvPcHaoqgwJTZllirYIDAk8yYQazb26T7RS4SR8YErU4Irz97KbzMo/Da1XXDlqFZDesUVYcx+cPu6BFLlM5ckuLJUgouor9+l7Fr4ICS21wS4eu8yqQGHgIkxUgmOgY2OgPe0ZvGY8nsFaMnCY46piae4kqu+upVO5QLuKwmLK7ebetxb/CoOOp45+VHpc0qUs7V+GQtXn5F2U1aLein7g8Dcx3Is90a4wi74RbBVK+0qKkSP9In1hOmMdcBOhlm7/1qtVEh+8fOJAFBrKzcIUD2AOQJV9537MAYHxrGw8CY9nwfoq3tMlWSpOKB6gxcL5Uc//nFSJ46jRYsCT5lyZ55Q1wn2JyWAlWNQDosZuv/B+zFLAOy5bz+Hd994x7ZXEpOxYOmyaJmkFGR1ZFnQ3mo2dQljxilZH4PK7mvkUGxmsZuvoW3YtkbcwZ6kZszkqD7UN7Sobq7s4Nf/uz/E+68v4C/83McxNj+OTapHy/bK7swoLlOlgiR4FzwjcAeAwZ6Suc5e+VSMDtuk3jfXWBxKOltMrvutCgVT8ICXqwr0qg0/HPLbhKmAzasX0+K7lXWveWW76X3DzLoHvsEo8WgailMIm5lq0j3KSQDllWWzUmbLtrfywJXjnpYJ8MUtz/viPMrOYu0U3Hn3VeSGx1CYmENxch754XEcLN8mNms1Ml3YtY4sVS9YiMQkdgr7BDgJUGF02MqIh9ehG2GJYsQBLqZ8j04fo/5jHQrXY/uvRxeZVDqor1inuNxVkCXPu9s6xosAUxPSeedjSGdy0s/UnZvCeefthOUlA07heSRLeyzH8n2VkGGaJbaqTqDqequNh7JpT/3CvSNYVDG0C74FMuEzIBgqYbwugNX4xGnJYK1ffRdY9Gwcq+a++7A5dl2XHnwAk1NT9JLdlCyV2MKfEq4OeEoen8PtRS8ljMltw3tRt4GBAXzui5/DRz7xETzzlWdw7fI1OB690zxPICMjwZXYLVgyRlx7q1vt13C7/RZOph7BsDFntZ/A1WC14NpbEZ6D6mpT7IrL5AvS1qrdJJXgV9/Ec/Qn1IGf+bEnUD43jx1irlqZtM7KqOqlEMZIBVRWfJ/3cjVcAWcaM2TH1e+eXq53wxn8rIUKkLgyDrQjdRTmSvVPxfx18ZfJdaenVg2Y3i82uA4VtZm2gRhn/vEJm5mqAu06MVeFwG5W195KMFqptN7lsI+8gbX7MWjMHlIZkvrmGhr0V5icQ250EqW5+whgzWF/4SpalR0cvfDuwuh5Mu8uA+vrSE2MS9ur5PkdYT16SN+zobr3yIZd7TaXHko+FGaITtwLOAlLUx6cx6kLP4Rsvh+N2i5uX/sG0fBvo7tKJwG4UbeZdZ3iWI7lqEXs/qvkDoIBLlMV3MWXSxWkDZZQAQpQpfkD8uEnoSpMpcQ0ZmoRkj1leixhrH71/edw+9abuHjpaYwMTBKQsUDVAd+Dp/KzUhZLRczNzaNF9UwRiBL+pARDJQCVNMwmkGUIkEWASvhcEnGEQbh6AHS5v4wf/Ss/infefAff+7Z44dqTC7dQCRpMgKssMXYHyDDd3upq63mMGHelMbvf3qqabeIg3YDt4MuqN3WgkbYWZbNBasZmHV/7Ny/i1e++jx/9+afxxA9/CHvDQ9ilPxW8cnXnXgj44cr85FenuYblFiWkhwGaLZP7XRkXblluforLA7sA7kUK1M357sTVQJ8a5i/Hjs9Uuyr4MvV/9y2GjOnXHPWfFzlEBLhqVixWSjBXmtEUjad2A8xsSGN2BOytTLkr0rO3SvYEVJcXCGCtStYqR4zVwH0PoE6M1QFdN2PsrbpjqXiHNDEibAMX7xwJPdArZEieJpKpcgLjxKpe8qW52+awyKs8gpVCBCOV3F8Vt+N3D6zUNOXBOUydfApl4byTJq6lm9/FyuKr0iC9e7n3w+BYjuVeitz9lwnu/tMWNN9wzaQsY/M3G22gpETyv2MwbyEUZ/+NjdXoQp+vBknfPj1lTb22j9de+SPMsUmM2NdqvKpVQ/w7MjyKbC5HascWMRmmBZ4EuGrT4pgWTBWpAk3bSSe3PqVqMMUlayUAoQMLLj14Sf49953n8OoLr6Jep/mCAJr4L8v6KP8G6sRWZIwCckZJ2lvt83VpbyWOvBEqQcfeqtDIINcUxuxN197KUQlKJixPKsFsBm2pEtzF//EPfh+/+xvfxi/9p1/EmcfvwzaxVvsE9qyutUAvD5mKuM8AXJ0HuXqB+c4bVNMr37ldPzUsgF+UeoRhG62eCmBT7cTCbKj8+Qlx2CnTj/qZNVqCu/p8eSp9wJTxy5lw2kqMYlvYTWXhp16tsIZtb+W4WbBXMW6pDBlrg6UdlaBSP9e/VTy4Uq+ajRoqt6+gurKAvvlzBK4mkR2aQH1tCbX1OzROav7W4eikc15HtZqxQ7NUyeQD8FMlJEpdCIQDhzgwERYWh5uT3pK4Okbn7qTLESM1SWBqdPJ++Xvl9iu4e/O5RGAqOfCLSn+0w/xYjuWopFQvYmBzCOvzwTAPG+ljX4ANAayuS3sT5saVC7PhsAzezlcx+NMZE/0Dbfd396LlKKW5I9Qglo8q7vilct1tg1SFJ12jdMFIiXVUfArAJNSAJn2mbIaK29fFb9M05CHKMp1grZR18cMf/7AFrr79vGSvHF9NlgsGE21hbwVhb5V3zxNcNa9i3bwVtLeqZ4m5ShFTSG/7YiF3Wsot434jX6T+rEtwtbGyjf/+7/wTPPWDD0rmavT8CWyNjlgqQecGKOldVwHqeq6EOwyVOlubfvBi5+OKzy7KKVZzAcHCQJF9XXwYzDs4OqRenjcHHyOmlO2MNQeQ+UGPBZC4+52b8QPOZalsxtCZ8YXzT7CW5UYhlQmkC9pbqSCUVIJN1d7Kj3hNq42Gbcyu1d+NpJdH42D36pvID0+QWvAE8uMzyAyMENi6RWzWChLLUbFUPa9qwXSdy49bRTm6WWV7BlWsq6LiQFJU7r2EBcuNZreCcbu/9UzaTY3NPopx+hNvFrvbi1iWdlN3Ysqx0h5eourcS1uO5ViOXoYqw5gRoAq+s/8ARS0TTJclFWClXZN2VaeJ9Ql4qHYygYVzrl4u4/r1Afzsz+5r+bFgdF8t4n570rB9U9mmVMjnCigUisRStQlImRIwiUUsJQGVYav8TLngOnZVBl2X4Ep+WixWSjJXhgQDzn/lgX587os/iKee/jD+9T/9LakStNpCcQlMGTyDFkErsVOuxBx7q13X3up86uMoGUMyTaadwuBBitSwbRxkLHDFHMpD5JjJIp3NSUP2Vr2G733lDfn3F37haXzmx55Ee2bcBlcZ6565RuGKY1C/xseixFxgElAHKgAJqupQjWdH0YBYxC5Ay+eqla+pOga1P1Xv6qYKpuwynXGopfGXASjlcq3NYWxQwPmrkonBsu4RNpY9VU24Q4eRyQcAkGpvJdYav5sFeV6gtLdKhwAzWyWIdsh5gtFSIwAl/gpj08iPzaJv7jyxVxMEuN4APiC25ygBVfI0QTTDlH+T5nNopiqsCoeXOOARBhh6ARHRaZLelrHZRzBx4ik52Jv1Pdx66/ewT6DKkuTAkMfWJxkIS46jj+VY/gSIs4hGDOuskYNwjiCcgJ6xXROoj4jKUqWkAbgpd/+5C5zvYYh/xsJlnxieBrEEwvmnXJg4c/msvr4+aUsld/jJ3X6wABQBJZbiLjNl7Z631X4aqLJYKyuNYasFrV2CTg2FG4a/9u/9Mt59813JXO3u7FmYhKbttGC/SAVUNWv2eYJDkr2q8wO83foaRow56YLBPU+wmUK6ZaBGKsFaph3oHAGsUqROEsBKAKzf+41v4btffgNfJNbqw198HJsErPaoPtat8zrX9Km5XBcNCBShgS33mj+Ocou4Lyzg98q5ZrNJmiuFkDJMHzvFfXk5bWMKe+WxZDq80lSZYeo/B82LKile9b22+Q4JFuCp4dhTZUPdKLSbVRlu+MNFWgJlMJuK81B4FYDnPFSAL7AkqwVHde0OGjsb6L/vYRof3qkCLD5ZF3IvVqyotiUp62jqE+GnqtPEE6Wd7AXcsJjrHfLrpbgEEn5bvMJKA7OYPPUU+gZnJIW7dO1bWFt81ZcmrnJ6WHI2rXNe+nXgnnTQsRzLEQhTmAq/5DN99MoMXBfqNTtWUuNbK/PgT55kTlFkP9fCO1PbGNvLo71vyPo4C2ShWCLVftsCEsKI2HRsqqgUk+ZHsdvPAVEpZqkHTcPeHWhI8CUZLFsdmLLDGQGrdCqltIHh4kOXcPrsabz60mt4/lsv2EEUl5OaFOI8QVIJ0qKZFbZWtr3VnmJv5R15w1AklWC+waUxe53AldqncpcgsW/pfB6Nyj7Wl7fwj//B7+L3f/Nb+E/+25/HibkxLE9OoFooqCjE6lHRDzaNF4Qg0NVtng7OC9PYKwTZI8dFuRLmemiHB4b8gM2/ky/UhQIc6OGrN/fy8PAc0xI6rhz8wrjHVlm/deZK7Nhrtw4I5OQki+TC/nZT/hnpbIS9VVMeRyTsqQwjGzRml/ZWpBZMhxx5I8FVs4vDmiHtqYSDUJbNoddV6uhXIN7l9XtZZjC8R6ZKP5fp3slhb4fKu7KIMFXiJ9xMvh9z5z+LvqFZ+Xv55vNYX3wtwm6qU939ZXWa7O8RgjyWY7mHInb/bZY24Ts3xl2oLNwQHNdyVx/LyB2AjrYqYBTssAG+fO3oUjb+xt9G89nfQubFb6ixlAy4lp33lFnfiuUhDD58SbJVyy98C82VFbR4ExnB6thMleGq+2zWSbhSMCEN0i3gJMKhgSjxvS2vExgzLVWhaXpslnDHwKQxu5Uul89Z9lYEsJ7/9gt49413bY0XqfB4juJl0DQbVOsG0kYBZUYMGyso9lYXMWYfeSPAVYnAVbpNTBexcSbTZ3LBguTK/aRxqqNRqxK42sZ/8Vf/X/joDz1EasFPyiNvBHPVSKU1wOLaQzk4JuSeMP89spCOBrp0o3bPJ5iXRgFKnIeW00nUfDT7KTsfbpccmtZhoJQ2RxWiHq6sqQLttCapuIVnfWbodlGd7K14S6hyrXDDFy7Ugbx5EHOeYFvGsc4TTIVXXBHrhcbosPr0yg7Fy1EhgGhJApaS1MKbS9K9ZRY13HrpguSMjlOC+tIQn093efvLcWIJW6mJEx/GKKn7hOxvLWLx/a/ShLOH6Pp1uhkx7epRohk2J/RYjuWDFWv3XyV49h+3R2bMsBTnAK40d7HPhRNQFmG7YuV19twepqdpIUEZarafmBrCH/z0f4ji6Byaf/Trsc+YCqiK5WGMz5ySoKpJb+s3F95CpUh1mBtF/yopJoklagpXCmbKZqEsf1COPZUhF3zLjspw/FVJNZ8hD0nmDrNlWmDMY6vs/Jw87ONurDYx9PeX8YM/8hlcevAivvr7f4xdx96K1IFpFGjBz0hj9pRUCQ4TsCra9lav4277Ms6nn1ZcMKTkXy3TQj3bokXaAzaixHQuj1QuhyYBq2a1ime/9Dpe/c57+OyPP4Uf/cVPYn1kGFtDgzB9fpUcMsfvPsEBQc41+aneUpVFcnfembL/3N17EmwxLQ8rPhzEZsdxLiKorlTut5/BCmOv/MAp0asws18C7P9c7+pOFdU8bCefwg+VdnByInurmlT9CWZLpvdaZufbto68CQNmrn8r1d4qCKgSS1cLWKcn8fByNICs+5U5Hb3zLJ41CWeq4hbwXhb3w8Y9HJsmwNTI7MMYnXlEfhf2Uqu3XkAlwgg9+N7brRweAIUPgWNAdSzfHxmuDKFvaxTLvt1/7qzj0hVByaWKOCBQJeyqPpLLaMPYUaWIlCkjZV8D/Fvy//OhCqbyafzaZ38Mucomst/6PZcBCVtAhG3T+MwZDE/Oy6M71u5cx9rSDa/UdAo70/2YyZP6Txqht5TdfaYLkgTYEq4VLKefqrF6ygJPKW6rAm12y1YNynyEN/a25Y1dOg5NW8DMU5dyzMzP4Jf+/V+U9lbPf/tF68gbSYSkkRHnCaKNA7NK3zPoYyOuvdXrzT8K2Fvlm2lkCVxVSd0pVYKAZ1QOwdAXkclS+oMKDvar+N1ffwbPfvlVAlafwpNffBzrxFrtlMueTRMA+ACV330C/I5CoYMfNZ5mrO6gpwBgM13mLgoYaWUiCPb8o1BN5409HV7J0iJcKnh+rjz3C3ELkkmqOaKgLCefqkG6tLc68NlbcT28SWq6VFuxt3Jha4S9ldee4GHN/hgMLMkachTMwCFX0O7SJq1skoZ54ele1GC9h3UrwXrwyOBwpsoa9t3UycqnNDCD6QufkSo/caL34vt/jO3ldxFWRm99GBV+GLYvCiB3qsuxHMu9kWK9hKntISwjePafZw8cPjYFUyVEgqp8RjMidiZ5w37DvmLv/js5v6/l2Wqa+FvTVfzRVhpLn/tpUgN+HaxagX8JTaXTGJ04gZGJOekkc+3ONayv3JJeyO1aavHfqa1j1CxiLltGkbIyDUcNKBZo27O6vSNQgiSbwUr5GSybpTLaAjxxZVegofm+EsBMfLdMkpxJnuEiMVbiyJtXX3gNr7/4hqybYH8MLg69KRO0aqBBC3WW9Wv2Vu+0nsGkcRZTqXNWPwqVYC2DQj2NSr6BZop77gTsrfm5vjKyRWK+drekSvAf/Te/g1effQ8//e9/HmeIwbs1O0Pq3hBGJIQBcj8jVHYaQFbiWb/DwZeDWUIN2h2wxdQzASPqpgIw+3eUTZWm5wy0QTmv0s6cSdibIxVySxvPSmM8ECRspgyPndLtrTIIt7dqKPZW+mHNvFUnNtJOH9gJyJXDmg3d1i6pLaO3DDn/RKw6cQClE4DhR3S9G+mSqeqc2VEu0t2DG39ZgS5PUBXWBdgoEpgaO/kkSoMz0lZq7eYLWL/zuuUzJIEcHqzHNahzmPL8dpH2WI7lgxdrkYt+XlK0cAjQdK1l7VZjHaZosfvPXbDtLwJU5VtN/D/H9/DzrQG0HviwBayUdEOj0xifPY1stoDK3iYWr7+NZr0aUYon68Qe7NG8MEsvXuMZ6xgYR41nAaqUdLcgWCsImyrTAlzMZaEUm6u0bVdFn2mbvbLYLlpk047dlc12pQzXK7toR3mgjE/84NN45MlH8MJ3XsS7r78HJ1Ac1ZziGTR5Ux55kzf65YHNNb6PJfMdLJtXAvZW5WpOumCokkpQeIl3RPY/LfKlwVHqnxoa1X28RqDq1e+8i499/hH86C98Culz81gltWAzndbuheofSgNT3GOaNBCl9niMYXkYI8Z9U52p5OMdZRO0xXLLV+3EfCJ3NzI9/7BhKXdxcpWdYjbB5rWOCxs4lkKok04Jruq2vVVaA0GWvVWzg71VW7O38rgHi9WSrFTgsGZRV8/eynphcW5cJ4Ig+DVa4lbJBGcKJr7eqawkwruOcyiXCocHEL1KN2DPARs89nZl8mWMnXgSA5OW7cf2yntYvvodCaY6t7FX8NkBMHYt3ZV3LMfy/RLXdxDiR2SWVIDXmxXrB+s8fp1QZ41qNoirqTMU2vaFEwQeCFQJ6RN2U7NnUCoPSTB1h8BUZXcT3UjdbGMtk0b/qUvoq+zCXF2yPKxLUGS5UpCOQO1dgFI1mLZ2/rnH16Rsx6HCOSjgqQ9tcAZbvShUgo5rhnTaOvIGzANXAwSuPvsjnybmahrPf+sl7O7u2kwJATVhx0XTfV3aW2WkfyvV3mrXXNeOvBEuGMRfjVSCB9mWC2idxV+cJShsrprE+tWre1Id+N5rN/AXf/EH8NQXPoSNwUECV0PuTXEAEPfvlmM2vImwaULEb1XV6JzD6IEjJb4fkKmG7U4VFDDHY9SWTtbMjYBE78Cu40/YHvTV+C6ISYcajQftrVx0qthbFcJVghQuPbOHgC9pTxVjb0WDjcCoaTkPBUM0WdXtitULC9VJ9JUzRrfVRY5J0wXj9Wio7sXwV0UZqpF5erGcb4dc7BMkjwJUwlZqeOYhDM8+TJNdVtpLrd96EQfbS5E59ca4JROrRw4PfqIB2uFg27EcSzeyW9hBoSTGXHD3H/wLTIgIFeBOa186AT2TSdsqKT2OuJTJcmTSbfhn/1bLJFDVxlcPihJ/GCVSgREYmDn9AIEpYlQaVdy58RY21+7YM1M01+tdt+L0D4xhZv4Syv1j2Ntdw7XVG8gRezOXH0DeNN3dfpaHddPyLZWyjK/dw5cdRkvGZbSW2ao/m+EySS3YJqZKeGAXhvAp1zUDXSM2SBBWLOXVW/x78cELuEB/b5A68FX629vZs5mTNLLCBQOpnqq8hgypiPrZGGrIo8I3w+2tSB0owJW0t0q3bVzr2Qpli30ErgoSWAmV4P/+X/82/u2vf53A1afx5BefwMrwELb6Lf9WpnXjERgHil+oAEMUZ/OkGqIrTkgHWB3j2EOO2LkBoybTD7KaDK9TH1QJutaRwQ61u059sII+Yu6ssSWPFLLrKX1UwVmhlHWNK5sm3OHmZ5rUNsBuvwnHcN0vll2T46QzCK48e6t0iL1VRZ7p6D8vUNbdAVe8HfRvJfKVqsaWBa5UVSNsDQ+FtekZESpDNcT77msn964fbgXrRnpZ05KkYegl7/RhWJigsXocoOqUdxTLFJT4pobnwxAEVkMEpkZJ1ScGTJMmhcW3/9AHpnoDT8H6dQuSjtmmY/mzIbuFPWxPLYee/ee+T8U4es4YOfn5Rr0lQZVFSUADT0JNcfbsLubnhXPMIS9/WExVkzT3X6/lkc4wDJcHMffwJ+RisbZ0jYDALVLzC7spz7FnJ8nligSm7sfYxEkCbQ0s3HgdK0uXZZjYiyfUgjOkEpzIlghcWcwTt43VU23bKWjKdgLKU9rOQElMiXjccyAq46W56wdLqgZt9kqqEW31IfOpzx564iGcOncKz3/nJbwnVIJyYmLS/UKOQESbNwhMNAhADQbsrbQjbwjslaoZFGgx3ysKNSJ32SEZTvUq9A1KY/ZaZUeCq1/7b36LyryOv/gLn8apU9O4PT5GKkUPDLj25u4P3+Cw7cYCqjlf3DxrYYxVcM7YwBzbxiBBxBya3gDjTv4c2mIvWD7D/kWgdIX1YYcXcJmPY8EcxGY76wKsIKBTIRbzUVdKDJulcn1V2WPMazP3vQRwBVxlurS3ask/v72Vu7o6/q1CnYdy+0gcJkkGx32Co9sRf8Ku2KS66f6tlJVOR8LoHozEAbFeiYBe0x0u/3T3AOUoKsISXHMkYflaFmH5eb8LA9MYOfkEioPTcrCs33wRG7deisz08CApToJ5He4swG6B7bEcy70TsftvcGMSi/6z/5yFisWpFgRTVZSg6bptV8X965AtzaaB9fUcxkat304UYVO1QGzLFVoki0WGHC2UmysLWLlz1QZTMlf4dDIhNSHlGS1YE9NnMTl9Tsa+s/A2lpeuELBqBp62O7VdrBGDIMFVpoRUq+2CK8dwXTj5NLnj28rZFQhphyUdgUpmynDBlMteOS4anM+UArCkStBbUIVX9s/+CKnknn4Cv/+vvoT1lXW7eYy4moL0cUUcFNXDQIENuPZWC6QSXGy/g5OphzFkWH75BLga2M/KHYK1XDvg3ypNoKqP/hr1A9QPdvGdL7+C73zpFclaffyHHoNxbh7LQ4OWMXsMscN9V/xASshcahcPpldxjm0Is28PpEjXCxLNQHMo5bBLTp0Fes1SZ2fT8nOCgNUEAbJz5k0xmGjM9OONxjiuN8rYoD7yM08eFWADN9+bgWtw4thWMW5XhclNBJxZ7JFIF240nsTeKiUdhAb9W8XYWwlwZar2Viow4q69laGcJ+jCUfuwZkgwZ4BFgocoRHHUICeYn1Olw69+vQBDSxLYVPVSxc4g6bBARcX/SeskYpYnL2Di/Kfl763FNySYsozQjwKE3AsQ2ruEDgv3re1YjuXei9j9N7Y7hEX/2X/2zif9fTpcBFv1ZqNuLUrq+qMMcLH77/LlYVy6uKulbTXbxHJlpZpMrOVrBKb4Lf8uXodzj66HAFKCnRJOP9dWb2KRAFW9VlFSB3n7Bi1eNw62sGTs4mxpFAMEY8Tbvuq7ymKcTMvtgnStYJ8jaFo7/hzVl2E6ZwfCct1ggyqhQkynrcObLZ9OKdcFg7v6Uzbl/jJ+5m/8BN5943288O0Xsbe9b6u3xG60PH3PyIOaDZ7V7K2utV/EkLmk2VvlSB2YIbVkI2tKY3bvxdNqfy5Xor4mcHawjXq9ItWBz36FwNUvfIZUgk9ibWAAq4MDivoOmiE7fDZOrgqO/nkwsyb/5o0d67qpv0SKmrz29k1883vv4WCviiKpend3Gzg1M4xSoYgmMXLC9mxicgTF4XFi0Yhhk+46mt6Ny9UxXzrAfOMm6vttvFcdwKv1KahHIMXNoJ4xPqzDlBmD6gSU4LRnHugAFRYCrgL2Vr4VU9pFVW17q7TP3qouWa2Ua2+lJZTnCQpgJg5rNlI+GCDsqQQrJVgtkS90laUoF669VRTN3A0o6W4l7yTe6Ikvr3eJT592KhEezR3OiGpy93guyVthUun+NjT219Gkt8h0vk+68hd0qQWq4tmtoNxbABXPVnUq26dXd1KJh1c6fDsGVcfyJ0F4okcoS2zVSr0K4QihxD1mK3zu0a80CVR9ySwjnWMJ5ioe+N0/MI5ZAlPic3dnFVcW3qLPNV+seF65TgvUW3vLGCV14FyhH/mW8Jhu2wk5O/okS2X5sTIURkvuFjQtGyzD5N4xN0KNmDY8Bitt2V+l0zY4S9kqQXVB5MLe6rz8e/47L+LFb73sAhhhIm+gKBfxpgBXLI9+ltPsraZTFzFpnCP1RkayVvlaCtmGIVkrAbBg3xuJiwyhEhxBvjiIamUTa8tb+LX/+l8RwPpj/K3/8udw/8V53CXWaqNc9tSA8GY2F1DZtlLjRgWfyd3EfGrXjegwnUK++d13cPPyEraWN/HQyVH87KNzGCyRKkss/jJDLsGESJViu5RsB6jegLk4Scj7NDB0hlbDGeeOURq6x7kVYkq38XB6E2ewiZX+PhmqGm5rLhNsYXZ5jtNPdeCxqF10NriS4MnvKkGztwqCmGj/VpRK+rdKS/CkM17MBl9V+siEhDusVktqcwQ481XYAlcSNKa061buH/wa88GBsnhJxy/QnRinTot7fLg+ycXl1+316BLrBKpuPv9PMHzycQzOPIDyxFls3XoZm7de6ZCyu27uLv5RAzQvP+uNyXJSaH227TeNYzmW759w3w6wOMmlCtJW6Q2fE9AkmoedFsMbRpHUUlYyj+FWl++QMoltOXPuSQwMjqNW28fld5/F5sYioqXzE79O6kDxN1sYwGxuAOmWZUNjeVl3dgJaBzBb7hg8uypuWKyWaasGpZpQLMSSMPCYK+4c3swNzyZLHndj2K22FvsnP/44Lj14gVirl4i9uuyBKwJMgrsSXtkbTLe3WifV2Br9+e2titU0MqRmrRYslaCjFhK9IepSKo8hU99HlZgrAa7+7t/8n0kd+CH82C9+Fn1n5yS4qhON6IAkx0BciPj+RGZZAiq9uy1Q8Dt/+BKwW8cn7j+Bpz81QpeFh3AutXEyD1ctCAtUORSSSE9qPyNNAKp6FcgvAH2DdF2cmjFHf9Q+Aq7ypOyyiT6zgr6xdfwnvzCPa2/1w6wr/CYPGwtwmSlVDagEh4pkpiQ4NRRwZbWBSxsv1pO9Vdu2tzIi/Vs1pcpPgCuu2mNRvi1iGy0MZvpssewXdVnVFOKlV5UgD/l92LWyeyqoG0n1DU3/fYB1gD69hMWFd8KCyRgjFhbGOqcT16vbS9hbuyYN8wS46p88J/XRjcpGgvRx4ayLuPcijR6HiUnFbFlvQjQTiDb2fejjKJw4i2M5lnsmbVpgST1W27qNA1J/1SbySPePwMhahufGq1/GJx+4H+PjE3KBqG9v4QaBjIZtmK6KQRP2fmMTQwbD47mMqzZkFkoi0FPF0t0G9vcyuP+BFvr7B2ScF16o4c54Aa+SqqlYss/Re/9N8Pfeiqx2mtR78ycfxrmLHyFVXxZ3br+L61deQKWyFdvcbqb5XWLGVwlcCQNpYfwN01LzmdwzzDZNz85Fkiz2p2RuTE9tBi0+txc67qaDkqfsN3v3pOhBcZ7g6XOncPr8SSxcW0Sj1rTMkaRSh9gNloXkteliTpwlKA7/pXzEWYIr5jUMGzPEWlm7wlIErnKNlPRz1Sb1pMmUtZsJ56o55AsD9g67Jhau3MGXf+tZFEit+8lTY0hTHavpNFq22tIxZP9s7hY+ng2C2e2tCp5/5j08dfokHrkwgWIf1VnghTSTriYCoMMZLKrIQgypeqOEpB8W/sTW6fsd6tA11F5ax52VLVofspLhB7Ge81Nl/Min7yNmbA/7FdcDFmkMmQRXAvZs8YosLi3YJduWyz2mhv5v8RpaxAHWhEqcxREaEcG87fJBoR7Qua2e89ljcVutJ9MZIe4b5BphnbUpWTGnbf1jEkxVN++Ee123VbYsEjMmAzDJ0rHIsGTPYOe6sEPGsEFVXMROjFSvCz+LhUqdr0WEadWNB2MCYBxs3MTeyhUUR06gf/oiSvR5sHXHMvgD0Fv7wuBep34MT3EoYMVt6ljq0A9oXqCHjfTo5ccIVJ26gGP58ytiTi0PMZT6DfQPGcgVGDJZa9Jvt3B4sUFVZXsBe+ktpAdGNVCVevVL+OSDD2B8zAJVI5U6fjDVRD8/wB1kacHxJn0RXmtVaOFt43MlK71cOK1vqFYrtGCvY25uH6VSHgMDQy6oenZ2GNvDeRTyTIIqrK/CfOW5QHUFmJqZvYRzFz5G7NQYlu9cJnbqO7R435XsUGeJ2jkYPom36ZncblaxSX8DmSK1jVlv/bDYGWYzA1YO3M3GAVeCtXAMjaxz8Zww9Ts8myTunHEnu0wyV85sVCwV8fCTD6J/sIz1lQ0JroSIOAa3mKuWrAuNE1ZAhlSDJmthyXwPVb6HErFZLrhq0zhqWTRRO6XMd/bXNKmRssQCirYJ799ih+B3vvwSxggMPTw1iDaBqkou6wKqxzN3A323vUG85d09XDw1ikJRMFOt+JdpAo+8vywPqEazoddJzIkE5tGgzxqFNajtgoZqriM9uIUr7y7jS1+9hgtnBiG5NIo70JfDp58ewde/vYm9fYv110FVVXqkynB3r5/FajHraKUmqxHcskGVW+WIsWOjyyB44hJcWWAmxK6JWyyoxcoZIeCqGW4E76j1eNsFUHkBqgj817bvSsBmAa7gWtX50OVoSQaootdP1jHtYerSXd4uU9V7MYdjqw4LrAK5MMQ/YPCrHK0dE3t330WTaP7C8CyG5h+VzkAblc2ERuzJmLXO4YcElKpw6+EQD4HUm4vvzYr87H/iUwSqLuJY/nzKyISBqfkUyoOGfMMXgEp89g0wDIxYIEvMq/XaISYnG1QN3WzhzNI8NubbAabqUwSqJsYmJVFwZ3FZqj1OZ2hxNarI07LzXjslWSohTVJHbdE4/qm+vPytLgYHBKrWNqpYWcljciKjMVXPXBhHZoDUUxnbpmrhRgBUCXupiw98CiOjs8R2beDtN7+BjbUFWni6UZN3fgUKkyaBi+X6HoGTFrFWGUh+QAFFsO2uuMpC2YuLqkENHFRsq7lUcAXugTNJmjB9aRydGCHm6iSyhRyWbt314gmLKwGaSOcoXEJmibXKMOHxKkP13sVK+xpdJ4bQGLeScAtYZZuG9MguHMqrtJVYfHP5Ev2V0WrWsLe7j1eefRuvf/sNfPL+eczTnDU7UMHThRB1KwG+wkYFhaGMoMf0TXe5IjiBd+kUVbAuNA7optLbQ5lUfTTu8nmw/X0XqLgdJlg+Aa7q9FclYLVfAyoErqotzFAWu1v7+O2vvIePP0pqwbawSzVR7kvj/H1F/N6X1yxNYk0FVQeW3zFuOU11AJXdelky8ao6qAIQy1q5TJefJXIM3REBrkwLCCEIvjgBK3mgsg90WYEWKBNgKj8w4YIqK6gtDdj10e6wVd08Af6VOIkw+IGNyl31CuqcHJJYXnbKQ2OqonfAxLNYrEN4pzxZTFhUjNjwDqAqqmQBonbvvC2/lyfPyp2CwsivtrMckVP01e6vx9W1+7w8hsoCVKYAVOJBod/9T3wahdOXcCz/f/beA1CW7DwL/KpzuN035/hymBcnaUZZSLKCk2w5ywmwMQYEOCAva4LlNeyuAIPXXhaDScZgG4NlSyA5yJJmNEkzb+a9N/PifenmnDrnrv3POVVdoSv2vSMZ+/0z/bpv1UlVdeqc73z/f/7/z5cwdmr8UBDpvgAkB99QzK6HAax9gSsFVHXNl9G/l8baobIBVEmv/QGBKlL/MVBF3fjGtXuo0wKG2QWlSQ30SFjG08ECsjTwLzZDfJDP1vJ4OhZBXzDYIqLZIF4qFnD1KnD9+gAuXKigO93DJ9bPzgVwdaYHKUX1x0ReuE+g6qv8NwNTx068BZPTZ1CtFHD71otYWrhGTF3VcCneB2rZcVRzkmKjRqCxDDbNpYJRPtG31HgwgyQVHAmwpTmp1J9XqS0oTJZeNQglv1DZSAFtUmUqwfGpUZw6d4LuSZWIvW0xWTJoRSoyFvKGQU0WTDomJbgDUQZ8c/ImVpuz3Ig9KQlfYQxcMWAlVIJUpanPsZ2K0Via+luYs1Z7O3v4g999Fl2hGn74fV0IBU39jtRvmdvLiA3G0Xqg6r1m7a+HGP0KJLuoA6fpYiIw2CVxVoqAguKXzDA3sfvCbKgYaGKsFf/U+WeGANwOsWPPX13ExdPjLTXs+AiBz7Uqbt8ttoEqZiAfkptoGbLLaM2TTQKglqCqdTlO4EppsS24CtiqBGUO8ky7DPnmpboSCqe997J5JN4zyuNhqqBKTaGpEOVWHiv3EJbXYSjJq1gDHsnw3Tkgcl8WeSlbMrtUcHiYsKEnHUXuoMz9pvUmTnh0b+Ey8ht30D11Ad3T55EcPoLM/BXk1+9a5HNum/7VlT2k9ye6Zaf+qLLLRW5UxMtGQAoKoGo2asoAq4ysTrPrQ/kzJYyhineZB2Pr90B4KQeGJwPoo3xL9+swYY19idHOB3j18jDSqRUcPpxBX08/zYsp9McT+LF4Dd+JLH69FMQfl4Wx+tFICOpc1dZuiK7NFBGLk2xiBv/wc3zSkzhLMjlFLNnIYe5jau7+Zaws37JcHPp5U/ergqgSgFwuZbBJAG88nsZIKCkMzxWXCmJXX7DlGJSHwmnQsRB30w6JBWVWnYWq4XGCIkCz8MKu7BxUgzgzr+xB4bqhBayUZqe6u/AXvund3Hno8194EdlMHup4weMJSiyeYIXaEkecfjP1Xw0lLDbewGZjHkdCT2ghb6oBsUsw1uQxBZuKtwe1DzDGKkbXWyxso1DcQiO/jmhYBT6azL8+h+mZPr5LErIewCqdmGkguXf5AFp+qpg9U64AZHYJuRYgkapT7uvj7gB4R2EAq1qFVChyBspgzK4Dpt/0+AQ+9ekrBns2dr8+9p0j+MwfbBjaqkbE0O8MlHTOS7V5wEbUem1UgrJiC2atunP3b8VVukG9I1axS5DZF3P/VKY89XIGwYhx9x9XLRLQUsG51i43Mc6G/mQ/efViVYZs+vaaD23l6PdfQj4gdsVcycGACLdynICfV2Cn/V0nVeD27HPILFzB8LkPou/429A1fgpbN77E1YR+RI+k5Q7a6tsZKFf7CaNDFvuJq/5YDEMW5ZwGbubgrbqxxNWe4b4RBGMJh9XRQ/mzIAxM9QyYdu5Aw9ayXi2kfKsEAANXE4dD2FxpoJDd74CmVN+aONCagm7fnsTm5jpOnryHgYFBDq5SqTT6olH8ZLKJp0NdLSegEPOKzVshBvi7g0lEwjqoRD96iJ06dPFDfNJdnHsDKyu3OLBScqnJ2sQ8SrSf3+990Qb1Kr23D4g13w2XcCjRh1gdwgVDU1Z2BDKnj00BkIIixA13xxAI8vc+KIeE/yruuyrAQZgKomQ1pmAz0AJYzKEoC+7MXDSouwRV4+pDx6fpM4Xbb9zBK195jYMrsYstyJ2Hsq3+DRb0hVgsBqLY0QqBqzfqf4Readzg3ypWZuBKEuAqIreuWa0rkeznzNV3f+yCAYTw37U65hY3MH10EGqPaRu9+6eEU0++g46ptUJ8zJPijB0lFeDoEFo+H7h9aUOAK7ZrkthRKZOhY5KGzHVzKLsrP/rNF3D11hLOn5xogcLjx7owNhJDdq+q6wssY7P1WFVbKv5tgO66l86ySziAK85MwZqZcoknKFww1BQ3CoHWZTJTF/7am5yGNpg39Wp7gHE2r+iZKUlts4+5xP+sI3d4Tn9edmjNfsoXolP/AdI+wFNneQ8SxEk2f7o9Nsnxb25vtXwD9Qqztxon5uoCQtEu1Aq7OmN293Lc6/WSz/0cZ6nYC6ewVMIPic6uio53nXsruhppWsFl0YxICCbSfKX6UP7syshEUBiiK8IH0Yb4oRCbigG09ltVNfAplGlWesQAXCp4GFxUQ/XMHPKhPVSHEib13+fxF86dw9DQiDA6bxILLGURDi8ScbCDO3dnsEcTeDyWF57FKc10JIJzkZBuBxv4AF6plLCxWUImE8Ejj9TR3d2NFVIZ/qtcEumuAEIMfDXqaG6tIJ0voX71Eqn6XuAuEsxG6J0N8u6KA/cyjKw2kzJNfmuVLKLDY0gwD9m1mqbeU3O11HrQ2WHpy1R2C7bAs9zKY9hZCDHxq/dUv1uObyQY6ucAq1auYZNUglLrP8ZcRcBcQNS5vVWMAFa4ZW+13VzkMe9SgX5RFrO3qglwVSNgJQe0uYOzlgQMf+bvnkM0GoTmp4q+602+Qa8nndChfrTuGyJJSF3MnX5T+ciigzPGiqkKIxHtdkuS5b3nRurq/dGnUX7H4xGsF2oYGexutZfJ7N0CHlwrttR/eyjyXdchBVgZfFlJmvqv0qb+c+hB+7K3MgMvlW1rcNVtazctz9IQcQR16aPJXqZkRq2YbWttQFEBti6vzRVE24UADosX+3zW0vk7Z1VOp3O2KqLdHjyquxWm3iQ3JsmP2JUlwRPLI3kpS/943dMX1u/xT5rUgempc4gPTBLYuklqwavwcw3ubBVs2+rMJirlydoLI6uuFBjAAluhVMQARYP10FKcGCsJS907BKpSCHUPHtzjeyh/qoQxTXq1H/ey0dRAVAtM6UQdG7kqLaD9zVSBTLbXveyII2AQrqCYKiCGfsNx/W401rLRkXEkE1kCUg2sb0QxN9eFjfU+bG/v4tSpZTqf4rv6EokE5QkLj+E6cDE9U8DkNAEwidUj4U8KEU5axMIiWe3e64iv3sHa61dRu3UFVmrvzrq/eKPd8+pVF9bjAkxnEt0DGJg+jjB9Z4ipwYPb6K7SREhsXUAJWcOchDKbqaDi8DOg+qdS1H0MNHLP65zBCirH1XPC6ShTIQa5ChHiGI9BKFSNLWeeYCrBFP7CN78TT7zjUXzlj1/C3Ox8q5MwdSBzw9CQ67w9qUCSwFUUFbmADQLMa807bf6t0tkQZ6zKsQYHPuqdYY5a+b2QdN/0//TEQAsQilNKDvZHpSJsogIaGBQ+NNAa5OVSiVgrYtf29rjtlNSTVl4G4b9PUllQyfScVJBFX+dPTZrmDbkNzHCfYRoFi1ZMSVlcC2P4JNs+Yu4FrUJ1bbM6rTpfldpAI1MJWnplV9WBCmOlCmOs2px9cpazYXTFIDvNYrLNMcnmL/9iuusuqb0ANbc2ewN7IS2r5GNgMB8ToidkZdd8dsetoY5zOZ0l8yei0CyBKAGuzvFPYvgwHXuDH7PLYxZnYLXfxmtUg+rkUxitq84/6TscRS0awOBiD9YyG6gEFgh4NRDqGTDo2h/Knw2JxHT9SVbGZzYGNxQXSQ2NmWoBHdaNJAGomHcDSQeuGLBiXWt3yx1YDeUGMbZ8HDemjOoDwUIof0hsY1acq2ti0RjiBJxSqfukDkxjeWWIGKgwLly8SSrBIfT1DhBb0U1MRoyAQEjNjmIxiA0CY32CRMAXClFEI8qYRirwZmYTm2/7bkQWlm3bahy97N9BbYEDdPauOg/OYVLHjx6/QKBKANFiZhurs68RS1RChCa1mWQfBuWEmLwJnHCbKcWBaFD1xq6EtWk2WNgaJWZgg4W0EQ5EBUPZbHlyF57ZFXDG1IIMVDGwFBQsh9xiwhljmcKHv+N9uMVUgs++hly20LoXzJA9KKVRlavUbdJIgO0ULLXsrbLNLQ6uNHsriT4hrhKsxER/KhfqiEdN4xDzDl+TWn60eMdlIEFdFYToszxHnZNUfImg9qSYu4RiHsjsEVtJ/YBAVUANEMnuA+uEpPKTMkUNhLUekQ4wsTrCwnGmAVBRg/ZYXp2ILV9Nw99mTO1sfuTQ/zzYW0kItAM9tsAOGL2fS0p5PJxNKKZL2zABKPXZM4tEnVNRbqFoEsmNgLH7y78c1DQvGR5O+1nvrRESMh50YUE80GN6rO0N15nTy6Y6rdoCHBRqsrZXcgaBjXIeu7dfIJbqdQyeex96TzyF+PAh7M6+SOcKHstyEus8anwxZ7YKulvYbA06sk7XExk5hJ1RUo2slxDcyqAcKPBBqlktE7AaRDCWfBNA6UP5eglzmaCKOlfwTT8KoBL2ubKRrVKZqoDYuq+Or9zGmP4ZGAuQmk52tbGK1Ajc1JnKrx1UMdEcedIKnkBSKMmMluOktksTgMpgbX0BW1tZZLK7uHnzCCYmcjh+fI+Dq3QqzcEVK2luLonZ2324cC6L5XoAL5fDGEiLbtzMZ9BQJo1gTz+abeoJhRExjFhO44x5Iekmcls+vag1sB1WvWOH0D9+GAGawIu7W9hamOWgShUWT3A2t4GdaBcmY8TcMU/sMhTbKFnYWKle1RWAJcvCAzuzw2KJ2TkR1kQJj9MyYhc2VxyMKQbxIvRNSGEqlQ3nyrM7cfYY/7z63GVcffk6kUXVFrvEAjVDilAfC3J1IANRjMkqksqL2VsNBmZ4yJt2eytSn61X0NsXM94khugZwFOBUEBdHQgjfd6JYxVI+SW6SV0EgGhqq5a4DSmnLIcGODALtFgoZZXA2K0yA0W1dkDA/lbrYxKPtSYqNXzO/MoO5ua32EnD05bUB2sayvU+x5zFZZ5zsF2SFZ9ibWFnmoIRlFre9VVg1c5CCXcKRtWeHgkKmG30SyU5qv28Sid598NSeZmf/bWpBaoOag7VdVmPol2UXyBmrrNz8c8YsbMMXK29/HtIEluVmj6LkSe+BcX1B8guvGECV+1lddJmyRVw6utTfqkzJWepBItV21kDTr8Fd95ZQGkuj5G5fqRoAFydXkOV2s2AVSjVByn0kLX6syBhnTmJCqhUlV+Th4OUW6xVbXmdr74jE0MCVAVVZ5PKajukAauRySDm73S2K1DztwRDV+YTfTBC81+Is1fJZAJ9fRFSCUq4f68L196IEIAq44kn1jA+ViRg1d0yNOflEqX2SllccDwidhY2t5ZRHSGgsnIXofQAahbtsR+B7Cc3b2Omt2VmP6n5+kYPcWDVbNSxQirK7MaibfqtSoE+eYzHezES6UK8GRJMAgNHAUmLJcgN1dUQOEEibuSW4bq6U5D/bgoA1STGJ8DVgUoMQSXwM/tm+aWgmEr1V/LY2y/iOAdXV3Dz9TsCfMnimkOBBLPGIexSRUIaQIRgVYSUwZnmOn02MBo8bgx5U5SwuVjEoVOa3ZLqwBRsPGLG5RyF6ygf1om5gbniSbyWZQEX+TmpqxsyA0N6ipbKkEmtzNwmSAN9QJoAUa0M0ZF1wEClbTkTFuJ+rtTZTd39d+XaAi4eG8OfXDN73FfYHcU4vfXd4vT8MiA+VYIMKFkCq7piiG5sgR5EiaINfByMNltqvSYjeB87yf3jDbnD/LLHduwPQeglZK7efbL3wmjtV/TQTHI471CX4fRBtUsrS88YFdbv8w8DVmn6RHqGOLjKkVrQKq/6y3zMLq1ZxNU73BvVyNTG2251c0ns+BsYRyDeheCVHfQ/SCKVjWFlIovdqQU0ijmEe4m1iqcP7tY9lK+LBI2b/vinqYKrpgBUua9exerP/iKaK5sIB8KIjY0h+cQFdP34dyA02Q85pOtvIaEpYWPw2HQQS/cb8B1OUmdT1SpXD65oAo8GYohEIgSsmD1VDwb6lnHnbhD37g3ixRf6ceHR68RY9SGZSIEFhRVFCHuqRFQSqku6yMDaA4TOEmCZv45gqscwub15ot4v52VmoruPq/qYyq9J4HCbmKmdlfv0u+5Qrva9XNpVwFU3hqUUgaN6S3Wnxg9kmCMYVOID8h1/bD4UMQQZUGr5w1J3DxKg5f0iJEAV30kY0nYNcsZIccGgTr7pni68+xvfjsffcQG//5//ALlMrnWexxOUQtxAm0pEkvm3Uuytlhs3sESfI8EnWs5Dz/dH8dobWTx6Ni3KVydzFveR1S8CHgpgpfqWYixcTQFCDY1dkotF7lEdpDptkgoQ5TIHngF2jLFd2zvgywQlfIsWyC+g3Wt2j/p6dQBF9J+5JWKoSjlqY3topXR3GBdP9uP0I33Eribp04VUOsy/Rd+v0TtY46pD/skVMbe8g2deus1/f/nF27DuT1ZdQvYJrJotA3OtdLvFhHinBJtsnEvMoW7E+f2yRnbSKXXiJd9+xwLZUF/I6bT1mU5nWG/ARgMMXlJa5ZOsTsMdpFiJM+Ax52MgioGp1NQZdE09ggSpBHNzdGzjAayQtvtV+m8z69jc6JLt+AjQ4KhaGLNBUBYrzPXf/RWM/8D/ToApSYNrENnHw7g5sYPDL0cwc68X+cA9VAYKaNKAwQzYQ+leBCKJh+Dqf1Fp6NV6svZR2arCX/1FxK8u4WRwDGV61pVGGeV1mow+/wqke5sI/tR3o/HEMWVlrHUCNqYy1WL/UACbq9b2VVupTZSG2cRlMlRXS5Iko9GxXiThcDIRCyJCdFsyQSrr7j2MjW/RXLiBfCHH2ZYELQySSRbzT2zIeJmYqkSXmBabtDiI7m1g8PO/jPWZRxHoGhFFt9gWhXlQq2z9axwovQ3Mkum3fZ54dz8Gpo8ike7nSXeW73NAZQ+m7KVCKq77hS0CWHs4kRpGmib5JreLYc+oqfi1UlR8CkgKcHCk2lEJwMTcKgTVdMzPlSxAl8jf5MbsPJizLFwwBEPCkaRwOira0pXuwg/89e/Ezat3cOn5KwSu8sqcr4S8Yf6tUCGlHT03tlOQ1GbM3upu4yV0N0e5vVUsJCGY28bqZhyjg4rfJIbi2TbOMAMwTbRQfMvXlGoYCIWNbSqEVh3NzS2++5MxeCDVcmuHHxfFuLBlOwVjN2SAqqcbUjjU8lHFhdL85Cf/M/77//UBvHZJcJ8XnurFWz8wgDNv6cYjj/Tw9JKsA8G6XZdQl+QTCiBinZXu79/+Gx9u1f/l52/i9z/3Kn7v869hbnELrqyVDbCCycZKxAZ0C4BsfhcDBnWg2VlogNvi7hecOIlseUTy9F46Sadgza402exSQUOlXrLbHZd8pbc+7/QXHGuQHJL5a4NzHuvjMlHI5e0lVLaXERua5LZWke4hVLObdK7us26n4zbnOV2tUOSysvODGxjKmpf1apkefDdSjzwtnL3RR07GsDVdQ17ewK5Mbc/K6M4kUQhnIVerfAUnhSIPXS/8LyjMO7pqVyXrwBRT++Ff/A9Ev3SLJhyxvgoRSxUNxpAIJxHvSqK/P43RxW1EEwlkx/uVQUJq7bpnmD2WlFDKy6jr9WqKS4XS7iIqUh6Bnj6DS4X6y/8D73/0AkZGRvl8mctUDPOCtvNL/GbMVYQm1AQ3Yo8i1RVVdg6SyogQVKqbVEaH8rge6MPnMIL+dIAzdI31RU5glKPEyM6cpoqbqHzlT0TZpvskWfyyTmG92NEvs+xKCJNKc+jwaQwdOYUIsVPMXmpt9nXsrc1zIAB4VwyZhcUTXK/kUCQGJE7vdECdwGUNNoo5XpgCqHO8+FvnqkHWeW2Xtb9bmKWppePXqtulp/7uH+rDybNHuT3W6uKauC6l0wRpLc/X8wSYQ6QMZD6umFKxjByPJ/izP/h+DA9t4ZU7PejrJ9Y0HlAAVVC4RmD2cczxZDggPLuyB60EpRb6bOMzMOzy52yU3R00zR1Ul9zbI1R/prw/8cnfwj/82DvRw7SHoxP4Wz9/Bt/6/RM4c7EXg4MxbrvFdRn63Rj0/+pGFlu7Zaxvl5EtMO4uxP2VRLroehJ0bSwME6m8EU9g5sQ4Pvihi/jbP/YN+Mg3XEClVMWV64vtbTVcgmR5WWa2KiCZjNnZOxbQOBY+LyggirlUCMW6UMnvQDXqFjsG1ecetNSItIvzu+FVJNP3QZR1UMLKM4Aq/SlvnJKf4wd9rv1Y2yOTvJalHpc912UB4QznmIPNwvIst62KkZqNMVfMALxeyBC4qlnk9X9vJIdWcOq9IXb88debeVLnXobFii5/k1aGT7wf4f5R4ZeEBimJ7Qrsj0OKxNC7HMDM0jCSWzKy8SwtBAvCkR5jvNgLJx10d3wob5YwdwrxhBFU8Zipy6QO+fu/2Q4u+LNlRsESYsQOjZ6cAm7PoVgooXZ4HJIOVEH5Zj6wsru6FZ8u9t+JhSPYmKkaQFXj5c8QqLqI0dFRXl4+W6E2aWE9JMkIrKBM2GySjnJwxdipLr79nw3oTIszN5fGF0fGsRLuQm9S4sixevsy8seeQi2aRHJgmBiLBspf/Lx2ra1vYXrbzj+bxZot0A/0ViNJgNrdN3EYI8fPIZbuQbmQxdqtK8RO3UWtUtTllk1smWRRt7MUG1Xu30qm+5VmAKRpDrSsrPFlba2v+quCjkxhNashblrgSwVUKmujlmd6XgxUsN2ZY1MjOHHmKKoVUm1u7rQuk03EAa5HZmrBIPdvxXxbsc/f+ZF3UofKYCI5iEsLdCQWRrpXEvH7AsxejhmMM8PwuKgsqGzCaSqqQBmGp6jhKd1RSbJ4copEaJHZnSaA06Vsf9WS7GVL+NjH/1/87W99J05cPMxCDmBsppuapoEUtaRnX7iFZ567gd/77Ffx3DNv4NWXZrGxsIXSdhaV3RyqxOJlNovI7Tawm+shhm6EFuBnCMT1UiEp+nTTtaV4uJ2RyV585Bsv4oe/7S3I7BVw5YYDuJKs5gOjk06+C1CXjjNPOnUe866uPk8WUDmaGkRpb1nkDUY0/1QtBss722M9c3h555zy+y3TTzneRC0vZN8Yv1U6r+Lsz7UPYu1HnNVwtvnastlfk38rC61w6/aKM6WNOZR3lpEYO8aBVZjUacWVOygu34E38QJvjTsCWSfnevOQoMqb3HuuMLKUJVILBJpokOrk7j/4bhz9+d9G4sh5DqqYLQV7udiOqmx3DguzeQzfjeHMpSTuHFpCdiSLRn6PT47BVL/iiR0P5U+5VEtGtUXr69nr2lsrayorPWDeW9rC3a/SREVqmPJv30Gd+Qo6f1g47JQEC8CyMeDGYgVmd41qQLb7L9S08uqsTMSApv5rgTQNABrmB+VFC/LQKkGEw6Q8oj64ubWOleUw7sz24trFHiRjCjRidjTEHNeTaaTWZhGIzRALkISVtHwJdWR6oN07cwr23TM+jb7Jo3xHH2OrN+/dxO7KHJxFNv2WYBxj3WWptIOdRgWnJ84gns+iVqtqYWwU43P+3VDC34QUH1dM7RcQrheEzZW2S7CVJ6iEuwkJg3fGPrFm8eOmcZe5YHjPN74dJ4i5+tLnnucqQRU+SjKBJprgmX8rFqQ5jAR2S3X00NDCfNW+a1LG3d01LAVOYXxa5uMTUToQUxcrhY1xxPJECsJ9AovXx4MeS1CN2bXm6DpUq3MpZxkGp3GPBj+xc1BNo7uW51+5h1/4xc/gX/3jb8X0iVMtwNXy+k7fe9kifv+zr2CX3pvzh4fx/U8cAR6fEW5JlDaIauVWWJwAMbkI3gSyd4GFy8DoCbpEFvB+GEJNt0tfy9R3tzBzWsK//+UfxT/8m9+E93zPP8Pc8ja8DsLGqdDokV5vYyVUexoIC8e7qT8oNouBcIvR4gyVZ82FE0vlHVB5P+cs0oGVr4fu4nfIrWLvzTZ0XYcSrfIZ83vL51SeZHNadsjnJN5And15xkwVFm6gvD6P5PRpdB0+j/jYUTp2k47NtVaB1m3zBnDbgZXS8eWIYrTK0jT4bzb4NOUKKusLuP5jT2HsB34W4z/09/iLFiD1BGMTJAJkuXMJ7IwuI7VQQq66idhiHAP1NLYObaLWRxNWqgehVK/YTfIQXP2plZpud56k/sPmkdlVVcMjztGxbDXLt8DHQonWZJFd2EY9HyBVcAXVf/bv0fvLfxdSb0IAK8UchY3JzH+VGVTZSUu9JEkmMkZMdmKO0gCeaLKWlh1mrFVXVwpVtnMLWez2RrERiGEqqsCjzBYq/VOQSN0dk2S+s85qbFIN170Hg9KDKPsc8e4+DBw5SarTFN/RtzN/l4OpJmeqrQCSbFGqbJHOmwxPnCYW5TxNyBFiieYQo7oTjbCwt2IAiBZXTQK8waCsGLTrbKiCGujioCqguFvgoW9kAsr0HWBBg0N8AcdUyRxgKWkCAWO4G9ZXGGv1sb/6Udx+4y4uPXcV+Vwe6pNlXtmJKkedJuoSZWXbCbidEeU7OrqBXPAcmtlRBFmsZol1aAasWF9jrjqYqwD6MLzMOmK5BrlSFbZWrR0ZCpMlKWCKh6eRuAsK7n9KBQcGeytx31++PI9/+qt/jBMj/fit//dvoHssBeNiXiIwRezRqw/QQ/fqB95xga6XuZcg5jUgG8tVaUCVWVPPMVUmi2nJ2lIjACUTqycxw/2j9HsEROUSOqV+nqhxMDZzeAQPnvlH+Llf+iw++cufgz+RdP+KRXhr5x6bA0LadmH2m/mwkvmtjSiASqjjvYP8zsFP5+KGQrzMq24ISJuz9bZdoc6aZdcoIxqVPeXxInZ1tQ9BhtvgE0OJvJ0CKHdpVArIzr5CLNVdpE8/hdTxxxAh9Vv+/usW/q32W7fEgRV7B9jQoyN2W+ebKHM7q5X/9I+w/Uf/CWM/+LMY+MAP8gGGsVCBML1EpAos9+YgbUcQv1fB8FIavURX812CMzk0csRc9RBrlex+6Dj0T6lUykamSgVWjaaID8mk3Chjo7SKOql4E8Ek+olRjRBAqdPkxHNvyKimKyhns8j8+99D79/8Pr4RK6BsxmLhRpjrhmSawFfWHVipbIZqF6W1T3mDFe/QHGMFJMOgIuvysDRBRR29PpzgZjdxJc5rfWsZ/Tsr2C3uIjx9XOxkUwsxIjl4E9n0Wz/aaOeiyRQHU/FujgCQXV/GzsI91MsleBHJtQ3OKVI9w5g88jixh308gPrc7eextXaP5x2IdmEq1o+4LIzWWwxUUHO90FTiAgpjdSXmoOJaI9CKPyjYLZm7aBCG68ywvRVXMBhUVLPKc2wq87YMzlgxgHXp+auYvXYXOkM6AmkxbBTrGO0PCbaJPfughFQ/fUfZjrjT4EADrN9WlCtm32VxWwICMEmkMpN1oWnsxvXWE1RBj47Jeu3aMv7lf/wKqvkyfuL7juHpd70fUiRgcDfA2andIvbu7+LdJxmDy55xTSlUsfUyTESKV10Zhg2GqDWVa4K4buYiIkUsVCjDE9b3gnjtDzdx8r19SDPnpkFxb37u49/Ey/vkL/9P2IpkNOcxskvMlircSsc8qassVSvAMoGuaKKPAyr2W/LhOsHQDMuj/gGXxj92JiK/G2ACOhsX9s1UWXVUDehY53caFLRz7Xnt8nXOIFmV1elmay+PSJV6YRc7r/wBYsPTSEydRN8TH+AsVmHhFrdD6Ry8ma9LA1YtSw1lQlJfMw6saMRjrNWDT/0V5K4+i/Ef/PuIjEy3qQQLpBK8NrSGQ9dSfJdgo7yAvak8mtUiqQSLpBLsVVSCD43Z/zQJs59ihuRMRacCKu6/qYuYgUYVIVqBdkVSSIa6UK4XEUlHMXX2GOK9KVz7wiuoFcp88ggTWMpFK9j9zc8i+dH3ITA1RMBKEobAfJs+0DsgEajS6ma7//bGV+nXmKFNhresNadK7ce4l2sVgUHXvZWhVRbqlGRXk4OqhOpFnam6NhfRu3UPVQIzwTNPijkX+vxt1Zn4djfgJRt+MRuivqkjSI9N83GkuLeDXQJTpcyuIY+kyyvrRg79GGI/AtifSXT1YoLAFANVDQJTq/NXsb50Ew2d/yXmfiFLzN5QNIXpeB9nrWUlhI3qOkFWdvuJkFaqd3XFpCAYVNwy6B2Hip2BHJTJsiFoM/c7xnYJwjgmpLq78J4Pvw2Pv+08Xn3hdc5eqXegl/prNjKJ7oZCgTJ1HFfJqcCD/V6nD/OMPkofBp5Y+crYyfpMw+m+GZ+yKkVSO758ZYnA1AouvfYATxyP4ac/egEnpuh5DlIdYckIqEj2Vgn0bBVwaIJosmBRAWcKWlI3DanVkWpRJrCHBKUltlJaWze2gKkvmbPSGnthCShmCKAxz/KxEELROk6eqeNXf/EZfOd3n8DMgOKgmer4h3/9Q9wtwy/9+pdgJQG9PRWPA6h5Sg8yExHFaL0FqLg9XEyoAWn8jyb7qf6ksmj2Ozd5YXq8ne90VjSLpvj0M2tbl6S9z5q8CdSC7DHNQQIro7Tl85YN3h6y5L1exzwyB1KV7RXEx48gPnUKoe4BlInFKq3ct0yv1WJfv5iuzMCKGaErBubM0FMqiBeEvWBsNVorc8/DLOzA1h/+Bn3+E4Y/+nGMfPvHObhSVYKBcAzNeBfuj2WQuL1FqqIMpFVaVZbT2JxYRm0wj0ZXNwGsPp72wN6Ch7JvKRYEqGqxQ+xzYpRUZxUat+N8EmTH2O8QqYiC8QgWlhZQ7qZekauKsDUNxlLUaVFdQeb3/wTRv/a9YOZSgaa20OdG8UkJRUXlyGL/BQiItQ00TeGIVjN6V8BTiyhQ7VSM2QQo1AERSaRNHGpgiViY6bgAVc3CHkrdw7h18p3o37zHWddWfgfpZAXM1IrdY1P0meS/6+UiNu9cbwNTdvWZuS77Fb017ApRnaMz5zA0fpLuhYSN5VtYmXtdAVP68Ud8V+kZLpV2sVnJYTzRg1GpW2GjRDxFHsBaUfNxm6qArKgEhf+rgOLPSuLAKyhiEDKHog1hg9UMKnEJdQwYw0YMWpl3wzEXDO8mcDU6MYzXXnyd21tNp8J4draId15IctIHIZaWsSnMfkoFCMzFQJo+TBU3T59HSOU3iWx2jZhZYngaeQITzHVDne+KjEXErkDmuSmTrxOAqtE7UcPiSg5rWzncn9+BRAvaI8PAe48m8bfe+U5IcVodSAQmkmxnXqz9WeTK6ClXII3GFQ/vOmgeJfV5HxXGNgvldyHRGCqYMzWsTkA4Ey2XdcXKAgyyVRBjrkqKN/ggjzqNNJ3/a984ip/9F1/EJ37s7RhjwEoBb//8f/8onnn5Dq7cWjL0GvOGIn3oGRVQ8U0D4Sg/x1gr1oe5MbokmKlQJKmEsfG7M1Xr8/6nAtn26NfGjYJXHNMuIecM3k037fK/ueIONJzzWucT1+y1/cZ0fu8Xs7cqzt8igLVAwOokEkfOIkYgq7hwm7NHbvV5FmZUyAZFDqRCaNbpJQpGiWUqENsQQb3KQtVUhQ8TennX//uvYO/5z5BK8O+1VIKBaFzZJRhB+VwC0g6pBOf30LMUxfBaGhujOWzOrKHal+e+rYK0cn7olf1Ph+R2ZfQPi9+SEsMv9OQxbl/TUEMYKVIv1nD32WvIkLqvSAAhGKoiWhaWttFqAEWpjp3//GkM/Pj3CrZCllrucFiaZDeBKgVPTOxM8L7xBqmK9aJ6yTY7/zS7UmidN7BUaKWHMlFfQw/XiCSj4lLqG8soDx9FgFjUyOhMyz7ISdSlXDvMsZf00Bh6p48gTExuo1bjzBT72DTWskwjS+a24NR+h0IRDE6c5GCKqUBze+tYmX8d+b0NtI+N7eVWCFzdz29hN1LEocQgEjQdCB9VgokSwEjxWdVUAzIrqkAOmASSZvZXbKcoT9dQ/FnJihpRDrZC4HBjeMZ0BSTj86ffJ84dIbXgEc5asYOPDGzh6mofzh+PK6CCgaqI7hr0rMktsB2BEraRqLyBUO0QcoUGsuUcSqUEipUyCgReKsUGpclCJvVijZ5VMp7DUDOEc0P0blysIVaaIPBDIClM11TV3e8ezbmnqpJmbFLm7iq6p3vERejD2TAp00KEQJvcRXl7BpVxtSHazNxZFAp87A+oK5yAUkZDCS3GdzLK3AVIqx30laRzP//95/Hzv/ZF/JNPfLPyWEW9//xnvwPv+cFfMrRVU9VJii8pRXsREHZk3E6Kud8IKkAqqBiiS8GW3VRL1Q63Pmkt3mcr88JBy2/szZ2jkoMT+/pD7hndbonzICDZ4soOWSeP4hwjz60NsgOw8nrMi2j5mjR5FWZf40Cq68SjSB6/gEj/CAr3r/Fzdvn8idTaOivxF4lAFa1WGtU8Z7Ca9RItrEr07jM7mgYqa0IluPLrv4Cjn/wdJI5quwSZrRVzvVDvKeD+yC6GbuYxtJpCtb6KtaktUg3mECxkEO4dIjAmnIw+lK+f1KqyQQXIDb0nBxB88ijqV1Za6VqAgrQP8m4Z5UaW+kQNfejiTENIFkZU9b0sCi+/jvTT57SwNxC9srs3gM05rW6r3X+8FhVLaZgK7Vv+TKLah6gsluIB+6uBIQJUyjkCC9XsDqpTF9F156sIjZ5Rrlni5iq6FsDqPfJiBBDr7kXf5GH67uF/M5upzMqCYoSuli/B+K56AXXu6Zj0jxwmVd9jBGAi9Fx3sXTvVQ6q2kW2+S3+Zte6S8BzrzqP/hgxfdF+JOSwsJFiYEgW6j1uP6WwWVzNF2jqbLAURkuGYnslt3YOqiBNDYUjVIjC5koFxE2l87Dfj72NGdbn0J8kVTNp1m6vSDhx6km0EHvrLqksHKdQxYfKDmOHiK0BxCNZDLJA8aERQiK7jLqEnKeFYPcGmhsp3n8CPUU0M2leNg2FaJaUImXtiUgMFIV0SmMFmM+9/gAzhwaEsbu6uUL/qOMxAlRxpQsoJxjAKdD4urnKnYmSzprSKGq8el0wf1VSCzIv8KWy1hZZLUNIitSQ3/yWGTzz1Vm868ljrXeG/Z4e78f88rZYnEjqZoFgyxg9SMAJCiMlKQCKs1RBAbTEzr+gboOIDL3/Mb9in0v2ldrPu+Ek3q5if3V4ohH2hwv9AoD9gDhzSTpgZTmG+mei7I8ZS+1EbcmklqGV48t/hOjwFGJTJ9D9xHsJ3CyivHibwJVXQ1dZqVWyTcFfnrBgrdgKpRmiAaZOTBSpBJqNMgdYqrNQBq6u/9iTxFj9gMHeKpRMo0kvZJPA1UpfBqvL66jtbCGwXcehe6NYOrqFSimvuGBg9lZdnWHBh3Igks9qKkBuYM6My993EbVX53QYQIMToRpbKJe5fU6VQHdYDvEkUZkFxq2hfPMeUk+d0+J2Kza4bPxm9dT27NvSbAqTceGaQXQK2zetxWCpk5M4xxkPJdGr4RGMKxpnZpdYqwujmgTbkcYmDaW88OCQ8suewdEWVdbSf+gY0qNTvF1Mxbd15wbqlRJUpwxa+VaKPbeR1JzG+HeKVJojM2eR6hniYHeZwNT60i14F+O6X3/127QQylfLmEj0YTiaRrAhK+4TRLBm5mizyZwHq64WmoqqsKm4YmDsVSMgwtuodlXEvMhhJUgz3xgRUmyx5NYuQW443TIUp3tKz475qp3pIVUmoeC1OwEMH6syX6E6YWoz1oeYUTjzwdfQmB5oPrhUlVxrca9H81AOGGz5TM+tK2K4e6paen51GzPHhoTrP31ZStly34Tykqnhb4JCpZegvjgxruw2VBATi2cYUFxRMJYvkeD+1Eg3r4EpVT0Owd6+4/Qorm6Wjefo+90ErH7993ZbLJUAU0HBRPHviAammDPnUFgHpgJtRugy9Dorszj1Zb+IQb8I2Y/Y55f2XbZVHe1t/proZvzdqnb0o1/v+We9TOcMf7qBIz9m68ayvAOr9nxMGGNV29tCZHgSsenjCPX0obxwB9V1+yCrvoWrBImSl0J8p0ejVlRUggSs2HedJtR6saUSVO2tmEpw/If+vqCPVRcMBKyaiRQCmV6E5tYRXw7jzKVBbA8WsHZ4DbX+AhoEwsJEhT90wfD1EebuoH84wEGPunBOfvQd2Ph/Po1ArmbZ18M0GdZIPVgl6irEBn4w8xExaZVv31MYKt1kovxSPbjbiVkVZzC10f9WC2V/mnziNJUJ7rmmCL7bFZG4FqW2tYqxxcvo2l5A+MK7FDWGaGdAcgJTRrEbb2qVMmfIGsQulAlU8b8heRi0FdRpK7LtsQhjkU48hS56fxiYWpl7A5vLt/hvf6JNk9AtvtS2s5A39/LrWCwSaEgOYCicEsbnzP2CLII1y6Fgy1koY7RkxbloQLGh4mFsgkqcQdUFgxI7UG6FxRHqRe7OIaiAa94CCSUCZXHxE0PdVG/Py8DedxCaHaNjDOQwoFJV7mdB2CAF6gK0NDVwZrhq8zzoeH/Q6oR8o4Q+KztOqr9pZnwlmZ44BzdN7qCUjaOyqu4TUF/YhrEMTA2nBrpvKOF1VGDJt9TyRJStrj0rlcFVLoSVODPZrwOB4tyhiQFu8yZspwICOHGmSgFRgWDLCJ0DLWbO0YoP2L64SKSHSbXdBdv75HQPfZ3XvfS68/6mCSdA1V52J2JGBFbvvGdQ5dyczgcoP2K1InBrg6i3c2DlGazZHutcmpUiAanbqG4sEWt1HInj5+n7GIr3r6O+ve7SPsBdBaq0l60WESFwFWypBJu1kqIWDNHAXebhbmQl6OjKr6suGP6epQuGJoGn+0MZ9M8WMLSSpLGuiMXqfW6I3ywSc9Xdh2Cy56G91ddY2NyzuyWAlaodCPUmkPj4tyL/j3+Tx4aUJNXDtjBcD9EECQU4NZUtVUHJ9C7JkubeR+lSkZhIs9a9iq0gWwhMGdqieeGGbke9bnEhafacwu4E0L9fqq0V+3q21oVkhG+S4sxqY20OMvU1iVQtod5BnSrDDKg0RsIpuJbcyiMkS2q+4vYm+g4fQ/fUDLqGR7C78ACFjVX9FdqU5l1YamY0PDp9DoMTx/mx7bX7xE5dVozQ9ddi/m0W8znZ5rcQZsw+m1vDTqwgXDDQOMDVd9xYXaj5moodFXdVIQvjdr5LkM6ztMyPFQdYstzaOSjL2s5AAcZUO62AiCVI/2UrDfSpTeIxCQmADGSpmcy2icEt5t+KGWmz3X4N4fAzXFcAitPCW/2pAhSby2c2XARAAgOH6NsCUFA7Z6YGTUhNfWcCfGcfdkl32SPyCpcSOrKgWkFzZxuB3m4xPhcKkNIpxXcWXSup6lGraeklPbAChHG5hJ7uhBEj81NB4aAzqKnyOJhi6j1uM6X8Vs1AAopa1XQPwtEk+ibOIzV4hKu0t+Zftr6XnsX8ztml0URyOe9VJF/594tSoLjB9TLx7gsw2E3uuo5mW6+WotPLbcsrOdelP+5l/em5Xod6tBzteZk6ozx/G4FkCsGuNKIErDRQ5XQPvQIrJa3O3kpSXsAG81VSY56piwJcNSp8elXtrVhw5mOf/B2DCwYGrhrRBNZ7M9ha30GRQCEydcyQSjAzUsDedBFBuibmODRAK/CH8QS/drJHoKp3QLBVqtPO9F/+EEpfeBn1r941gAhmgN7k+6VkRKRAC1SpKYKppO5vqTWhsTLi3RpgtgIsss6ORjBSYjUvmZgkMfcpoEf3+gj/VeL3pWqM5i+lBFKRN0pF3H7nX8bQ/ZeRJLBvt9Rqa5PNm6JCMv0alan7Nm6+jq6hUfRMHkL/0ZNI9A1iZ46Fpiq3lWxXqv5a9WcYmBocP8E/Qfqd31vH6vw1xQjdrhwr0GgEj1atMM3LhlxbpBJkn/F4L6kEu9ElRwRD2JBIU6XYUam7A7kNFoSdVVDnfZ0zVopTUeZBPKCBK9UdQ6ApCdUgFbCxU8PocC+iKhBhxtpcxfcK/TEJ4avqDAS4WiZa9CiBkCLYFlXOqqkdsXVlRgxlvl0S1S/Fu2nc6oeUipJqO4Q/+PI9fPH5WXzbhy7ife8+ZsonFqJoNk13TOnXQeqLuVW6RwOQ6R2RmVNPtouC+qWcI514IUPjHjFZOVq09vfRCqQHrVVJmQBTtqT4sJLMxYsfjOViTkJ1Cw8VKL5+e1VjolQwpd/Rx4zQmYYhYL2gZXl6Rk7xDyt7d+kq9tZu8sgEfkTycMQ6V6ezrRvls39AZRwB7JGB6o8f7hfdCZtjblCnoMxK/DJF+hEZPvChxzI9i10em25IL0NkbAaR0UOc2anvbaOy4DXEjb4st/uvDcJspRMM08DH6eGozt4qS99hbnOl2lsV776Oqx87brS3CkdpwA1zA0jmgiE62I3GyhISy0n0zgZRWiYVw6lVVPoyHFg9DHnztRPGVm2vNzE4Jtgqds+Zdqz/Uz+Ote/7OTSX9wxDW50ms1QwpkxUDT7ON9g3/Rc9eUR5Zu0PLhQViGckMyp2/x2z2P2nZGM7UvXDk2CvAmLbfotlgo7ZUoY3KuOVShSrjRBOKkbqzZ0NlLv6uRf1RDzOV+y6WuEMqJwHdauz+Y01+qwSsJpBemwS4489TYzVGvaIuWpUSnAeO9pLZr/6Rg5hePoMwpEEjws4d/0ryGc2LFut5Tdfo1U97tejL01fynJpF1tVBq76MELgKkTPh7lVEi4WAi33CaobhiCzveKgSthXcaDFwuGEhMpPhNESakDOXKkhcijt+b4ILq+H8NSYJGyk2IexPyEW2J2xU7vU8K/Q9+P09yHCW2NE/uxRv9xEIP1OhFkAb4b/6zPUZYnZqjNvsFValNKikTHqqbS4uji1YSqNXXpMt+5u497CFq5eX0GoksfJsR78nz98FCtlPTjVCXtpVA/tsEgTldkWVEgZFvqGPtUi9/clse2pPWPKQkL3fNRVArUJRWp83VSfylLJ4skwuyuNxUKrDVKdGD/qNy3Dc2VnH38PAgGDEbpWtvhKEys1OP0kB1bZzbvYWbpCi4c8LBO3if275T5POuXVp+lMDsKWSps/3cvyqH/pBDy0i32TrAaH9uP+cKwV0+UErOzBjv96RT6tXq/5jPWH+ocRPXSKDwRyuYgSARiNoXLPj1ZL5Na37GmQB4QPq6iwt2KMFbO3ope0WSuKXYKMvWqUDPZWzHHo0Ld/HCMf/XjL3koKi0DNAQJXN3to8rlfxeh8ElM34rh1dJ7GujJnF5oErkKpnof2Vl8DYWxVV1oSOwEDYlyOTA9h4P/7aax97O9Dzpb5wMvAU5TbUcmcsVKpqDoxVpGxEaTe81ZYmmIoogIry91/ikG8ZDAMlgznhQpQsihfA0BfKEYQoeITSreprtxHeegoIrkthPtHqO9KOhMbycWtgpmzMYtkmAj1/2YW5ziY6p46hOTQCKLpHuXYCtxFlNHVPYSRmUeQTA/ysDar9y9jc3lWV7v7elxfnl8xTs/G+tjvSoO5YNgggLWDE6kxpAOxVkgb4Vld7ARU3Smo9lZiR6BgrgSjFeBMVlBhqWTF31WTe3hvIhqivlncwVwziRmma2TOMFnYGWZHFSQWMFBgAS2JrWGhXGgRkPk8AYF3g4YS7BXDKFSnkS8z+yrBrgelNKqkTqtXa/TdhVyhglyujI2tPEq5BfRHakh3FTBJ7PpHvrkPSQLlcm2A+6mKZ2QsrlYwNRY39h3GFKmG8VL7M2ilbNK7VFQ2GIUVgAVlVwfdT3kvQ4wVqf8YQGMhv+J0Xg5BOIazeUqsbgaqZLm1sZDJ73/+Mi4em8QfXtnWgakQp6MFmApYPGXGKo+gf+IC4qlhlHPr2F68jFJ2Df56jfbbhh6Afb90G/D3A6i8iuxy1vz22YPLkDFRp7OZDVq3EH8AxWu9dsesgJVLdts6/N6fzhmuYHcfwlNHEeru575MqguzNFnM899C3ICR5HjWWUxtU/TuQU4nx9AMx7m9lRTM03fYYG9VWV/E4r/8O9j43V9u2VuxFVMwnhTOQ6NxFHpyuD9GKsGdRUj5AmbmwsgMKiFvCrtip+DDkDdvumyuNDF1XIAdVfsaP3sYY5/951j6vp9BdVnv60iIyi41kzFM/IufQ7i7C6q5k9+Rg7NQEKBKOHGWdJuwlN+6FTVriWpkLjQdAnS9XA4jpcb6q9AEuruK5qHHkdq4h9DI6dZCvsW+sK30ySSaBS0sVHvb3d95I+gQALFO9W/fuclZqqEzF9B37ATSU9PYmb2FSnYXNneC5touehZPoEvZ0be+cB1bBKasjNCdOSgzFLIWySKP1LoOySGtkEqjhtf3FjAQS2Eq1odEMyrsqggscZWgzieV3NRcL6juFpjdFQdXkgBhnOFSXC8EFRu+c2N5XFqqo+dsEz1ynwBWTAUYr1BHKAmbI8ZcMcBO6sFwKItQoIyk/DLkKKkHAxnU66soFidQbdBYJeeJOYxAjtEYU4og3NdAz8mscKkg0eKxnxZ2u2nup0pjf4CZ7jC+fKuIoYEIomGdmQL3lEvqNRbGie2C5Gpy49YmjViSOACTahU0q1WhBtzZpnZXuc+/IAvizDo18xVYZe5z6ho1q36p7qoYCO3r1T0ciR+fX96ixdIa3cskt2sVLBXbrRvQOfw0ggJmgD585O1IpEeIEc1j/d5zyG3ehb3Y8ZoHMaPvp4z2vPp3051B8163wgfCif3yMXO5FSXrvjsDE051+2N+7G9W52rIztvt9bEx9V548ijC49M8X219CdUHtziYktvKdWqT9X22Gzit82s5+DVwe6tAy96K/d1U7K0aNRq0mG8rg73Vj9qGvGlORhEZSKFJKsHIahQz96IYW2pg9uwOrTYfhrz5WgiLB8iAFVMDcjIoIDQa0akhTPyX/wtbv/QbyP7uHxt7Ev0IPXoGIz//04hMDreciEqKrauVK5tGgMB2qNJ2XPVrpXfu004ey61C1cC8gYAC4ej/5XoQt6phnEiLICi13B4i+R0c/vwvoXzxG0iFrXhRV15AdfNUMGEEVboKoY0b+vGsXSTDb2OeBoGr1VdfIsZqGOnJQxg8ex5FYrEYc6W3t2J2LiPTpzEwfpyXsLP2gADVDdR4qCq3d1zfEn0gZtlh9NPKlHX/quf0CtD2JyKb6mT2Vllub8VcMEwn+kXIGw6SgopPKtmoElSPNdXgzLRgYyFyFKN1rgqktCUEwficJwYlvHYbGCBgOpUoC2AVqAowxTyVMw+dcoSzRdzoHTDcrpDUQCpU5n6vJG7CQMAmnUOzktJ1Vt01Wq66gYtji3jtWhxPX4zDIAysxGIErMp8157Ed++Zc2usKzsSyO7RONkgYM+Ypji0HR6qNNFGCqhNDIcg9/ZoOwVlUeZeroi/+BP/Fl/8V9+CT/3Gjgg3g4BmhG5ojbCb6h15hLNTzFZqe/EKdtdu0O+KQ2+THY5rN05yOe+1bO+zrT2gkhzSaCm9ifpeae+NXVskM6jqFPRoVb95Yte2fbbZkN2+DmcnpoB/hk7Lx8BUaHQaobEZTu3WMzuoLdylVdSuQ343sb8v3oGluQzxojJ7K0YtMzurZrAo3DFUCVjVI1wl2GS7BOWmwQXDILFWhpA3xFrxkDcjGaRv7mFkvguT16O4deQBGvkMwmzV/jDkzZsqBjUgu79BYR8bnRrG6Kd+Cn1/4/ux+x9+D5Vb9xDoSiLxnqeR/Jb3t3YOio+k7eCT2h/Tas8a1iPzNNAcNRxnBsqCjAoYnX+q5egOqhO8wYid/mcsFduo1a1EEKltrSA/cQbS+hx6mR+pgD7mmdKbbfuRGUSZ3zj7hYrd28TUgeXMHlJjE+iiT4LUgtmFOeRXlzE4fow+x+ndCaGwt8HBVH5vE2iVpb6lduOLMYagPoXU1j59+2Xd73ZApkJEY3qncVfGUnEbmwSwJpJ93Jg9xHcJSsLeittUCYP1Jlf/KV7WG8yOSrHHajFYIt0eEVEjPBa1hEeHG3iQuY87tVOYHu1CpEEgirE9zA8Z3+3XVC5Q1l1aOwCEHVHhOLCIc2lix4ZywGu3mnj0pOpQU+mYrI/F48Lmi7eJ+jUDeeaquHNQ0UBJCQekVaOg/aZsMZ3IwodVnEAYA2L8kKycp3uVLeEv/cS/w7//xHeBeewVoWbMMfq0uhiYGpi8yIFVZvMONh58tWWE3vkQ6zQz6Xul7DOvl/NOOezeZf/ifZb3wVTpX7o3T5zKlwy/ZIvj7WVZl+luW2QHRpwejTvos8ofIFVf5DhNBAQy5HIJtQc30TDYYdhdt1Od7uc1mtrteVqUobe3CkRo0Sj8sjRrBR7+psG+GWul2FtZuWDQh7zJn4/hzsQ2Khur3Hv8sfuHUe6uPAx58zWQlfkGpo+F2A7y1qYmSRmTY9PDGP57P8ZNR1S/RGp3UNV2AR1bZbavqleaCDWC6Cql0RYToOVSQTao/lpTurq6V3z4SMokoqEu4PfycaRV1V+tivLeFjbOfgP6Epd4n9Fgg5AAvKm3lBbCq1ivzoUw1mrvwV3kiJVNT83wT/fUYSQDCTpXwYPrz6OQ2YAViDOOGv4nBeN0JrXBNP3daF/V69tjdczYXu7fKreB1dIeTqXGkJCj3FUCD3WjgqZAQNn1R+wU2wEIWbGzCgjmSmGyyjxGntwCGoe6N5GVT+DO/Ayp4YrobWYIuKl+nZot+zxPN0P/h9vUgSi1Pc4THu0NYI7A3jNXInjqkQYRVLISl09SQsyEhH0Vs/1iIWo4G6cvU2XSLPbCtjyuy+IlUvOxzRrMxioR14BXC8tKeOPmEv72P/y3BKh+GNODKTq1KtpicWGJ9ChGjryDq5qLmVVsL13h3+I2dApsjMf9vUv2ixTv4vWd2B+g8iu+/FSp3/vFfEZzz/bz/m6tG4b095ic6+m0rHZgJSVTCB86gWBPH4GROurETDW43VTdsaT93/9OyrK5x6q9VVCzt+K+rZiH9preBYN7yBvmgiFK1HZgdwOlbB3Dqz3o2WlgZSqH3amHIW/eLGG7AZfuNzBxOCiAlULusLmCh3RhYKmhgirJ8BpYgSoVHFULwv0C2/03vtqLy6eM7tU1UCXByE4pUF8KQKWuNPWJBpPyNDkzpupIn2DXaoUsCpJQ93WxLf4E1s1vqxbFjLcA9pZEhpZqF2zzHpgV/FYLnxhNZr3xIYQDNKk1i8g1c6hW8ihXstC/ie3ckJl16eztN40+MLfXuV7AGmSZRUaRVEiv7j4Q9lbxASSlGFf3hczgSnEOGgypoWxkBVwFsLlTxehwBDHuO1OAiXSkhkeil7BXn8LyzjGkYgNIl7YRCmSorJTJs7mxTeJfGdYLbdO4TiBK6kmgUE/jcy/cw9mBGE7PgLdhJi1jKHQHN+fOY2qiif6BMotmrXlHZ6sPYvERCROwqkGq1biqT3h5V6vTbZeSzGyS8gLFIpBZudGIAUyp7kWyuQp+9TeeweVXH+DfffLdmE7RS9Co8TL2ikZVO7OXYsxUsnsUVVLVLt/+E+S35/H1Fy9z6X5mOmvwv5+yJNc0tkyVG0jZfzw/52HMvl5r1sbtptkhYlMIG8k9j/O1O+XTzjG2JTh5GMGxaT5R1NeXUV+8TyxVGV6l/Yrd6gWcGCuRymsnt5iq1BAH3MdVRHhjJ5Al7K0KSsibmqeQNwECVxupDDaX13HsjX6MPohjPXobIRo4mg9D3rwpwuICrswRsDoSVLxbgz9qtujl0T/Y32ooGiUPv/UBJU2wnaWqFJuOdTZlbZKTFDSmWvXoH6th3lEmFWaw/oW8AFB9ccFy1beJ1RyYRGR7GYnuXj5xmwkJnYmWTmQbpsk84cHyb0n3r/6YmiIcS2LyxOM0qQ1ww/MtWjxtL99FYnSMqwOHH30LSpvryCn2Vs4jqOzQRng6J6Gdp5dM3+Zr0Mr0ViP7vUsLqlT/MF1/GrGtVdRpscg9rjcDWoBm5TvAdwAqbBWBq3N9UVxe7sfTLAC4LPylqfC3J5ZFT3ID+XwOmeoR6oBJxOITCMsbBKQrpKaeEMbrPCxMkhhMSYQGVEke1tUYYKGPxDzw9/eTliBGQGoSy9Tx37izhed+5yYW5tbxFx6lhe/RPt1NkZAIV3F2uIbdah+2Nw+hf6RAbdgR59lOxWBN3An2ErH4fsyInV0DswFjAZLVQJmtAMz0PAJK+lBQs5cC0LK3UhYb2XwFn/78VfzW772Aj7z9LP7LL/wlyOGbwl0XE8p/9c6yaAoPtn2R1OBnuK3U5uJl7Kxc8+1vyglAm2dh7/nt5mQ/4gyUJE/pvOIVNbXT7K/1/o71KfvDf07G294vVJQh+86npjbk8QysOr/2wOgUgtOH+a6MZnYXjYV7BrspOyBn1wG1a/Ai/u6P73JUlaDizZfZWzWCBW7Y3qyJkDfC3krEs/IS8ubW4CYay4vc5cLkNSo7FsDakXXU+h6GvDloYYbrC3d0jJUEzQ6Jje3st8WeAT1DpQcsuZ2GY32qh+lWeBJZAVQmcNaaCaGMGsq5V8oRdEeJFOBzUBP1jUUM08RVqdYQeep9sAoAq6kQ1aL1dkl6SKD/bS9OAzdz2DkwfhTD06c4O5PZWsHa/deJLRAG8gxEFTfWkZqcRnxoGJHuHuSprxdWl+FPrBildt7JnMJpFNOfcS7JXKaQ4cmzGBg9wQ3xN7Pr2CmuY4A60Ei0V3EAKvqNLGuBmNlMxIEWAaIY0aTxSg6381040aOAb5XhUYBGUrqLrq4w6nIK1b0FFMOPoFQNoVY7QgCmQIxggRisSYS7awTCx2nsaaLZK+IWFgn4FEt1bK+VsbFdwIOFVezt5IjhrOLcNPC9b+nCmW8/xV0q3F1toDyaRLyqInQJoXAAg+k9Kp/FXPwW+jwC7oQUm3SemMeILOyjmH2V8g4xf4PmvfbWotxt3Qrg6o1VXHp9AZ/+H5fxwSeP4rf+0TchnRgT0Xp08uWrWzgyOoT71UH0E5hiwGpvYxbrcy8JMCVbPbdOZjLZ9G13vpO8+xfv1+R94tDGCXcJORXRmXh5BfWvrJ8yjMdl3/m089qw6RdsuKVvPy+xlfPR0xw00OyF+v3baBpCWriV7Xa/nPJ6S+NvV6TdJAQFXEVoIAu1dgg2QwSomCF7I4o6fQsXDGL56BrypkuoBCuVOkYXo+jfTGJlIov1o1kR8ibdh2DXw5A3ByGMsdKrApmofqxUzZ/VHG4GVDW2azwvEtrv/hO7nDgEkKSW6o/1wYD6jirHVIeferqB+acaTCuLMwLdoZ0VpHZXkZk+hxDzj6Zrn7HNNCkmk6htKu1otcI2g61YvU0MSPSPHcEgASqJe0LfxPr8DRQyW235mXPQvbu3OMDqe+Q8UjNHkBibQIH+Lm2se6jZjgWw+u3vGiWb305t6koPY/zYU4iQip6xcmsPXsPWqgj2nKFStgkoHU4OI8lcMASV8EctlwqKzyqlWefHCnhlWcaDmISZqE3rJLbDj0BT4yZi0S6kg1Vis6+iKJ9FrVxBlvpFpphAqVakv8v0aaKGLJjGNS5VkE7l0Isw3n1awsBUA829Ue5SQQrLfGMhk+muEF6b68Vb1TjcjEli6r2oLNy+hNg4dp8+zKHo4/QpUbu2aAGyTO/MHvVlYU2o7l51F7pPe2XcuLOJe3PbeO3KAsKNKr7vfaP4i//3e+hdHCcGbKv1+FrPJhHGs88v4uLFb8PVZhLF7Ao2Fl6j71X18XgUP4BEdjlnTiM7luYlnbfz+jbsp4zOpMOZyCsQcU7nffhyz++tLJc2t2EXe5DjJXyNRIN76MQZbowu00qBqfmaK4tip4jtetE7yOssrzOw0lJ5Kcf8W2p9i7hScQGwVHsrGs2kQEQ4D2WBmpkbBp29FWOuDn/i19pC3kikEtwjlWB2bBtDN5sYW+rFcvwymgPEfFWLCFYehrw5KGHAav5OHX3DAR7OhosKnNhvC1BlFgbMVLHb/cftpFhhekDWAldQTElUFwrQnIFKgqXKkbroVEK4UqiQemll6jFigisY7+/mDg8lPQhUXhTNpUKXrvlOTI+TyCYwJpO6awyjR84iTP21Vi5i+cZLCpiSDUsQszBj9s3XvsoZq66JaaSOnEA4TczV4jyaFSuzgP2MnM4jpnHp6a28CAGaiWNPI5ke4veEAan1xddNfrZk7FULeK16HwOkEpxODHL/VjxeYCsQswBYm5k6BoihenIkgCt7EmZDj+FETNY1V9a+NAKJ/xlABckgAZlQBr0JAjbhUXrgzBN7CXKJxpIu6puFKHdGKkWakHPCKD7APLUb+p/4jjFHpJUibtdSOJFSDNO53RRTMbJtpz30YRuL2LUy6ugl+gzQGDeIPWr7dmmGHvAeGo0KggxwEVpjqtAas6Pl3zXsEIjK5kpY28wjQ4xZMpTHUCyERyeT+OgP9SDRmKIxsAxbgELt+eR//AP80DfN4I9u5DF37UsamDIlNT87/9LONEmuaf9XFqcFjFVaW1DVhi4s07gDi84neOtz7a98+2Bl13brutxvlxMIsc7LvIgnDh9H7NgpnqC8uoTSzddpFVXU5XQq0R7MmfN7v37nctpb0ok/Lytwpbe3IuaqWuKgSqoKcKW3t8pd/YpryJu1oQzWl1ZRz9dxhFSCcSmC+eMPQ94cpDAScWulyZ1Ws+DLKmvFxeW+shA49arWG2Ok+o2Voja7/6SWPZWhaOVHQJIMYEpVDX46T2UGRQBlpg6qrMyhPPMkYrvLiPYPi3zQwqdJSpkKyaUBREvxvlJXWe5kdz+GSM0n7Kaq2Ji/hc2FW7rytJHCabxh7FRlZxvJ0XHEJ6YQI5BVIGBV3lxDo1zpoI1wyNM+Kcqw477MAFIcDVLHGBg9SZ9TpN0iVi6zjsU7L3IDfCdh/q1yxB5NJAaECwZitbk39oZgq+Y3ahiYEW25MCxjtjCHV9dP4fRQgN53tXoLQEiUqhzp4XaBiDOnnmnFu4Is0ncrwCwp8vOiGCZiHSUwheAQnayXxaK3yA7mCLFLuDi9jssrBJKGJPQw32cMVPFNEczFAaPRWCgkNpWyY3l+LhjZRn/gGfRHT6JEDFm5tkZKij5STxO4auwiVKDxj4BfLSehm1i69PgegfIu6tN0LwboHdzrA9uGG4iTGjNvNSMofwVT+ORv/CExbkFMj3Vj78uzRkBlK062hN77l79h1h7IH5RIHVyDvXRWxr51JtbNdwJL5vxy61+4liPbHFfLUruKEzDxIG1ZrcpSB0lJ9xe9t6fOovvMBc6wlNZXsPv6ZVQ31x0r0O6h14do/Yq1s1aAO7hyA1aA//toKtdgbxUVcQTZdzUnjNppIGvUC20hbwwuGHQhbxi4im93IScX0U3M+5lLg9gYzWH5xOrDkDcHKNndJv+kewPt4MokTOW3vthAqWDshQO5Qcvdf82mcBFtsMdSt5ur3UcCjPv1uKc0vExM1UBSsFRNmqTyNKHUEmmMLl1FKH5YzcpF//hZf24SMzAwMIVy6BYHQJ0Nm6KBjJFizFSqf5Qf3Zi/ie2Ve9Sfaxbp9e3QH9WDG4nnzXP13xqSk9NITDJwNUTgagFlrhI8yElD1K/3VKVvlfEeGs/3DR3G2KHHuf1kjdjie9e+zEGVl/qYMK/s93JrWCpukYptEMNyr8JWAV96LYPHnlBqpwNH+7ZRJTXyja3znMEajVRo4moozWkShhmjjkAAKNAg8mhcq6YVL8+EotXjjAVln5DCPPHAx4pjUOZzqkbAJsOcjlZwcZjUgHclDM0cwgQzoOdTp6qXjCl/sx4ZFN/KNlrWjIhUJY3hDjWVxqMgY8RYHMduSAk6RuOf3CDw1F1Ds67cbQMjp2+76Zl3BfDzv3qVmLca/uYPvY/OegmJJETycdS/yDbHrOds97x+znsRP2V40UkZz+8TVHllmtwAjh8A5MYaOYEJuwdrwcp4AlaapGhlOfQEUeAj4zxcxfJzX0Jm9ia83R87UOTvnnUGcGVTCbAosxOAapGnZW8lmCtub8V2CFbzfHCu0+pVH/JGdcEw+df+KXrf9i1tIW/KLOTN8A6G71QwtJoileDrqHRvIdQ3/DDkzQGKCq6iMeEoNM4ATVAwWvWajGJeJjAF7tDRq6j2JcbwNFA6nPI+qq4UJLS+b1aC3JP6hbiAW43cHgrJAe5yoysW5TZNUqsctLogc1Wyffl5FMJJzCSJWXr8WzE/dxnra3ehDy1iaqWuUZowA+D+scMYGD+iOO/cwsqd17jKz4+o/JzcGrm0UYipBLN3ZxHPZjhrlTp6jAOsvWuvKyrBToGVeVy2+oYFzBItTaaHMTJ1Dl3dw1y9t7H4BjZXBUB1rtP6OANXs5kV7MTypBIcQoJAxovXM9jYSWC4Gy2gHQ3JuDhwGbvyFBZ3j2IwUUJXeVcYhIdSrdYq3Yc3fC9bxDMv3MTqehZbO0V0xeNIRmMY6kvz8SNCasiuvkFMTfRiZCyNSJxRnyxOX5ghITBnmuiiZ1ql8hNlPNrXwEqhiuzGBNIjTQHAuKigiomiMtcxaZKkRV9t3QvZ5j61aNT2sb21wAjFsbiXxSd+9nfxwacT+OHv+IjiUgHE8u21FWkWZ5Agez4u+crf3l/9Ayo3ae/Hb25Z1vPigcw29q+3bsnpODFLsFc32bFVdgDALp+bWKRXDiUHBhBJdNEnifzWBgpbmtFprKcHx77p2whUTdOgWsLyKy9h/dJXObDyK18/YOWcTlupAnJH99QEIAPCiJ0DrGCU21w1iLWSgjGdvZUW8ubuP/jONhcM+pA3y/05LKytorxbwcR8H4ZvpLAyXcDetBbyhrlqeGhvtT9hOwTZZ28L+5ZmC1RpgKk1MZr0c/qFOmOpmNqvT/GiXll5gKl7V1C4UUPsfd8lXCm0ZSTwl9vFeqQXuRkCBJ/9H5juPYUTJ9+BmZlHcfXK5+i6cp6mjcGpExxQBYk1ZWBqc+E2ihmnG2I/XlnVZnxTZM5YsU98dAzxsQn0PfYEZ6yK3N6qgs7F38QTYiF1Ji9gcOwkz5ndXsTy3CVUy3kfpdjNFJIS8iaLcQLIo7Ee/MqvR/B/fBxtTe6NZehzl36XdLdWaiGp3VwB//G/PINuYqDkQgnnjwzjbY8MoSfJWKWmAGEso8wCLVdogbeBxm6MchLbJZ0mVQN9JIbm2L1lIW42SJW4TSArQxddwFi0jFqDftfOcp9WohEsrTqVNkQ9KlMG2WSgLhYRsmR3f/T3Sd8T6K9oFHlq/7/9nau4cnke//ePfzumJteIqdLy7+WLWgbLGjqfITsX63mqPY1bGc7i7VoOAnCp5VjXGPLONu2ncm9prFZHzu3wDzrcgIMKGtjqsP/sRQyfOY9IMql3F8JTbd+ZpcFtFcff/i6+22j9+uu49T9/D6XdXU/1aecA93vs7xmZ16H+xL4uccYvuLIrj9lbMXVeQAT+ZK4XQoq9VSUkXDA0abAilSBTC279keaCYeSjH+c7/vQhb4KJFLEVw8hHVjA0C8zMpmnyL2HuKE0+/cSEsZA3pBIMRB7aW30tpRquWO7+4wFm+XpLY6LU5Rf07JVyThyW8CfFKE2qmhf15uYi6ulBBCslRFPdto+2truJUs8IojvLWCN2auP2dRw5+hb0D07jLU99F9bX72DuwWWUCVxZLeSYvdTY8YsIxxLcLcLyncvIb7vZruhHMzNDZM1S27W/tLrC7a0SpBKMDg4h3NeHMh0rkVrQ3zhtB2zaW67K0NgpAlTnuA1VqbCD5QeXdKo+++tqL8mdBVkubBG4ymD3jQFMfTqNH/2ew1qrafElfGiUtKwKoGKM1IObK5ju6cLHP/AEHWbqwaYWl1KtR9Z/wNV/zPEoAllS9V2iGfEasVMTdOIEfWbo00t99b7Q6qVFvnB+jtG3lPYofS7SiSPg9ldgLFGZj1kiDIHb1VocNMcCZMGR4z24u13EFz93B3/4xc/j+z4wgb/9ye+BVA9RtrVW3i+/voCeBFttZOGlZu/DoJflhnU6LfVBgRk7OcjyNTziJZ1ZQvub0NXzKtfkJN4eoffbr6fnDnKWlBE99zjCx08jQ/T29rNfQjOzw6OiNwt5SMkuhLp7ERydgNQzgGt37qB57TI2X78McRfsmCLAC7hqB0SyhzLsgaJsUYe72Jen/fZjbyXblyQFuYd0HvKGxRCsEUiKkIovylZ+DdRJjVfJrdMEyibmpmvIm+bJGG4Ob6D/DnPBkEJ8pYhsLUvPbEBxwfAw5M3XUjZSm1ibmSMFyUnDcTW0SEABVYa1vB5QKWkZy7hUD3Av6ueHRBoWI3IrOYzN0+/C6cVXxE5RMcfqyQteRpHe3frUaaRuPofw9BFkXn4Z1699AcMjxzA9c5F/d/eMkjqQgatXobaIgamB6RPcGJ3ZO23O38LOyv3Wzjbn3m8eDRwWGLCybDIKY6byd29zlip18jTik5McYJWWFlBpc8Hgf0zU18+EqfgmDj+BeKIPdVLvMTC1uXIT1tdjf23+JjymEqziXm4F/+C/EwMYa+BHvisMOUr3O5ZqS81UfPM3VzEd7cG7PkRgKFChZ88ATUD5yEagwpupA7r8KyA27lH/QoVFFSfAFL4O7iqhOYD6rRw2CaiMno7QOVJzVihxkQBU4Q1gggBVmFFFLFghQ15vofIJ6EibBIj6ad6gZxuUOM5SGyD6NEydnjFR1H/jxKgTMAz2juDGSgFXXyjh1avP0hi4gx/+0DH8lV/4fu5SQVIW9y0JBfDsCxuYHiGgJ29Y3tfOQIIboPIzr/ip159YzZxvRj36Gu3K9DizuAEXtxvq9uJ5rcddrFku9Yx7PeGjJyAN9KP8xiXU7t2FrBqd6pIz64EIrXTjR48j09XFA12ySVqEmOn0+iSX63AT2bEcrbyDA6GiTG/uJcz59Dn56852ByKA1PhRRPtH0ajkUCEVQ75QQDCQ4FuZW/ZWupA3J//ZHxtdMNDKjrtgSOewdWQD1Q2i7JlKsNDzMOTN10HY7r9kLsHX8XppyrIW70+CQQ3Y2vEHzX8V+/eVcpin74sprhQ2l1HoHUOM2Kdk36DwfQQNUAUUsMbf4dU5JHpm0N0soRKOqb2Ogyj2mSY14MTkGa4OZABrYfEqpEQU3cOTvMzt5ftc1df0BKYAOLLr5vPtE57T+8/AVebqa4gODSM2MYnEkWOcuSo+eKBzwWA32VmXqsOxRI50YfzQE+jpn+LPYmP1JlYXrlp44+5kQWV3rL1FDFz9zK8/g76Z9+Pbv6k9fNfebh57s5s4Pz5ACyr2XCpK0eYJT9fRUkkeOkbK56F0NuHpnBkINih/jb7z9J2k+xgnEBUkNnKkiYXndvDKtRq+5cOHtOLrpGpb+gwwOUozKakPMcBc+1NZUygUJpFvTNPvDELRPDGcBLBo5gjKLNj8FJq9NJ5JhyDT4TId2sk3sE1s6wYBqftfymN56SUM07B3YrqOf/iR00im67RokFuXZOhF9DL80qdfwA9+yzH8zpeaFnfSy/3uBFDpj/oFM37mITe65iDB0v7LCmkF7YexEufsb62aV0Lnk7p7/ap4AyQW5TGnbqk4avdvoTk3b2RiTMmrxHpUiZ2SEgmEThxDoLcXjU1zlHmP9baO668A+2a99KXJntrgXI6VqABJe7IibK1zyWo4EvUOE6XePYiuI2cRITVdg1ip8t1llNbXCPQkEIzLSsibvAjUzIM1C3urNhcMSsgb5oKBuVZgbhYysXUM0aJy5k4PxhYamD27hcrDkDdfE+G7/9Z7cfkRowGt6vCTe1TXz+jQHIIKUWgnki8UmOpPaICajTrKm6sonvkQhuZeQ+T4UcMjbAE2+jAD8tDuGs58+d8gf+QxVIPaziw1zzyVsb42i8NHn0S8fxC9h47xflrJ57B48+U2I3T3N8jLKOQ8aZmXosboEeDsVJVUglFmbzUxhe4+WgyukJpwdVlnb+WNQWK/QqTeY6o+9mHG+PnMGgdTOfr2/np4vWbJJb04/rZHRwlQHWo/TeCnJ1NB70y3cMDJsURACf8ShExjgMQAMNtBkSAgFYuKWHqyAqCKJZGWVyULWysGqNiuP4ZycnT/wgEeNJlNkm85LuEPXtzFP/3FB/jpv/QWtHYQ1mi5sErM1CRj0Wj+qBDLKY2AuHaES9dQkh9BvsxsxkrIFeOoVJqoViuolmj8ovGsWqY2Vqu0GMyhX5YwE5Hxtrfk0ffEOL+OQO8m5AJrgXVMWNaET/7GH2OawOLMGHMjkTHcQ8n1WXibLe3FKb9135N0/x6c2LWjM7yxn9aF9l+EKl5YqDerDi9gzeq88VgokkC8yWwmdlDxWIRcLCJaDqAZS6OIzbak9sAK8AIS7Ycef9fbXo7XzuY1nQqSZE8pRckyAaAepBiY6hngLEBu7hZKyrb0YDjOdwUGuFf2EgGlGGewtJA3bNXX5C4Ydp//LIa//W84hrzpns1gdKkboeUdFKu0Wi1U0Cw9DHnz9RKdiyr1CFQQZfCNpOjzmOrvUJ/qRb0AaW8DiY0H6GMMANuIYCpGlfreFrYnzqBU3EHf0Bj1qWu6x6y9i3Fiu2pdYTSaebY7Hz3hPuqXw5Amy1hevIZyOW8BRezGnoMY79SW6X9r8Ir/Ina8vLiAGgGs6OQUB1jh/j46tkgsrd7uCY7tS5Gqb+bY2zhLVa0UMXfneWSIKdanltoWfp1co5rPW1m/8g/ebdgpqrKYezcW0TverTgjkwVdIyvx9GSieJJ9PGgz81PAAbqsGJAzYQGdk8RS53ItIC8uUhYfpt6rQpTF6U5R7gcf6UGV1Mj/4be/ih/+yGPKTaHzpSSwSwxVb1z4uJIFyAtLWcJke+iKUGFB0nqERth2VTDVoJxjLhW2IGcVlwr9GTR3enlbgqkmmnuyO+4k9v4nf/EyeoIx/PB3P0HJVjt4JLLn45Kv/PY5vOX1kka2eI/t2nBw76ObHLhhifMleHsR/b+uBjK0VYb+jPm81THmnLM/dgiN0WGs7u6iXhFGqwa8b8BDMqKJfgymTmBj8yUYr8GNvfNyTW/ODK+1yTywObXFSxpRsjbw272GMt/6npw+icTYEX6stDaPAlOvKIwAL0Gxt+Ihb2jlzByGCv9WxFjVYxpzRYNYo5B1DXlT6Mrh5iGmEqyjezOEE68P8JA3W4fyqDwMefN1lRbjqYvzp2ewXq6EuRd1NYBybZsAVW4DR1/4DcTe+z1C9Se1Fciltr2GzRNvQ3rlFkZ7+pWjWt+Pd/dh9MSFlif09fvXkWWxBLm91aMYH38E/f3TLTZLW0Do324zwPL+5psgpEM6yfRbZXqFSrB09w5qOzuIzxwilSCp0ScnUbx1g94NO1cPMuIEPqYOP0mgaoS7RWDM1MbKTdTrFcu69HmtyrM/Jln+lmzSsH+/9xuPY2pM2FEZXHBsZnF1eQPvmu4VsQBbOZT7E6oK/MT6BDeraohz5Sqa2Szk3S1S/RNzle4Sadg5tnGCFsjMdpbF7GsFPebRtBQQSN/fdHEM/+T3r4ixTZKFc1HWIbeXCFQNCaZLaooA0RzrmTUWkubt33hY1NEKpqm/L+1ybWEZn/jUZ/BXv3MC3/L4NyimJzL2oo+hfySE7bVrcBcndsdJOp+bDnJGkwy/DgI0WfVVL+mN4kP95yVd+3qm/bz+W7Itw5nlcWKr3MQeWDUbNZrcH2B4+h1IXRzB2twL2Fm7apknGIphaPwJDE48ikp5D4WtORzctbSLZMrlTdrv8/46tblmm1msdd3twIqp5xJjhxFnsdGCIVSJRSgSmKqZtqXLunIYOJJA6rxoiKslmswFQ60gABZ9N5hXdu6CQQt5w5ir6b/2Ty1C3sS4yq+e3MZmOYMxYq4GNhu4d2oXFRbyhhgQZsz+MOTNwQjb/VeIWk/qhqDH+p+S6W/679O5GNKkvUmw/crEHJRX5pCZvojIzgq6ewdbuwfNUIdNjBmZ1EGkDu6i5x1OHW2BEwamBqaP03c/n5S25mexu3KfALuwKma2Vttb8xibeART04/i+Ml3cpur69f+GIX8NtoHYYsJ3oPIun+9r+5ly9R1Ugfm6BMZGkJkYhJd5y5y58MVYq70LhiYqm906gKGx07zv5mKb+7OV2gsyxuuSOPFvF6R1eikB1FOW1z0CzPgw++e0UrQ9ZXf+8NX8a3f/JihZYbRp3eCdMRRRuNB+C4IirLDzOaSfk/TmEDqQJmDpgb/SASkZOYEtFojDVoWxt0O2nUw44Yf/cbzeOars3j3W46LEY4zXMx4PSNUiMFmK197vD+53Ugdur/bDOp5ta07mKc56p//p0u4cm0F/+p/+5hwqZAX6TLFGq6uJTB16hsxcuhtuHP5N2mRkAEs77OTtM9Y1s/KTvT93zsT5k/8ACA/uEDGftsW8jsAuIt/w2VN9A/CL3AyrxTdc1jlX59/AXVaaSRHTqD75NuRmD6LcmGTOmeWJvAKwjFSH8VTiCUHST0Vw9ryZWzPvexSLhzuiTvAdGuz93SatHd5r2XZlWs9wUi6KSPSP4quw2eIPUpyRio3+xqqxCJYiWSoQznC4wkmuJqO+bhq8oDNxELVBMjSh7zZI1C19/xnbELexFshb7bmN3H4Zi/Cqxlk6wViHvNoFLMIEWP1MOTN/oXv/gu37/5jop9wNKN08ZfuBJ9bXi6F0a/E+quXS9gjJmDh9HtxeOESQoyNhCFLqxc2SJVVhDBw76L3OhiJ0Dscx/Cxc+genuDHd5cfYHvhjoUndPBdbwvEUG0QwJqauYghYq8uPv4RDrgW5i4rIET/7rSuDs6iAQvZ4rj/d9Eo1Y0NWqhkECVgFSaAFR4cQmWJVIIErhiQYoAqRIsM5mfq/uxXOKiyagV0rXEX431o597MizuriVf7rbJU/KjqCLZYwYXzM1DpHuFYs4kW00fvNqIpAXLUnsDopDpz1knTXU+vBlwYKxQQoIgFdubBkhlLTYswHiJAtZtqOZYS+XqTYcxM9Gs4iAF69gf3gNtsbTrkVUg2477drdF1iNbrQGDv8nwBX3xjkdjSS/jYB6fxD//iByDVabHAXCpAbPr47S9t4eVn/g1GZt7GQdUjT/9VbK++gfW55+k5Z0yVuYEi+6a6i3RA5cgudewfALnX419CRsKViZeVkvvtcX5s+hvSznBoqxWpdRSmX37aaD1w2YOY7bmXsLv2BkLdQwgMjHIv3smZ4/x8YXsb5VIOe6uLaNAquZ7ZMF3XQYs1IJIdztuXoy/B+MvYBzoFVtbC3BkkplmQWBqIGnUU5m8R03Bf2VnprS+JVamoK8D9WwV54NwmqSkawSIHWY1ahNtbyQ3m46oGTyFvCODdGhYqwfiWhHPXRrE9WMDaUQLSfQ9D3uxXkpUEund6sTXVfk7PPvAVv2Izo+9T7NjNaoh7UX9rlxgRmI1UPjXEd3H2hYQqWV3Nt/qzLMxhqvkMYqt30E9MVCqVpMcfQrpvCLUBAluZbazfeZ077bUX0RZmTzV76yucuTp09CkCV0f5Z5GAFQNX7cDAPOpYLxKdWRv9t8Ws6yIyMVPle3c5mIqROpAxV7GRCWL8xsDcOK3MX8HKwmWb+vWtNP62euPNyyvJcMaY0v6cUbqTWlykVl8htnr60BCMTJCqUqOyKzXBOgVMLQ8pNldMaAySWUicXA4yqQQDvd2K7ZQk1IZNWUM0sq6t6jECTtOTAwZ2iQGr9c0gegYeQ1CuIhjI69qntkW5M5ZTj3KOtYHaWorEMb9bw4uXyrh0/SWE5QJ3qfDYR95D57e0LErTFjaL+NR/XeJ/rs89x+evYQJXvaNnkB44hq3lS1h/8By8ze/69lqJF3LDSx2di3faxks6FW/4aZd92pC5YO8F+mNG2s93cg4wtlPymdec1r6NTVIDVcsPqIc+4H8XWrmk9uZ4rK8dJBrP2xfWfr3twAptafyKdZleAZvUlo+BlwQxU5H+EX6kvHyfq/oYmNLbkHizKAH0Bu4sSDNYPEFJeGZvMJsrUgs2OWNVZrOp4oKhYQh5M/OJX0P6/DuNIW/YLkECfNXeVazIWVIJptG/CSxO72LraO5hyJt9SG+hD+MMVGGv7ZyVakRzrSBBDXrLdv0xtd9gXEwk5Y1lZPtPo6uwRarkKQJK2nvVgh7Kj+rOOvo27qJ3ex7R930PT1tYuI/1qy+inMvycElGa3mrvqyBpO2tBezQZ3TiNFcLThJ7NUjsFQNXjM1Sake7aGVoaWTb1Nb5zb+95Qw0ZIzW+2iuHsJObAcb8gY2q2VkN26iE5Fcjkmwg2GyRS77SXw3W8XkmClLIADD1s7WBj4F9ITowMoKMNBPAEzXDroHMtvxl9+DnKG+SEAqMEhqY0aGNRV1HbFZUo65pGgY+4RJFcjsPGUdkBNgSKaqM9xGvYBJlOoJUjlPItAs0eKPRacklp3AUiAY58rIZizGdxaWaYwsVQPY2+lCrhQncFTC/eer2Nm8g8P9IZw4VMd3f/+j6EoT8xZuCpt50y3JktrvI//nV5AtNFrnGDO1eOtznKU6fPF7BcAaOcP/3iX2ylra+77Udt5J7J5zJ7PSfjBCZ3XtR8emFz5DaLYvfi7dHTh5a6IbmJBsmBmvD1iId8joNmCZ2mv401te+7a431Pna/L6/NrrkRzTOqcwl8kMvWPjRxAdPUSqtjBqe5so3LnaMkIXpWkTltEaxr0WWV8fY54CURGyhu0SZKo9FkuQ2CwR8obZW7HAucLe6vZPvt825E2UmKvtVAa7EzsYukUvR6aCyuo6kvERGqQehrx5M4XFg6zTjKECJA6oFCPfLxTCGIjzGQxytYrG+jxGKw3EinuIHH5/a+Rqe6eojFwmi9W3fBf6F66iN91LADmH+S9/rpWD29WwWJSSCq7s3k79JCNjdek6gat5TExfwNDocRw98XYCV0dx99ZXeMgba9HKldBZRE1rcCVKtJLx6Ytc3cdsqJiKr0IscXMgjtTRo4i9693cK3v+zh3USyW4ieTarvaFlf17LTlci5C9bYs92OqOPB6PWzaAHzHf0IkIgeVdUt8liIFKRBnCINUceyZ0LtXF/RCynXOtNqggvsQCulegOQe1AFbsZ0I1CVCYJWGtjjyBtb70Co0jeaQDEVSqN1GRH0Gpwjw0EPtUTiBDC4RqLYBKqcnMtyBRfyaqFMFYFslqEaciDXzLB4qIlia4uUOwdxPNAuubde2OSWp7xN8f+UfPYHGraHmXGbi69eK/4oBqmFSCEyc/zH8v3fycSSWItmdh/byd34+DAVTO4r082UeagwFUTELWlRzcbXAHM24TqtU5q1VfJ23xf63KUAx7YGV5wHQO8He99ueNw5jVStCpnPZ0kqkWuS29c5nR8cOIT53gwKq+t438wiypSLfhXdyuQfMDpn7z50EDUCAQ5+AowJgrFlewHkeABqpGXbW3qnN7K6YSVEPecBcMkmQIedMkRmp1aA+V5XtIbodx9sYwVwmuTi+jNqiGvCFwRRT9gY8Yf05FNjgD1dRiTO13qxrGW/rErW4U9iDtrWNk5R7w6HsRDOtURIDBo3qjWkGBmMy9keMYqBDbSOxA5tZ1tUZd5Q3eL/iGCMnZGax+6wWzp7p3+zkskhrt6Ml3IN0zgkef+i5sEmO1yO2tcg7laP/660Ruk5pIk+4exSECerFoCnVaVDyYfQ6b63dEOppLK6ur6D15Cv3HjiE9Noa9W7eQnZtzrc19xDRfk5dx0HqG2JwvovJEE9GIaQFDCzWOSIQ/Ba1EWVnIs/4TLEMqMzAliw6RTBPAYrH6NCNykEpYzpIKsFQj1qqXABcBsBoDYQqYkyyAFY1rUjIhbLBUQEZf//HTL+Ij73sHHSu28kSlHCKBDFKqS4XgMBAjnYe0gWaWmLKk3qUCtYMYXZlxWlGChmXNix+/JgsX7Nce7OLv/cfbuDa/5/pMdteuIbt1BwOTj2Fw5u04/vRf5YzVJre32jOktSvD+lm5z+7+5aBYKvu+ZR9E3Ys45wwZK/F7C/wBAPs0nYi/V925HMnHca/FOOd3Bpte7itwMKyVdX2SbbnWYCzU3Y/EiQs8tp7cqKE4exXV9QVjNR31Bae7pGPHIOAWUwWKYM1hUjMyeys2UDJj9ihXC/JgzYyjp0HKLeRNkH7Xejew0syhfyWCM5uDQiV4KPcw5I1HYbv/dpI7ANqZPUmSbP9Wd/OpXtQHFVcK5fVlLB97J5qVIh4ZnTQEUFZ7iupJvVHKI9M1RMC6hJ5mmbtdKNy7zcE16yPGXDJ3CsmZDrYhQrJmIiVDbeIvZux948rnOVM1wdWBRwlgDROwusIBlrXIplK8ivN4GYmlcOT4O7mLBFbu0vxlrK9cI/xgNMKvF4vYfO1VFJYWMfG2t2H6ne9E7dFHsXrpErILC7ZTqGTbJqvF8f7G/3P9MVy/ncejZ9PGE+x9YwyjRQQLrSVGRxUys5uLx/h7L+/uoslUv7U6Z9ID4RDk9V167iFub2WvDqa/err5t7D/Qwt4zc+uovsjMYU9chizZNnCP5t2TmVLZYOrCFWPJLWa8qufvYa//29FaDRn0cpp0Pi3/oCp/65h6BCztzqLrt4pbC2+gu2lS57K8CP2fQUe6rI+d1AslRbNQ8hBemU3zAYasNoPSDGLKMsZtLnXZQ1CnKGJE1jwxlhZH1deUw+P2JmxkmDXTbyycMY0bnfDWazBkv4v2SIPszOKH3kEwbTYll5euI3KygNlwINje43HvfU37RrltuFbSxQQOwSZn6uA6jw0TsxFnv+uVwttIW/Wf/dXcOyTv2MZ8mY7nUNmYw9DswVFJbhIKsFxzkS0Qt48dMFgKWL3X8F995+i9lNZqoAygfxuLoaxpISo6kV95T52znwThjZmEenuNYxW5pGrvLWGUnwI8Z1lxAeGEaTns3P1Et/cQHoXzmhq4KrVKu4wUjaoBJU2wtn6jwEoZlfF7KzGZy7gyMm30+8LeHD3q9jdWoCdtBur248ZdhKifj0y/gj/BGkhkcus4t7sMy0XCXZS3NjA7Kc/jf7jxzH5xBM4+Y0fxvYsMW2vvIxKNov2scgKOFl9wyYd4HXRGAtL2M0uYXvvBPp7TAxiRGEo6w1jbZLar9i7qIVskeiZNrf3iJWiMYCAUChOrFVMYbEY0Aky9wt1hfzSLymVMli/ZH6tohFdC2We9pd+7Q/xQ980Y70ANVymBoo4fjLcMt0SUflHal2Q+M4UK/jXn72Kf/0/iVUsVKHOq0730EqY2o+p/7Kbsxg5+l6MHHsv+icfxwaxVnu29lb7m128yUGVL/tKc1BATZW2JbZ/YOWeTtL9a1+GMbXVeanVQqt8nQLBzjtLG1B0uwzLMqzBivG39+vSgw7jUT9lOYFJ5SwBj9jUcYTHD/Fj1fVFlO/faMVK1JRzVkRrp89Ka4esG4RkHXDXUkiKC4YgB1gMTEnM3qqSo2MRnb2VCHlTvPu6Y8ibZiyBlf4MXecOrXSBs1fGUI02sDKdw970w5A3dtJX6EUs4777T8wfisdsBWDlmhJ3pfDEsDK9ETuYkUmtTM9yIMy0QNE2P4mt6ZB+VLdWMbl7gzt0jL7j/by+0tqqSED1MHAlBRoKADeqkphFMFcJ6sCV3NbHWomhH+WWSPXHANa4wlqdOPNe+vsuP665YIDx2lu/nMYi/RuoyeDwMYxPP4oYsVSs/NnrX0A2s2pThhkgCdmevY3C2hpmnn4akxcvYuLRi5h/4QUsvfoqamUtnqB2pf4mLjhO/pLpW5Mnpop47noVjz4aQ1dCea9VYQ48AzWuCpTRwiZauRLzKtWEOhoFZBaUWQlVYzsE6U6oO/JCVE53t2DIoAAxdobK/+Qv/T7OD/ZhejwJy0W/mY1Vv3WX0tajZOMs98KtbfzBlVX89rMLBKbaY/tZX4O7ZLfu8g+zsRok5mr85IeR6J7EFoGrWpsLhs7r8Z/WOv/BDavtM+RBSsi+Uj+X4GXl4eZd3O/Eb1ePvix9ecZy28GHVV6n4+pRG8aqVZ1zfsCLQb+X+6vV0T706tfyXsW63QxoRMZmuO0U+83spiptdlMakJJdB1O3Y+6icQdqvUZAydkIGgCD3N4qhGaVqQJJzcdC3jD3CyZ7K+aCof8bfsAy5E0gkUKImKm55i5GF9KYmU1jI5fD0rElhEoFbo8V6hl46IJBkUQlabn7r33nH6Aap6sA66tFwQq0VH9bK8j1TSJcKaA3Qc8ipARQho5cUKRZq6KyuYKh/BbK3UMIJ1Oo53PI3Z81Vsn8mtGnpTaWTJyXCq7aVIImAG8SBm7u3/oK1peu49iZv4CB4aP8szx/BWt0rM6DE1stNsxlW/0WwuymGJjq7hnjHtCX5l7DGlf1VeEs1iNxOZvBrT/8A8y/9CJOf/CDOPW+9+HQk0/gzpefwdLlyxbt9CN2o7/DrKAcfmoogBdfD+DkiRCGh2Sh31VvOXPmGQ1zVwoshl7L9KiplhywKV9uMUAGNKN/lmyjBGO0EnH+7A3MKiX7iU/+F0xTv/rWtz9CR1bxEz/1ZdxYyuJtb93EW58cx6npKkbH9WUqdZoIbXOopkypjs+9uIYXZzO4sbaNa/erpkuwBqD+ReRn7hfyewvon3gcfZOPoZvUgjuLl7C79IqN81Atr534G/rcr8Nbed7vRzsiOLiyQ94K6ZzdMKfYT37oWuOvLNnyuBF8uNVt3z5v9mjO1+ftmtSU7jXZ1++9HGM+6ixDE4hOH+deyZvlEso3LrXAlFayedXpBQyqvwPw2k6VATPYTVj2WXVVKeyt+OTIjdirSsgbAlZBo70Vc8HgKeTN9AaGbskIZyvEYM0jtFOkma6ESjH3MOSNi2g+qVoHWnZU6jz3hUIEPURGpFQv6qSqnSH1X3H+NcTe/x0050mW8wv7s14uYrtvGncufgRnF19EkBYAmRtv8J2gvB+YwArfIUrgyqgS1PVfBrpV9tPS3sr6rSvkd3Dlpf+GAWKsmEpwfOY8/T6CZcXeyvktkS1/M1XfxPRFUvWd5X9vrZO6bv6Sq6rPutx2KWUyePW3fxvTjz2GR77hG/DU930vih/6IL78r34VtVIJXf396Jua5G2uFIrIb2/TBLwEdzG+k/agUsi1xV1MHifcFJLw1gng3laeFjbjGJpg2+YUdaDqzZzZQjFv6IWyMGLnmw9kCzZIBcFKnEDuTkEyPoBIGDJ9wNweKDsf9ATY4soufvr/+G1833vH8K1PvourFtn5zJqMazdKuHXrNn7rP87y+tOpeZw4lkJXsoTxoQxSCVZvEeXQHtJ9JeztBLC0SX0yXsXzb8why3YgSg0XRkr0Gvc+4yTGdAw8rd/9E+wsXcLAzNsIXD2O1OBRbD14nq7rjQ7r8JLeC6DyWp8XoKlRKf6An3ex9KjePkEehHhlZNzLEdLJLXEawvZTrk1+Q1UHVbdTd9AYQX1K7Vv2WI5Rgt19iEweQ5DFTavXUSE1X21lrq3FRmjjFVjpxQu1ra/PiRFT6zXVLQX4xMnjCtIEyd0w1Erc3opNpsyY02xvxZirNhcMzJidwOV2KofaNqlaNgI4cocYEURJJVggleDDkDd+RO07UNVwEvOiHsFEWvTnBoH4WoZUr8QAxvroPieSRoLBVBYLf7Q3dBQyMVaJwXFu0J69d4OzkiCVbyAYE2yiPrOiEhT2VlHhw8r0zsg6eytJ8j4+bpH6L7e3hqHx0xidPI1DJ9/OQdbNK5/nhu7eRCbm4ywBqse4iwSm4lucfxXZvVVPef3KPKn+2Ofchz+EicefwMUf+RFaMBT5LkqzMBXhxo2bWHv5q6jl3a7H2317bnYTH3pviqcPh4mpGthCIXQCzcwQAj1srCgprzgxOQFa0IRLQiVYpr+ZE9AaPSsegqbBv1vx/NSxgT0/Hh+QxhG285MWTDxUTcvxp6wbxmTk8hX82m8+h2efvYVf+smPYnJileEjnmZtrYZbV8oc6zW481EBxjKZKl6+tCVcdyAngB4ra7iARtiGQbM8ZFwEHAygMs70TBi4Wr31ORSJuRqYeTtGSCXYTyBr+drvopLfcC1Zsq3LqR1+yjsY6UQf4vX+hrwxCV4nRuc1l36Ks2+eNzbFnR2yaos9YyW75oVju7wzTfaiBml1T+l0f4zn9FfSfu/NL5cJXEcTiB0/hwCxLiw+VnXhDoGpB0rwTi/it//AIr0V+6Se0Vgqe9ut9nz8CLe3igvWioAVC13TqNA3A1i1IlcLqvZWqguG4Y9+HCPf/nEOrhhbxeIQsnzBeBc3Vn/QtY7pm+Aqwep8AzfOL/65D3lTjBSwk1RZSKOYd/+JeyM8q3+1yLyoB3C2S6j+KttreDDxKErxXjyNDa7K5b1Wsu7flZ0NFMffyv1TRScHOKjavqyEk6JnysCVRAwHYyvb2sHBVVnZRRqxOC9UghyYc4Dl9B5qwpikxXsvY2P5Bmes+keO4fxT38EBF2Ou7MEVMR7dYzh09K1IJPu4i4S5ey9hddnOqFjfBvOyxx+4Yjnuz81hnRjXAI0BmduzqK6ucn9hzVqN754L9fQgMjqKyPAwuv/Ce1C4dQul2Tuwf/+8LZ5/64UH+MQPn0RPSIZqUJ7sJnAUYaFZJulziD5sLGJ2nEy9vEkzWhZIFoQfqkpAeFdvq9l6PGq5LZCN7bj8xjK+8NxtvPH6In78Ow/hJ771x2k8JLWxtKa4i5Lx+T8o0IIqwI3PWY1N7j9UFmU2lTYwxkvx6h6oBghUNdpa9uaK7PK3dpyxU7mtO5i88D2IdQ1j9OQ3Yu7Sv4e/du4PUPlL5572zXSjoJeQfQPMGHZ/0j7F24me4XBP7zxMuLM61sf135LnvBpT0wlbpS/HD7iyvz4VbrSXbwciFaaLBtDQ2CGER2do9UbsDan4qnde5yq/9pJgWT5s6zD/hs8yzGk0FaA/YKus+Lg6J6qALOZAtEgTRYwAFqkF62EBrhR7q/X//is8nqBtyBsCoff7N9F9dwdpGvdLu4tI00oVfTUl5E0P92/158neaqdrF1uhJdfdf5w40N2ULxSjSNJt6me74JsyCsSM5ocfQ7q4jcToSMv2ygyoeLls8i8Lu6JUeQdRHkRZRnFtWZ9KqPy4OjCsgCsj8OPPvaUSDKNtH3zLv1Ww3dBdf2GmMYXtGr1/6zlimNYxNs3A1VH09E9hfekGDx2jTxuNpXDoyFvRNzDDy1pZegNLpOpjNlTuY5sVZ+1lDNYkOjWO4EAPMq9fQWVuse08s12rbm7yD08/M4UI5QmsraGZzVnUD5c2o5UuU6ziU7+5iX/8A7IIHUMAiW06QJSNQwyQjNOHAdEu+jDX60n60IsnEaMSEwbqjLHi+QxiMw5LUmtxdv32Bq5cX8GrVxdQye3ghz94Fj/9LU8ToFsUOE6Xd229hv/wr8VCMyoHiD9rok59I8Rvt9wCa7LyW9Iu0XC99rdKm4s62e3n9syltrT03k2/Db2kAmQLTsZard36HPwBnP2LdMD1Oc3ozrn85XA0+BDP1jjh7l+UiVv3l1PtTiJ1eJvMbWmvzTwQ+i3f1C5Zd1xyK9O6FZ7rcijPzM4Zz4pfobFphEnVx8BUk9QttYW7BKp2LMq1ap3k8Jfal7S/7PKaWSf9ZCtblKkNNdbXarzf+slF+Zu7YIgKQ3Zin5o1xmDFhL0Vs7VSmSvZGPLm6Cd/B4mj540hb+i7kM5hl1SCwa0kZm4PInk7gZWJLNZP5ARzReAqmOz5cxHyhu3+69kewdKUh8S6R/aFfATDbLcXm0+rFWSrNFHRPRveuoVwclzjvXTdsPVkKyVElm7isbV7kNiOTFLr1PNZ7N0mwBIIt4MnxjoQtcBVfsGw/gz/t0nnmU1VgIGvQNjUaEUlyOrnhu5mcGX/Bm+t3eGfMVIDMjurUWZvNXoMK3OXsbe1SKq+MxidOMttqDJ7K3hw93kUC9suZVuNrPp31ftYxmFZKo7K5roloNJSaVKZWyAVmkxArJtAVRbubTOPhcZr+tX/uYru+BX8zPc9QTpdAi7MZirIVH01wUrhdfpcoE8PfXbpc5Q+MwR8NlEsrVDf2aX3uYJIqIYGAZpEVACsSk1GtdrgTNPKegmFUhXzSxncn9/B8vIOhpN1nJwI4Oe+7Qy6epjDzq7WzKW3B8wXGvjRn7vfam9IDvAxqcnjAQrWiwNvQVXx4M1MAg3T+Onp8XQCqNRCZdsz+nLiPVOk8vsQwrFuDqZ25l7g325iwfs5pHaf1dzFud/YiX8k420W1ovPUd1Lcw6iyf4GgM7YqvaVm1aOl5to30Zt6DDVLVnlty5DPe/deb7XZ6PVZ4bL4cOnEByd5uq9OoEpBqjcy/LeBudXQGub7AK128swAzAZsucBSM+WMCN2Yp/4N7O3inBAxQ3aawXF3qoi4gmuLeD6j72FGKvvtw15w1ipuQQLeVPB2FIvBjaZSnAN1RJzwVD6cxHyhu3+G8z2Yski9l+bSwUIVR/zos4+70+Lv2v5PR7iqGt7HkNRGrRUL+qSIXOLm2HpyzS5RUoFdB87x51+7ty5TriI2CupLpinoAkcKSpBbm8Vipr8V/GZUbG3IuYqFLPcCch3EhrsrbyIzEHUNqkARwlc9Q8fwaGT70Sg3kSY6ikTq3X79pexvfXAc3nOx8zjlvU7y+8l3bdUqI+HsLEIGGNRh3j3YnVSiUfCBHEWTeet6nef5j713y7TQw/iEz9AC5ESU/WVhIqva5XALjFTAcaIsefxLH3eCu4yvnyDdM9TyGeb2M01kC+FiCEsYI+yldn10HsdrpIKmBZLwXAOCepvI5E63v5kGb3EekkRAkAJljgkGCxJmxtUA/h8oY6/8nOzWNmqco6MSYSbKZc5jxaWlXGoxVSh9W1gaV3xwX5DqLTnNd/teM8k+meeRrx7EnVi6RkzlV275liGn/r8ixso8wuoZMucXvP5EVdQpQENP01xa7oX0ORnddVJKETr1VI7QPOPbdvrMTFWkkMai/zOgZg7b5NpTkJteQ5S3yCkaByBoTEEaSJrbKzAn3h7ZvZA2Ag23e66CqK0p6celU2lmSGk1eSiHOGqwISwt2KAiia3RpV5ZWesVZ6zV3wCdQl5w1wwyCzkzeAuirM5pFdklHbmEc6nIeWI/er9cxzypqUW0UTFIcw3FROm+mNTJXON0L92C/GVm+j6xh9seVG3GlrZ35Wddcw+8d3oyqzg6b4kd/q5N6tMEBw8lVkMG67mFeBIVwo7XyvpVIKmh8LPFzljJfxbmcCBzgUDa70zuNJG1iqBp7W5K+jpGka8a5CzPTXSM23tziOf39LXcEBiPf5B94s5W41Rv0/2TiA0IWNz6Rqs3x8NMCXTwxgbOYvdjQewF8mhHdbyqd+6RPf8DD7xF88S0GG7+5gakIB6hdiqOIGrIAGrMjFV0W3mLp4A1X0kAlEkIox1IlVkuBdIr6NZoX5H/SuQ2EZzT0ChYH8G9W1Sy0t0PEXvdl6CGsy7KSvLPF0YJSazD4r4iV8oYHWD2C4dvg4ql8DSU08Rd0cXYqZJ7FUjKqOeaFhfsu8HLO/rfDiWRt/MW5EeeYTGtjK251/E3pLiINeD+B+yvF6g5JDeL6CyzvnmiOyNqTIrY7yBDO9AxJmt8lKeHSAyl+Wc3/yXcVr2D6yMjJXuSFtz3O6pBoKcu5DsoSx9WhjTkdqkculZBIfGEZo+gvDxM/y7NnudqwL9iREcWYnkmlO1T2vCaEGjvx9Oq3Crku0mhPZ8XJ0TlviKnQEsZm/FJlI2qbKJmfu4atb5RGrngkEmVoXtKsqfS2B3cgPBzW5MPRjAUHZQqASP/vkMedPmlkCZsdjXjWoQLNxblGvSZOTKFdx46w/j0O0vIkKqU/1Tav8tI5vNod7fg67N24h1T/Dxa/PVF431MXBULSrgqd0YXdhb1bg6mBBv+3m9vZV5FyE/zyZNO/9WxrKCxIxNzTyOsYlz/AZkdpexuXUP/eMn0UtqwWTPEAGuq9hZv+s41diLud/bpVGXI1obtxZuYPDCMaSPvAMDA0exunQFOVJFNlo2XSJfV88YBkdOE9N2ggAiqVpXZm3raP/bfVxlKf7v/3INv/kni/j9X3wPJicJEJPKDiwQNDFNzL4NWcZe5QlcUdtKAnjJdWEkrrJLBgjYlFvPVdKNxa2rl6B5NVfT0X//5L9ewb/+9/eQrKWJaY6IMiWZG6mHiaVk5QpSSvuux0h9nWii1qWCMNkFT/oZw93Pm0c9xsb2TDzKP+z37tJrXNXHFxwe67Geadz7mFNZajpvM63Xt8Df29J5PpHexwhuN5S5VSJ5Ou++m88JEGndpX3ocIci3kGX1fW4DwxaC0z5LbM6gyt31kp2KtwmvXGV2thY5iAqODyG0BSBqzOPoUmMVW3xHg1YZfgXLwMEDG3Qcsot8GR+eWXLnMbrblcmOo5k7U+XBkmmPpIkYW/FwRX3zM6CNBe5V/Ym3yWo2Vs5hbwJdQ9gq2sbwTsFUgmmuUrw+iPLaKghb3oGEYin/syoBHeTO6gNMAeCPYbjssVbqrooyDUC3KejULnQhESzUJ4YkHL/JN3LgDbhaYW1/mjQhLob6uK/+5slhKIx/s5kF++YYv4prVCM1cWzjba1v6Xys7W3qursrdpD3siKfyuxIUJdGMitax4lIDV96HEeWqaQ38aDu89x+ykmW2uzGBw/jZGZ85g6+Tb+vXDreeQza6Z3xMuC0l30I4vK9DIbrmuv/g5GTjyFCPXdgdNPYYDOMmZNsDAEfqm/qkBsee0KNu5dUkCXVTskD22wP7e4nsGjH/s9fM+HT+Jn/vooJtJ0nIWqYX6qiMGSA1VuzC7Vm3wXngA1IrcAP5KhQLlVqdTehtZQSkCdQNrnX76Hf/I7b2Bxg4BbgjBcI4deYp2T6BY7QWU2oQqbOg7kAsQ2JhuoEZhqxJrGe+HxsRyUsbb+7vdMXCR26mne38uZJWzd/RIqnA31X5d3QOVchtY+P2X4m9sP2vDdTkJ+Jl9rwOImXoAV9pHGCzuhnrdLaw2a2sGQNTZvr6ddjKyVHTDzgvI1lsYth5d26cvU/2LGvvWFe2isryBIwIqpA6MEsuori2iuzEH2Da7sWuoEWLUjkktO4y8zsPL2ujvVwSdFps6JKr6tmEqQGbRX8krIG8UFAxqOIW+afJdgHCsENAp3Sxi4T6/6DqkiynmEEzUiC/9shbwpRIvI9bDYf0ZQxdUrVi4V6EGlg01UG+obJyEpiZ1VZZoEGozV64m15VOfMbOnatAnlN9Bb0jigLiez2D39usibbMqfFSZmDJub9Uw21spvcZgbxVX/Ffpr6Wps7eKWjgHbXI/RRyg85A3NLERszN16Al094wTBqhwI/SVpdcNuRrUprX5K5yhGp4+j76Rozhy4QPYXbvLj1fLBf1ts+nn5vfL38TCcjAAtXD1j3mA8TDzEdbbhyCpt1ODA6gWi9hevU/3PI/qJi3GHGN+6svVHKLIcJtMZZjf9t/63E3++Z4PjODt72jgQ+85g5SslCsrdkuSbrcd7NkWjnFa/VFunWC/rs1n8cK9VfybP5jH0nrdUEqT+ulO9x726hkMNHrRWyLmSma+Q2soxiXUeryp0KyvU/JwT9zKMkqiZwJDJ78BoVg39zm1ffcZlPYWfZdzUO1h4r9Hupd5MNJ52crSyn3klhz+Ohhxs4vywrioKa3KcRpU7IGHEVi5p3cTlXVpy2s4ZAfc9OdFac6dUn/WW5kihw60MXB15xoCxFQFj51GcGwCgb4BNAhwNTe8OB20a5O55frjVnncS2w/5u/FkOEULleUytiIoOJ+gasCA2Et5E09JFgrnb0Vcxw69O0fx8hHP94W8iZ3toDdqS0Crl2YuT+Awb1erhLcndykAZnAWlfP//Ihb4ZygxheO4LbU6bQKeaYaCrtQT9ORxuo0sK+QPNzFwGjdP8gkjtL2OyZRG7hLqn0+tvycyFQlH1wC+P3X8L44mtIvuvb6JYHsXNbB1a4wXlJPL9A2AjsDPZW8XZwxO2pCiYXDLo+Rmyl0d7KnL/BwyQdOfYOjIyf4YdWFl/HwtwriosEa2H+qxZvP4/s9iLGjj6BnuEjpBY8ym2w1uevivun3kd9dTC/B/ox0n4ktFt+NmgsaKzOo0wfJnvwJuqYotag+ZbTxhzrljj9LeS3/nCNPp+hX5/Bh97ajbe+RcLZw31461FRsGbypq9fa5f6h6QEkcwWG3j+8hZevLeLayu7eOFayXSv2iPjNkMyNvp2sFvPoruQQjlVpT5gc3dli2MWclCAirUxRmCqb+YpDqoYg7h998vYW7rsq5z29qnnD25gkiwJEDvxuzjwk74TQKXlCWkHvN2c9snKK1vlnNa9BX4eoBtAc2KbpLbfXh6xsQzAqa1qh2wNKbJ1Cm9AyIm1cho24dC+dtDG1IHNS89xxiowdRjB4wSw6LvxYBbN7Q3XMtvb1D7QG/+2mh68Svt9UUl543Bjl9dKjEOpUPcERSzBujBq57ZWtWIrUHOTwBVTCS7+y7+Djd/9ZeuQN7T6Z85Bt9IZBPkuQaESvHVsCdXBAjEz/2uHvInUokhUSFeC9nh0VvH/2Nz2vi6RdiEn45FeYqoGRjB16SVSA0oorN4gUNWH9NRRQAEtPNoIMSTZudu4X48icvgtGMgsIzk0zsPE3f3Mb7TXzW2iCOQo4Nh0kgitgs7eysIFQ0NhpQKR9vURB9XtZY9PnsfI6CN89+LO1hyWF6+0VH3OIvpdZmuefxigGiHmSmWvGLjaXVd36mqN0XMebiOYGSjo88vwPiLZla5Nwsbj4pj7mOlFPv9Chj5f4r/TSQlTI7OYHIzgzEyUntca0l0ljA1NIRzo5aFoZm9uokwqVylRxudfWsLiTpVAVd2yhXowph43Sy1Ux1b3LqzF+wxyUDv9WP8cPPoupEZOcSZ1e+4lZAhMaUboTv3CnoTQrM68zox2wNEIVt3Sez9vTHdwsM+5Hii1dTRKt98ML81+8y/NWI8VsLKawCWLY+3n24GLBOdr9wauZMssnaBqL0OnOZ/kIY0enoDbVsmZXUjDo9zeKnjqHCRirJrEXBlVggf9vJ3vp/Z82tkm/ULACmx7u28Wq33FvxXbNcRsoFS1oFTNc3CFVsibhmvIG6YWXO7JYW1jD5PXmF+lHWIGdpCMTaM4ooa86SOmK/ln1gWDFBALjG7SkL2FVKHXd8M42ychkkzh6OQEtp77n6j2juK1TANH3ngNff39nPVrlIvY2tzEzcQEdg8/QizVZQwfP4pIPM6B2+rLX+K+prSAyarIHPiy2HGBQLtNlABPdC4UdrG3snHRwByLEnhL903h6Il3IhrtQr1Wxf07z2Fz4y5n0SQp6OXOGP5i6r/C3hoHVQxgTZx8G/rHT2H+xpdQU1SC7VDIvlQZzsDJDUzoz8mmBY315Gx+lySLc27i/NZmCzKu3dumD4Gtl/RnFojpO4GhmccRjp3A3totbMyzwMHFVqlWLexcZMOX8Xj73dwfQyVEGKFf4B+JxqPs2g3szX2VrjHrsRz7q5cs03kpy74cfzOF3zrdgKOaxiqvV9HXITPTjdGfM570U5DffO4Aw8smeu91yfsoz/r6pLYc+wOUkl0ayT2vdXmShxztV+GlZPVfNtGAgBVT/7E4YLGJGUSmCWAlkmjmsjRH1Szz+hfJ5pgzIJQsByvN57p69dpdEFBLu0J/wiZqxlyxD9vtJfwYBTlTAdMkzuyt1om1YhIbmaEXUDgB5WFvmAuGVAK74w00aLIeXE/iyP1hhHN15KVdYmpItcgmcsVJace39WshDVKF0QQfXyognYtj7VCZ24oxEMSE7ZT83g++GzMzM/zvzE6JAI4sgBX9/1Sijl/diiFKmGM4TsCK2KkG3d+VRhQLM09iKdKL1b0cCrNX0Lj2PF66+N2oEriZWngVF/oTnMlioPe1/+8XMP/Fz4L3GeYBndcmte/mY7vH2Mci7AwDxdzIHVK7PRUUY3TFCF6fNxyJc7up4ZFjxE7FsLp8HffuPItCblM8Oq7udHO7oNVjuL31KlcH7q7fQ7yrDwlmRD5xmoBCEuXCjrARsy2nfQQLmP62EutRQzaMOVIboNKXaAX0JItaDlqM9ZYLW3TvHiBI71D3yEmkBw7R82Gew1cMrZJMS2j/dbb/hKFEWVeXUx3egURq5DTGzn0rEn3TKGfXsHnrC8guXbFxkdDBWIf9S/vMun/o6rU+TfRsm/5YJ2LMZwJVzs0wpzhIcGFM4QcIOU+wXmBVJ223/supLW7ASnLJ5h9c2efSAxPzStL7M2JOQpub65y5SoyOIz4yhsT4BD9ey+xa5upMnO6pbHtEf3Xa+YPpp1Z5JB6sWbBWXG3E1YNhMdGY7G8YY7X3wmdIrdfNvbJzB4OMEeEuGKIEULtQ7GUkShVDK0n+KTV2eSw9uaaol1haxfD5T50ooKq8u4hseBfVoYQjqMoSqJKVyCJMugmPpkMyfmczjKkuIBkOkDpvDD3BJrpuv4hapYpS1wC6V2eRym8gWs7hROY+Thw7htTkYbrvATRu5nDpUz+HQlGvYpM5i8TqaTcoFwCJp5GkNlaLn2PAK2Dl3FPmiw0eo5cA1ODwMUxOXeRhZvK5Ddy59Sek6iNGVxb+ifTKaXe2yn6wZ+CKAataOY9Yqg/J7mF0Dwj39aXclkUO67FKMn2rv60mfONxK5hlHtPa31PrNgH7m9gkm+PtwkBnbnsOmfXbBKxOoGtgBt3EYDHHl9XirqFlBw+otBMH9erGuRH6+5AeP8cdFq9f+5/YnXuZWNysZb32Yn9eA0BeW+3OUvmZdzphqZxnXSuQ71eMMJxJx6DKWvY3YRknRC/Ayu0Bq8qe/QAryUOaTsqyOyPZnOx8VeEdSHQG3BqlIkr3ZyFVSkhNTCF97ARSR4/zyb+ys23I4V+sOr/kmsPYl9rPu9fZiShTiWJrxdVGjFVS7K+0yVPmSRv5DPae/ywBjF9H79u+RdhNMWN2ysdsrQJxAlaDQWz35xCsNpFrrCFfW0PPNq2qQ6RirDJ1a5PAWORPn0pQAVWFvQUUgnvclYQjU7Vb5qE9mEiS6FmPJoixo0O/sRbCdEoAK2ZP1T8xjfF4ANPVLfT29KLr2FlMHjmOweNnEO3uRYDynwjVUPjtFVy/9rsolCw2VKhOOq3AFT/XIC281H5f2c4ypkpk+QLt1hPJZB/GJ86hl9iPGrEDCw9exsbabbodNZ6X9Qvju876gh8P7NZSLuxie+kmLzLZPYT04BR6Ro5QvVWU87toX2qYRYNB/kcCua0M75PUQQAqczlqWe5XwcDV7vIbXDUW7x1Hzxhj+1KoFLYd2D478QdYvN1j2fFsiNo6/MiH0UPsLVtkZRZfI0D1OdQVlxd+ynI7Lx0AAOq8l7u1Xd8+9W+3srxgCP9t2jeokgzp9ws6zGe8ggGnG6Odd5+KvYjkMYfk+bj+EUtOeTsEV+q1e8vpt3yt7NreLkpLC6RKaKLv2En0HDlGk1w3ytubaFQqhjz768zer8T7U/B+1kvNHBgwQMV3goWUoLwh7u9K9VcU4LH/ZNQLe1j/7/8PquvzSB45L1SCXI0obHXkZAyZoQZKsRriuw2cvDeD/pUw8gRWylKBOUsS7EkwtO/J+cBEAVW9c3UcXzyEzel6G6j6vg+9R2OqdkvcaSKTgLITi8lTXXWMEWP131aDyDYkjCclbocWSaaR7B8m9mqUVB2DiLDYi3QPYgSI3hut4IORCp79Yg7XbxGoKizxsizvjax6MwpYqgRlWVH7WQRb1lgrUuXGutE/dBjpnlHU62Xsbi9gaeEKalUtCLnEnIFKwbayeG+wYM2MKbxJYW8dmc15hKjvJHuGkSLWKhLrUlSCNTgxAxLsrUwk25RexCmtZHPsa9OPVQDIQFSeVIIBYonTw8c5e8XewVKmkx3OsLGhMtfru5CWMLup3sNPY+j0BxCKp7E3T+D9xh+htLNgcfe8PCv7NKI8MxCxyi85luW/TZ2Lt/F9P33M7v2UDoap0oCA34lScjzqX1XjBqy8lOkPXHmFh07nzC+BLWyT3Mtyq9M7HJHRyTNtVqsoriwjM3sLsa4ujJx/FKOPPUn0dC+KG+tEr5dt6tL/7bVt3sR7asnlmP6e2KU3PUuuEgy1nEMy79nBaBKJoUlhF8XAR0OonJi91RaBDcZApS+8C6pKkDsOZbEEiclq9iQJSOXRtRfGMKkEa9UcskEWmqMu1E8KO7av8eIgRAFVXfNl9Ga6LGyqfh3f84F3t0DV3nZRhARR2i0p6jf2eYQYqx8ZqCJQb+AVIl3uFyVUiUVi6cfCTUQIrITnd5D5YgbfM7SAsz0Jnu8rzxYIVH1aUf/JEKFHJMBCdceM1Z3AFX9HAzqmkR3h5TXR23+Ix+xjdjn53CY2Vm+jQCo/yaQmlERhCpjWiaQHbea22U1i9tJU7K2y20tI9Y1xcNU/cYqfq3Gnte4MjJdR1ZvIDjWYx5mDqMe9LAn6MVfb2sLuS35rDtn1WQLq40gNHeUAS6gEM/BWP1wvxf1+OoOp7qlHMXTq/TSmjqO0t4y1q59GceuB4sXfbU7y/zQlTyOoe7l6yOWvFe4Mm7f+6odp61xsQJW/ik2eP3yK/cSk8kv+gYDdefWX0+roYDqQt7Tt52SYu77kks1rm7X03lvv554Y8zFmau/eHeSXFzF0/AQGjh7D4OlH+CSTWRJRz8OxBPoPHSa1zQlMXLjI04WZHycCBpVcBt6eg3vbrM62+7CyAk+diGSxIpNa4Co9dZoYvIsIE7CqF7Kol/KURJsIGKBi9lYMdOjtrbgqUQFYlb4w1of2OIjK1zdQru+iezeKUjAHucoYQaYSVPwovbnjh724Gqr/hkH998bVm9z/V5i5mQiIdguGCK3fjySa+NaeGr47XcW3JMr4QLSMJ0NVnCptYu4L81i7Ajz9ZA09vaQCDEh49hk9qFLFDK5MK2xLlaAsVIUEvDSmSUYs0YNU9zD38t5oNrFDE1susybSQoCxIGMoDQsambOXbX66AlZ2VVq/sBbnflonlmx7+QYHUrGuXqT6p4i5muR2WJXCrm0+75Of1/fEbUw2T4l+Oq0/MNb+brbXxsBVZvUmV6HFe8aQHj3FY+RVClsWgFR2/NN8cD+AKkEq5aFHPkjfh1HJrmPr9heJoXrF0CbJtjynvmTPLOl7rrfnYl+WrEvjB124i+NsaZFuv4OiMwlwII5v3EPMdC76LbqyS0rtW7I5b7z5smV+Ce6I1nheMh11qhdtLZDajhprsLi3hmyyx/qM6d3D3ejL8vtstVIz8w/w0i/9U4w/9gROfODDOP/t34mxp9+GxXv30DUyStR1vJWczTO9R0+ij34P7O5g+9rr2Hv1ZV25kk09/kGQFuMMFmU4r/Xc7pnWY7Wywslu9Bx/HGFim2qk7svMXadBu4pQrI8mVOaVPcoNTM0hb3af/yym/9o/tQx5s92dR227jPhyEEdmB1Gdb2BlmjkULfwvFfKGmVJVamXMzd9Db28/BvoHSZ0WRwvXCAJJnwMCqLaXJUn65ZhtjWK3X4uVMvYDvptPAlcn6hcW3FM3PZ8IqfpS6SEECQAylWU+s45S6Q6CkaSpmiZnD4Q3fv31NrgaWF+n+draj1uJ9RhiTrO3do+7YOgbP0Wfkxg78VYMTp/H/Ot/xA3crcTbm9UpoGq/5+2LGjfZD5jyJoyxYuq/7vFH0D12Bon+aezOv4a95TeMbXAk2/y00zptjIBdz/QT/JsBPQam8ms3DWkk1/L83S/nsvyn0c9nBy+y4ZfkmO6gcUr79YTcE7sDFJGqU2Blf6GShzROuZzrtEvr+IY41uMPXDkPW2oLZLs0bZfgFwB5BVfOqNxrXcsEjnYf3MfgU09jh1iUcCSC3KWvorQwh0aRVBKFAq8qSCxDsLsHkcOHERwfR1fvB1B8/lk0WeBUm+dmzQ1pUQMlSDaQuT0yoLkUcx6rv80i6fPTV2r6FLqmTnEQkF+eRX7+FrdvCUXTaAYr3NBc9cQtQt4wr+wVPiEzQ/a95z9jG/KGGbQ3ujNYiJQwfDeMmdk0gsUtbEwu0z37+oe82UptojTMgnH326bhzjvpWr/8xUHkchKefGoFZ8/FCVwNIULApdVXFcZKuw7l+dKJrq4mMVRVJZ3uQmXBTMHOnoqfsthBSaxUs9Hgzj3VoLoMnEYiCeq7Yb67sEwqoWJ+p8VMMUAcMPizkrl/rKDCQnkDJ3ajiB5AWY0ZzscYeFq/9wp2lm8SoDpHaq0jOPLktyFDgGtr4arOv5Xz6Ohcn5fz5uuwSu/0hnUKpox1ertG8HeRf+jZMtV9JNkLyzbITgf0I5CdWEzOsRT6jjzNmSnmEmFv7hVkCdBZBz12L89PGslTOvcFgGRI6e/ZwXd6J3Apwa2tByUO6j9VzC+x9cuiTV0S3F84u3qcz3uDDN7rlVqlWp/xsgoUYkxnD7e8lGWfS7JJZ33Y3/33rhT0+1w1qTEnmAP9aO5s4WhfL+a/8IdoFosiACqUybVcRjOzh9rcfR7nTUolISUSaGxswFurNGWL9nxlU1oNbBnzinPmJylBhlkNLdnk1+cM0wDcd+atiA1OolkpYuf6iyiuPuBx4FQwIPxbRZRdgpGWHY4kGQcAZm9l5YKBGdZKXCUYwsZYAfVmGdXqHrK1FQxsdqGOKuqNonBiGYl97VwwKOq/0u6ip91/25tZlCsZrK7GcXc2jo31EuKJLQIxQfpECZgExDUrbWfqPfUeVqssLMgajh0rIkF9he0IlLj6Ly8M1fXqP8l+IWVnyM6eDfM5xZx3BkMhYhSryGc3eMw+Q9+i58rt5HRl8ra2HIMqbQ4oMQBbTZJMbhXcIbv1cfN41d73hSuBRQ6imEow3jOCbgJYjJUrEuOmb4OVC0/rdrhNruY2SbAGjXA4bnXOXszwTLI47/YaMIZq+JH3Id43wTeDbN8nUErAxm9z3F83Y0GsD6UnL2Dw5HuI2R5AdukNbF7/I3qXFhSXH8ayJcfy/L/s/mZQc3124sYeW6X3J86Llk4wiZW4t8sDqFLFGRhYv3B+L0TylObggJUTTDEjW6fBzFu7/bTJLpcTdDMe7uxl8mfDZiX29yo4PAiJVviVGzew9sZVyzL1q5lmNktgpExAIgE5w5yKNhyegl8wbX49rF4W2ZCnPZfG80ktECd+M3aq++QTpBKKo7hyB3u3XkG9lINle7hn9pASTzAijNoV2x0x2YoAO3oXDIyxik+dEPEEua1VlHtbLw+GUErJCJTrOH1nGj2bYTRoAs1F6V6WBdv3NXHB4HP3X7MWxvhoAoeO7KJM7bxLjNuJUxlkcluoEoiJELMZCRtj9angs1qt4N69LO7cpvyHwuju6ebHLUGVyGjRYJn/L7XFJAwgRPc3QoCK2aqxgNdsRx9jp8TzMe3kC2i7O1WumRkXA9pbIWyqAq1+KICuXtfpV9r7pVs5zKZqd/kWB1nRrj50DUyhe+gIZ9YqhR1ILuOQd65HTeN3PLJis7yLVqN//UmsexRDZ96LruGjHCjvLb6OjVtfRlm/E9CxWeZxw1taJqnxsxg88wECcpOoEHBfv/pZFDfvtozQ9SJ5KM9LnfZl7r8sdUxU/z5YMS+WncQPAPRSnz1q8GFT5e0lsp6sDhJ0aIhXdknjXWS0q8G83nzrutofodc2OZen/pbtyms9Jj+Dnr5m44rC+R7btdBa4qEexAID2G7ctim3/Wi0GUEyMIi90DKdLbe1jd8LWf+XhUjidsimfDyvJI5o/cmshtDnkR3aK36Hkt3oPv44QsQoMTCTmX0V1T0rJ4zmJgaUWHLKTkECWXI4znceSXX6m9SCLOyJam919x98F6kEv98y5A3bKdjo6sGN9B5GbwQxOdeD7q0C7pxdRbP6tQ15w2L/ResMVJQMx5l9UrOhm3wIiCQSXZienEHfN+fw6OPLqNXreP1yHxbmwrjw6AoefyKBvt4+xOMJBVCpcBNYnI/ijdfTeM97a61ztqLGHLRy4NlsKvdE4m4J2G8GoCrlDM2vTUO8Qhbjz2xgzsEWBBBWKtGVrlYbMPQ14zNQxyE/g7++LhnOY5fxPWHAKr+9hH6uEjyM4RNPE8CawMa9S6jrVILt1+OlLnNeL233ms8o7U/S6n11lhCpyPtPvB2x9Aj/u7g1j537X6X7kNcX+qYAKmYv1XfiXaSmT6Gyt4LM/Kv0vWqZ1kt5naTxB6jc5zN3COIlp3sa91YcNJxzLu9NitBq9ZK7XZj/i3cHVvpUkkMat/qtVoKwyWssx/UdtBRv98LRjs0WXNmX3T78a9yR+3W430s5V0D/+DSCkyWsz30VbhKJpjA6+RS3t9nK75nq0ZmCuzVOnUNtTjInj/xOSlYZJbRPKNaSnBK2UyxZafku8gs3iYGpueZThT8q5o09IMCVHKzyXXw8SDPfCq/YWzFjdtA9+cPfoM9/4oGaRz76ce48lIe7CbFAzQk0EyksDWaQu0uAbGsH1c1ljC9GkR1ZRXWggGAyRVR1Hw3kyYMfd9yulW72//V//hNS1Q3jzLkT3DdVk24ACzbc29OHdCqNbVITV05tY2UlhBeeS+HKa3V8+JvniY0aQH9fP4FIzWWB/8UQYG1rJZ55mO4jE2ZX1eQBkmVu86ZnpqwCQmtlKNcZMHKcAYmeq6QxskY1r37cMC6dvF2V7HLMui5mb7V2+wXsLd/E1KPfiGT/BAbp+Mr1Z0xLTfNYKjnUu592+hMrMOCnOzPmtnf6ArrGT/HszDg9M38Flcyavsj2323iH1BFe0aRnn6UgyrGGu4QI1ZYn4VVmc5ld37/2svxQ3BYi36R+mYPLd5bfFD3yLmsNy3sffuQ4GVi8np7tHTeJnuvTJlVEGa1DC2NdZneOph2xE2c2+25TD2d05FjSL3DDCvYZZ9PzaVKYXcRxY1FjE2/E4PD57E8/zwyW3fb4lIxj8Z9I2cxPP4Y//vOld9yKB8q3QT3Z62uX3X2UAqgMs4X6g9v9yuU7EH6+KPcj1S9XERu9hKqmS3t8j2/y2r/U+xuSHUoNUJoKnEFG7UYpArbKRikyb4sdqnRc1359X/E1WkMXA184AeFSpDtnguLsDe50znUs03EVisYnxvA1JKElYks1o/muUqwmepBKNUrggK/2SOgTv7oC5/DHz32Ofz0T/5d/K2//gl+TIXwTOU2PDSC7nQPRkfXcemVbdy9ncJepoGl5Xmsre3g0MwYkl1dnB2qVXW9VDLeU8d+oXsvJEkLJ8TcDvDdfooRukgrYgM6lW1+xQK6XX68R+k9qjMGNeBsSyWZfssOfxvFDH5kOKGDXgIUvVNned8rbC1h8/4lC0BlnddZzAtOr2K8OjOc05du/uVHuqfPk8rtFF+IsJ112fmryK/f1Yp0fR+8gh5jesaKpacfQ3LkmHDhMPcq8svXTWOhBhDd5zgvYp7HzG2WTems8vuBL50AKtlnGrdNAJ30Pbs6na+m9baNHrros7b9Enle2CCvdfiZ5O1eS/15o3gr0/tx2UMaP+WZy9TuoOShKP/PUbIuyHd3TQ2fRNf0We4EkxVTr2RRK+U4mGLBiFVj31pmA9u3n+ODnWPD2q7F6kWymhSMg4vcllTfZ6zLYuxUcuokP1Qkdqq4cEvxXG1up1VZNsOlpLZHAVlscm9W+eDbqBFbVS1w9ooNwM1GiTN56i636MgUTv6zP+YqQVGIiEnHbNMahQyCW1kM3wb61oix6irg9rElhPqGibXqJmDVQ98iwPN+hfnLqu1toHHtGmJZujenhhCbOM7ZMSa3f+obkL3yTCv9xPgUfuJvfgLf9R3fZ7gHDOgwtVupVMTq+goKhTwuv9qNm9cTOH+hiHPng8RoFkn1F8b2VhDf8V0pDA8Pc5Xa//Fzq/jt3/0YNjZfab+5pvstKaFiVPaJq/HafEdJfDOBXoLhhPFv5lZBBWnK3yq7xVW7IW13oDF0keHuwRo+WHEyVr3YvMiwf0MT3cPoo3cx1j2EcmYT2/Ov0/e6RUqrctyne1i22F6cajG/wfvZnh9l133irRzccON9UoPmlm/wWJutChzFOoHbSM2ef9f4I0hNnOEMWWHtDvbuvSQCpVukdy/bL6CyK9Otr7iMWZZld/p8ZM/nvUM8v30VaL9mqznEKCxFB6OnEzDZj1itotzq6YSxsivb7bxTmd6OW0/hXuuBZXrJsjTZvtsZmCuL8zbiBDn9MVhAbv0W/wS7+yHRJ5JiIUcGUCpu0URcRHVvB42ddcjE+nhqmKzW7GVQ0P6yihUle8jL/mbsVIrYqTB9NypFZGdfJRDoZDtltQq0fkrmnsEZlGBUMWQXrFWT21vlIdWCDJVy+x5mzFpZX8DVjx1vc8HA7a3o04zGsdyToZVxARKxPfXcLga2Uij311EZZC4YStwFA1MfHoS9VTlcQTVeoYFmyHjCpDpbWl7AT/3M38C/+w+/il/71d/AxMRU6/qZc80uYqQOxQ9jb28X5dIGioUGrl5J0Qd4+zurOHm6yN0vpFJjLZuqUrGJas0MyI3vpsYsyQoubdqmbRNzaBllh6J2OqxLYwRkAsTZBVI2v9Xm9ohvyTavdR/TS5hUvr0EptJDh7lx+tb9V0n9d9sFFHibWOzzO4tk+jaeM74VnU7YDEylp8/xbyb5tbvYI1bOL5jyO1Mw6Ro/g+6ZixxMMXup7Pxlk92UtewPTNmnlVrn/JAYX29ApdUg+UjbmXTylN9E9Z8qRvbE6sV0Ei8X1Ck4cTsvewQLTsCqvV3tw6Wf+2Gf3p6rsWhHp/3dsU1aHV5fvUZmG6AP2yRc1E0WvkVvhe41i9MJWSnTctVPq/tJYqemRdiP4gpjp27SarcOL+33cnX8cnSTfeu+0iQcDAX47rFmqMJXvY1aHAECVw1myM7trQhcKfZWzDN7/zcQuPqhv88ne6YSZLvvmAuGUrKM+mQE4bUahq73I7kYxfZgAaszK6gN5BFIphEiwBsIxzofk0hGMyMYW+7DGzM5T3fi+s038PQ7z3PG6if/1s9gcnJKMEh0LkzgcHBgCD3dvZiZ2cT83C4e3A9gaLiOZCKJkZExJBJJnn53m+7B9iKBsFsWtciGXX4c33FP6jYLEJs2m3cK8l19rXPKxgMln7iPkmDFELTxoG6u3Om4sW8axyrJtgy2U7Rn/CR9TnBGmAGpHWKnLNnVtnr30RFaonmHc4dndpxVB7XSdXcTmEqMnuDllPfWkFt4HRXGyrmtx1q1y4a7D3i7I1HmtuLIWxDp6ues++71LziAKeuFntsS3UtZ1qIvx6nPvdmAymset7Y65fEj5oWJBKf7oH8+HYIqfy+YaIa+QX7Rn5f6rHbw7bdce4bIezkHzVq51WdM1V6XOYFypiN7q/YCjXVJlnygXV77FAd7X7TUsocWaneRqchSx4TtFDMcz1myUzZX2Jrn/PQ3qycn8Qk5GIgpzJVwxRBgHtm5MXulZW/Fdgla2VsFYwnIxOowe6tgPIUH3bvov1vA6HwSPbtxvHb2Dvcr1SyxXYK9CHb1CpVgB10k2Agh1Aza3w8b+a//7b/gxZeew1/+Sz+Ov/KXf1wEWVaebyQawejIKAYGBkj9J3b7xeNxApwiuDH7+87dCu7N/R7cRPYx3raDKB3zpLCIarogMYmtwNnhWCtkkABe7mOZN5Etftuv4BP94xg48hipvJIEKjawMfsS3+HnXpt5UjEftxfJNPJbb69X30O3ydv/5MjAVNfYSSTHTnCGiLG7e3TdVVXF6XGOtnIT7PYUw119BKae5MbojAljar780nWb1NZgyvoOe7kPzmkkQzq7e+46gxyA+AdH/oahTtvdGUvFhJj+kZ/raLQ0VN5pWr/1Sp7O+4N7Tuck01+SQ1q3AUZyqcE5rdcy3c9KHorcT3/Qcks257z7wvIosl1Nzs+kZRRu11Ld4fjUKaROPsmZnvLKPeRvv4xGKY9OxLkfqT/d+zq3yaFJmvupYo5DW85Dg638TIXH/FvtPv8ZFO9eRerUW+il7xGG8HyXYByIRVAcCmGrL4OCvItcYw19qxHE8yHkw1k0qyUqOyj8W3kF366x//4TKmvzjkVksxl8+Zk/4QArne7GmUfOtR4La0c4HEY0GuUfpiLkzlTp7M5OA//mV9/AF5/939BsVh3vofFPExNlUn8KJ57qfQ1rbJMCogSiCyAUTrR8jwk3GcKfVYAFum7rl+6rYP9ivI4ogeKhk29F79Qj3H5o7fpXsLtwrcVOSbAfi7QR1dxm/VkNFBn9tRlbI8HcPi+LiE5FRqx/Ar2n34EogUmm1mWAZvfmV2jxoXOR4FKGWZzGtlYaxoodegw9J95BgDqC/MIb2L75ZVT31jzVY74L/sdK+wszPmc30OC/Zsk3SOpsJjjQ+cNSvENoc29+09V/+or9+V6xEi/MknEY8FYmAFvGQl+SXf2yS1n6c3qRDKn9M1deVorG1K5l69krnuzN6PSi3e1t60ysn7XTEtTcG/WrfPEtK64ogortVIBYKgYS8ndeI3ZqE15Am31jrSZVq+bLsPYXoRyTBbjgLhjCoZaPq2Y0gVBE7BBkQZtZuBq5VmmFvBn+6Mcx8u0f14W86eE2WszeqjCQQWSjjr6NNHpX0xibb2D27BZ3eqmFvEl23C9al+eDIlpcWsDf/qm/xpkrtlNwanK6dcskEw4tFWX8o3/8Ofy3T/8d1Go5dCxtTkBVQITWfVb+aAEqrp5lrFQgrDhwDSggNwCj/ZX5jbcaPzp9I7R8XNU3fQbdxNIwtfAuqfl2569ZtKNdpLbfklK6bPPmyq0U7u2zG1sPQmREuofRNf0IfQ/xGvKk4mTARtarOD1UZ4a6boCKLTqYW4bk+Gke6aC8NY/MPVp8lfO2bXWq2096b+ft0u2fGewcTPlv85sPqMzircZWPxG7/zqYHCyL9Cb2+P+g6mrH4p2X1Z7e+VXwCojsJ+X2dYsX8X//tdZ6zHsALJa+Dcah2S8YNhUGDRLpB0K0fvsrmZFf8amTiLGdfZS3SuwUs52S63VdizuxHlCuVPZ2H3n5kvJL+8M2dZDUYoH+Xm48X12do8886sUMmrWS4oKhCXWXYEslqAqxS41qGc1iDvX8HnruFjEy34VoJYjrJ+dRGUrymIOM6WLqQScXDPrdfyhSmcemHHf/+ZEf/ZEfx4/9yF8ncDWlgBlx/IUXn8P/9nd/Hjdvv+ihFIuGG4zMg4a0qpG5Gk6IiXDSKhyEso0EQeYNn7N5LC8xU8GgVo/r4zb3Wk+ZLPILSY8fJ2bqDAfNuZVZAlNvuNhNtZYTaJ/wOnorbdpoVe/+ASR/RtEkB1PxoRmOYat7m8jMfpU74bXM4lqmvnRniQ8fQWrmAo+xyRip3NwVUjGuwV2MYMF+9jgYQOV9xLLqj1blaYt1997qrUzrfFp9neb1n88Mq40i2eTowKWCnfi73M66rp90XoFVZyDBnwcO7yBQK99vGd7T7/t+SB3k8SiybnA3W1pYptcBKntVnrmOdp5If08CsQSSp9/C4+w1y0UUZl9FI7MFI/AzD3+aAS4M12BMZWyIt7Z6kQAPQn0UUqILoMmzcuc6amtLaDDHodUi/9bbW8k6Fwwzn/g1pM+/U6lQccGggKvAZgax+QzWgvcwVBhBMNGN3RmJe35u2VuF2gnvBt23RnYblRtXIJUqkA4fMoKqnyRQdfUZ7Efe9vQ70N3dzX8/98JXuLrQu5juvSH8jX4Xn6SwUgGx85KHoRGq0ABT7wUinBHi4YUYm8XZqZC9mlRy7M26tjmls5dY9yAGTlDfJbayQozqHjFT5cyG5/z+lmaShzRvhpiWnXT/E2PHkSAgyZ5RvbCH/H0Gaja05J7mctkF2LRLpIdYsanz9D3CGanM7ed9g6nWdfhI20kayWM6L+Uab6cfQAX4a0MngGq//c6qB7jfBzX1Aar//A0C9n3cz8sqeWqR8/vk5xXSRF3R7e/xSa5n3oxhyb5sH/eg9Zg6nwCsxAhEjBDFqgEiVIn4W/LI/kgWv9WriI4f4ewUc5xZWb6L8sIthZ3S+5YHNFZMD/3aBy5Ja6qu6WZI50dkQ3sD3b0ITc0gSKBKrtVRX5xDY2WRt5mppRggCIZifJcgB1j8Ywx5wwCOXcibJqkx8t1RRHdpsLjbxPS9XowtNbB4JIfceBFBZszOdgmaQ940BKM3khnF8FoabxzOWV7HfuT5F7+CzsQJUEnQnIEKmzVuG8UAE3OqqrBRDEyp7i1ELD9JSe+yq0999pZhpNSnasW1OgtTyQ4cewLxniHUKwVsz76M/PoD2/RWY4C/idGcWy3hoEcs5zqjwzNIHb7A+ypT7zEwVVqetS7GpR5nXsIo7H53H38bB1PMTi0/fwWF5ZuaawaL8u1kf2DKrhQnfYeX2cU7o+VvBOusf/idnTurx+ptsAdTVr+ZhNoLPJjJsTM5uMlZe0lUw0m329zZBOdNBWSmEvXHVbGuW2u33+fjnr6923gcYmX9t6xDDh7yehDJsVL9EQVY8S+lHbLfV1wxro3FkTzxqNj1RixL8cZXue2UuTjJlNeTmJtkcAHh3O9sQxER6IsdOYEQqftYqhqBqdr8fe7aoQUUubF0pLVLkIMBHs+OwFK9LELeNKvcv5U+5E3LBYMu5A3b+Zjp2cPCvTKG74Zx5EYPrtXuoTKQ4fdLH/KG2e9wR6UV4WfMevff13Oc0Ymlyk9q2U3xHX4B4cZCgCjtHvLNAS0wJeIFehsTZO1LsgMmcnt6i37AWLI0sTQpYmlYur3568iSuq9ZtzfQN4+F3qcgyeXcQQIq2ea3kDAxcsnp0winB7las0jXXVq5Y7Sb8lCHvtX6N9HuShl4YzZTXdPn+N/F5RvIzV91AFOtnHAGOt7ytIvV3CK7pHVK43bOOCd5e4u9QlVznk7loPqht5mdif4+hKwzdgpu/E381o/XTxlegENr6j3w116rw8/tt7u39vfcTLVqR72IN+DWnlq2qV9qP9jWJL9t7ExEE3Rgqg3caansr11CZPwwItMn+KRZXr6H6vzt1uBs7qN6iCMZygd8Xa+hYNnppGGKDjAwNUNs2vQhPsBXt7dQvHUNjVzWkNNQGjOmDsVb7ApjsOrVAgLEaDQIXDGApdpbeQl5szuxja4HeeSwhfRiNwYepLF1qIxaHzFgpDJl4Vwa5RLQbMJW/PgyOFDR3SFdeBphSC7AFPsEg1EWY0YBUxGu9uM7+YJC7SecdwYUIKaCKa2XmJ9gWxtaSWVds8x9yfzbeM+SQ4fQRywNA1ZM1bd152VTEGRrMU9xVtOyc26z+BlZ95eWAfyu448TqBrg56t03bk7r6BZKvoo2vhUvL61DEgllJA2TMWXufWCtpPQY53e6vPOErVftBtD5QWkWYt5LHzzAFV7nd6l03Gls2WF/s1Uz4WskwBeX7GDkDcL7OjL114kp1WkFQDxch/01jZvHnAzlt0JcPECQttTW74WnrB4p/fTu7RKknSTk2x3FcacDCxEj19EqEewU+Xrr6DOd/aJ8wYrKctmH8B1WHZ+41NWa0lOH0b63AUOrMob68jduoTq1iY8V0UAIBRIoBlQmZYoAgSuGrVIy96qqfi3evCpv4L13/0VHPvk7wiVIAGJYLxLsFfxFEpdGcR3I0g8qGF4KY3e3QaPJ7gzvs2BGwNgVCAagbpNY742Y4uuQpjrtgJT2q49AaJaYErd0cfdIjDmSuzoU4G95FirVYQD07shy8ZjtgwW8wo+hJ6p0/y7VtjF7s0rPMSMtRg7rhme+VsSyD6P71d0d42AY2zsKN88wt5L5h+utHATtb1Nq+SW5XgHjkZh7Gvv+ffzsFrVvQ0UFq7S97rH3LLt0YN5A7wAKq+1eQdz/gCVX+mkP+2nD8oej1mLZMr3JrhU6Kzrts8tfsrwvsZSfap4Z5bchh0/4MYNWFiBEPsSjGX5vV9wTW81/Lu20WouaDvRSZs9iFqcOiHJhgYYJKywU2yVXyN2qqJjp3SZNU2dJaAy9xE/fQGe0rMzCVLx9Z69gNjQMJrVKnZev4y92zd0d9Ad9OtLFOAgKNRboRiCtRJ3itish4W9FQt5Q2xT8d4buPqxE9b2VkydGI0jn8rg+sgeZq7EMHOvl8DpEnYmigr4AFZ7drEVWqJaD+HrJ0ZAZQRTQaMLBGKg2HZ4dZef8P/FbKpEyJmWiwRFnACVvndLhhw2bbPLrPZFuvd9hy8SQzXN1by796/wnX3t75H1JGHe9iHZHDeWITmU2YnYLXLMor1fDEzFpoQHePaOFu6/QcB/Hl5Fsvjta9RmGxWUDIyZanhgA401aqBOX3e7+LnHsmUd+iNO59vLejNg0kH3Hbe69luPdRlOM1X7cckMqsyTnd9JAmh/afzklSzKODhgpb8y74/b78Tv5Nndzz1xrtfY/k7vubdrkyzr9JhftivQanDttM9ZZOHqQBURae1kO/uiJy4ikO6HXCmieP2rIlyOocmmXYSSFcDW9yTzRfp9udVB1wj24/0DGHn67YiPjBGYqmD7javYuf4GGvTbmzLbnlnQ7K3CaHJ7KwaoiIWqRFoqwaYa8uaP/jNyV7+CoW//Gxj56MdhDnkjJ7txr38LXff2kKnsIrBex0h1BtsjFZoE7UDD12qgVX6pzJhiN6UaoQsXCAqYCkU0u6kWmAoJIMZ39AV0Jbtb1NktoYwjrEMpyikGplLjx5AeO8Z/M5up7MINxUWCeay2L0gfZMU4UVi9i3A41qmYYabNCkxh7RiDnCQmman82MYLxkwx9bwfuym75bN3CAHUGRv4+h8TU3wOseHD/FOYf51/3PKa67MfMTsFVFZ/dyJe7pOXeqzGSv9tkFzTuS0i/NfpVI7k47g0euiCbJ1UdsnqRZwwnr3IHa0n4DmtfnXv73G4XY/UVpP1OraT++nezfzm2U/6g6nPT7ZO+yBajQ2NHxG2Uwo7VZufdRyg9eBKVgGaZNM2fs50V1Q7Lx+djNUXjEYx9tRbMXT+UX5s68Y1LH3ly7RKrujahla7JLUuwxn3mgzwmFR13N1Co8J3jzEj83q9xP9uqi4YwHZbqf6tfkDJaHTBwNQx8cUcTtwabZW9SWzV6jt7EOkf46CWyY0fexKFu1fx5kg7mFLdJHAfUqqaT3GP4AimDEbodrW4i9Oo4fTEoj2D6Dv+uOIiYQu7s5c4q2hsxf4m1X28WTqxukK7OcRiUtQdYm474kfOcLspdri6voAyMcnNiocA60p57iDGOb+dMFVg+pF3I5zsRb2c58Cqsn7fsQz3peJ+AJVRjLOa177hPpqL++i1rE77pLq49J+nM/Ge16pn26KAMQJV7Y/fCgXu59XbL6jqpBxPxK6uTj/lur2qXrvjwYMeuYM89nU5X6f9q+s+jHiuXv1tmcBF1JU+TeSR4xcQZIN0pYTq7deIndrxkF3PIMmtb++XpK68TYdsOlsoFsP4E09h9LEnEIrGsDc/h8Xnn0V2cd4yo2wqcz/TqzoYNxlAIiDF1IANbm9V4rsEuTE7qQQ5iKKUA9/AVIJ/j6sERVYBrhrMgzvd48DaNgbnif0Ky9g6RsBlYJDvIGQ+rapr86RWPI6DF2cwJSnuD7hx+T7AlLm2ziZuveh5K1FSONmDniPnuN0UUzftEJiqcLsp/aRl8cS9DE+m5PsTu8qcxm7ZmLXFyIUQmz6JyNhhfri+t4XywizqbfE17dpgnJQPGlDphbFVyZlzxNQmqM8TQ3vjGVJ951v1W82i7iNp523T6vQCqPStcS6zPZ/XtvkdjYwoxD6NZJnHv1jlte5D+r+9iAlU2VfytQRVgL9H3Vka6/TeHpPPkUvJ435NXsv0C672P3R2Vm/n5fjPZn0yRAN0eOoE/aAJfuU+sVNm26n2wUW2LFWZ9Pw8eh/uHcYvPobD734vYj09yKyu4s7n/weBqgee8opqlNX+Pp51607ITWKuagSoytyAvV7Joa44D5W5vVWzxVzxkDff9tc1cNVsclUlYxX4fWYAhVSELIizCMos4cGnfhRbf/jrODixA1MB4e285f4goLlKCGqACsGgYjMlmXb0OdVoN4l4vf82yyym6ps6jS5S9THXFPnlu8gZXAW4gCrrxvo57FPs5gfzcWsgxVPQNUfGDwkwxXyjlYuoPLiO2pazE019sGZzrcCbB6ha5RMoj4+fJHB1lm90rWzcR4mYq6YuLI19j+gMcNi2pa02NwDkHVQZwZpTmWouv2DH+NS8M2L7Eaue4n3WdHrTPYAqtQjzsU7kaw2uOkv3ZgIDt31CaqqDuj5rBulPyzP0UKYZ18vesktRxk5dRKC7H3K5hNqdy2jsbcFr+81Tl/54W1MMrwn9YTCUd5aBo8dx4v0fRO+hI6iVSpj9o89jjtgpP2Jgz9oaZUzZfkO1423TotzgTkK5TytuzM5cMJS4DyRmzM7ZKQJY0eFpUgn+rKYSZNJsipA4rOSAFuA5e+VZ3P6p9+NgRGmxpPiiUw3QefDioOblXO9nKhBS/EwFBcCi4zJvm8RdJYgyrQCCdq/0vySvHdLDRJYcP0aA6hQHFqX1eWTuX1XspuzWzf6WgK2/7YYB2Sqx1XlTOyRzIfqfzpNskN7P+IkL9L7GuN1UbeUBqssPLNXybvu2Ox2ROxeRNxDrQmL6LL0HhzmrWLZVCRrzeS3fSSSP6YzlOT+T9kfuFVB1Il4YKve8neeTbI4bz5rvnFNbXUCVVbH6Y36k8wl9f8DKe31682T/w9VBgjfjZOenTCfxjsO9yP4Ams06HZ7vp0NvD44eRkjZ2WfFTvmJ2Wd9hQprBTguk5kKb+jC4xgk4NQzNdXy/l4rFlHY3EI0mcDUmXMEpoq486Uv4M6Xv4h6qWhRl74lsm07YdNOO5EMaewhJLO3ajB3CzVirWrM3qogwBa3t2qKdDSKMLbq6M/9FhJHzlnWt/7ffxkrv/4LPK7g/kQHpiTFA52elVJDyShOTwV4CrWcdkoKyNLvALR28WC8F/56utU7bAVqWQDgQXTTPWOBrZnD2ez8Te5/yUq89Funp77ft94ReVnuurVuCQNT0eljtOjp439zMDV/Rxdb01jffmNX6MtqP+YlH+A0AbMz4f5JJI4+xmMQsuDrpXuXUN1esinLa5324h9QeZvdpLZ8XsruRL7egEpfs5974iwcVLkXuZ8qDia/PYY8+LrUfP7viSuGhf4F9f4Y/YAXP8yVuV2d36tOxTt49ZAqFke4xU4VUZu9gqZpZ58ozXo4coYg9mms3GIlH30SqUfO8wzNIgGRzQ2o9kjBZJImlT7uFT0aCSN7+RL2XnsZ3sV6IPA7zNiBRTthuwGFvVVZs7di4W6YSpCAl6zs2kqdewd63vpNBK7OcgDFbKh2n/8Mclf9MXBtLZX0zJSqqgtoPqYUVoobnwdFeBlJEjsbhU1VqKXmU8GUpPxuAUiren0DKqv2t99XphLtPv4YB1UsXmPm/uucofIqsocardYeb45YgCyLc1I0jgiBqfDQOD/azOygcv8mmoUMzPdpv6OScxsPphyrtkXHTiI6cZLvWqxuPEB5jlSCnp2EGsvX12P9DL2CHslTnq8doNLyfu0AlTm/+4hvB7lcmSrYZDQW4adYL3JQt9IriHFLa19uZ4/QHwg6QJzsOaXXV8u/7C+/nyFFleD4YQQmjyNAIKW5fB91w84+46Ai7aPvWQ1NRvWbhNiFRxEeGUV9dxe1e7Oob2+2xSWcfvwJbO7sQWIMViyG8o1rqC94n1Dd2mmWg5qYmEqQG6STGlCAq6IwZJfr/LhogdwCWAxsgdtoKYyWQ+sMsQNFZeJLB6IEGFKBVFDzbK6AJsFKqSyV4ntKZ4DOAyO3wJTDdba17uBEhDo5iuTYUV5PceUuCst3fYZYEWLs2e2smN11dAZWvDI91hM4u+744++il5WeRbWEyuwb3J2JE3g6uOfgdxR3v1an9rBYmLHpc4gMH+K5yvNvkFrzlodwNn5G5U5YNvfyzfFM3cv3mhbwcw/9lOM/n7c2+3tnFJCoqv8kU0ZnRkP/936ks/z+wZWfNNZ53hzWSl+yV2bMS9n6tN6k83t6cG2wE6c+yXb2hY5fgETsFMol1Gcvm9gpkdMIyyTdOT91G/1XyaZfDDcF+wcQPnIYjfVNUjs+MLm4sq4vdPw4gv9/e1/WXEdypfflXbEDJEACJEgAJJtLs9nsXW6pNSNppNlCnpFnIhzhcHhe/GS/OPzk5wn/DT/4xeEIzYNnJEd4NJs0I7W2DnWrF7LZ3AmSaBJsgASIHXdJZ9W9harKyr2yLtgtfR1o3luVefLkds6XJ+tmDQ9i5/0PwUI/yIukXsRLHwrK6D5v1Qqft2Jbg8HzVuHRC60OgQp+KRhpQpNEC12CBeGv68rVOip9Q8zv1sPvu1tPO88VdU8v7+Tr/HqPdD93iFTwLFWl8wqZ7nbeXvQqFZkqwQ5+6VX/5AwGZ86FP83fXWFbfdfe23tHopteYmeZfN6rM4Z1uqsWzbZkShxtCn7dV33+VRalPRD+QrQ1fwPNRwuQaaN3YCb94ep81fnNLEeHXA2c/zrKQ2PhluDO/IfYlT5vZbqcdCMwKsipuEq2DZlK5kuX6ZrfDTypUrMdQD0zRPINI1WiYvbH4aabQTzkfJbLuyW7YarTLStZv9Fg2wd5iZWdDHPkl1k6yqJTs2fClS99cJsZ6WsGq/24/dLkSjTB0t/FvZk4BpLdqE3PoHxwHNvX2ap0axtpiCWUR0ZRnzuB7ZvX2TbIBsQT3w7pF6OYOh+dI83mCY9gaO+i3eg8zN7ZImyE0alUSho/e0W7D7gnUQqJUCnUNdiuq/aPoML+AhXajd2QXAV9u0eMusceBNt8Yb6IOCXeyxfWPfoVoDWZSteTj3Xa9kt1bAJDjExVRybQ2lzF2k3mXAVb0ya62CDrMpK1SJIuUUnZhV+2/JiyZZ2PiJBSVI7OojzzXBi5ai0usAjtjfCoE39wdfjJ/HKYEqokalMnUZ+5yBaBg2itP8HW5X8JFyKy9OJyberDh0rM8/Tql35u3t8F/Hgwj1LZEapOWeWhA1N/GSXWZyCG12xhLoMoc9jqYl7jyAW711YXtSKJTzZkyca4E+1d/s80b35YOKp6P8ovvMFI1RywtY7mpXdAF++FvzgT1SFbJ5JobXstVdcGhqZw4ADb1tlhRGDdzGkODk/i4MRZbDyaDx8GNy+ZB+VGUpSTSNOLiSSg74/usqb7upvOS4g7223xwZrd7brg/91f5kVHFpSih8e7fyQiRl1y1A6e0WLkrD40jv6Dx9A3cjh80Dw4riF4F18Qyeq82Lgrr9I9a4p0tvY6elT2vot0T0M9P0vC9PrxGkRnhubOY+S5l0MSsXHnsiI6pSex6bTu45cIronS6v+yo4sklrwiqe21FbQ/ewgyNIzS+CGQ8cNAk0U5N9bgBldnK0PW8oltokgHcYqASDWCCBUb19XDc6gdO8cI1hBbRD3RLgQ75doQoyhX8rtavuizWr4LZPTePq8dLHwL5P2slhLfyWz/JZPIixSlsp/gcrnmyBexck8fhUnNI0s28k2jVlH6CP6jV5FUsQwbQmcKtbzS9Ang+BmQahX07jW0568hf1nmmw2yuRLdC5z781/6j6GDf3j7p/js/rvdooIoDUkPVYaxiedw7Mw3sbJ0A/ev/RPs9O6UHuuVNqTqzQTTMqhERpaMdZ63anTOs2KRqFZzl/3bBP9Kmuh5q8yraqJoU4IEBZ/7Ro9g+OhZVAfG0NrdZuTzJrafPAgjlPH2XpRedc4U1dTXPGaTzZtOH1wbnDmL/ulORGYreG5q/hOLSGosR6WXSkoyd1KCi8WAMIJLBHraWYXS0RmUZk6hVGWE+eECWndvKqJWvsmTWRn27aNGsCVYn72IyuTJ8Eyr3YUraCxcFaYlDvJddDLzNnkJVTxGzMqysVc6WRGyMlV2PZnGFHuvqSGGKilEIR/ykCofstzJlU16V6iHvMzNmyKv2cjb9waoD4CceQkInp3aYFtB1z4I//UHP3UI2qifRZ6OX/hTVPqG2bbVClaXrmNj5V5INgJU+0bQN3wI/YOTGD4wg60nC7h76ftssb5tVAbJfBI7M38uKJIsNkjJVCGCA0CDLcGAVKH7LFX3Wav0tp88YhRv85X2SNYQc0IDE3Nh1GpnbQlP7nwQHu8Qpu/+EtDfWJRvg+g2h4LXqwyfeSX8dd/uyhLWb32EVvjrNjc9TEpNpla5I/OZritX7vD0y9v0SA1+tdt34VXUJg6jvbWJxq2r2L53RyK1KOTxJG5bYJWJ46ifeo3ZtkHQ7Q3s3nwXzeV7XLnFRaiSeYuppzyv2djI2+f5vbMdseoubY9y7/6zM8x85X0YtP0kV25krFfEyqws0erRtFzfU8uPgyNBdCo4FT341dC9a6Cp6JRtHaWlaORQo7QRvSn3D6E2OoX69GmQwRFBo1G0ni5je/5j5njVJ0enpXdJh/RO9ro/pONhshR7n4MtvHajs5XXbsFVm862YDl87iogqiPHzmPg0GwYodpkW6brD66HB5OqtbEdH3Z1DRC813D49CshqQoexF5j23yN1ejA2aJJQQcqMiVyV+n6UUVKkURo0vAQRbdiDJ0+h7GLr6FUq2Hzzi2sfPQemus+F04yndIwHykuZCrbQ9Xpc6hMnw0PEW2yLcJGeATDBkiuMWPeJ70kVGb7AeK8ecvmQTQa2LOabhTuqPCFyqKkOrV8ODZepjnMAnpF6RB3g//tQLEMO2KTJ3Klzms35C3XA8HLd09fBBmbAF1nK32j6BRRyHRpB7EhlMnZS5U4CDHYquybmOxcZtmCk9MDZ0EbTZUEjV5mNaHCb6p+UDnTKHpjMx7oXoSqE6Vqd79T8H20R2G6h3p2zqMqCY8/CMjV5Mt/gGr/MJpslb8y/yE29n5VJXLebvZAlyOQGjxY3z97Dv1HT4aHV259yrYnF252T0OX5TLtPdlczPalbJRSyb/ihYIpVONEBH4eietfHRrG3B//aThfGmtP8dm7v8DylY/gH67LcJk9MMknR/AAe627JRh4kcY8i24aH8HAjxE7nXpVZ/NysnndIe9nEwpnbzEkv/4zX/GKnI4P0sDLNoOYWEWfiy07zmcyHPyQPcd1P+zg3p9mUU7J3WMnWXTqdPAb+/DZKWifnXKZ9Hz+JFwJWJxbbB9Ih3ClEkCUMCOVZO6YQU2sbEerCc2IPsXkL9oG7Byn0NaWIi43OBaBpA7sHJw8hZE55ozYFkpzawNLV/4Zu+GJ7ap6qSxcpLOIcGTz9U2fQn/4jF8NO4t3scm2+tqpU8FlNsh2fJn0k/xcKtdS1ZEqVycrG9WxvONvfR2zX/tWePuzj97H/I9/iP6DBzE8fRxjx2bRNziI6sAA1peWsLH0CEs3rmLl1g3Y62Jr7V1sjNkcCwl6QK5e+BqLbh9gW4LraAbkavGmRqZ9X7i9U8K1v/ebUInbR28FTMtIyzeKVCWzi0Fyq6aG+XCPqydb4fkvV5berGHlK099nnROM+TtE7f8pm1BBgKj8gaLTo2j/XQFjcvvsiiV6WtNfBMrwHXs0ByqmBt5E315kpOfindKEJcBwdX0iUnde4mH1YPPcQysQzo7/3YJTiZSlZ4zZbZtEpKr2QthviBitcq2UJraU6zFdSAGeSrBO+tmz4ZbfY2VZWzdvYpmuNUXSZMZdNuxJIs96TRMf8rK5ImNjVMTLaahKMsNfQcO4sv/+b9ih237L9y/j3ZwMj77Lzh2hDZ2w+JLzF4Qtl0YYGflCZb/+e/RfPTAWBc/BDNf+rg14zYts/Fcnn0xjGC115+g+fGPQ5Ill6vui2TPFk+osuGNYsqRyVEvHImBBNl3cY6kZCp+pgpQT0c5RBXyAQenlsqbVyd3cuVGeExcqvy+qck1L0snww4yc9x36jzqZy+Gq/6tT97HztUiwv6mMKc2ImTqGH6RER6S+L8tRC0pNiamblAk1U63dO5okRNFrHQ5xQ5fX2ZwoOYIc0SDwRYKy7J29yOssm1BXb60lmoEz031n7iA2sSR8Jd8m7cuY5dFqGIZ/IJH1jcmsCdUUSpegk9rnIVopORxjjEqR4+j75U3QNmW+e78TTTv3maEKr2tGhCr8pFptn12CqS/HzuXPmDbZzeUutiTKdNxCJhY4Gy/CPJUaihPnw3JVZCyzRYLLRa5ott2R0+kLZktObKtd2d55Dbu8o4ZmcWyI1Um6eS5DCJVMjcgRpHTeT+JVb48bsTKJX1cR/M1kg+4ywn0rAwNY+zNb6DCHFWw6l/95Q/RfPLYazn5oCew6kVITCuo4HNSQi9qaEqq4tT5CGZaEjEkVjZIG/7BqZMYnnkxJFmt7Q08ZY5oQ3qKdVqK9F6lgjrb6qsfPRV+31m4iZ1PbyVeACxqHyr4ZFqqvYPxP3ZkdbJxtO4IIlD1177ECNUGdi9dSjxfJK5p8Lqn6rnzjFgNYPfdd0B3xWe+7Ud0iqd3McExiDyycRwQqxKLXgXRqvbCJ2iFRzCYEWw3QgVOY9m9ZFzUlUwl5bnmEy0Dxe3rd54ICLuKVIkayN5Z5zfGeY262RrURAf3PL0xkWnyaG7+RGXlWWGbpx198VWMvvxm+IufJ+/9HKu//qVUA3lZPsaYvhSEJZHE/2Xlxy0vi7eItsTMXiWiikzZQUzqTEZN/ramUsnRm8ds+5TXmWJo+nkMHjsbPm+1tXwPKzfe2zuCQSWBL7U6PoX+U2wrptaPFtvi2wxe1K08vDNbO3WrquZflEvfHoQrqxi4Oj77cirjh1mk6ih2bt0A3Qi2vmQ9FLduaWgItZPPofnpAppLn6VS+SNTMupg3ru6ESGUM34clVOvhiQrOIKhefNd0O4RDLJy061lUlYyh3l63en8snzp73kgIlRZ2HgLs3TZcsrD3RPVZQrwEzV5TQ3C/esDbrJI4v8xXEyPe3rzdpPJsHcyyZONRScfi/KYyLXRQaZ3dWQMx//1v8XBF19H6+kqHv7t/8HGrauZ3PyfO3QRAXk7J2uR1INIriU/idIDWW3SLcXrYmpwdHXkNUyPCbv2NU3NR7ri17USQVrxddue79R3d20J28v3WZSphr5Dcxg6di4kWI31J+EhpWlC2/l/ksyVR8cxcPZV1I+fDn/Jt3XlHWzfvdbNa4d8YzcpgWY+i9osf3k8VPZHNqptZGfl1QcOYGz8NBqPF8MXd8f35POhVh/BgcPPs4j3Z2huraXmZzpiQwz0kIFvcWqUSpVWD5ZvazWMUgUROzJ6CKUjp4G+ISB45rS1myk7/temTJc+JIJP5nn8Eip9iXzJ6bGRTW9bptWRCiYm21QlN8iqbwbqhVhFetjnsV0DRPnScK8/L88uEpT8ngcEk2+8hcmvfINtz/ThwU/+CQ9/9iPkRd5pKUY83mxqretnnjyl39Pno3+p4l5aA1ivMEXyRBJEZDX6RDhNdFExmemTRS34/Ai3Asdf+ibK9SG2JbiONbYluLl4W1h2cAJ6ffYcakdPhL/k253/BLuf3krJMylTBwpZPXRkOuvE8o4atQRd/+jSiKIIBLpZG7yd4PRrfxG+S/Lelb/F9sZnyvT1vlHMXPgO2rSNe5f+Bg3tDxVgrEs2jxpiT0UVKS3LZeO5FDzIPnmyc4eN54BwgTvGw/2sK1PvkMd+2JWVJ6+KObjpnoNUyYYBBErRTCqZe/FDClwQ68rrpZMrih64dIXrC5qTOviA/RqGz2uL+thBnP6zf4+R2VNYuX0dd/7ue9h8uAC1MfdT52y8RO2Q0tfMdRBtXlFBKr99KYKJs4tT+jCN+WFKCFXXVLKZL5o8gSHmjCrMKYXnW13+MZobT/ZS1WbPMjJ1MiRWDUakduavJp6bisoS2Q6RFbRry3Qsr/O91P1XbIfjcvVWTJbClBDmcc4mxEGcpn9oErMX/hy1/hEsPfggfDtBc/spGtvBC7Z3wvPK6kOHMTg2g4kjF0FpCXfe/9/YWl+EmW4uMJtTtnnE5WjaLiBXL30LhC0WguetAnKFxVt789k82uLilbIe3x6ufaDKL24z2cjPRwYFzOfoiZeoiVgTcytuHpnh82W8fUSt8jRvfmIVXzctL6/z8zHls0N0sHvAZYDg7JgkZn73W5j71rfDX2Xd/of/i/tv/xByufvt3HnYO8dkrrQbto0imZZtllbWulTwyb4PTJxnNo/+0fU4bQwXY9yND7IIyOD0GQyGv6qi2Hp4G1uP76J24jxI3wBaq8vYuXkJ7cyrZVTEjr8uum8Kqr2b7T9iQKh0cOk/vpykDP6zLK283OBOQJwGZ19Gdexw+DxRkDT6Ie1eTrYltssij5sLHzPSpft1XHFkKqm3a950esM+YYuF0tzFzitvgkUCWyxge91AvjuieWs2wlXjwAVmZEq3XM/naSRj1vScKhNTb74mVk02V7iRm+Q3cznEIU9Whtq5mclwhzivTfmleh8OvvE7GD15BiPH51DtH0jJeXztYzy58gFOfuktHH7+ApavXcGH/+t/MAe2BDfsN9EyWXzEY4Io7oplmyw8zB2kq9GgSpNjs7xSp3N34Xmdf0dGhRGooZPBO+eOhRJ3mhtYv/xTNBmpkuVxL5e3NSqSIS6Lt57qVlb1nyq9LWT2XDaW1WXofAwZHQep1TF8ZDokVoEtaW2uga6tcBFFnc62cLHMeceomYy9dmKLBcoWC5i92Ln4kG1Z3/kIRLgNKloY2JBGH4Qqec8W+TxlfvbBj/tEWZ1IlV68aF1halq5IiHuUB9wIVZJjWzckMgAurqxvAQnz5DR97sI5dnTqL3+Ox1iuvQQrYU7bIUUv0KmdOAQyKEplI7Moq9ew+jKIu5877soBjpTXFSZ6v7PvrQozkOl8kQOSpzDTEvbhQMVuEdbh5ucUUQxM2hCvin89HGpUkHl6ClUZ8+g3Gyj2iqFh4i2ttaxcfcStlnUI1suuLJt24WHSf/GrZfsy3zuWkpZkB3TLrJk9j1LEmUS/EHu/Mzz28EPoTLLH7dhYhYFvw5kxIqy6BUJfqV6/wrIwlVr2fIybY5O0I0PV5iNU//jSj+ejEmVSKzqvj32m1wlp7ipHN5V2ORVyUzq5ZpftlLU5RMhTQ/IoUlUXv4y6PpTtN7/ZXiOjAyTr72J5TZzBxOH0fz5j8I85uUWjWLKVlGjZBox8jrqWIpMbjxiZWOFN1kuOhGuDdQRknhRI4KubDFlk6EyfQLV42fDdzK2Fu+hMX8NlDmfvmBLcPocSH0AjdVHWLv6S7SEq3yf40alN+WIBxHS+KSkfOWZ62U+TiWrebjCfTlvX44d+CVV0eUnKbaQukydBOZeBK2xLdPgBc1B1Er4yhsziE/W08FHX9jLtLMInst2IVVJ8a5mMGvQ95dURUgb97y65alTXnKVlWGfV2y2yYWX2f9KoFc+Mg65l86+ANpugV7/RFCGrPz9BF9vIvishyrmlKQTeeorp0ZJqW7uN59p4t9GZ1KmvZ4m+gV6kNGJMDJVYltI9OljNO58gvbeVl9HRvDutf6ZC+ED7QF2Fm9hc/6S4nwrF/NtGpEUnWYWXVdL1petG4cySUlKTiGjVyQh2R0iqUVFPsxl8bXyYaldyo/6TUsxp8+ifexcGMEiD2+DzH8Ism3yy0i+3P063FMmQ07YZTMr21d55q0Y3DlVbk1FJNdMTF38l8d4y2TbyySpf4nkrqs+7nnyt0xeohj31cCRsyhvN9D87H7iqlpedeAA6n1jaCwtaOXH3yN9fY6LvLAfT0RyLU3gk3eTSDox8R+VyPfTau79QBw0SOttWwuxrqW+flROvoDqqRfCX/W1bl9B48aHLDq1lZEQvHqmsbyAnUe3UR09jNrBI6iNHwNabLxvmLyD0lRfUS9RaUo+l/iuqc3NyiJ7/9HEPZLJxadJyknXSDQyTUE5ybwWPuHu6LN90RtCpfouzLO2jNLyfVA29oPoFQ0IVnA9eKC93YYZqFWZcR7e7/gEsbpLLPOLJertoODwT/OCRCbBLDfh/qWS+z5hV6/o3/wdkT9vFPrnW82tfHGtbDBy8HmMjD2H1uYqGture7I7kumerlEplfowDs18FeUWweaSTfjZRddekDA7+TIaS1J3+Tt8PYhQRnQt2e7QxA9MEad2X5/66AnzUZBsNxoSqMrx51A58zJKI2NosW2+5tX3EtEpuZzggMWdhzfRZhGq4FdntcMnUGfRq4BYtRWnssd6mN4X9xVR5pQRMpnRV0WdAL58Iiip85mCp1v5+lcW75EtF3zDjMSIxl9+MsW3vRkdTreYabk0PL8qIFalxdtoTxwL/+jhufA6SRwpIs0PF2tcVB/qNeFb1d2CgZOgh/JEdV9GlGhT6odtfuQlQ8mJnleWWw71z6ZdpdqjxLb8po59AwcnX0atfxxb6w/Rbm6DdxClSj8OHL6I4+f+DP19h/Dp5b9Gu7XjUKKNrryjkV13qb+9WUnmis8STzh+TU5RtCBtKlwMl/0CwzavW0tl8xOoTmDnEfdrsMVXvfCvUBqfBF17gsaHP0f78aLFyryDFiNRWwvXQqnViWn0sZV+qT6I9vqK4cnqRKurCdL1F9FdEc1Rba3rxowNMbRFTM7EI6VoMqUug7f2ous6GeoyZSVAqVOc2/SnHcl27oItFkoLV0HYwqA9Non25Mnwr7TEdh2E49klQsWX7wM8LVL3nyhlLwhVWE78TFXqMsyZtHiPXpRCvPsJRWpfHaIqzxzUq175ddEPr+L0GJo4h9Hnfg/lvpFQgx1GrBrBaxRanS2V+tAUKn2jKDNi1dpew9Klvw7TpE2DL735EaZasQPF9J/s+Y90ClXJYgoY0THfs0HUfmJtTGMp2dU7kXwW55eVz6en0vQszeAI2+o7j9LYBLC9hda198P39RGBHFsEz1v1zV5gUau58Pv23UvYmr8MO9jPWlkOsvd/UVuL5oRIiinyjkA+v2hM9AJ6Z8ynJpZy9OWLvaFaH9r9v+lzirwtFKBSQ2v6LFrBw+zsa+nhLVQkRzD0ipCo5YjGeAciSwPFNbfyzSAhVdLksIFoGmXlySYbhdw55kWeIaJzRr3RI6uL6VT1q0dl6jSLBrBQMnM4tfHJPQ12V5+ABKv5lUU0gxN+mztQOUogSyqKNbUmTt33uIvKFRsDdanqtsuni3lrp/UjgusmEZA8PR3rnHpstlJBeeYsSkfn2Gq8ifbdq2h9ensvfXam2CIuqzI+jYFTr4S/Emxvb2J7/hJ2H91BESBCDYoanWprnYapBjypS17rJczIlHr+uVoly0iHIH9WL5kuMlKt0C54uwBbLLSmTqG0vYHy/U9QCd4xmCjJDXn6WUQK5fUiCgmqNOry3frbkFTZTWMVW6RW5RTl2KKy3JGPXMkGSj5dVAbYTreiIFtBm7WFD1OcPL87/mzaSpGDlp+9ZDr21WZPJh0CKS5IyrUfIck18/4hXq+Xjp5AaeYMCCNWAZGiwUuPu+9AIxoZWfD2R56+OjmH+vHzKPcPhduEm5ffRmtnE2roF41F9Hhv4WOmmpRhsjCSQzZPTfPrYe+Ysza8I8NbdEqB1tQJRq5eRDt49Q0jV5X5j1Bm0avekyqRj0jeS8N9eawbQ44hCvtIlclgxp5KJgxSXVb0uSjoDKsY2ViDWT47Pezym7piW7nFgifQeroivyOup5uJUYM3c+kyxPEcEXmKHy23N8Dp0nWQkVm+/c1B4UKsVFbBXFZQcmn0IAjb6sPgKLC63CFT2ofQYwnZ8lSjCMK0wZZgfeY8I1gnwis7i7exy7YEs+SKSmWoruSxKPnA214Vwcwzdn1CZwlimFp3dz0Au/HE56AO/e5H72awJXj8HNr1QVTYeK7eCY5g0P04Iysnrx4d2BEq2QLWrDwi+WwHC1JlT6hkUlT3symTEoswL3b1SoJ6leeuh1xeFvmGu0y3IvrGpCx3gi+ibnKSlL6ezR8RWrr33V5z0/ffyaBqL/6+mYOXp0iafNu+F+nD39fI6xsAOf1S8DNUxmK2gNsfgy4/RLFQGVnSOd/qzBsojRwKfx24c/djNBbvdHOZLiNtyLErVKTWBvwCqCj4XSICWdeZLscnoXIhU4D906YmlkudN5MreLvASTbHjp0Jr5dvvY/Sncvhg+6mMt0gI+96QiWSQpQpRNY8PywjVams0E1wE9OtH4JFECkZ3MqSR634aybluzk8c/kdFOPAk8hr/PnyZJPNRAfqmE93P6uXilR17stb3m2dpCM3NgaDGFxNl0MT/9fJAZcrnd5ARqWK0rFTINMnwuTt+zdBP70VHkBLFJL0EFFsNwRbgtWZF1BmJKvFVvc7zBm1lhe0vSBeQvq2fSbj2gZFEyoe+csqJkJlMp7VcI9Q5S2bSkhmF/3DKH31OyADI8DWGujVX6E9f0UoJ/94sCeh0GiiDi24WVwdcpCqSBExdEJ162p5Smn3e4K73Jjz5ynb3fnZleGLYEUyk9LELqI3EE0n1epHFr/SlQGJDDPoomBmkBHGPD1KFN+SsuOy+SvxHdnctdejcuwE6udeCYlVc/E+Gld+DdrdkojKUvccFWqYLs/fOK2yLcHa7Avh5+bifLglSAXnW+kdgAguCwNZSaZ9ItPSZazZ2HAfzjpt7ZKb7vngxwnz8szGgWje89f1MH31THnuBdQufgUlRq7am0+x/cO/Al1fdSpTDNl8lCPfTPXddzE8kCo9H5TltMsjGzhFOus8BKtX+uYlWFn4HW69IlP7DdFcyJIcKsjBp07CvC/8Ljb4Y0TTZchL56XoUsjzdEquHT6C/udfQXV8ErufPcDWx79GY3kR8etb0j89SEqhyuidvmx7pHuTBL+IZeSqPDkbStudZ1uCbFuwczed2q33TFPbEm8Tbfi20slzJYJ2kPe2DWHRoRiHbPcweidH9pop9OGLzP1aHX3nv4SBV78eft+9+SE23/sXtNZ0h4e66SMbV88qmYqQk1SFIrQpdCbMPI9J9ME38hArUX5Xg62DX3Llb+j9ppCqCHaO2ZRu01RqVdjavr2J9o7ZaPBprkq1Poy9/lUMnjyH9u4OVj/4JdavfsQRKPkMk101g3qxKIaMLhOUBsdQO//l8LmrILq2e/cKWot34AaRXipSw9eFKmRSSR5fUI1Zt9FjGtVxI61ZOT6Qrb2pXJ8zjCbKt0lPUB4ew/Ab38TA+dfQXlvB+gc/xfr7b8MNfohz0WXawAOpCsUYpxRNJfO1pI5UFWEI8pKqfDLskLecdP5ih162PHsURVB9wYZUiX5JF9ePauO+5m6DaPUwkyNDlgCao1Tvw4EXX8fYC6+Gn5d/9TZWLr0LyogVT6aib2IdeNJFYP5TAJGd0VFeGXmJ9ahMzqEye75zvtXGKnYv/4xtCW5KpeuoUH6IIkO+5hPfbjxxc4Obp/GBfCSQCKXY6uirTjaeSeZngaEX3sDBt/4Y1bEJNJ4+xpOf/gBrH/0CdvgtqUpmhYvh5A2FLqc9uRKlyQsfxIqX0wtCkHddRoxa2i+eZZJkC9tIRzwzVKNDHBAXRxnkd3SntOcnvFk3pJY5dPwEjv3Bv0FteBTr92/j3t99D421FSfNeJrj7tJNLZRIetaVBluCAbEqH54L7zZZxKrFtgXb3BEMOgrHfzLLKcvD5zW1TSJSVgzsPUwxUR1biJdJLvL8EyrAJZae1ePQ1/8EYy99hZGrcax++At89qPvYXfF5GiTIqOTfsu0QU9JlYhQ+SFWvERZmjzwIyu5do6vFEkk/A3B5KGXyfu+TVgaonFWVB+bwGbM53M4opGhl5Jur3iOUcdWs3WuYpcf383Kq48dwKk/+XchqdpZfYyb3/8uNu7dkpD6aAbZudmkDvx1NfJZqVhKugcCclU9+RJK40fZluAmWp9eR2vhOkTlqKP5suiYm55yFDvLZSXKUbQu8giNKfzE/VWk3VWWjcc2Q+3ABI58688x8cbXwnwP/uGvsfj236K1lT0Mtzo4zP6GsPnoAUzqp/IAdta/qDHDRc978UxVXujMlTy1b918BR57TQSKLNOP6cgPUVziWYGIDLrDTIqvE8/N42UmqZLmp9I3gLlvfhvTX/kGmsz43v/pP2H+Rz8Ab/x5Ym8OmvmWfvEwzeEm80YvOuWXJmdRZpErsC1BsrOFxs33QZc/Tekop1TJOuh+/Qi46VwcmTLtyWR0tXj4KyO/zrw9y0vMYphFqOzLrB88hAv/5b+jb3wSO48/w70f/BUevfczjLz5+xg+fQFDMydRHhhCpMHa/A1sLdzCyq9+jMbdaxkdZd7c3cL76l9RVLc7Ez8PpCqAnMOKUhbtYP3Ko9Kom28U11exxkSp/f6Rrgh5xgZVyOoNdOu62M1GG2690C3dBkNzpzF68gxGjs1ibPYkKO1ourH0CKv37mD50q8xceIUTv3hdxix6sedf/l73PrB99FQnNpMUp9o5qpcL14KFcowH5f5nJxM41KwJTj9HGi5Ajy6i+adj4HMqezpMu2efkvHtXo9D30tR/2iF3F2HxGq5HfTvPJ85oQq+myPqa98Cye/8x/wcGMH1+/MgzR2ULp9GXj8CKXdLWB3G+2hA6CTx9E+fBw0eCvC1XdR+einwOZTo/Fib3l99rN8geXpnCoq+VwMzIOEvdHHH2cmkhR59Fe73yLaJuvKiDLdfhh5M8gnjllev+2bbKds21EJjcozhqigdLkcUq2h/rVvo3as88oWurLM/pY6Utj/yNAwSqMTbK+gilqlihOjA+FW3/L1K9JSoS5RopPtyLIlVqKy0rLUJUnAInel2efD6FWA4JDF9sINoPseQ7nEbCwn+c10FPK9zV+DRgsT+eajsEiLoJLtyxpF8UOXfK52Rz3uzcl3HrsXo3ThTewcP4Ojhw/jyd/8TzTDV0iJfXTr5AX29yIII1TVd/4eRDHm7S1aUWNJ3E4F/PqvNwRLTqxkKYsmVnZlqIL66FnkikcvyhA5/uh6rMX+kyyepOchVfIxyDuvdK70MYXiKcyXodNJBRNZRKhN8IxQ+c1vAP2DaN+9AXrtEmgj+0qLgYlDmP2zv8D1GyzUz6IyrV/+CHRtFe4Qta9Lv4mpqBzmhNN6Vg2NonT+zbBNsb3JyNXHoIt3DTNn66yjnYCYUMlgE+flvUFWfi9neu/Kcn8YPQ+hoVJten5sQ62O5ktvgSw/RN/Du2hsriGpT7q8rrUbOYjWuVdRmr+K0uI9pY/gpehhYydNIZZXHj4w9ZfwiuR0c3PSoqFFBKXo9VClLIpAmMlVaZVsOZK64z6kxCXZXPeHZJ2ShpZwaeRt0TsQ+NpAS8eRxPWlSBpAwunBS0vKUUdziCBnErJIpkomTWlRmjkB1GuMTH2I9q2rLMzSEuZsbG5i6b2fo/3wHjA4ADIwCMq2BfMvHPLbnViOSoLOKKdpcfyNCCUJywmOj1i4GZ5pRcYmQKbmQMaPgD5eBFoN2IIISuTnFD/PRMRJRIrE7ZQtp/PZ5SXBRaEITWjO0WdKqASLGoVEM318zJ1EuUMTqA1PgTy4jdb6Y/4uRKO/tLOF2qHnUG40QFcfpTQDxGNVj16S9g5K8ApxY7lIUX031yP5HYrvzybSho8f9BT5Box43RjLTf4VBdo1tHFZ0We6l0K8wZL8E8FXD9Puf/nlRQ5W1aZqqkS5PuFXn3IHR7nvouu8BJ1RT8uolPtQfsqiKp/e18oI9WYRGHJvHtUKI1blsjK9GZI6teGOZPuK7pnkjwhEpw/jR8j5/tOARafaH/6EEazr4TMn5Et/CHLmtfCh9rSupn/pPKLoBcn8m9Y3S6h42dGdXtoRHZLlR7Vw00dub3wSRhPirk5rT4946pwPhM3vA31nMHr0LcFdfrx0Su+fehVj9TMobzaE2tkxC77Pe4cKvCLZWPkJlk6KfGqIJjmBqDP9N3gxHRkZMJoxe53r4klhogOvL1WkEWvlGzH5kMVVSCJdeiWe3FoU5zXXgc9nI082bvXxCplEysnMY/yooPw8jo9isHwQtcEpLNc/QXMnCvWna0s4Izo8cgIVMo6lVhP5kawHkHceRjMtGmlUSEDlDi2SkpaZ3IYx1I85J3rzI4BFrjD7PDB5PIxe0eBZq+CapCxz8PaCGqRT3c8zLn1BNvPcx3jaOtLMdTuIbK7K/sryi2uVz+P6QXvnKYtA38OhY7+HsZEX8ejqd7G58glEY6zMFlbjc9/G6PRX0dhexpOVeaFG7oyit2PS0zNVGbHwRaxMYFYBneMqVkff8uPWVdUrOYCLql9v+lgE3hTJNEkSLT6dyrzZ6kEzV2KQHs8HlXssAv2jM5i5+BdobT/Fw+v/D+srHYcvq/HkqT/C2NFX8dn8P2P57s+4u6btI6upq/3JuqZ4fCS/68iUKRzm5+QMI1fnOtGq4NeB88xRLc7jt9D1t/1syPYOTZXkBtNFlCp/rJNo5LvBp7WIZY3O/REGTvxe+DkgTLvrC8xGdLYDSbmfbRFOoz50PMzTWLmD1SvfRZOlc7eW+2H90iiIVIWiUZQDETlCc2Rdrvh6UfDbLtTagBRZz161oR+Yxd9405o1s0Tgas3c5X4uNvyP+/Fjb+Hg6d8PJa8/uYmNpSvMiHaelwpKqfSNoTY0hdGpV1Cp9mPlzk+wdPuHGY1iEAP9ZRA5Lt3co5L82IubRlFUHQm3m+FEWbZQOiNWdPoUSKUGPLzLyNUVwREMX1SIllOydG5I+xaauuYHLrpl9cjvSYoiHwny1zcKHH8ZdPQoMHaoq3PXfq6voLz6EHjwMejKPaEEe1K1vyiQVKWKgW+CJeL79vxURsuKI4SxfL+Ip5tJC/gq36S8otvy84wi24R3B+IYnj8dOrLKfSOoz73GlqiTQPDrtUT54f+bu8DGEzTu/BrNlQWhlCzclk/pvHx+UVtE12X2IF7EEIWEfHSVj7Ip0DcAOsOiVlMzCI4CI3c/AQm2BFM/R7e3is8WZLsKKjqbD+kFkY+2E3krFxm+CVUs1w/MZPWPHw5TtrY20NzckEqx9xzPxjjvIanyC9X2jR1EXZfPLLqX6x9m7VE0yfotoZKjiLahim98uSqioZKvdtbhSrRSRW1iai/P7soTQHHAZyRZLM+3u+SviciMiVUhUsnu0Enj7AYjV3jpd8LjLMAcVbglGESvPndkymSBZpvHDFmykkeuzH/kl1lMeKK3skzjz5+3bb8IPdj+iz77g6z57IewLOzeC1LFl9kbUGEdiyB3ugFushXzRSdjvutHDa7w5atIhugqtXR99nVMxthiKaRgs+m+LIslxHUt3rTz8xcoHT2JyumLKAWvAWHkauedfwTdXNfI2M85ZtOjvD/J18LiuFHeX/DJfIkPfV3f3alCkYRKXOdiCJVIwv6hx5EqP8NCRAdUNMhsKuomQVHkIym/eMS1I4KrRYBvN5fhpuvhzzNc6iMe0bo5kE5tbuht3J7r3TTiWEGnbF7roiOr5rkB1fKE7N13L8nEwsUICFVt9gwGXng9fD1Q494NbF3+FVobawl5JvDRxrIIoKy8vHZCLR1S3XzAJrrpIjct3bdcPzLM+lq1jNal0efcf3h4TY1t9mLJiUwyFWigBlHkLhq9JQ7UaJgHeDacWSwDMCO/zwIhU415nUOxay9RSfroUrQWTjtCkiA4cdp4MyL5kD5RSBfXT7SQkc9empAV66vrU1tbkx0rqtZXr7yJsB/Me9OGhKRRHhzG8EtvYvC5F9DeXMPGjY/x9P2fwQ0qZylanBVFMNwgbqEiojQ+6yuW4ceC5dXPX5SQl2Zev2eLSCXRo0jVXnHoFaFSuVE7wwZF6qKddO9JADVyx/tJTnzClEya5vG/BnOFXhtxzEqcxzeZ1sV4RDNUHJWL7/mCuiWSd0wtWfp8KsLdE9XMzjqprN7QmRcx/qXfRW1kDDtPV7H6q7ex+smvYQfVCFERYdt6+Ic4QuULNpE4W7lpPBtkyl2GzPPnt4zPHrkq4DU1OhRHrESSVbEBwqUhwlSqFMXVBVJdelUK0aTqVb2/qJARi+S9fNLlPSQ6QpZoxr8v3ZKaEYjJk6tcG+giL9kWJDCzLWaaxRG3tGw5ActeE7VfGrvLi1j98B1UqlWMTM/g4Iuvoz52ENuPHqK1swV3PJtzP9s/RTpd0fxwgc/XzKju54VLvNYspV2EKm9759NAh30gVUmoVjj5JKrcAT/xzLtJZuR6STCKL4dwfwAypj9LCngJv8nIU3/bOIheUhpUSBsIl0Pu1p+dviXC7zrHYqK/yEKIaWdexFGspPYxvcrqle4xJNKLLVwHG/du4+mNK+gbHsHU62/hyJe/AUIIdlYeo7Wdh1w9GxBb5iIiR0Ry3V22yvfkpyvFRc/ictVl8L6El2hHqIqAvg5W0vJv/7kqJKI7osHr7lxEmwvFBav3w9nwNSqW3KU3jNQpoE37RYXfCRrLdEE2CiP6FRGFbazIlz55ZKkkE20KO6TPU4+uFQGRRSRW9ECfsu/AOF75T/8N9QMTjFQt484/fh8P3nkbaLdR3m6g2iKotUvhi2GbTJHdUhuNKpNcr6FX0LVup11iq23voE3AewWRn3KXLbMU/urge6vTDiZewq6uPupThH1OY58jVabITxp0xCq5xhOxarFEfs3PS+s1iiVXouiV/UqqWOL3xYNqKZCEeZxV1G/ycU800kyg0u3ZHQuE+1ceIfKBOBrWIb7JUtMa6GTo0GSRqftv/yN2n65g8vxLmLr4Op5cuYTW1VsY261imNYxUKmhr1RFjZYxuMX02djCzsZTRrIY8arV4QOi1hSPweySl2hkuUNkxwng1RmLn5nyU4ciCIOdTFU9qCBtETqI4bMPFaX05pwq37LcI1dmK6D0d0h1kuV+lojD/uoRuQrZGlwcT/xNhmjeyNpJ7GT4u8lWJZw8MyqWhxSZ2gCfLtHPPCSaO3Qv2pDewrODuZuR/4iEcN/l4HuzXKth69EDDKDOtgYPYIPsgpayOtS3W6BP1/F0ZxVkZBj10QMwgb3T7I3jE5edhGjO5S0jGymOpNvJkeXy3W72ZMpEkv0s6fV4yIcSCkORoUc32S7hSDnrlk1E4NkiBvs7IDvtF7/co/M5Swri1BGo4DMV/InSf57RqRfJXOM/U+nqlv9eyuROkzF99MMlWsX3jw55+i8eDyQ1VuJ//c7IqKxO68VE1VZGMp++J0iqjjSjDzhJoj9wpazcuY7m5hbqJ+awXm4ICVVwZbevjN3Do6iOjmJn9XEY7ZLrqavNszCP+XEiI6z8Z3uQvbma3Xo3GzVUc892ruUpzy2Xfky4SH02USCpKhKRQ/YzmIhzGt1gj/6VGZBeYb/KTYOkDL/sLWoiZ6FaKSbr5qOOPmXxclV1SH+me2SAcm6XGhsnUfzChR6pHY/szwUuebO1I93/kmOLIm6/OKUYds7OtF/56wTmYzdNmMTlp//o3r9i2YGc9u4OWo0GqiMj2HiytHddRMSie5WRUZRKjGCtrWTSZ/UT1WP/7ZC4zf3rRVJ9kJ5F7uQiyl10W6oWvGL4ilnnyZGFfUvnRQVfCMiMvl1unQSRk5KXHQ18ca70vV4hqet+lJ8FEbZm8mU6SUKlIldpCen0ovqaTFiTNLxMXRmyMZEdR9lfhaU/mUA0CmW9r1qrQ6gvEXz2AarRSjV+0y1FE/loSkZ0n0hnqB1kdkA1dmXtx3/PptO1dkxysgRij2CWSiizv/bODjBEEY84URt37zSboO12SlYaojrma9l8SNYlQi90otJetJER5zRZYOaFyiqoyzTxKOYLFZ917P3YK5hUFTUAfMgUGyiVyaZaeUmI1nnZsvcH+2nk1MhO6YhmJR0E9q4l8yRdZdKtiCWrQCWaUYO0ohVlVq/IoYvkEcjku5EY0SjkNeN1UJ+yLyOFbvqpoZqJohGQHQ18rrTkWIafGSqbW23IHRRRfOedTP65G0kvVSoo1epobKyjXu0DGRniyk3+i/DXgc2lZVDaRrV/EGZn2u+HrVGNiyLLLIIM2HmhfBARaapNnfzuT4fPLwomVb1oHNdOIEZ3Re45uq6G3GUVP8FNoTPuzw5MWrHzPXYG8ctMTKIHIpqhSicbDSpTQwQa2I5dCr3eZsjOnCTBoKkrZhJUbZQHslkY3ZORuzTUVDDdZ25RBVW9iUALAvUSTkbC/GFg/DA2Hj1Ec/UpRraYQxgcRLNeRrMcz576LtNgt4Gd9afYaG2jPnYAtaHhVG32H/xiBonvonRF6iAu2Q4i61Z0hIpqrmW1IQpp7rr4QJHtpSm5dy9U7lUF809zXbTKzdSZrPyfJYhWLc+invkhqmUyzhE/YCp+45yslWJZJCPDD1wJVZY8prfBaKbm6vJl89t1vOjqZD8DZRqKS7IlhSZ6iPqKH0WitKLvftFmW3rNtTVUt1sYoXUMlwdQL9c751SxqNQmI1KrrQ1s1lphNKtc70PvkR2z8XfVeOGtue9Ikhz+rGXRvlPXfmI8u4Rqf9Hjd//1EvmGtM6VyPLop61uKLo4yaLxxSRTXxyojKFoRKpGsO6KLWyIiUlaVTo1RVJJk9MoIpidrg6aGNzTUb98bksHstNApUFRph2S3WblNdl+RqtaZmGsMnoHXdvKljFFwo7E97rMfGXYR/SIJrVdG/ioZ7GLD1P8fyrs3sB+lKlGAAAAAElFTkSuQmCC"}},"time_used":10,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":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.195.200.162","port":443,"asn":16509,"as":"AMAZON-02","country":"Germany","country_code":"DE"},"is_navigation_request":false,"resource_type":"websocket","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:17.203Z","timestamp":1785130097203,"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://dreamspinfluence.com\r\nSec-WebSocket-Extensions: permessage-deflate\r\nSec-WebSocket-Key: 054pIlCuRFsykzCFrGzn9w==\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 05:28:17 GMT\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Accept: XoBCXHDF94jpDGN0/vOm39WhitU=\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-02T16:49:29.666545Z","times_seen":17675151,"resource_available":true,"data":""}},"time_used":240,"timings":{"blocked":0,"dns":82,"connect":104,"send":0,"wait":26,"receive":0,"ssl":27},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/2023/12/ic-store-your-nfts.png","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"lazy-imageset","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.376Z","timestamp":1785130090376,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/2023/12/ic-store-your-nfts.png HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:19 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4669\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=GL%2FnYjF3L9IpY6wjHM3x3kzhlFx%2FgiIBB6dmMf2qPfLBeIlYIlU59PK6HI%2Buvuaf%2F9yZqTxCshexR5i5dLPbfxxF0dpjJ7ewe2uU%2BwebU15ua94WY6WYYgJCZjtfkSdTbJNLa1w7nw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=5,i\r\ncf-ray: a2193d38de93120a-OSL\r\ncontent-length: 26572\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":26572,"size_decoded":27342,"mime_type":"image/png","magic":"PNG image data, 220 x 220, 8-bit/color RGBA, non-interlaced","md5":"50f115f59131b6412a09c84882dffbab","sha1":"25debd882843a6b5172a6e92e84d2e344ab06806","sha256":"22a1d1d0768427cd1a5025d8256b2926dc23d30b02df0de446f3ee0d16cdc49e","sha512":"2c7baec16e23c016be0707cf624d3b2ae5a4a640b43850ec7c04f7a9d20d8b78af9708c3e1b16e0c4d3e427c862364a1752aee77cd1ea23758b3e185fe9a39e6","ssdeep":"768:DWyQ1YdLex5l2+51Pa1u+omJAypkcLFx3:/QpV551Ptm6yScL33","tlshash":"1dc2e1b751a7cc3a8c6ea03d094b5596f2cb209ca4e2df87da15e10de74f388c5a83d5","first_seen":"2026-07-27T04:11:05.697625Z","last_seen":"2026-07-27T05:30:59.804521Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"widget-v3.smartsuppcdn.com/assets/shared-CgMCAfor.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://dreamspinfluence.com/","date":"2026-07-27T05:28:17.009Z","timestamp":1785130097009,"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-CgMCAfor.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://dreamspinfluence.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 05:28:17 GMT\r\ncontent-type: application/javascript\r\naccess-control-allow-origin: *\r\ncache-control: max-age=31536000, public, immutable\r\netag: W/\"6a4cb803-42705\"\r\nexpires: Wed, 07 Jul 2027 08:30:00 GMT\r\nlast-modified: Tue, 07 Jul 2026 08:25:39 GMT\r\nx-77-nzt: kyP5kGVylTGLVnqRTxiaSpOr0zClH/JoNgjM4reX9xYSmvDMWI4eQdyPKFFSR+a4PlAeB9o\r\nx-77-nzt-ray: fdb5412324199c1071ec666a73a3a700\r\nx-77-cache: HIT\r\nx-77-age: 1717054\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":92592,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (44710)","md5":"06c5668b0e6d3383e096c45abdbedf9d","sha1":"8d64309e8ec50da59f799336c11685ca7fd15ecc","sha256":"2724b50edb69a23cc951a77f775727b960c857d18d58cfa9a47fe5c094d9b99a","sha512":"c4a86d25f4e86be36db19539b4e3efc70500a48b9664349043d76a1451f8536c8bed7fe22f8ca790fb3ac7e26fa7efbfc37e0c927687966dc08a02442e15f85c","ssdeep":"6144:mLjnOEIL18ad2jJKaQo+tRkYcuBaay+moJG:iOEIZRd29lqj4n+moY","tlshash":"53443ad53294b035439b51e6906f1106f33e5c58580d812cf269ede678baec8a2f7fb8","first_seen":"2026-07-07T11:50:17.748529Z","last_seen":"2026-07-27T07:27:47.884385Z","times_seen":1867,"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/bix2YXJpYWJsZXM6dS52YXJpYWJsZXMsd2lkZ2V0VmVyc2lvbjpgMy4wYCx2aXNpdHM6dHMoKSxpc1dpZGdldFZpc2libGU6QShSXyksaXNXaWRnZXRPcGVuOkEoWCkscGFnZVVybDpobChyLGMpLHBhZ2VUaXRsZTpmbygpLmRvY3VtZW50LnRpdGxlLGRvbWFpbjpmbygpLmxvY2F0aW9uLmhvc3RuYW1lfHxgdW5rbm93bmAscmVmZXJlcjpmbygpLmRvY3VtZW50LnJlZmVycmVyLGJ1bmRsZVZlcnNpb246YGMwNmQ0NWMzM2UwOTk4ZWYyZDMwNDYyZmI1Nzg3OTYzM2MxZGY1Y2FgfX0seWw9KGUsdCk9PntsZXR7aXNQcmV2aWV3TW9kZTpufT1WLmdldE9wdGlvbnMoKTshZSYmdCE9PUEoZmwpJiYhbiYmKGdsKCksQShYKSYmWC5zZXQoITEpKSxmbC5zZXQodCl9LGJsPSgoKT0+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+ZS5yZW1vdmVFdmVudExpc3RlbmVyKGBwb3BzdGF0ZWAsdCkpKX0saF89KCk9PntsZXQgZT1CKCkuX3NtYXJ0c3VwcHx8e307ZS5hcHBWZXJzaW9uPWAwLjAuMWAsZS5jb21taXRIYXNoPWBjMDZkNDVjMzNlMDk5OGVmMmQzMDQ2MmZiNTc4Nzk2MzNjMWRmNWNhYCxlLmNvbW1pdEluZm89YGMwNmQ0NWMzM2UwOTk4ZWYyZDMwNDYyZmI1Nzg3OTYzM2MxZGY1Y2EgLSBNZXJnZSBwdWxsIHJlcXVlc3QgIzQ1MiBmcm9tIHNtYXJ0c3VwcC9kZXZlbG9wIC0gMjAyNi0wNy0wNyAxMDoyMjoyOCArMDIwMGAsQigpLl9zbWFydHN1cHA9ZX0sZ189KGU9amcuRGVmYXVsdCk9PntsZXR7d2lkZ2V0VjNVcmw6dH09Vi5nZXRPcHRpb25zKCksbj1uZXcgQXVkaW8oYCR7dH0vYXNzZXRzL3NvdW5kcy8ke2V9YCk7cmV0dXJuIG4uY3Jvc3NPcmlnaW49YGFub255bW91c2Asbi5sb2FkKCksbn0sX189ZT0+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+e3BiKGUsdCkmJklnLnNldCh0KX0sWmI9KGUsdCk9PntfYihlLHQpJiZxLnJlbG9hZENsaWVudCh0KX0sUWI9KGUsdCk9PntwYihlLHQpJiZxLnJlbG9hZENsaWVudCh2b2lkIDAsdCl9LCRiPShlLHQpPT57aWYoIXZiKGUsdCkpcmV0dXJuO2xldHtpZDpuLC4uLnJ9PXQ7JGwudXBkYXRlSWRlbnRpdHkobixyKX0sZXg9e3ZlcnNpb246YGMwNmQ0NWMzM2UwOTk4ZWYyZDMwNDYyZmI1Nzg3OTYzM2MxZGY1Y2FgLGV4ZWN1dGU6ZT0+e2xldCB0PWVbMF07aWYodHlwZW9mIHQ9PWBmdW5jdGlvbmApe3J4KHQpO3JldHVybn1pZighZGIodCkpe2JiKFN0cmluZyh0KSk7cmV0dXJufW54KHQsZVsxXSwuLi5lLnNsaWNlKDIpKX0sZXhlYzpmdW5jdGlvbiguLi5lKXt0aGlzLmV4ZWN1dGUoZSl9fSx0eD17WyQuQ2hhdE9wZW5dOkRiLFskLkNoYXRDbG9zZV06T2IsWyQuQ2hhdFNob3ddOmtiLFskLkNoYXRIaWRlXTpBYixbJC5DaGF0TWVzc2FnZV06TmIsWyQuQ2hhdFNlbmRdOlBiLFskLkxhbmd1YWdlXTpqYixbJC5UaGVtZUNvbG9yXTpNYixbJC5IZWFkZXJTdHlsZV06SmIsWyQuT25dOkZiLFskLlZhcmlhYmxlc106SWIsWyQuQ29udGFjdERhdGFdOnpiLFskLk5hbWVdOkxiLFskLkdyb3VwXTpSYixbJC5FbWFpbF06TGIsWyQuUGhvbmVdOkxiLFskLkFuYWx5dGljc0NvbnNlbnRdOkJiLFskLk1hcmtldGluZ0NvbnNlbnRdOlZiLFskLkh0bWxBcHBseV06bnVsbCxbJC5PcGVuUmF0ZUZvcm1dOkhiLFskLk9wZW5BdXRoRm9ybV06VWIsWyQuV2lkZ2V0U3RhdHVzXTpXYixbJC5UcmFuc2xhdGlvbnNdOkdiLFskLkF1dGhGb3JtRmllbGRzXTpLYixbJC5CdXR0b25TdHlsZV06cWIsWyQuUHJldmlld1RyYW5zbGF0ZV06WWIsWyQuRGlzYWJsZUNvbm5lY3Rpb25TdGF0dXNdOlhiLFskLlJlbG9hZFdpdGhNb2NrRGF0YV06WmIsWyQuUmVsb2FkXTpRYixbJC5Cb3RJZGVudGl0eVVwZGF0ZV06JGJ9LG54PShlLHQsLi4ubik9PntsZXQgcj10eFtlXTtpZihyPT09dm9pZCAwKXtiYihlKTtyZXR1cm59ciE9PW51bGwmJihyKGUsdCwuLi5uKSx2byhg8J+nmeKAjeKZgu+4j1tBUEldICR7ZX0ke3Q/YDpgOmBgfWAsdD8/YGApKX0scng9ZT0+e0EoQ18pP2UoKTpYbC5wdXNoKGUpfTt0eXBlb2Ygd2luZG93PGB1YCYmKCh3aW5kb3cuX19zdmVsdGU/Pz17fSkudj8/PW5ldyBTZXQpLmFkZChgNWApO3ZhciBpeD1lPT5lO2Z1bmN0aW9uIGF4KGUpe2xldCB0PWUtMTtyZXR1cm4gdCp0KnQrMX1mdW5jdGlvbiBveChlKXtsZXQgdD10eXBlb2YgZT09YHN0cmluZ2AmJmUubWF0Y2goL15ccyooLT9bXGQuXSspKFteXHNdKilccyokLyk7cmV0dXJuIHQ/W3BhcnNlRmxvYXQodFsxXSksdFsyXXx8YHB4YF06W2UsYHB4YF19ZnVuY3Rpb24gc3goZSx7ZGVsYXk6dD0wLGR1cmF0aW9uOm49NDAwLGVhc2luZzpyPWl4fT17fSl7bGV0IGk9K2dldENvbXB1dGVkU3R5bGUoZSkub3BhY2l0eTtyZXR1cm57ZGVsYXk6dCxkdXJhdGlvbjpuLGVhc2luZzpyLGNzczplPT5gb3BhY2l0eTogJHtlKml9YH19ZnVuY3Rpb24gY3goZSx7ZGVsYXk6dD0wLGR1cmF0aW9uOm49NDAwLGVhc2luZzpyPWF4LHg6aT0wLHk6YT0wLG9wYWNpdHk6bz0wfT17fSl7bGV0IHM9Z2V0Q29tcHV0ZWRTdHlsZShlKSxjPStzLm9wYWNpdHksbD1zLnRyYW5zZm9ybT09PWBub25lYD9gYDpzLnRyYW5zZm9ybSx1PWMqKDEtbyksW2QsZl09b3goaSksW3AsbV09b3goYSk7cmV0dXJue2RlbGF5OnQsZHVyYXRpb246bixlYXNpbmc6cixjc3M6KGUsdCk9PmAKCQkJdHJhbnNmb3JtOiAke2x9IHRyYW5zbGF0ZSgkeygxLWUpKmR9JHtmfSwgJHsoMS1lKSpwfSR7bX0pOwoJCQlvcGFjaXR5OiAke2MtdSp0fWB9fWZ1bmN0aW9uIGx4KGUse2RlbGF5OnQ9MCxkdXJhdGlvbjpuPTQwMCxlYXNpbmc6cj1heCxheGlzOmk9YHlgfT17fSl7bGV0IGE9Z2V0Q29tcHV0ZWRTdHlsZShlKSxvPSthLm9wYWNpdHkscz1pPT09YHlgP2BoZWlnaHRgOmB3aWR0aGAsYz1wYXJzZUZsb2F0KGFbc10pLGw9aT09PWB5YD9bYHRvcGAsYGJvdHRvbWBdOltgbGVmdGAsYHJpZ2h0YF0sdT1sLm1hcChlPT5gJHtlWzBdLnRvVXBwZXJDYXNlKCl9JHtlLnNsaWNlKDEpfWApLGQ9cGFyc2VGbG9hdChhW2BwYWRkaW5nJHt1WzBdfWBdKSxmPXBhcnNlRmxvYXQoYVtgcGFkZGluZyR7dVsxXX1gXSkscD1wYXJzZUZsb2F0KGFbYG1hcmdpbiR7dVswXX1gXSksbT1wYXJzZUZsb2F0KGFbYG1hcmdpbiR7dVsxXX1gXSksaD1wYXJzZUZsb2F0KGFbYGJvcmRlciR7dVswXX1XaWR0aGBdKSxnPXBhcnNlRmxvYXQoYVtgYm9yZGVyJHt1WzFdfVdpZHRoYF0pO3JldHVybntkZWxheTp0LGR1cmF0aW9uOm4sZWFzaW5nOnIsY3NzOmU9PmBvdmVyZmxvdzogaGlkZGVuO29wYWNpdHk6ICR7TWF0aC5taW4oZSoyMCwxKSpvfTske3N9OiAke2UqY31weDtwYWRkaW5nLSR7bFswXX06ICR7ZSpkfXB4O3BhZGRpbmctJHtsWzFdfTogJHtlKmZ9cHg7bWFyZ2luLSR7bFswXX06ICR7ZSpwfXB4O21hcmdpbi0ke2xbMV19OiAke2UqbX1weDtib3JkZXItJHtsWzBdfS13aWR0aDogJHtlKmh9cHg7Ym9yZGVyLSR7bFsxXX0td2lkdGg6ICR7ZSpnfXB4O21pbi0ke3N9OiAwYH19ZnVuY3Rpb24gdXgoZSx7ZGVsYXk6dD0wLGR1cmF0aW9uOm49NDAwLGVhc2luZzpyPWF4LHN0YXJ0Omk9MCxvcGFjaXR5OmE9MH09e30pe2xldCBvPWdldENvbXB1dGVkU3R5bGUoZSkscz0rby5vcGFjaXR5LGM9by50cmFuc2Zvcm09PT1gbm9uZWA/YGA6by50cmFuc2Zvcm0sbD0xLWksdT1zKigxLWEpO3JldHVybntkZWxheTp0LGR1cmF0aW9uOm4sZWFzaW5nOnIsY3NzOihlLHQpPT5gCgkJCXRyYW5zZm9ybTogJHtjfSBzY2FsZSgkezEtbCp0fSk7CgkJCW9wYWNpdHk6ICR7cy11KnR9CgkJYH19YXQoKTt2YXIgZHg9d2koYDxkaXY+PC9kaXY+YCk7ZnVuY3Rpb24gZngoZSx0KXtsdCh0LCEwKTtsZXQgbj1vbyh0LGBoZWlnaHRgLDMsMjApLHI9b28odCxgd2lkdGhgLDMsYDEwMCVgKSxpPW9vKHQsYGNvbG9yU2NoZW1lYCwzLGBncmF5YCksYT1vbyh0LGByb3VuZGVkU3R5bGVgLDMsYHJvdW5kZWQtZnVsbGApLG89Zm4oKCk9PmAke2EoKX0gYW5pbWF0ZS1wdWxzZWApO3ZhciBzPWR4KCk7bGV0IGM7cHIoZT0+e2JhKHMsMSxtYShbUihvKSxpKCk9PT1gZ3JheWAmJmBiZy1ncmF5LTIwMGAsaSgpPT09YGRhcmtHcmF5YCYmYGJnLWdyYXktMzAwYF0pKSxjPVNhKHMsYGAsYyxlKX0sWygpPT4oe2hlaWdodDpteShuKCkpLHdpZHRoOkZ1KHIoKSk/bXkocigpKTpyKCl9KV0pLGtpKGUscyksdXQoKX1mdW5jdGlvbiBweChlLHQpe2xldCBuPW9vKHQsYHNpemVgLDMsMjApO2Z4KGUse2NvbG9yU2NoZW1lOmBkYXJrR3JheWAsZ2V0IHdpZHRoKCl7cmV0dXJuIG4oKX0sZ2V0IGhlaWdodCgpe3JldHVybiBuKCl9fSl9dmFyIG14PUVpKGA8c3ZnPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTE4IDZMNiAxOE02IDZsMTIgMTIiPjwvcGF0aD48L3N2Zz5gKTtmdW5jdGlvbiBoeChlLHQpe2xldCBuPXJvKHQsW2AkJHNsb3RzYCxgJCRldmVudHNgLGAkJGxlZ2FjeWBdKTt2YXIgcj1teCgpO1ZhKHIsKCk9Pih7dmlld0JveDpgMCAwIDI0IDI0YCx3aWR0aDpgMS4yZW1gLGhlaWdodDpgMS4yZW1gLC4uLm59KSksa2koZSxyKX12YXIgZ3g9d2koYDxidXR0b24gdHlwZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+PGRpdj48IT48L2Rpdj48L2J1dHRvbj5gKTtmdW5jdGlvbiBfeChlLHQpe2x0KHQsITApO2xldCBuPW9vKHQsYGljb25PcmllbnRhdGlvbmAsMyxgcmlnaHRgKSxyPW9vKHQsYGljb25BbmltYXRpb25gLDMsYG5vbmVgKSxpPW9vKHQsYGljb25TY2FsZWAsMywhMSksYT1vbyh0LGBzaXplYCwzLGBtZGApLG89b28odCxgdmFyaWFudGAsMyxgZ2hvc3RgKSxzPW9vKHQsYGZvY3VzYCwzLGBwcmltYXJ5YCksYz1mbigoKT0+bigpPT09YHJpZ2h0YD8xOi0xKSxsPWZuKCgpPT5pKCk/MS40OjEuMiksdT1mbigoKT0+dC5pY29uKSxkPWU9PntlLnN0b3BQcm9wYWdhdGlvbigpLHQub25DbGljayYmdC5vbkNsaWNrKGUpfTt2YXIgZj1neCgpLHA9Vm4oZik7JGkoVm4ocCksKCk9PlIodSksKGUsdCk9Pnt0KGUse3dpZHRoOmAxZW1gLGhlaWdodDpgMWVtYH0pfSksWGUocCksWGUoZikscHIoZT0+e2JhKGYsMSxlLGBzdmVsdGUteXdvZm1sYCksZi5kaXNhYmxlZD10LmRpc2FibGVkLHphKGYsYGRhdGEtdGVzdGlkYCx0LnRlc3RJZCksemEoZixgYXJpYS1sYWJlbGAsdC5pY29uRGVzY3JpcHRpb24pLHphKGYsYGFyaWEtZGlzYWJsZWRgLHQuZGlzYWJsZWQpLGJhKHAsMSxtYShbYHctZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJgLHIoKT09PWBzcGluYCYmYGFuaW1hdGUtc3BpbmBdKSksU2EocCxgdHJhbnNmb3JtOiBzY2FsZSgke1IobCl9KSBzY2FsZVgoJHtSKGMpfSk7YCl9LFsoKT0+bWEoW2BidG4gYnRuLSR7bygpfSBidG4tJHthKCl9YCwhIXQuZGlzYWJsZWQmJmBidG4tZGlzYWJsZWRgLGlzKCk/YGN1cnNvci1hdXRvYDpgY3Vyc29yLXBvaW50ZXJgLHMoKT09PWBwcmltYXJ5YCYmYGJ1dHRvbi1mb2N1c2AscygpPT09YHNlY29uZGFyeWAmJmBidXR0b24tZm9jdXMtc2Vjb25kYXJ5YF0pXSksZ2koYGNsaWNrYCxmLGQpLGtpKGUsZiksdXQoKX1faShbYGNsaWNrYF0pO2V4cG9ydHtkXyBhcyAkLGp0IGFzICRpLFNsIGFzICRuLGFvIGFzICRyLCRmIGFzICR0LCRfIGFzIEEsZ2kgYXMgQWksc2QgYXMgQW4sc3MgYXMgQXIsVGggYXMgQXQsS18gYXMgQixWbiBhcyBCaSxVdSBhcyBCbixqbyBhcyBCcixIcCBhcyBCdCxGeSBhcyBDLElpIGFzIENpLF9kIGFzIENuLGJzIGFzIENyLHpoIGFzIEN0LG95IGFzIEQsRWkgYXMgRGksbmQgYXMgRG4sX3MgYXMgRHIsTWggYXMgRHQsbXkgYXMgRSx3aSBhcyBFaSxlZCBhcyBFbixocyBhcyBFcixGaCBhcyBFdCxKXyBhcyBGLCRyIGFzIEZpLEt1IGFzIEZuLHpvIGFzIEZyLFpwIGFzIEZ0LE9fIGFzIEcsVG4gYXMgR2ksJGwgYXMgR24scG8gYXMgR3IsenAgYXMgR3QsTl8gYXMgSCxVbiBhcyBIaSxMdSBhcyBIbix5byBhcyBIcixNcCBhcyBIdCxYIGFzIEkscHIgYXMgSWksWXUgYXMgSW4sVm8gYXMgSXIsWXAgYXMgSXQsbV8gYXMgSixwbiBhcyBKaSxIbCBhcyBKbix6IGFzIEpyLFJwIGFzIEp0LGdfIGFzIEssQ24gYXMgS2ksWWwgYXMgS24sQiBhcyBLcixKIGFzIEt0LEdfIGFzIEwsb3IgYXMgTGkscXUgYXMgTG4sQm8gYXMgTHIsWHAgYXMgTHQscnYgYXMgTSxwaSBhcyBNaSxpZCBhcyBNbixhcyBhcyBNcixFaCBhcyBNdCxZXyBhcyBOLFIgYXMgTmksWnUgYXMgTm4saXMgYXMgTnIsaWggYXMgTnQsYXkgYXMgTyxEaSBhcyBPaSxsZCBhcyBPbixscyBhcyBPcixraCBhcyBPdCxXXyBhcyBQLFhyIGFzIFBpLEd1IGFzIFBuLEpvIGFzIFByLGFtIGFzIFB0LGlfIGFzIFEsUHQgYXMgUWksd2wgYXMgUW4scm8gYXMgUXIsT3AgYXMgUXQsVV8gYXMgUixjciBhcyBSaSxXdSBhcyBSbixVIGFzIFJyLFdwIGFzIFJ0LFB5IGFzIFMsamkgYXMgU2ksZ2QgYXMgU24seXMgYXMgU3IsYWcgYXMgU3QsZ3kgYXMgVCxPaSBhcyBUaSx1ZCBhcyBUbixmcyBhcyBUcixJaCBhcyBUdCxqXyBhcyBVLGpuIGFzIFVpLE11IGFzIFVuLFYgYXMgVXIsQnAgYXMgVXQsTV8gYXMgVixIbiBhcyBWaSxWdSBhcyBWbixIIGFzIFZyLFZwIGFzIFZ0LERfIGFzIFcsd24gYXMgV2kscSBhcyBXbix2byBhcyBXcixGcCBhcyBXdCxzXyBhcyBYLE10IGFzIFhpLFJsIGFzIFhuLHNvIGFzIFhyLElwIGFzIFh0LHBfIGFzIFksZm4gYXMgWWksVyBhcyBZbixjbyBhcyBZcixQcCBhcyBZdCxhXyBhcyBaLEF0IGFzIFppLENsIGFzIFpuLG9vIGFzIFpyLGtwIGFzIFp0LFJ5IGFzIF8sR2kgYXMgX2ksVGQgYXMgX24sTmMgYXMgX3IsdWcgYXMgX3Qsc3ggYXMgYSxsdCBhcyBhYSxWYSBhcyBhaSxCZiBhcyBhbixsbCBhcyBhcixVZyBhcyBhdCxOeSBhcyBiLFJpIGFzIGJpLHlkIGFzIGJuLENzIGFzIGJyLGlnIGFzIGJ0LGx4IGFzIGMsWGUgYXMgY2EsVGEgYXMgY2ksU2YgYXMgY24sUWMgYXMgY3IsVmcgYXMgY3QsSHkgYXMgZCxtYSBhcyBkaSxHZCBhcyBkbixXYyBhcyBkcixOZyBhcyBkdCxrIGFzIGVhLGVvIGFzIGVpLGVwIGFzIGVuLGJsIGFzIGVyLG9fIGFzIGV0LHp5IGFzIGYsdWEgYXMgZmksVmQgYXMgZm4sR2MgYXMgZnIsT2cgYXMgZnQsR3kgYXMgZyxaaSBhcyBnaSx3ZCBhcyBnbixCYyBhcyBncix5ZyBhcyBndCxWeSBhcyBoLFFpIGFzIGhpLEVkIGFzIGhuLHpjIGFzIGhyLFRnIGFzIGh0LGZ4IGFzIGksdXQgYXMgaWEscWEgYXMgaWksRmYgYXMgaW4sc2wgYXMgaXIsdF8gYXMgaXQsaXYgYXMgaixoaSBhcyBqaSxmZCBhcyBqbix1cyBhcyBqcixEaCBhcyBqdCxldiBhcyBrLF9pIGFzIGtpLGNkIGFzIGtuLGNzIGFzIGtyLE9oIGFzIGt0LGV4IGFzIGwseCBhcyBsYSxTYSBhcyBsaSxiZiBhcyBsbixVYyBhcyBscixMZyBhcyBsdCxxeSBhcyBtLCRpIGFzIG1pLHpkIGFzIG1uLFZjIGFzIG1yLERnIGFzIG10LGh4IGFzIG4sTyBhcyBuYSxZYSBhcyBuaSxxZiBhcyBubix1bCBhcyBucixjXyBhcyBudCxjeCBhcyBvLGN0IGFzIG9hLHphIGFzIG9pLHpmIGFzIG9uLG9sIGFzIG9yLEhnIGFzIG90LFd5IGFzIHAsY2EgYXMgcGksSGQgYXMgcG4sSGMgYXMgcHIsRWcgYXMgcHQsaF8gYXMgcSxPbiBhcyBxaSxLbCBhcyBxbixtbyBhcyBxcixOcCBhcyBxdCxweCBhcyByLHN0IGFzIHJhLEphIGFzIHJpLFVmIGFzIHJuLGNsIGFzIHJyLGxfIGFzIHJ0LHV4IGFzIHMsWmUgYXMgc2EsTGEgYXMgc2ksRGYgYXMgc24sbmwgYXMgc3IsQmcgYXMgc3QsX3ggYXMgdCxBIGFzIHRhLCRhIGFzIHRpLFRwIGFzIHRuLGRsIGFzIHRyLHJfIGFzIHR0LEx5IGFzIHUsdSBhcyB1YSxiYSBhcyB1aSxSZCBhcyB1bixLYyBhcyB1cixGZyBhcyB1dCxKeSBhcyB2LFZpIGFzIHZpLFNkIGFzIHZuLFBjIGFzIHZyLHJnIGFzIHZ0LER5IGFzIHcsa2kgYXMgd2ksJHUgYXMgd24sZ3MgYXMgd3IsTGggYXMgd3QsSXkgYXMgeCxNaSBhcyB4aSx4ZCBhcyB4bix4cyBhcyB4cixvZyBhcyB4dCxNeSBhcyB5LEJpIGFzIHlpLGJkIGFzIHluLE1jIGFzIHlyLFZoIGFzIHl0LFZfIGFzIHosWG4gYXMgemksSHUgYXMgem4sTG8gYXMgenIsVXAgYXMgenR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zaGFyZWQtQ2dNQ0Fmb3IuanMubWFw"}},"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":"dreamspinfluence.com/assets/wp-content/uploads/sites/8/elementor/css/post-59.css?ver=1706574923","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:09.993Z","timestamp":1785130089993,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/uploads/sites/8/elementor/css/post-59.css?ver=1706574923 HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:09 GMT\r\ncontent-type: text/css\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=jjeiWr3izdQ5LNQVOEZGTvC3mC5q5u5x%2Bz9C4qZ%2BpELltIgjkKahbVRYCer9G7Iy0PjhCwCdrwP6gHEFnhduzHxniaArHUHBZuVoOxoSpferiIk%2FzxJ7irpNc84fXFR%2FCCeruYnNmw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\ncf-ray: a2193d367e32120a-OSL\r\ncontent-length: 1556\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"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":16878,"size_decoded":2370,"mime_type":"text/css","magic":"ASCII text","md5":"09c78742f96f3e39407d0f7dd93ab101","sha1":"dba4b8ddf10fc82d7eb5434d47fd645ca520eea4","sha256":"20adf5a7b1bc703bb5b9ab1d0be4d302c0753340a3af8f17c05bf2eedeb3a815","sha512":"008f34132997121e0005d0a614e69f91e8d6a47a590ddea3bf33cccf23c02a3f94b18968a9748f7a7d24a051cc299b52da1340ef2d4b6eb527d04fa246bf9790","ssdeep":"192:pOmFU4WapUJV7CsV1Vh0sXMAJlZUVXYN/4Ay+fKnK7n7B0s12F0F0IVj0k8u46I6:pr+r+okYHKGEF0FuI","tlshash":"8f7212d13e531264b59f205fa2cb929d263448cbcd3db9e9f5e8114aef78e8033d2948","first_seen":"2026-07-27T03:56:42.602527Z","last_seen":"2026-07-27T05:30:59.809803Z","times_seen":6,"resource_available":false,"data":"LmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjU5M2E5NSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDQ1cHggNDVweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjU5M2E5NTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTY1OTNhOTU+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXI+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMEUxNTI0Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02NTkzYTk1LAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02NTkzYTk1OjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGZmNWJiYyB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThkNjIxODYgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLWdhcDogMzVweCAzNXB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5NjRhMGEgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC0tZ2FwOiA1MHB4IDUwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzlmZDlkMyB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDMwcHggMzBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wZWEyMGVmIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLWxlZnQ6IDBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAubWVudS1pdGVtIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgcGFkZGluZy1sZWZ0OiBjYWxjKCAwcHggKyAyMHB4KTsKICAgIHBhZGRpbmctcmlnaHQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLm1lbnUtaXRlbSB1bCB1bCBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIHBhZGRpbmctbGVmdDogY2FsYyggMHB4ICsgNDBweCk7CiAgICBwYWRkaW5nLXJpZ2h0OiAwcHg7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIC5tZW51LWl0ZW0gdWwgdWwgdWwgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoIDBweCArIDYwcHgpOwogICAgcGFkZGluZy1yaWdodDogMHB4Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAubWVudS1pdGVtIHVsIHVsIHVsIHVsIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgcGFkZGluZy1sZWZ0OiBjYWxjKCAwcHggKyA4MHB4KTsKICAgIHBhZGRpbmctcmlnaHQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAubWVudS1pdGVtIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgcGFkZGluZy10b3A6IDBweDsKICAgIHBhZGRpbmctYm90dG9tOiAwcHg7Cn0KCmJvZHk6bm90KC5ydGwpIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICBtYXJnaW4tcmlnaHQ6IDIycHg7Cn0KCmJvZHkucnRsIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICBtYXJnaW4tbGVmdDogMjJweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXY6bm90KC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsKSAuaGZlLW5hdi1tZW51PmxpLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIG1hcmdpbi1ib3R0b206IDIycHg7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgZm9udC1zaXplOiAyNnB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGxpbmUtaGVpZ2h0OiAzNnB4Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5zdWItbWVudSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLm1lbnUtaXRlbS5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQsCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5tZW51LWl0ZW0uY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5tZW51LWl0ZW0uY3VycmVudC1tZW51LWFuY2VzdG9yIGEuaGZlLW1lbnUtaXRlbSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLmVsZW1lbnRvci1tZW51LXRvZ2dsZSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93bi1leHBhbmRpYmxlIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5zdWItbWVudSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duIC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IG5hdi5oZmUtZHJvcGRvd24gLm1lbnUtaXRlbSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMxQTIxMkY7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLmVsZW1lbnRvci1tZW51LXRvZ2dsZTpob3ZlciwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93bi1leHBhbmRpYmxlIGxpIGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbTpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93biBsaSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93biBsaSBhLmhmZS1zdWItbWVudS1pdGVtLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93bi1leHBhbmRpYmxlIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgcGFkZGluZy10b3A6IDE1cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTVweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAuc3ViLW1lbnUgbGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCksCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93biBsaS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBkaXYuaGZlLW5hdi1tZW51LWljb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBkaXYuaGZlLW5hdi1tZW51LWljb24gc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDFiZTU5ZSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDMwcHggMzBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hZTg1OGI0IHsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFlODU4YjQgaW1nIHsKICAgIHdpZHRoOiA2NSU7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTI1MzcxNzYgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2E1NmIwNSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDEwcHggMTBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIC0tYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci13aWR0aDogMXB4IDBweCAwcHggMHB4OwogICAgLS1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IDFweDsKICAgIC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGg6IDBweDsKICAgIC0tYm9yZGVyLWJsb2NrLWVuZC13aWR0aDogMHB4OwogICAgLS1ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiAwcHg7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIC0tYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAxMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2E1NmIwNSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2E1NmIwNTo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM3ZjgzNDggewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmNjYzk3NCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iY2NjOTc0IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTJkZDU1ZmEgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDYyNmZjYSB7CiAgICAtLWdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDAsIGF1dG8pOwogICAgLS1pY29uLXNpemU6IDM2cHg7CiAgICAtLWdyaWQtY29sdW1uLWdhcDogMjRweDsKICAgIC0tZ3JpZC1yb3ctZ2FwOiAwcHg7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ2MjZmY2EgLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kNjI2ZmNhIC5lbGVtZW50b3Itc29jaWFsLWljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAyMDEwMTAwOwogICAgLS1pY29uLXBhZGRpbmc6IDBlbTsKfQoKQG1lZGlhKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTY1OTNhOTUgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMjBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThkNjIxODYgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OTY0YTBhIHsKICAgICAgICAtLWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAtLWdhcDogMjBweCAyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzlmZDlkMyB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0sCiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5tZW51LWl0ZW0gYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgfQogICAgYm9keTpub3QoLnJ0bCkgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1yaWdodDogMHB4OwogICAgfQogICAgYm9keSAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IG5hdi5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAuaGZlLW5hdi1tZW51PmxpLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IGEuaGZlLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDFiZTU5ZSB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTNhNTZiMDUgewogICAgICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iY2NjOTc0IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDYyNmZjYSB7CiAgICAgICAgLS1pY29uLXNpemU6IDI2cHg7CiAgICAgICAgLS1ncmlkLWNvbHVtbi1nYXA6IDEycHg7CiAgICB9Cn0KCkBtZWRpYShtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTY1OTNhOTUgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogNjBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA0MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDEwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDEwcHg7CiAgICB9CiAgICBib2R5Om5vdCgucnRsKSAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5LmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7CiAgICB9CiAgICBib2R5IC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgYS5oZmUtbWVudS1pdGVtLAogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hZTg1OGI0IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iY2NjOTc0IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iY2NjOTc0IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDYyNmZjYSAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KfQoKQG1lZGlhKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjU5M2E5NSB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kZmY1YmJjIHsKICAgICAgICAtLXdpZHRoOiA0MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04ZDYyMTg2IHsKICAgICAgICAtLXdpZHRoOiA1NiU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zOWZkOWQzIHsKICAgICAgICAtLXdpZHRoOiAzNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00MWJlNTllIHsKICAgICAgICAtLXdpZHRoOiA1OCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jN2Y4MzQ4IHsKICAgICAgICAtLXdpZHRoOiA2MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yZGQ1NWZhIHsKICAgICAgICAtLXdpZHRoOiA0MCU7CiAgICB9Cn0KCkBtZWRpYShtYXgtd2lkdGg6MTAyNHB4KSBhbmQgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOGQ2MjE4NiB7CiAgICAgICAgLS13aWR0aDogNTglOwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYzdmODM0OCB7CiAgICAgICAgLS13aWR0aDogNzAlOwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMmRkNTVmYSB7CiAgICAgICAgLS13aWR0aDogMzAlOwogICAgfQp9"}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dreamspinfluence.com/assets/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js","fqdn":"dreamspinfluence.com","domain":"dreamspinfluence.com","tld":"com"},"ip":{"addr":"172.67.208.225","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:10.036Z","timestamp":1785130090036,"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":"dreamspinfluence.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 16 Jul 2026 14:53:09 GMT","end":"Wed, 14 Oct 2026 15:51:26 GMT"},"fingerprint":{"sha1":"F1:DC:A4:E8:2F:D2:5B:10:E6:FB:06:9E:6F:D2:33:D3:78:11:6B:65","sha256":"3A:75:61:E5:B2:2E:9D:52:2B:0B:91:4F:51:C3:62:BE:2E:E9:BD:32:41:74:50:D8:D4:65:A7:86:E0:09:76:30"}}},"request":{"raw":"GET /assets/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js HTTP/1.1\r\nHost: dreamspinfluence.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://dreamspinfluence.com/\r\nCookie: PHPSESSID=40gevugqve4dcmbj7nupd4vsp4\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\ndate: Mon, 27 Jul 2026 05:28:10 GMT\r\ncontent-type: application/javascript\r\nserver-timing: cfExtPri\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 04:10:18 GMT\r\nlast-modified: Thu, 16 Jul 2026 18:13:31 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 4670\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=pDSXBJPr0QxPe4e2M6gBwXVcLWQszkMgvHAQ4shq1%2BCPIt6uL4B10iMs3gRKtkEij%2FRTrxCrCRWjCJ20WFkjCYli8Bh1aDaO42A4HxCvhVXiXlpgY7uZPMaB041JDgA8U3qpzGo2yw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a2193d36ce55120a-OSL\r\ncontent-length: 2461\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"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":"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":8119,"size_decoded":3285,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (815)","md5":"c74d093d7da01f0ee1489adf9bc0dc08","sha1":"0f7accf8d67e9eb52a591bb45bb99a756c8c605c","sha256":"64ee74703c236cd54d6b86df1d3323e8a6578fe213905f3cb6f22a1221d2497a","sha512":"424d5ac557df5369071b6d201758b02c4483e42f75db819e81caa3c049297ea3ca8a22d756ce0fcf3c78a6911f6b72c1032d4aa2b1b77938335d8135897d8cea","ssdeep":"192:Fn0UlU2z4PCgCCsBVyktR9BUAaHQ4xPUMxfkXRgSWfpgDriJ9UsNaSaaNiHvnNWE:SqzcPChVbjpeu6kXRkE69aagl","tlshash":"39f1f0451ad26c372563b4f9961aaa30622ec4132d09fc81fd5c9da88fd58348bf9af0","first_seen":"2026-07-27T04:11:05.719334Z","last_seen":"2026-07-27T05:30:59.824957Z","times_seen":3,"resource_available":true,"data":"LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNy0wMi0yMDI0ICovCigoKT0+ewogICAgInVzZSBzdHJpY3QiOwogICAgdmFyIGUsIHIsIF8sIHQsIGEsIGkgPSB7fSwgbiA9IHt9OwogICAgZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhlKSB7CiAgICAgICAgdmFyIHIgPSBuW2VdOwogICAgICAgIGlmICh2b2lkIDAgIT09IHIpCiAgICAgICAgICAgIHJldHVybiByLmV4cG9ydHM7CiAgICAgICAgdmFyIF8gPSBuW2VdID0gewogICAgICAgICAgICBleHBvcnRzOiB7fQogICAgICAgIH07CiAgICAgICAgcmV0dXJuIGlbZV0uY2FsbChfLmV4cG9ydHMsIF8sIF8uZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyksCiAgICAgICAgXy5leHBvcnRzCiAgICB9CiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBpLAogICAgZSA9IFtdLAogICAgX193ZWJwYWNrX3JlcXVpcmVfXy5PID0gKHIsXyx0LGEpPT57CiAgICAgICAgaWYgKCFfKSB7CiAgICAgICAgICAgIHZhciBpID0gMSAvIDA7CiAgICAgICAgICAgIGZvciAodSA9IDA7IHUgPCBlLmxlbmd0aDsgdSsrKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBbXyx0LGFdID0gZVt1XSwgbiA9ICEwLCBjID0gMDsgYyA8IF8ubGVuZ3RoOyBjKyspCiAgICAgICAgICAgICAgICAgICAgKCExICYgYSB8fCBpID49IGEpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGU9Pl9fd2VicGFja19yZXF1aXJlX18uT1tlXShfW2NdKSkpID8gXy5zcGxpY2UoYy0tLCAxKSA6IChuID0gITEsCiAgICAgICAgICAgICAgICAgICAgYSA8IGkgJiYgKGkgPSBhKSk7CiAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgIGUuc3BsaWNlKHUtLSwgMSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0KCk7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBvICYmIChyID0gbykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KICAgICAgICBhID0gYSB8fCAwOwogICAgICAgIGZvciAodmFyIHUgPSBlLmxlbmd0aDsgdSA+IDAgJiYgZVt1IC0gMV1bMl0gPiBhOyB1LS0pCiAgICAgICAgICAgIGVbdV0gPSBlW3UgLSAxXTsKICAgICAgICBlW3VdID0gW18sIHQsIGFdCiAgICB9CiAgICAsCiAgICBfID0gT2JqZWN0LmdldFByb3RvdHlwZU9mID8gZT0+T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpIDogZT0+ZS5fX3Byb3RvX18sCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgaWYgKDEgJiB0ICYmIChlID0gdGhpcyhlKSksCiAgICAgICAgOCAmIHQpCiAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlKSB7CiAgICAgICAgICAgIGlmICg0ICYgdCAmJiBlLl9fZXNNb2R1bGUpCiAgICAgICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgICAgaWYgKDE2ICYgdCAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLnRoZW4pCiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KICAgICAgICB2YXIgYSA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5yKGEpOwogICAgICAgIHZhciBpID0ge307CiAgICAgICAgciA9IHIgfHwgW251bGwsIF8oe30pLCBfKFtdKSwgXyhfKV07CiAgICAgICAgZm9yICh2YXIgbiA9IDIgJiB0ICYmIGU7ICJvYmplY3QiID09IHR5cGVvZiBuICYmICF+ci5pbmRleE9mKG4pOyBuID0gXyhuKSkKICAgICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobikuZm9yRWFjaCgocj0+aVtyXSA9ICgpPT5lW3JdKSk7CiAgICAgICAgcmV0dXJuIGkuZGVmYXVsdCA9ICgpPT5lLAogICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uZChhLCBpKSwKICAgICAgICBhCiAgICB9CiAgICAsCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZSxyKT0+ewogICAgICAgIGZvciAodmFyIF8gaW4gcikKICAgICAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5vKHIsIF8pICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSwgXykgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIF8sIHsKICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgZ2V0OiByW19dCiAgICAgICAgICAgIH0pCiAgICB9CiAgICAsCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fSwKICAgIF9fd2VicGFja19yZXF1aXJlX18uZSA9IGU9PlByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKCgocixfKT0+KF9fd2VicGFja19yZXF1aXJlX18uZltfXShlLCByKSwKICAgIHIpKSwgW10pKSwKICAgIF9fd2VicGFja19yZXF1aXJlX18udSA9IGU9PjcyMyA9PT0gZSA/ICJsaWdodGJveC4xYjZlMDVlMDYwNzA0MGViODkyOS5idW5kbGUubWluLmpzIiA6IDQ4ID09PSBlID8gInRleHQtcGF0aC5iNTBiM2U3NDQ4OGE0ZTMwMjYxMy5idW5kbGUubWluLmpzIiA6IDIwOSA9PT0gZSA/ICJhY2NvcmRpb24uODc5OTY3NTQ2MGM3M2ViNDg5NzIuYnVuZGxlLm1pbi5qcyIgOiA3NDUgPT09IGUgPyAiYWxlcnQuY2JjMmEwZmVlNzRlZTNlZDA0MTkuYnVuZGxlLm1pbi5qcyIgOiAxMjAgPT09IGUgPyAiY291bnRlci4wMmNlZjI5YzU4OWU3NDJkNGM4Yy5idW5kbGUubWluLmpzIiA6IDE5MiA9PT0gZSA/ICJwcm9ncmVzcy5jYTU1ZDMzYmIwNmNlZTRlNmYwMi5idW5kbGUubWluLmpzIiA6IDUyMCA9PT0gZSA/ICJ0YWJzLmMyYWY1YmU3ZjljYjNjZGNmM2Q1LmJ1bmRsZS5taW4uanMiIDogMTgxID09PSBlID8gInRvZ2dsZS4zMTg4MTQ3N2M0NWZmNWNmOWQ0ZC5idW5kbGUubWluLmpzIiA6IDc5MSA9PT0gZSA/ICJ2aWRlby5mZWE0ZjhkZmRmMTcyNjJmMjNlOC5idW5kbGUubWluLmpzIiA6IDI2OCA9PT0gZSA/ICJpbWFnZS1jYXJvdXNlbC40NDU1YzYzNjI0OTJkOTA2NzUxMi5idW5kbGUubWluLmpzIiA6IDM1NyA9PT0gZSA/ICJ0ZXh0LWVkaXRvci4yYzM1YWFmYmU1YmYwZTEyNzk1MC5idW5kbGUubWluLmpzIiA6IDUyID09PSBlID8gIndwLWF1ZGlvLjc1ZjBjZWQxNDNmZWJiOGNkMzFhLmJ1bmRsZS5taW4uanMiIDogNDEzID09PSBlID8gImNvbnRhaW5lci41YjFhN2QwNjkwN2Y2ZDdmODViNi5idW5kbGUubWluLmpzIiA6IHZvaWQgMCwKICAgIF9fd2VicGFja19yZXF1aXJlX18uZyA9IGZ1bmN0aW9uKCkgewogICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZ2xvYmFsVGhpcykKICAgICAgICAgICAgcmV0dXJuIGdsb2JhbFRoaXM7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCkKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2Ygd2luZG93KQogICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdwogICAgICAgIH0KICAgIH0oKSwKICAgIF9fd2VicGFja19yZXF1aXJlX18ubyA9IChlLHIpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwgciksCiAgICB0ID0ge30sCiAgICBhID0gImVsZW1lbnRvcjoiLAogICAgX193ZWJwYWNrX3JlcXVpcmVfXy5sID0gKGUscixfLGkpPT57CiAgICAgICAgaWYgKHRbZV0pCiAgICAgICAgICAgIHRbZV0ucHVzaChyKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIG4sIGM7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IF8pCiAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLCB1ID0gMDsgdSA8IG8ubGVuZ3RoOyB1KyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9bdV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGIuZ2V0QXR0cmlidXRlKCJzcmMiKSA9PSBlIHx8IGIuZ2V0QXR0cmlidXRlKCJkYXRhLXdlYnBhY2siKSA9PSBhICsgXykgewogICAgICAgICAgICAgICAgICAgICAgICBuID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIG4gfHwgKGMgPSAhMCwKICAgICAgICAgICAgKG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSkuY2hhcnNldCA9ICJ1dGYtOCIsCiAgICAgICAgICAgIG4udGltZW91dCA9IDEyMCwKICAgICAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5uYyAmJiBuLnNldEF0dHJpYnV0ZSgibm9uY2UiLCBfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKSwKICAgICAgICAgICAgbi5zZXRBdHRyaWJ1dGUoImRhdGEtd2VicGFjayIsIGEgKyBfKSwKICAgICAgICAgICAgbi5zcmMgPSBlKSwKICAgICAgICAgICAgdFtlXSA9IFtyXTsKICAgICAgICAgICAgdmFyIG9uU2NyaXB0Q29tcGxldGUgPSAocixfKT0+ewogICAgICAgICAgICAgICAgbi5vbmVycm9yID0gbi5vbmxvYWQgPSBudWxsLAogICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHApOwogICAgICAgICAgICAgICAgdmFyIGEgPSB0W2VdOwogICAgICAgICAgICAgICAgaWYgKGRlbGV0ZSB0W2VdLAogICAgICAgICAgICAgICAgbi5wYXJlbnROb2RlICYmIG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSwKICAgICAgICAgICAgICAgIGEgJiYgYS5mb3JFYWNoKChlPT5lKF8pKSksCiAgICAgICAgICAgICAgICByKQogICAgICAgICAgICAgICAgICAgIHJldHVybiByKF8pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAsIHAgPSBzZXRUaW1lb3V0KG9uU2NyaXB0Q29tcGxldGUuYmluZChudWxsLCB2b2lkIDAsIHsKICAgICAgICAgICAgICAgIHR5cGU6ICJ0aW1lb3V0IiwKICAgICAgICAgICAgICAgIHRhcmdldDogbgogICAgICAgICAgICB9KSwgMTJlNCk7CiAgICAgICAgICAgIG4ub25lcnJvciA9IG9uU2NyaXB0Q29tcGxldGUuYmluZChudWxsLCBuLm9uZXJyb3IpLAogICAgICAgICAgICBuLm9ubG9hZCA9IG9uU2NyaXB0Q29tcGxldGUuYmluZChudWxsLCBuLm9ubG9hZCksCiAgICAgICAgICAgIGMgJiYgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuKQogICAgICAgIH0KICAgIH0KICAgICwKICAgIF9fd2VicGFja19yZXF1aXJlX18uciA9IGU9PnsKICAgICAgICAidW5kZWZpbmVkIiAhPSB0eXBlb2YgU3ltYm9sICYmIFN5bWJvbC50b1N0cmluZ1RhZyAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7CiAgICAgICAgICAgIHZhbHVlOiAiTW9kdWxlIgogICAgICAgIH0pLAogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSkKICAgIH0KICAgICwKICAgICgoKT0+ewogICAgICAgIHZhciBlOwogICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzICYmIChlID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgIiIpOwogICAgICAgIHZhciByID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50OwogICAgICAgIGlmICghZSAmJiByICYmIChyLmN1cnJlbnRTY3JpcHQgJiYgKGUgPSByLmN1cnJlbnRTY3JpcHQuc3JjKSwKICAgICAgICAhZSkpIHsKICAgICAgICAgICAgdmFyIF8gPSByLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKTsKICAgICAgICAgICAgaWYgKF8ubGVuZ3RoKQogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IF8ubGVuZ3RoIC0gMTsgdCA+IC0xICYmICFlOyApCiAgICAgICAgICAgICAgICAgICAgZSA9IF9bdC0tXS5zcmMKICAgICAgICB9CiAgICAgICAgaWYgKCFlKQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyIik7CiAgICAgICAgZSA9IGUucmVwbGFjZSgvIy4qJC8sICIiKS5yZXBsYWNlKC9cPy4qJC8sICIiKS5yZXBsYWNlKC9cL1teXC9dKyQvLCAiLyIpLAogICAgICAgIF9fd2VicGFja19yZXF1aXJlX18ucCA9IGUKICAgIH0KICAgICkoKSwKICAgICgoKT0+ewogICAgICAgIHZhciBlID0gewogICAgICAgICAgICAxNjI6IDAKICAgICAgICB9OwogICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uZi5qID0gKHIsXyk9PnsKICAgICAgICAgICAgdmFyIHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSwgcikgPyBlW3JdIDogdm9pZCAwOwogICAgICAgICAgICBpZiAoMCAhPT0gdCkKICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgIF8ucHVzaCh0WzJdKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKDE2MiAhPSByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuZXcgUHJvbWlzZSgoKF8sYSk9PnQgPSBlW3JdID0gW18sIGFdKSk7CiAgICAgICAgICAgICAgICAgICAgXy5wdXNoKHRbMl0gPSBhKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShyKQogICAgICAgICAgICAgICAgICAgICAgLCBuID0gbmV3IEVycm9yOwogICAgICAgICAgICAgICAgICAgIF9fd2VicGFja19yZXF1aXJlX18ubChpLCAoXz0+ewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsIHIpICYmICgwICE9PSAodCA9IGVbcl0pICYmIChlW3JdID0gdm9pZCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gXyAmJiAoImxvYWQiID09PSBfLnR5cGUgPyAibWlzc2luZyIgOiBfLnR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgaSA9IF8gJiYgXy50YXJnZXQgJiYgXy50YXJnZXQuc3JjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5tZXNzYWdlID0gIkxvYWRpbmcgY2h1bmsgIiArIHIgKyAiIGZhaWxlZC5cbigiICsgYSArICI6ICIgKyBpICsgIikiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5uYW1lID0gIkNodW5rTG9hZEVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udHlwZSA9IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnJlcXVlc3QgPSBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdFsxXShuKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICksICJjaHVuay0iICsgciwgcikKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIGVbcl0gPSAwCiAgICAgICAgfQogICAgICAgICwKICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLk8uaiA9IHI9PjAgPT09IGVbcl07CiAgICAgICAgdmFyIHdlYnBhY2tKc29ucENhbGxiYWNrID0gKHIsXyk9PnsKICAgICAgICAgICAgdmFyIHQsIGEsIFtpLG4sY10gPSBfLCBvID0gMDsKICAgICAgICAgICAgaWYgKGkuc29tZSgocj0+MCAhPT0gZVtyXSkpKSB7CiAgICAgICAgICAgICAgICBmb3IgKHQgaW4gbikKICAgICAgICAgICAgICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLm8obiwgdCkgJiYgKF9fd2VicGFja19yZXF1aXJlX18ubVt0XSA9IG5bdF0pOwogICAgICAgICAgICAgICAgaWYgKGMpCiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBjKF9fd2VicGFja19yZXF1aXJlX18pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChyICYmIHIoXyk7IG8gPCBpLmxlbmd0aDsgbysrKQogICAgICAgICAgICAgICAgYSA9IGlbb10sCiAgICAgICAgICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSwgYSkgJiYgZVthXSAmJiBlW2FdWzBdKCksCiAgICAgICAgICAgICAgICBlW2FdID0gMDsKICAgICAgICAgICAgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uTyh1KQogICAgICAgIH0KICAgICAgICAgICwgciA9IHNlbGYud2VicGFja0NodW5rZWxlbWVudG9yID0gc2VsZi53ZWJwYWNrQ2h1bmtlbGVtZW50b3IgfHwgW107CiAgICAgICAgci5mb3JFYWNoKHdlYnBhY2tKc29ucENhbGxiYWNrLmJpbmQobnVsbCwgMCkpLAogICAgICAgIHIucHVzaCA9IHdlYnBhY2tKc29ucENhbGxiYWNrLmJpbmQobnVsbCwgci5wdXNoLmJpbmQocikpCiAgICB9CiAgICApKCkKfQopKCk7Cg=="}},"time_used":7,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elementor.uptechies.com/proton/wp-content/plugins/elementor/assets/js/text-editor.2c35aafbe5bf0e127950.bundle.min.js","fqdn":"elementor.uptechies.com","domain":"uptechies.com","tld":"com"},"ip":{"addr":"139.59.14.105","port":443,"asn":14061,"as":"DIGITALOCEAN-ASN","country":"India","country_code":"IN"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:11.270Z","timestamp":1785130091270,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /proton/wp-content/plugins/elementor/assets/js/text-editor.2c35aafbe5bf0e127950.bundle.min.js HTTP/1.1\r\nHost: elementor.uptechies.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://dreamspinfluence.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 404 \r\nserver: nginx\r\ndate: Mon, 27 Jul 2026 05:28:11 GMT\r\ncontent-type: text/html; charset=iso-8859-1\r\nvary: Accept-Encoding\r\ncontent-encoding: gzip\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"404","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"]}],"data":{"size":0,"size_decoded":0,"mime_type":"text/html; charset=iso-8859-1","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-02T16:49:29.666545Z","times_seen":17675151,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/images/cleardot.gif","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.151.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:12.005Z","timestamp":1785130092005,"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":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /images/cleardot.gif HTTP/1.1\r\nHost: www.google.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://dreamspinfluence.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, 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\naccept-ranges: bytes\r\ncontent-type: image/gif\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 43\r\ndate: Mon, 27 Jul 2026 05:28:12 GMT\r\npragma: no-cache\r\nexpires: Fri, 01 Jan 1990 00:00:00 GMT\r\ncache-control: no-cache, no-store, must-revalidate\r\nlast-modified: Tue, 22 Oct 2019 18:30:00 GMT\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\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":43,"size_decoded":717,"mime_type":"image/gif","magic":"GIF image data, version 89a, 1 x 1","md5":"fc94fb0c3ed8a8f909dbc7630a0987ff","sha1":"56d45f8a17f5078a20af9962c992ca4678450765","sha256":"2dfe28cbdb83f01c940de6a88ab86200154fd772d568035ac568664e52068363","sha512":"c87bf81fd70cf6434ca3a6c05ad6e9bd3f1d96f77dddad8d45ee043b126b2cb07a5cf23b4137b9d8462cd8a9adf2b463ab6de2b38c93db72d2d511ca60e3b57e","ssdeep":"","tlshash":"cb900003cac8c022c2a2c0300a0c03002bbaa8300228030ec0bc30fcec2a3a38c02000","first_seen":"2023-04-05T02:54:04Z","last_seen":"2026-08-02T16:33:57.567756Z","times_seen":82057,"resource_available":true,"data":"R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="}},"time_used":44,"timings":{"blocked":0,"dns":2,"connect":23,"send":0,"wait":19,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/element/log?format=json\u0026hasfast=true\u0026authuser=0","fqdn":"translate.googleapis.com","domain":"translate.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":"fetch","requested_by":"https://dreamspinfluence.com/","date":"2026-07-27T05:28:21.859Z","timestamp":1785130101859,"http_version":"HTTP/3","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":"OPTIONS /element/log?format=json\u0026hasfast=true\u0026authuser=0 HTTP/1.1\r\nHost: translate.googleapis.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\nAccess-Control-Request-Method: POST\r\nAccess-Control-Request-Headers: content-encoding,content-type,x-goog-authuser\r\nReferer: https://dreamspinfluence.com/\r\nOrigin: https://dreamspinfluence.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=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"OPTIONS"},"response":{"raw":"HTTP/3 200 \r\naccess-control-allow-origin: https://dreamspinfluence.com\r\naccess-control-allow-methods: GET, POST, OPTIONS\r\naccess-control-max-age: 86400\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: X-Playlog-Web,authorization,content-encoding,content-type,x-goog-authuser,origin\r\ncontent-type: text/plain; charset=UTF-8\r\ndate: Mon, 27 Jul 2026 05:28:21 GMT\r\nserver: Playlog\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\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":0,"size_decoded":528,"mime_type":"text/plain; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-02T16:49:29.666545Z","times_seen":17675151,"resource_available":true,"data":""}},"time_used":30,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":30,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"widget-v3.smartsuppcdn.com/assets/main-t6WxLABA.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://dreamspinfluence.com/","date":"2026-07-27T05:28:17.006Z","timestamp":1785130097006,"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-t6WxLABA.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://dreamspinfluence.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 05:28:17 GMT\r\ncontent-type: application/javascript\r\naccess-control-allow-origin: *\r\ncache-control: max-age=31536000, public, immutable\r\netag: W/\"6a4cb803-3f99\"\r\nexpires: Wed, 07 Jul 2027 08:30:00 GMT\r\nlast-modified: Tue, 07 Jul 2026 08:25:39 GMT\r\nx-77-nzt: kwToyDa8sYQvIR7SsaAhZ9u9s6IJB6zCIqt+SFlW3jImFxtAx7E0ZooPeOQToZfIaFILfvs\r\nx-77-nzt-ray: fdb5412324199c1071ec666afee88e00\r\nx-77-cache: HIT\r\nx-77-age: 1717054\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":6837,"mime_type":"application/javascript","magic":"Java source, ASCII text, with very long lines (15873)","md5":"9253d4d9d6ea32e484f0be9a0320a7a7","sha1":"762fb8fdf15626507c1c26a66aa7fe399d39e803","sha256":"1fb0b8e426f707feea50785bc24016fe14a76fb763d5eca3bc9b1d265bf77fa2","sha512":"5a1592fc87a402c636315def22f3c60dd7eeda34701b08005a192ae060acbe7ed8ae8aa709cc1664c3d9489c641e1ada60e79c66f13073ab61e6ba5bd86f524d","ssdeep":"384:9rgi5RFMkSjJOE/0BW2rkZZ795P6zrnBOVmPCRkXQbpaIF2K:9EizlSjJOEiWYoR5P6nnBOVmycQbpaId","tlshash":"0272d7742700783f711f489e16ade546b232c29dd693892d9b6fec0976c5cc0a8b37b9","first_seen":"2026-07-07T11:50:17.711459Z","last_seen":"2026-07-27T07:27:47.896741Z","times_seen":1890,"resource_available":true,"data":"Y29uc3QgX192aXRlX19tYXBEZXBzPShpLG09X192aXRlX19tYXBEZXBzLGQ9KG0uZnx8KG0uZj1bd2luZG93LnBhcmVudC5zbWFydHN1cHAuZ2V0QXNzZXRVcmwoImFzc2V0cy9XaWRnZXRNZXNzZW5nZXItREQ3T3l5VDUuanMiKSx3aW5kb3cucGFyZW50LnNtYXJ0c3VwcC5nZXRBc3NldFVybCgiYXNzZXRzL3NoYXJlZC1DZ01DQWZvci5qcyIpLHdpbmRvdy5wYXJlbnQuc21hcnRzdXBwLmdldEFzc2V0VXJsKCJhc3NldHMvV2lkZ2V0TWVzc2VuZ2VySW5wdXQtQzBYSFB4ZXYuanMiKSx3aW5kb3cucGFyZW50LnNtYXJ0c3VwcC5nZXRBc3NldFVybCgiYXNzZXRzL1dpZGdldFBvcHVwLXFldXdrY0JuLmpzIildKSkpPT5pLm1hcChpPT5kW2ldKTsKaW1wb3J0e0EgYXMgZSxBaSBhcyB0LEFyIGFzIG4sQXQgYXMgcixCIGFzIGksQmkgYXMgYSxDIGFzIG8sQ2kgYXMgcyxEIGFzIGMsRGkgYXMgbCxFIGFzIHUsRWkgYXMgZCxHaSBhcyBmLEdyIGFzIHAsSGkgYXMgbSxIbiBhcyBoLEhyIGFzIGcsSSBhcyBfLElpIGFzIHYsSiBhcyB5LEppIGFzIGIsS2kgYXMgeCxLciBhcyBTLExpIGFzIEMsTSBhcyBlZSxOIGFzIHRlLE5pIGFzIHcsTyBhcyBuZSxPciBhcyByZSxQaSBhcyBpZSxQciBhcyBhZSxQdCBhcyBvZSxSIGFzIHNlLFMgYXMgY2UsU2kgYXMgbGUsVCBhcyB1ZSxUaSBhcyBULFVpIGFzIGRlLFVyIGFzIEUsVmkgYXMgRCxXaSBhcyBmZSxXbiBhcyBwZSxXdCBhcyBtZSxYaSBhcyBPLFhyIGFzIGssWHQgYXMgaGUsWSBhcyBnZSxZaSBhcyBBLFluIGFzIGosWXIgYXMgX2UsWmkgYXMgTSxaciBhcyB2ZSxfIGFzIHllLGEgYXMgYmUsYWEgYXMgTixiIGFzIHhlLGJpIGFzIFAsY2EgYXMgRixkIGFzIFNlLGRpIGFzIENlLGR0IGFzIHdlLGVhIGFzIFRlLGVpIGFzIEksZiBhcyBFZSxmaSBhcyBMLGggYXMgRGUsaGkgYXMgUixpIGFzIHosaWEgYXMgQixqIGFzIE9lLGppIGFzIFYsam4gYXMga2Usa2kgYXMgQWUsa3IgYXMgamUsbCBhcyBNZSxsYSBhcyBOZSxsaSBhcyBILG0gYXMgUGUsbWkgYXMgRmUsbiBhcyBJZSxuYSBhcyBMZSxvIGFzIFUsb2kgYXMgVyxvciBhcyBHLHBpIGFzIEsscSBhcyBSZSxxbiBhcyB6ZSxyIGFzIHEscyBhcyBCZSx0IGFzIFZlLHRhIGFzIEhlLHRpIGFzIEosdSBhcyBVZSx1aSBhcyBZLHcgYXMgWCx3aSBhcyBaLHggYXMgV2UseGkgYXMgR2UseSBhcyBLZSx5aSBhcyBxZX1mcm9tIi4vc2hhcmVkLUNnTUNBZm9yLmpzIjt2YXIgSmU9ZChgPGRpdj48IT48L2Rpdj5gKTtmdW5jdGlvbiBZZShlLHQpe04odCwhMCk7bGV0IG49eChudWxsKSxyPWAke1MoKS5TTUFSVFNVUFBfQVVUT0NSRUFURT09PSExP2cod2luZG93KS5pZDpgc21hcnRzdXBwYH0td2lkZ2V0LWNvbnRhaW5lcmA7aygoKT0+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+YWUoKCk9PmltcG9ydChgLi9XaWRnZXRNZXNzZW5nZXItREQ3T3l5VDUuanNgKSxfX3ZpdGVfX21hcERlcHMoWzAsMSwyXSksaW1wb3J0Lm1ldGEudXJsKSx2dD1lPT57dmFyIHQ9YnQoKSxuPWEodCkscj1hKG4pO3EoYShyKSx7c2l6ZTozMn0pLEYocik7dmFyIGk9bShyLDIpLG89YShpKTtxKG8se3NpemU6MzJ9KTt2YXIgcz1tKG8sMik7cShzLHtzaXplOjMyfSkscShtKHMsMikse3NpemU6MzJ9KSxGKGkpLEYobik7dmFyIGM9bShuLDIpLGw9YShjKTtxKGEobCkse3NpemU6NDR9KSxGKGwpO3ZhciB1PW0obCwyKSxkPWEodSk7eihkLHtoZWlnaHQ6MjAsd2lkdGg6MjcwfSkseihtKGQsMikse2hlaWdodDoyMCx3aWR0aDoxMjJ9KSxGKHUpLEYoYyk7dmFyIGY9bShjLDIpLHA9YShmKTtxKGEocCkse3NpemU6Mjh9KSxGKHApO3ZhciBoPW0ocCwyKTt6KGEoaCkse2hlaWdodDoxMTIsd2lkdGg6Mjk1LHJvdW5kZWRTdHlsZTpgcm91bmRlZC02YH0pLEYoaCksRihmKTt2YXIgZz1tKGYsMiksXz1hKGcpO3ooXyx7aGVpZ2h0OjMyLHdpZHRoOjI5NX0pO3ZhciB2PW0oXywyKTt6KHYse2hlaWdodDozMix3aWR0aDoxNDh9KSx6KG0odiwyKSx7aGVpZ2h0OjMyLHdpZHRoOjIyNH0pLEYoZyksRih0KSxaKGUsdCl9LHl0PShlLHQpPT57bGV0IG49KCk9PnQ/LigpLmVycm9yO3ZhciByPXh0KCksaT1tKGEociksMiksbz1hKGksITApO0YoaSksRihyKSx2KCgpPT5sZShvLG4oKSkpLFooZSxyKX0sYnQ9ZChgPGRpdiBjbGFzcz0iaC1mdWxsIHAtMiBiZy13aGl0ZSIgaWQ9IlRPRE8gdGVzdCI+PGRpdiBjbGFzcz0iZmxleCBqdXN0aWZ5LWJldHdlZW4iPjxkaXYgY2xhc3M9ImZsZXgiPjwhPjwvZGl2PiA8ZGl2IGNsYXNzPSJmbGV4IHNwYWNlLXgtMiI+PCE+IDwhPiA8IT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZmxleCBtdC0yIj48ZGl2IGNsYXNzPSJmbGV4IG1sLTEgbXItMiI+PCE+PC9kaXY+IDxkaXYgY2xhc3M9ImZsZXgtYm90dG9tIHNwYWNlLXktMiI+PCE+IDwhPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWJhc2VsaW5lIG10LTgiPjxkaXYgY2xhc3M9ImZsZXggbWwtMSBtci0yIj48IT48L2Rpdj4gPGRpdiBjbGFzcz0ic3BhY2UteS0yIj48IT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBpdGVtcy1lbmQgc3BhY2UteS01IG10LTggbXItMSI+PCE+IDwhPiA8IT48L2Rpdj48L2Rpdj5gKSx4dD1kKGA8ZGl2IGNsYXNzPSJoLWZ1bGwgcC00IGJnLXdoaXRlIHRleHQtcmVkLTUwMCI+PGRpdiBjbGFzcz0idGV4dC1sZyBmb250LWJvbGQiPkZhaWxlZCB0byBsb2FkIHdpZGdldDwvZGl2PiA8ZGl2IGNsYXNzPSJ0ZXh0LXhzIj4gPC9kaXY+PC9kaXY+YCk7ZnVuY3Rpb24gU3QoZSl7Z3QoZSx7Z2V0IGxvYWRlcigpe3JldHVybiBfdH0sZGVsYXk6MCxnZXQgZXJyb3IoKXtyZXR1cm4geXR9LGdldCBsb2FkaW5nKCl7cmV0dXJuIHZ0fX0pfXZhciBDdD1kKGA8ZGl2PjwhPjwvZGl2PmApO2Z1bmN0aW9uIHd0KGUsdCl7Tih0LCEwKTtsZXQgcj0oKT0+TShqZSxgJGlzRnVsbFNjcmVlbkVuYWJsZWRgLGwpLG89KCk9Pk0oUGUsYCRpc01lc3NlbmdlckZyYW1lRXhwYW5kZWRgLGwpLHM9KCk9Pk0obixgJGlzTW9iaWxlRGV2aWNlYCxsKSxjPSgpPT5NKGksYCRzaG91bGRSZW5kZXJNZXNzZW5nZXJGcmFtZWAsbCksW2wsZF09TygpLG09eCh2b2lkIDApLGc9YE1vYmlsZVdpZGdldE1lc3Nlbmdlck9wZW5gLF89KGUsdCk9PntpZighdyhtKSlyZXR1cm47bGV0e3dpZGdldEJsb2NraW5nT3B0aW9uczpufT1FLmdldE9wdGlvbnMoKSx7d2lkdGg6cixoZWlnaHQ6aX09dWUoZSx0KTt3KG0pLnN0eWxlLm1heEhlaWdodD1oKGkpP2k6dShpKSx3KG0pLnN0eWxlLndpZHRoPWgocik/cjp1KHIpLHcobSkuc3R5bGUuaGVpZ2h0PWV8fG4/LmhlYWRsZXNzTW9kZT9gMTAwJWA6YGNhbGMoMTAwJSAtIDQwcHgpYH07QygoKT0+e3cobSkmJl8ocigpLG8oKSl9KTtsZXQgeT14KCExKTtDKCgpPT57aWYocygpKXtpZihjKCkmJiF3KHkpKXtsZXQgZT1wKCkuY3JlYXRlRWxlbWVudChgc3R5bGVgKTtlLnRleHRDb250ZW50PWAqIHtvdmVyZmxvdzogaGlkZGVufWAsZS5jbGFzc05hbWU9ZyxwKCkuaGVhZC5hcHBlbmRDaGlsZChlKSxmKHksITApfWlmKCFjKCkmJncoeSkpe2xldCBlPXAoKS5oZWFkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZyk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspcCgpLmhlYWQucmVtb3ZlQ2hpbGQoZVt0XSk7Zih5LCExKX19fSk7dmFyIGI9VCgpLFM9RChiKSxlZT1lPT57dmFyIHQ9Q3QoKTtIKHQsYGAse30se3RyYW5zaXRpb246YG1heC1oZWlnaHQgMjUwbXMgZWFzZS1pbi1vdXQsIHdpZHRoIDI1MG1zIGVhc2UtaW4tb3V0YCxvdmVyZmxvdzpgaGlkZGVuYH0pO3ZhciBuPWEodCk7e2xldCBlPUEoWCk7UShuLHtnZXQgY29tcG9uZW50KCl7cmV0dXJuIFN0fSxnZXQgaWQoKXtyZXR1cm4gRy53aWRnZXRNZXNzZW5nZXJGcmFtZX0sdGl0bGU6YFNtYXJ0c3VwcCB3aWRnZXQgbWVzc2VuZ2VyYCxnZXQgZnJhbWVTdHlsZSgpe3JldHVybiB3KGUpfX0pfUYodCksTCh0LChlLHQpPT54ZT8uKGUsdCksciksSih0LGU9PmYobSxlKSwoKT0+dyhtKSksdigoKT0+Vyh0LGBkYXRhLXRlc3RpZGAsRy53aWRnZXRNZXNzZW5nZXJGcmFtZSkpLEsoMSx0LCgpPT5VLCgpPT4oe3k6MjAsZHVyYXRpb246MjAwfSkpLEsoMix0LCgpPT5VLCgpPT4oe3k6MTAsZHVyYXRpb246MTUwfSkpLFooZSx0KX07UChTLGU9PntjKCkmJmUoZWUpfSksWihlLGIpLEIoKSxkKCl9dmFyIFR0PSgpPT5hZSgoKT0+aW1wb3J0KGAuL1dpZGdldFBvcHVwLXFldXdrY0JuLmpzYCksX192aXRlX19tYXBEZXBzKFszLDEsMl0pLGltcG9ydC5tZXRhLnVybCksRXQ9ZT0+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+e2koKSYmIWEoKSYmZSgpfSksZ2UoUygpKSxIZShuKSYmeShTKCkpLFllKHQse2NoaWxkcmVuOihlLHQpPT57dmFyIG49R3QoKSxyPUQobik7SXQocix7fSk7dmFyIGk9bShyLDIpO0F0KGkse30pO3ZhciBhPW0oaSwyKTtwdChhLHt9KTt2YXIgbz1tKGEsMik7d3Qobyx7fSksV3QobShvLDIpLHt9KSxaKGUsbil9LCQkc2xvdHM6e2RlZmF1bHQ6ITB9fSksQigpLHMoKX12YXIgcXQ9Zyh3aW5kb3cpO0UuaW5pdChxdC5vcHRpb25zKSxxdC5pbnN0YWxsQXBpKE1lKSxjLnNldFRoZW1lQ29sb3IocXQub3B0aW9ucyksUmUoKSxvZSgpLEdlKEt0LHt0YXJnZXQ6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGFwcGApfSk7ZXhwb3J0e010IGFzIG4sTHQgYXMgdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPW1haW4tdDZXeExBQkEuanMubWFw"}},"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}}]}
